forked from verdnatura/salix-front
Reviewed-on: verdnatura/salix-front#391 Reviewed-by: Alex Moreno <alexm@verdnatura.es>
This commit is contained in:
commit
0dfd00dbfc
|
@ -59,12 +59,10 @@ const containerClasses = computed(() => {
|
||||||
// Clases para modificar el color de fecha seleccionada en componente QCalendarMonth
|
// Clases para modificar el color de fecha seleccionada en componente QCalendarMonth
|
||||||
.q-dark div .q-calendar-mini .q-calendar-month__day.q-selected .q-calendar__button {
|
.q-dark div .q-calendar-mini .q-calendar-month__day.q-selected .q-calendar__button {
|
||||||
background-color: $primary !important;
|
background-color: $primary !important;
|
||||||
color: white !important;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.q-calendar-mini .q-calendar-month__day.q-selected .q-calendar__button {
|
.q-calendar-mini .q-calendar-month__day.q-selected .q-calendar__button {
|
||||||
background-color: $primary !important;
|
background-color: $primary !important;
|
||||||
color: white !important;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.q-calendar-month__head--weekday {
|
.q-calendar-month__head--weekday {
|
||||||
|
@ -112,7 +110,6 @@ const containerClasses = computed(() => {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.q-calendar-month__week--days > div:nth-child(6),
|
.q-calendar-month__week--days > div:nth-child(6),
|
||||||
.q-calendar-month__week--days > div:nth-child(7) {
|
.q-calendar-month__week--days > div:nth-child(7) {
|
||||||
// Cambia el color de los días sábado y domingo
|
// Cambia el color de los días sábado y domingo
|
||||||
|
|
|
@ -82,6 +82,7 @@ const onFetchAbsences = (data) => {
|
||||||
type: type.code,
|
type: type.code,
|
||||||
absenceId: absence.id,
|
absenceId: absence.id,
|
||||||
isFestive: false,
|
isFestive: false,
|
||||||
|
isHoliday: false,
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -126,7 +126,7 @@ const handleEventSelected = (event, { year, month, day }) => {
|
||||||
}
|
}
|
||||||
|
|
||||||
const date = new Date(year, month - 1, day);
|
const date = new Date(year, month - 1, day);
|
||||||
if (!event.absenceId) createEvent(date);
|
if (!event?.absenceId) createEvent(date);
|
||||||
else if (event.type == props.absenceType.code) deleteEvent(event, date);
|
else if (event.type == props.absenceType.code) deleteEvent(event, date);
|
||||||
else editEvent(event);
|
else editEvent(event);
|
||||||
};
|
};
|
||||||
|
@ -136,24 +136,31 @@ const getEventByTimestamp = ({ year, month, day }) => {
|
||||||
return props.events[stamp] || null;
|
return props.events[stamp] || null;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const isFestive = (timestamp) => {
|
||||||
|
const event = getEventByTimestamp(timestamp);
|
||||||
|
if (!event) return false;
|
||||||
|
|
||||||
|
const { isFestive } = event;
|
||||||
|
return isFestive;
|
||||||
|
};
|
||||||
const getEventAttrs = (timestamp) => {
|
const getEventAttrs = (timestamp) => {
|
||||||
const event = getEventByTimestamp(timestamp);
|
const event = getEventByTimestamp(timestamp);
|
||||||
if (!event) return {};
|
if (!event) return {};
|
||||||
|
|
||||||
const { name, color, isFestive } = event;
|
const { name, color, isFestive, type } = event;
|
||||||
|
|
||||||
// Atributos a asignar a cada slot que representa un evento en el calendario
|
// Atributos a asignar a cada slot que representa un evento en el calendario
|
||||||
|
|
||||||
const attrs = {
|
const attrs = {
|
||||||
title: name,
|
title: name,
|
||||||
style: color ? `background-color: ${color};` : '',
|
style: color ? `background-color: ${color};` : ``,
|
||||||
label: timestamp.day,
|
label: timestamp.day,
|
||||||
};
|
};
|
||||||
|
|
||||||
if (isFestive) {
|
if (isFestive) {
|
||||||
attrs.class = '--festive';
|
attrs.class = '--festive';
|
||||||
attrs.label = event.absenceId ? timestamp.day : '';
|
attrs.label = event.absenceId ?? timestamp.day;
|
||||||
}
|
} else attrs.class = `--${type}`;
|
||||||
|
|
||||||
return attrs;
|
return attrs;
|
||||||
};
|
};
|
||||||
|
@ -162,7 +169,6 @@ const isToday = (timestamp) => {
|
||||||
const { year, month, day } = timestamp;
|
const { year, month, day } = timestamp;
|
||||||
return todayTimestamp.value === new Date(year, month - 1, day).getTime();
|
return todayTimestamp.value === new Date(year, month - 1, day).getTime();
|
||||||
};
|
};
|
||||||
|
|
||||||
onBeforeMount(() => {
|
onBeforeMount(() => {
|
||||||
updateSelectedDate(_year.value);
|
updateSelectedDate(_year.value);
|
||||||
});
|
});
|
||||||
|
@ -203,7 +209,6 @@ watch(_year, (newValue) => {
|
||||||
<template #day="{ scope: { timestamp } }">
|
<template #day="{ scope: { timestamp } }">
|
||||||
<!-- Este slot representa cada día del calendario y muestra un botón representando el correspondiente evento -->
|
<!-- Este slot representa cada día del calendario y muestra un botón representando el correspondiente evento -->
|
||||||
<QBtn
|
<QBtn
|
||||||
v-if="getEventByTimestamp(timestamp)"
|
|
||||||
v-bind="{ ...getEventAttrs(timestamp) }"
|
v-bind="{ ...getEventAttrs(timestamp) }"
|
||||||
@click="
|
@click="
|
||||||
handleEventSelected(getEventByTimestamp(timestamp), timestamp)
|
handleEventSelected(getEventByTimestamp(timestamp), timestamp)
|
||||||
|
@ -223,6 +228,11 @@ watch(_year, (newValue) => {
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
|
.q-calendar-month__day:has(.q-calendar-month__day--content):has(.q-btn.--festive)
|
||||||
|
.q-calendar-month__day--label__wrapper
|
||||||
|
button {
|
||||||
|
color: transparent;
|
||||||
|
}
|
||||||
.calendar-event {
|
.calendar-event {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
|
@ -231,14 +241,19 @@ watch(_year, (newValue) => {
|
||||||
font-size: 13px;
|
font-size: 13px;
|
||||||
line-height: 1.715em;
|
line-height: 1.715em;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
color: white;
|
|
||||||
|
|
||||||
&.--today {
|
&.--today {
|
||||||
border: 2px solid $info;
|
border: 2px solid $info;
|
||||||
}
|
}
|
||||||
|
|
||||||
&.--festive {
|
&.--festive {
|
||||||
border: 2px solid $negative;
|
color: $negative;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.--holiday {
|
||||||
|
& > span:nth-child(2) .block {
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
|
|
Loading…
Reference in New Issue