WIP Добавила темы карточек
This commit is contained in:
@@ -25,9 +25,19 @@
|
|||||||
--font-obligatory-color: #ff0000
|
--font-obligatory-color: #ff0000
|
||||||
--bg-event-box-color: rgba(37, 40, 80, 0.1)
|
--bg-event-box-color: rgba(37, 40, 80, 0.1)
|
||||||
--bg-event-green-color: #24d07d
|
--bg-event-green-color: #24d07d
|
||||||
|
--bg-event-green-color-0: #cdf0e5
|
||||||
|
--bg-event-green-color-1: #92e8be
|
||||||
--bg-event-red-color: #e93131
|
--bg-event-red-color: #e93131
|
||||||
|
--bg-event-red-color-0: #f8c1c1
|
||||||
|
--bg-event-red-color-1: #f49898
|
||||||
--bg-event-yellow-color: #e5e931
|
--bg-event-yellow-color: #e5e931
|
||||||
|
--bg-event-yellow-color-0: #f8f9c2
|
||||||
|
--bg-event-yellow-color-1: #f2f498
|
||||||
--bg-event-blue-color: #3ba3ee
|
--bg-event-blue-color: #3ba3ee
|
||||||
|
--bg-event-blue-color-0: #c5e4fa
|
||||||
|
--bg-event-blue-color-1: #93cdf6
|
||||||
|
--bg-event-default-hover-color: #d9e1f9
|
||||||
|
--border-event-default-color: #b3c3f3
|
||||||
--light-grey-bg-color: #f8f9fa
|
--light-grey-bg-color: #f8f9fa
|
||||||
--btn-green-color: rgba(60, 217, 75, 1)
|
--btn-green-color: rgba(60, 217, 75, 1)
|
||||||
--btn-light-green-color: rgba(60, 217, 75, 0.2)
|
--btn-light-green-color: rgba(60, 217, 75, 0.2)
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
@width="changeWidth"
|
@width="changeWidth"
|
||||||
:team-data="employeesData"
|
:team-data="employeesData"
|
||||||
:open-form-create="openFormCreateEvent"
|
:open-form-create="openFormCreateEvent"
|
||||||
:event-type="eventType"
|
:event-types="eventTypes"
|
||||||
)
|
)
|
||||||
calendar-schedule(
|
calendar-schedule(
|
||||||
:owners-data="employeesData"
|
:owners-data="employeesData"
|
||||||
@@ -15,6 +15,7 @@
|
|||||||
:sidebar-width="sidebarWidth"
|
:sidebar-width="sidebarWidth"
|
||||||
:close-form-create-event="closeFormCreateEvent"
|
:close-form-create-event="closeFormCreateEvent"
|
||||||
:is-open-form="isOpenForm"
|
:is-open-form="isOpenForm"
|
||||||
|
:event-types="eventTypes"
|
||||||
@previous-date="switchPreviousDate"
|
@previous-date="switchPreviousDate"
|
||||||
@next-date="switchNextDate"
|
@next-date="switchNextDate"
|
||||||
@selected-layout="changeCalendarLayout"
|
@selected-layout="changeCalendarLayout"
|
||||||
@@ -55,7 +56,7 @@ export default {
|
|||||||
employeesData: [],
|
employeesData: [],
|
||||||
isOpenForm: false,
|
isOpenForm: false,
|
||||||
membersData: [],
|
membersData: [],
|
||||||
eventType: [
|
eventTypes: [
|
||||||
{ id: 1, label: "Встреча", color: "var(--bg-event-green-color)" },
|
{ id: 1, label: "Встреча", color: "var(--bg-event-green-color)" },
|
||||||
{ id: 2, label: "Планерка", color: "var(--bg-event-red-color)" },
|
{ id: 2, label: "Планерка", color: "var(--bg-event-red-color)" },
|
||||||
{ id: 3, label: "Интервью", color: "var(--bg-event-yellow-color)" },
|
{ id: 3, label: "Интервью", color: "var(--bg-event-yellow-color)" },
|
||||||
|
|||||||
@@ -17,6 +17,7 @@
|
|||||||
v-for="event in dayEvents"
|
v-for="event in dayEvents"
|
||||||
:key="event.id"
|
:key="event.id"
|
||||||
:ownerEvent="event"
|
:ownerEvent="event"
|
||||||
|
:event-types="eventTypes"
|
||||||
:style="eventCardPosition(event.start, event.end)"
|
:style="eventCardPosition(event.start, event.end)"
|
||||||
@selected-event="transmitEventData"
|
@selected-event="transmitEventData"
|
||||||
)
|
)
|
||||||
@@ -38,6 +39,7 @@ export default {
|
|||||||
dayEvents: Array,
|
dayEvents: Array,
|
||||||
dayEndTime: Number,
|
dayEndTime: Number,
|
||||||
dayStartTime: Number,
|
dayStartTime: Number,
|
||||||
|
eventTypes: Array,
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
|||||||
@@ -1,9 +1,14 @@
|
|||||||
<template lang="pug">
|
<template lang="pug">
|
||||||
.wrapper.flex.px-2.my-1.items-start.cursor-pointer(:style="cardHeight", @click="transmitEventData")
|
.wrapper.cursor-pointer.my-1(
|
||||||
.header.flex.justify-between.items-center
|
@click="transmitEventData",
|
||||||
.header-text
|
:style="themeColors",
|
||||||
span.inline-block.align-middle.font-bold.text-base.mr-4 {{ eventTime }}
|
:class="cardTheme"
|
||||||
span.inline-block.align-middle.font-medium.text-base {{ eventMember }}
|
)
|
||||||
|
.card.flex.items-start.px-2(:style="cardHeight")
|
||||||
|
.header.flex.justify-between.items-center
|
||||||
|
.header-text
|
||||||
|
span.inline-block.align-middle.font-bold.text-base.mr-4 {{ eventTime }}
|
||||||
|
span.inline-block.align-middle.font-medium.text-base {{ eventMember }}
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
@@ -11,10 +16,12 @@ export default {
|
|||||||
name: "CalendarEventCard",
|
name: "CalendarEventCard",
|
||||||
props: {
|
props: {
|
||||||
ownerEvent: Object,
|
ownerEvent: Object,
|
||||||
|
eventTypes: Array,
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
pixelsPerHour: 62,
|
pixelsPerHour: 62,
|
||||||
|
clicked: false,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
@@ -53,6 +60,12 @@ export default {
|
|||||||
height: `${this.calculateCardHeight - 8}px`,
|
height: `${this.calculateCardHeight - 8}px`,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
cardTheme() {
|
||||||
|
return {
|
||||||
|
"active-theme": this.clicked,
|
||||||
|
"default-theme": !this.clicked,
|
||||||
|
};
|
||||||
|
},
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
trimTime(time) {
|
trimTime(time) {
|
||||||
@@ -62,22 +75,73 @@ export default {
|
|||||||
return `${object.last_name} ${object.first_name} ${object.patronymic}`;
|
return `${object.last_name} ${object.first_name} ${object.patronymic}`;
|
||||||
},
|
},
|
||||||
transmitEventData() {
|
transmitEventData() {
|
||||||
|
this.changeTheme();
|
||||||
this.$emit("selected-event", this.ownerEvent);
|
this.$emit("selected-event", this.ownerEvent);
|
||||||
},
|
},
|
||||||
|
changeTheme() {
|
||||||
|
this.clicked = !this.clicked;
|
||||||
|
},
|
||||||
|
themeColors() {
|
||||||
|
switch (this.ownerEvent.kind) {
|
||||||
|
case this.eventTypes[0].label:
|
||||||
|
return {
|
||||||
|
"--bg-color": "var(--bg-event-green-color-0)",
|
||||||
|
"--bg-active": this.eventTypes[0].color,
|
||||||
|
"--bg-hover": "var(--bg-event-green-color-1)",
|
||||||
|
};
|
||||||
|
case this.eventTypes[1].label:
|
||||||
|
return {
|
||||||
|
"--bg-color": "var(--bg-event-red-color-0)",
|
||||||
|
"--bg-active": this.eventTypes[1].color,
|
||||||
|
"--bg-hover": "var(--bg-event-red-color-1)",
|
||||||
|
};
|
||||||
|
case this.eventTypes[2].label:
|
||||||
|
return {
|
||||||
|
"--bg-color": "var(--bg-event-yellow-color-0)",
|
||||||
|
"--bg-active": this.eventTypes[2].color,
|
||||||
|
"--bg-hover": "var(--bg-event-yellow-color-1)",
|
||||||
|
};
|
||||||
|
case this.eventTypes[3].label:
|
||||||
|
return {
|
||||||
|
"--bg-color": "var(--bg-event-blue-color-0)",
|
||||||
|
"--bg-active": this.eventTypes[3].color,
|
||||||
|
"--bg-hover": "var(--bg-event-blue-color-1)",
|
||||||
|
};
|
||||||
|
default:
|
||||||
|
return {
|
||||||
|
"--bg-color": "var(--default-white)",
|
||||||
|
"--bg-active": "var(--btn-blue-color)",
|
||||||
|
"--bg-hover": "var(--bg-event-default-hover-color)",
|
||||||
|
};
|
||||||
|
}
|
||||||
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="sass" scoped>
|
<style lang="sass" scoped>
|
||||||
.wrapper
|
.wrapper
|
||||||
width: calc(100% - 8px)
|
|
||||||
height: 23px
|
|
||||||
border-radius: 4px
|
|
||||||
background-color: var(--bg-event-yellow-color)
|
|
||||||
color: var(--font-black-color)
|
|
||||||
position: absolute
|
position: absolute
|
||||||
z-index: 3
|
z-index: 3
|
||||||
|
width: calc(100% - 8px)
|
||||||
|
height: 23px
|
||||||
|
|
||||||
|
.default-theme
|
||||||
|
.card
|
||||||
|
background-color: var(--bg-color)
|
||||||
|
border-left: 4px solid var(--bg-active)
|
||||||
|
|
||||||
|
.active-theme
|
||||||
|
.card
|
||||||
|
background-color: var(--bg-active)
|
||||||
|
border-left: 4px solid var(--bg-active)
|
||||||
|
|
||||||
|
.card
|
||||||
|
border-radius: 4px
|
||||||
|
color: var(--font-black-color)
|
||||||
|
&:hover
|
||||||
|
background-color: var(--bg-hover)
|
||||||
|
border-left: 4px solid var(--bg-active)
|
||||||
.header
|
.header
|
||||||
width: 100%
|
width: 100%
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -114,6 +114,12 @@ export default {
|
|||||||
return {};
|
return {};
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
eventTypes: {
|
||||||
|
type: Array,
|
||||||
|
default() {
|
||||||
|
return [];
|
||||||
|
},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
|||||||
@@ -20,6 +20,7 @@
|
|||||||
:day-start-time="validateStartTime"
|
:day-start-time="validateStartTime"
|
||||||
:day-end-time="validateEndTime"
|
:day-end-time="validateEndTime"
|
||||||
:style="columnSize"
|
:style="columnSize"
|
||||||
|
:event-types="eventTypes"
|
||||||
@selected-event="writeEventData"
|
@selected-event="writeEventData"
|
||||||
)
|
)
|
||||||
.flex.w-full.relative
|
.flex.w-full.relative
|
||||||
@@ -49,6 +50,7 @@
|
|||||||
:owners-data="ownersData"
|
:owners-data="ownersData"
|
||||||
:members-data="membersData"
|
:members-data="membersData"
|
||||||
:selected-event-data="selectedEvent"
|
:selected-event-data="selectedEvent"
|
||||||
|
:event-types="eventTypes"
|
||||||
@clear-selected-event-data="clearSelectedEvent"
|
@clear-selected-event-data="clearSelectedEvent"
|
||||||
@update-events="transmitUpdateEvents"
|
@update-events="transmitUpdateEvents"
|
||||||
)
|
)
|
||||||
@@ -104,6 +106,12 @@ export default {
|
|||||||
},
|
},
|
||||||
closeFormCreateEvent: Function,
|
closeFormCreateEvent: Function,
|
||||||
isOpenForm: Boolean,
|
isOpenForm: Boolean,
|
||||||
|
eventTypes: {
|
||||||
|
type: Array,
|
||||||
|
default() {
|
||||||
|
return [];
|
||||||
|
},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
@@ -370,6 +378,7 @@ export default {
|
|||||||
|
|
||||||
<style lang="sass" scoped>
|
<style lang="sass" scoped>
|
||||||
.schedule
|
.schedule
|
||||||
|
border-top-left-radius: 4px
|
||||||
position: relative
|
position: relative
|
||||||
border-top-left-radius: 4px
|
border-top-left-radius: 4px
|
||||||
background-color: var(--default-white)
|
background-color: var(--default-white)
|
||||||
|
|||||||
@@ -19,7 +19,7 @@
|
|||||||
@click="openFormCreate",
|
@click="openFormCreate",
|
||||||
v-else
|
v-else
|
||||||
) Создать событие
|
) Создать событие
|
||||||
calendar-sidebar-event(:is-open="isOpen", :event-type="eventType")
|
calendar-sidebar-event(:is-open="isOpen", :event-type="eventTypes")
|
||||||
calendar-sidebar-teammate(:team-data="teamData", :is-open="isOpen")
|
calendar-sidebar-teammate(:team-data="teamData", :is-open="isOpen")
|
||||||
.button-wrapper.flex.justify-center.mb-23px
|
.button-wrapper.flex.justify-center.mb-23px
|
||||||
base-button(
|
base-button(
|
||||||
@@ -47,7 +47,7 @@ export default {
|
|||||||
props: {
|
props: {
|
||||||
teamData: Array,
|
teamData: Array,
|
||||||
openFormCreate: Function,
|
openFormCreate: Function,
|
||||||
eventType: Array,
|
eventTypes: Array,
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
|||||||
Reference in New Issue
Block a user