|
27 | 27 | <textarea id="brailleText" |
28 | 28 | class="form-control" |
29 | 29 | rows="10" |
30 | | - @bind="inputText" |
31 | | - @bind:event="oninput" |
| 30 | + value="@inputText" |
| 31 | + @oninput="OnInputTextChanged" |
32 | 32 | placeholder="@Localizer[Resources.BrailleRAP_TextPlaceholder]" |
33 | 33 | aria-label="@Localizer[Resources.BrailleRAP_EnterText]"></textarea> |
34 | 34 | </div> |
|
68 | 68 | <div class="mb-3"> |
69 | 69 | <label for="brailleLanguage" class="form-label">@Localizer[Resources.BrailleRAP_Language]</label> |
70 | 70 | <select id="brailleLanguage" class="form-select" |
71 | | - @bind="selectedLanguage" |
72 | | - @bind:event="onchange" |
| 71 | + value="@selectedLanguage" |
| 72 | + @onchange="OnLanguageChanged" |
73 | 73 | aria-label="@Localizer[Resources.BrailleRAP_Language]"> |
74 | 74 | <option value="0">English (Grade 1)</option> |
75 | 75 | <option value="1">Français (Intégral)</option> |
|
80 | 80 | <div class="mb-3"> |
81 | 81 | <label for="columns" class="form-label">@Localizer[Resources.BrailleRAP_Columns]</label> |
82 | 82 | <input type="number" id="columns" class="form-control" |
83 | | - @bind="pageConfig.Columns" |
84 | | - @bind:event="oninput" |
| 83 | + value="@pageConfig.Columns" |
| 84 | + @onchange="OnColumnsChanged" |
85 | 85 | min="1" max="50" |
86 | 86 | aria-label="@Localizer[Resources.BrailleRAP_Columns]" /> |
87 | 87 | </div> |
88 | 88 | <div class="mb-3"> |
89 | 89 | <label for="rows" class="form-label">@Localizer[Resources.BrailleRAP_Rows]</label> |
90 | 90 | <input type="number" id="rows" class="form-control" |
91 | | - @bind="pageConfig.Rows" |
92 | | - @bind:event="oninput" |
| 91 | + value="@pageConfig.Rows" |
| 92 | + @onchange="OnRowsChanged" |
93 | 93 | min="1" max="50" |
94 | 94 | aria-label="@Localizer[Resources.BrailleRAP_Rows]" /> |
95 | 95 | </div> |
96 | 96 | <div class="mb-3"> |
97 | 97 | <label for="lineSpacing" class="form-label">@Localizer[Resources.BrailleRAP_LineSpacing]</label> |
98 | 98 | <input type="number" id="lineSpacing" class="form-control" |
99 | | - @bind="pageConfig.LineSpacing" |
100 | | - @bind:event="oninput" |
| 99 | + value="@pageConfig.LineSpacing" |
| 100 | + @onchange="OnLineSpacingChanged" |
101 | 101 | min="0" max="3" |
102 | 102 | aria-label="@Localizer[Resources.BrailleRAP_LineSpacing]" /> |
103 | 103 | </div> |
|
117 | 117 | <div class="mb-3"> |
118 | 118 | <label for="feedRate" class="form-label">@Localizer[Resources.BrailleRAP_FeedRate] (mm/min)</label> |
119 | 119 | <input type="number" id="feedRate" class="form-control" |
120 | | - @bind="machineConfig.FeedRate" |
| 120 | + value="@machineConfig.FeedRate" |
| 121 | + @onchange="OnFeedRateChanged" |
121 | 122 | min="100" max="12000" |
122 | 123 | aria-label="@Localizer[Resources.BrailleRAP_FeedRate]" /> |
123 | 124 | </div> |
124 | 125 | <div class="mb-3"> |
125 | 126 | <label for="offsetX" class="form-label">@Localizer[Resources.BrailleRAP_OffsetX] (mm)</label> |
126 | 127 | <input type="number" id="offsetX" class="form-control" |
127 | | - @bind="machineConfig.OffsetX" |
| 128 | + value="@machineConfig.OffsetX" |
| 129 | + @onchange="OnOffsetXChanged" |
128 | 130 | step="0.1" |
129 | 131 | aria-label="@Localizer[Resources.BrailleRAP_OffsetX]" /> |
130 | 132 | </div> |
131 | 133 | <div class="mb-3"> |
132 | 134 | <label for="offsetY" class="form-label">@Localizer[Resources.BrailleRAP_OffsetY] (mm)</label> |
133 | 135 | <input type="number" id="offsetY" class="form-control" |
134 | | - @bind="machineConfig.OffsetY" |
| 136 | + value="@machineConfig.OffsetY" |
| 137 | + @onchange="OnOffsetYChanged" |
135 | 138 | step="0.1" |
136 | 139 | aria-label="@Localizer[Resources.BrailleRAP_OffsetY]" /> |
137 | 140 | </div> |
|
306 | 309 | } |
307 | 310 | } |
308 | 311 |
|
| 312 | + private void OnInputTextChanged(ChangeEventArgs e) |
| 313 | + { |
| 314 | + inputText = e.Value?.ToString() ?? string.Empty; |
| 315 | + UpdatePreview(); |
| 316 | + } |
| 317 | + |
| 318 | + private void OnLanguageChanged(ChangeEventArgs e) |
| 319 | + { |
| 320 | + if (int.TryParse(e.Value?.ToString(), out int langValue)) |
| 321 | + { |
| 322 | + selectedLanguage = langValue; |
| 323 | + UpdatePreview(); |
| 324 | + } |
| 325 | + } |
| 326 | + |
| 327 | + private void OnColumnsChanged(ChangeEventArgs e) |
| 328 | + { |
| 329 | + if (int.TryParse(e.Value?.ToString(), out int value) && value > 0 && value <= 50) |
| 330 | + { |
| 331 | + pageConfig.Columns = value; |
| 332 | + UpdatePreview(); |
| 333 | + } |
| 334 | + } |
| 335 | + |
| 336 | + private void OnRowsChanged(ChangeEventArgs e) |
| 337 | + { |
| 338 | + if (int.TryParse(e.Value?.ToString(), out int value) && value > 0 && value <= 50) |
| 339 | + { |
| 340 | + pageConfig.Rows = value; |
| 341 | + UpdatePreview(); |
| 342 | + } |
| 343 | + } |
| 344 | + |
| 345 | + private void OnLineSpacingChanged(ChangeEventArgs e) |
| 346 | + { |
| 347 | + if (int.TryParse(e.Value?.ToString(), out int value) && value >= 0 && value <= 3) |
| 348 | + { |
| 349 | + pageConfig.LineSpacing = value; |
| 350 | + UpdatePreview(); |
| 351 | + } |
| 352 | + } |
| 353 | + |
| 354 | + private void OnFeedRateChanged(ChangeEventArgs e) |
| 355 | + { |
| 356 | + if (int.TryParse(e.Value?.ToString(), out int value) && value >= 100) |
| 357 | + { |
| 358 | + machineConfig.FeedRate = value; |
| 359 | + } |
| 360 | + } |
| 361 | + |
| 362 | + private void OnOffsetXChanged(ChangeEventArgs e) |
| 363 | + { |
| 364 | + if (double.TryParse(e.Value?.ToString(), out double value)) |
| 365 | + { |
| 366 | + machineConfig.OffsetX = value; |
| 367 | + } |
| 368 | + } |
| 369 | + |
| 370 | + private void OnOffsetYChanged(ChangeEventArgs e) |
| 371 | + { |
| 372 | + if (double.TryParse(e.Value?.ToString(), out double value)) |
| 373 | + { |
| 374 | + machineConfig.OffsetY = value; |
| 375 | + } |
| 376 | + } |
| 377 | + |
309 | 378 | private void ClearText() |
310 | 379 | { |
311 | 380 | inputText = string.Empty; |
|
0 commit comments