|
20 | 20 |
|
21 | 21 | let editingStepId = $state<string | null>(null); |
22 | 22 | let editedStep = $state<Partial<Step>>({}); |
| 23 | + let editStepHour = $state("09"); |
| 24 | + let editStepMinute = $state("00"); |
| 25 | +
|
| 26 | + $effect(() => { |
| 27 | + if (editingStepId && editStepHour && editStepMinute) { |
| 28 | + editedStep.time = `${editStepHour}:${editStepMinute}`; |
| 29 | + } |
| 30 | + }); |
23 | 31 |
|
24 | 32 | function formatDate(dateStr: string): string { |
25 | 33 | const date = new Date(dateStr); |
|
33 | 41 | function startEdit(step: Step) { |
34 | 42 | editingStepId = step.id; |
35 | 43 | editedStep = { ...step }; |
| 44 | + const [hour, minute] = step.time.split(":"); |
| 45 | + editStepHour = hour; |
| 46 | + editStepMinute = minute; |
36 | 47 | } |
37 | 48 |
|
38 | 49 | function cancelEdit() { |
39 | 50 | editingStepId = null; |
40 | 51 | editedStep = {}; |
| 52 | + editStepHour = "09"; |
| 53 | + editStepMinute = "00"; |
41 | 54 | } |
42 | 55 |
|
43 | 56 | async function handleUpdate() { |
|
63 | 76 |
|
64 | 77 | editingStepId = null; |
65 | 78 | editedStep = {}; |
| 79 | + editStepHour = "09"; |
| 80 | + editStepMinute = "00"; |
66 | 81 | } |
67 | 82 |
|
68 | 83 | async function handleDelete(stepId: string) { |
|
95 | 110 | bind:value={editedStep.date} |
96 | 111 | class="minimal-input" |
97 | 112 | /> |
98 | | - <input |
99 | | - type="time" |
100 | | - bind:value={editedStep.time} |
101 | | - class="minimal-input" |
102 | | - /> |
| 113 | + <div class="minimal-time-picker"> |
| 114 | + <select bind:value={editStepHour} class="minimal-select"> |
| 115 | + {#each Array.from( { length: 24 }, (_, i) => String(i).padStart(2, "0"), ) as hour} |
| 116 | + <option value={hour}>{hour}</option> |
| 117 | + {/each} |
| 118 | + </select> |
| 119 | + <span class="minimal-time-separator">:</span> |
| 120 | + <select bind:value={editStepMinute} class="minimal-select"> |
| 121 | + <option value="00">00</option> |
| 122 | + <option value="15">15</option> |
| 123 | + <option value="30">30</option> |
| 124 | + <option value="45">45</option> |
| 125 | + </select> |
| 126 | + </div> |
103 | 127 | </div> |
104 | 128 | <input |
105 | 129 | type="text" |
|
0 commit comments