WIP Добавила темы карточек

This commit is contained in:
Daria Golova
2022-11-07 19:05:14 +03:00
parent 37223df834
commit dcbec0772d
7 changed files with 106 additions and 14 deletions

View File

@@ -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)

View File

@@ -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)" },

View File

@@ -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 {

View File

@@ -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>

View File

@@ -114,6 +114,12 @@ export default {
return {}; return {};
}, },
}, },
eventTypes: {
type: Array,
default() {
return [];
},
},
}, },
data() { data() {
return { return {

View File

@@ -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)

View File

@@ -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 {