implement day selection
This commit is contained in:
@@ -4,8 +4,6 @@ import * as React from "bloatless-react";
|
||||
|
||||
import CalendarPageViewModel from "../../ViewModel/Pages/calendarPageViewModel";
|
||||
import { MonthGrid } from "../Components/monthGrid";
|
||||
import { TaskViewModelToEntry } from "../Components/taskEntry";
|
||||
import { createPropertyValueIndexState } from "../Components/propertyValueList";
|
||||
import { translations } from "../translations";
|
||||
|
||||
export function CalendarPage(calendarPageViewModel: CalendarPageViewModel) {
|
||||
@@ -17,7 +15,10 @@ export function CalendarPage(calendarPageViewModel: CalendarPageViewModel) {
|
||||
if (calendarPageViewModel.monthGrid.value == undefined) {
|
||||
return <div></div>;
|
||||
} else {
|
||||
return MonthGrid(calendarPageViewModel.monthGrid.value);
|
||||
return MonthGrid(
|
||||
calendarPageViewModel.monthGrid.value,
|
||||
calendarPageViewModel.selectedDate
|
||||
);
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
@@ -5,7 +5,10 @@ import { MonthGrid } from "../../Model/Files/calendarModel";
|
||||
import TaskViewModel from "../../ViewModel/Pages/taskViewModel";
|
||||
import { translations } from "../translations";
|
||||
|
||||
export function MonthGrid<T>(monthGrid: MonthGrid<React.MapState<T>>) {
|
||||
export function MonthGrid<T>(
|
||||
monthGrid: MonthGrid<React.MapState<T>>,
|
||||
selectedDate: React.State<number>
|
||||
) {
|
||||
const dayLabels: HTMLElement[] = [];
|
||||
let currentWeekday = monthGrid.firstDayOfWeek;
|
||||
while (dayLabels.length < 7) {
|
||||
@@ -37,8 +40,17 @@ export function MonthGrid<T>(monthGrid: MonthGrid<React.MapState<T>>) {
|
||||
{...Object.entries(monthGrid.days).map((entry) => {
|
||||
const [date, mapState] = entry;
|
||||
|
||||
const isSelected = React.createProxyState(
|
||||
[selectedDate],
|
||||
() => selectedDate.value == parseInt(date)
|
||||
);
|
||||
|
||||
function select() {
|
||||
selectedDate.value = parseInt(date);
|
||||
}
|
||||
|
||||
return (
|
||||
<button class="tile">
|
||||
<button class="tile" on:click={select} toggle:selected={isSelected}>
|
||||
<div>
|
||||
<b>{date}</b>
|
||||
<div
|
||||
|
||||
@@ -197,6 +197,10 @@ const englishTranslations = {
|
||||
|
||||
yearInputPlaceholder: "2000",
|
||||
monthInputPlaceholder: "01",
|
||||
|
||||
///
|
||||
|
||||
searchEventsHeadline: "Search Events"
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
@@ -30,6 +30,7 @@ export default class CalendarPageViewModel {
|
||||
// state
|
||||
selectedYear: React.State<number> = new React.State(0);
|
||||
selectedMonth: React.State<number> = new React.State(0);
|
||||
selectedDate: React.State<number> = new React.State(0);
|
||||
|
||||
monthGrid: React.State<MonthGrid<React.MapState<TaskViewModel>> | undefined> =
|
||||
new React.State<any>(undefined);
|
||||
@@ -70,6 +71,7 @@ export default class CalendarPageViewModel {
|
||||
const today: Date = new Date();
|
||||
this.selectedYear.value = today.getFullYear();
|
||||
this.selectedMonth.value = today.getMonth() + 1;
|
||||
this.selectedDate.value = today.getDate();
|
||||
};
|
||||
|
||||
showPreviousMonth = (): void => {
|
||||
@@ -119,7 +121,7 @@ export default class CalendarPageViewModel {
|
||||
public coreViewModel: CoreViewModel,
|
||||
storageModel: StorageModel,
|
||||
calendarModel: CalendarModel,
|
||||
boardAndTasksModel: BoardsAndTasksModel
|
||||
boardAndTasksModel: BoardsAndTasksModel,
|
||||
) {
|
||||
this.storageModel = storageModel;
|
||||
this.calendarModel = calendarModel;
|
||||
|
||||
Reference in New Issue
Block a user