Agregar indicador de la hora al resaltar un curso
This commit is contained in:
parent
611787fbbf
commit
fa55f56338
@ -1,6 +1,6 @@
|
|||||||
import { StyleSheet, css } from "aphrodite";
|
import { StyleSheet, css } from "aphrodite";
|
||||||
import { estilosGlobales } from "../../Estilos";
|
import { estilosGlobales } from "../../Estilos";
|
||||||
import { For } from "solid-js";
|
import { For, createSignal } from "solid-js";
|
||||||
|
|
||||||
const e = StyleSheet.create({
|
const e = StyleSheet.create({
|
||||||
celdaComun: {
|
celdaComun: {
|
||||||
@ -31,7 +31,9 @@ const e = StyleSheet.create({
|
|||||||
interface Props {
|
interface Props {
|
||||||
datos: { id: string, txt: string, esLab: boolean }[],
|
datos: { id: string, txt: string, esLab: boolean }[],
|
||||||
idHover: () => string,
|
idHover: () => string,
|
||||||
setIdHover: (v: string) => string
|
setIdHover: (v: string) => string,
|
||||||
|
fnResaltarFila: () => void,
|
||||||
|
fnDesresaltarFila: () => void
|
||||||
}
|
}
|
||||||
|
|
||||||
export function CeldaFila(props: Props) {
|
export function CeldaFila(props: Props) {
|
||||||
@ -40,19 +42,30 @@ export function CeldaFila(props: Props) {
|
|||||||
const idHover = props.idHover;
|
const idHover = props.idHover;
|
||||||
const setIdHover = props.setIdHover;
|
const setIdHover = props.setIdHover;
|
||||||
|
|
||||||
|
const fnOnMouseEnter = (id: string) => setIdHover(id);
|
||||||
|
const fnOnMouseLeave = () => setIdHover("");
|
||||||
|
|
||||||
return <div className={css(e.celdaComun, estilosGlobales.inlineBlock)}>
|
return <div className={css(e.celdaComun, estilosGlobales.inlineBlock)}>
|
||||||
<For each={datos}>
|
<For each={datos}>
|
||||||
{({id, txt, esLab}) => {
|
{({id, txt, esLab}) => {
|
||||||
|
const [estabaResaltado, setEstabaResaltado] = createSignal(false);
|
||||||
|
|
||||||
const clases = () => {
|
const clases = () => {
|
||||||
const clases = [e.celdaCurso, esLab ? e.celdaCursoLab : e.celdaCursoTeoria];
|
const clases = [e.celdaCurso, esLab ? e.celdaCursoLab : e.celdaCursoTeoria];
|
||||||
if (id === idHover()) clases.push(e.celdaCursoActiva);
|
if (id === idHover()) {
|
||||||
|
props.fnResaltarFila();
|
||||||
|
clases.push(e.celdaCursoActiva);
|
||||||
|
setEstabaResaltado(true);
|
||||||
|
} else if (estabaResaltado()) {
|
||||||
|
props.fnDesresaltarFila();
|
||||||
|
setEstabaResaltado(false);
|
||||||
|
}
|
||||||
return css(...clases);
|
return css(...clases);
|
||||||
};
|
};
|
||||||
|
|
||||||
return <span className={clases()}
|
return <span className={clases()}
|
||||||
onMouseEnter={() => setIdHover(id)}
|
onMouseEnter={() => fnOnMouseEnter(id)}
|
||||||
onMouseLeave={() => setIdHover("")}
|
onMouseLeave={fnOnMouseLeave}
|
||||||
>
|
>
|
||||||
{txt}
|
{txt}
|
||||||
</span>;
|
</span>;
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
import { StyleSheet, css } from "aphrodite";
|
import { StyleSheet, css } from "aphrodite";
|
||||||
import { estilosGlobales } from "../../Estilos";
|
import { estilosGlobales } from "../../Estilos";
|
||||||
import { For } from "solid-js";
|
import { For, createSignal } from "solid-js";
|
||||||
import { dias } from "../../Store";
|
import { dias } from "../../Store";
|
||||||
import {CeldaFila} from "./CeldaFila";
|
import { CeldaFila } from "./CeldaFila";
|
||||||
import { DataProcesada } from "../../types/DatosHorario";
|
import { DataProcesada } from "../../types/DatosHorario";
|
||||||
|
|
||||||
const e = StyleSheet.create({
|
const e = StyleSheet.create({
|
||||||
@ -16,11 +16,12 @@ const e = StyleSheet.create({
|
|||||||
fila: {
|
fila: {
|
||||||
position: "relative",
|
position: "relative",
|
||||||
zIndex: 2,
|
zIndex: 2,
|
||||||
transition: "background-color 250ms",
|
transition: "background-color 250ms, border 100ms",
|
||||||
marginLeft: "4rem",
|
marginLeft: "4rem",
|
||||||
display: "flex",
|
display: "flex",
|
||||||
alignItems: "center",
|
alignItems: "center",
|
||||||
minHeight: "1.5rem",
|
minHeight: "1.5rem",
|
||||||
|
borderLeft: "solid transparent",
|
||||||
":hover": {
|
":hover": {
|
||||||
// backgroundColor: "rgba(200, 200, 200, 0.25)"
|
// backgroundColor: "rgba(200, 200, 200, 0.25)"
|
||||||
}
|
}
|
||||||
@ -33,6 +34,9 @@ const e = StyleSheet.create({
|
|||||||
backgroundColor: "rgba(200, 200, 200, 0.25)",
|
backgroundColor: "rgba(200, 200, 200, 0.25)",
|
||||||
zIndex: 1
|
zIndex: 1
|
||||||
},
|
},
|
||||||
|
filaResaltada: {
|
||||||
|
borderLeft: "solid"
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
@ -43,15 +47,31 @@ interface Props {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export function FilaTabla(props: Props) {
|
export function FilaTabla(props: Props) {
|
||||||
|
const [filaResaltada, setFilaResaltada] = createSignal(false);
|
||||||
|
|
||||||
const hora = props.hora;
|
const hora = props.hora;
|
||||||
const data = props.data;
|
const data = props.data;
|
||||||
|
|
||||||
|
const claseFilaComun = css(e.fila);
|
||||||
|
const claseFilaResaltada = css(e.fila, e.filaResaltada);
|
||||||
|
|
||||||
|
const resaltarFila = () => {
|
||||||
|
if (!filaResaltada()) {
|
||||||
|
setFilaResaltada(true);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const desresaltarFila = () => {
|
||||||
|
if (filaResaltada()) {
|
||||||
|
setFilaResaltada(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return <div style={{position: "relative"}}>
|
return <div style={{position: "relative"}}>
|
||||||
<div className={css(e.celdaHora, estilosGlobales.inlineBlock)}>
|
<div className={css(e.celdaHora, estilosGlobales.inlineBlock)}>
|
||||||
{hora.substring(0, 5)}
|
{hora.substring(0, 5)}
|
||||||
</div>
|
</div>
|
||||||
<div className={css(e.fila)}>
|
<div className={filaResaltada() ? claseFilaResaltada : claseFilaComun}>
|
||||||
<For each={dias}>
|
<For each={dias}>
|
||||||
{dia => {
|
{dia => {
|
||||||
const diaStr = dia.substring(0, 2);
|
const diaStr = dia.substring(0, 2);
|
||||||
@ -59,7 +79,13 @@ export function FilaTabla(props: Props) {
|
|||||||
|
|
||||||
const datos = data()?.[horaStr]?.[diaStr] ?? [];
|
const datos = data()?.[horaStr]?.[diaStr] ?? [];
|
||||||
|
|
||||||
return <CeldaFila datos={datos} idHover={props.idHover} setIdHover={props.setIdHover}/>
|
return <CeldaFila
|
||||||
|
datos={datos}
|
||||||
|
idHover={props.idHover}
|
||||||
|
setIdHover={props.setIdHover}
|
||||||
|
fnResaltarFila={resaltarFila}
|
||||||
|
fnDesresaltarFila={desresaltarFila}
|
||||||
|
/>
|
||||||
}}
|
}}
|
||||||
</For>
|
</For>
|
||||||
<div className={css(e.filaBorde)}/>
|
<div className={css(e.filaBorde)}/>
|
||||||
|
Loading…
Reference in New Issue
Block a user