aboutsummaryrefslogtreecommitdiff
path: root/src/client/views/nodes/TaskManagerTask.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/views/nodes/TaskManagerTask.tsx')
-rw-r--r--src/client/views/nodes/TaskManagerTask.tsx61
1 files changed, 57 insertions, 4 deletions
diff --git a/src/client/views/nodes/TaskManagerTask.tsx b/src/client/views/nodes/TaskManagerTask.tsx
index 2d2444275..d8c1430d4 100644
--- a/src/client/views/nodes/TaskManagerTask.tsx
+++ b/src/client/views/nodes/TaskManagerTask.tsx
@@ -1,4 +1,4 @@
-import { action, observable, makeObservable } from 'mobx';
+import { action, observable, makeObservable, IReactionDisposer, reaction } from 'mobx';
import { observer } from 'mobx-react';
import * as React from 'react';
import { Docs } from '../../documents/Documents';
@@ -14,7 +14,7 @@ interface TaskManagerProps {
}
@observer
-export class TaskManagerTask extends React.Component<TaskManagerProps> {
+export class TaskManagerTask extends React.Component<Props> {
public static LayoutString(fieldStr: string) {
return FieldView.LayoutString(TaskManagerTask, fieldStr);
}
@@ -125,10 +125,38 @@ export class TaskManagerTask extends React.Component<TaskManagerProps> {
makeObservable(this);
}
+ _heightDisposer?: IReactionDisposer;
+ _widthDisposer?: IReactionDisposer;
+
componentDidMount() {
this.setTaskDateRange();
+
+ const doc = this.props.Document;
+ this._heightDisposer = reaction(
+ () => Number(doc._height),
+ height => {
+ const minHeight = Number(doc.height_min ?? 0);
+ if (!isNaN(height) && height < minHeight) {
+ doc._height = minHeight;
+ }
+ }
+ );
+
+ this._widthDisposer = reaction(
+ () => Number(doc._width),
+ width => {
+ const minWidth = Number(doc.width_min ?? 0);
+ if (!isNaN(width) && width < minWidth) {
+ doc._width = minWidth;
+ }
+ }
+ );
+ }
+
+ componentWillUnmount() {
+ this._heightDisposer?.();
+ this._widthDisposer?.();
}
-
render() {
@@ -195,6 +223,29 @@ export class TaskManagerTask extends React.Component<TaskManagerProps> {
disabled={isCompleted}
/>
All day
+
+ {allDay && (
+ <input
+ type="date"
+ value={(() => {
+ const rawRange = doc.date_range;
+ if (typeof rawRange !== 'string') return '';
+ const datePart = rawRange.split('|')[0];
+ if (!datePart) return '';
+ const d = new Date(datePart);
+ return !isNaN(d.getTime()) ? d.toISOString().split('T')[0] : '';
+ })()}
+ onChange={e => {
+ const newDate = new Date(e.target.value);
+ if (!isNaN(newDate.getTime())) {
+ const iso = newDate.toISOString().split('T')[0];
+ doc.date_range = `${iso}T00:00:00.000Z|${iso}T00:00:00.000Z`;
+ }
+ }}
+ disabled={isCompleted}
+ style={{ marginLeft: '8px' }}
+ />
+ )}
</label>
<label className="task-manager-complete">
@@ -246,6 +297,8 @@ Docs.Prototypes.TemplateMap.set(DocumentType.TASK, {
_layout_reflowVertical: true,
_layout_reflowHorizontal: true,
defaultDoubleClick: 'ignore',
- systemIcon: 'BsCheckSquare', // or whatever icon you like
+ systemIcon: 'BsCheckSquare',
+ height_min: 300,
+ width_min: 300
},
});