Dreamine.UI.Blazor 1.0.1
Dreamine.UI.Blazor 사용자 인터페이스 기능과 구성 요소를 제공합니다.
로딩중...
검색중...
일치하는것 없음
DreamineDialogService.cs
이 파일의 문서화 페이지로 가기
1namespace Dreamine.UI.Blazor;
2
19public sealed class DreamineDialogService
20{
29 public sealed class DialogRequest
30 {
39 public required string Title { get; init; }
48 public required string Message { get; init; }
57 public required IReadOnlyList<(DreamineDialogResult Result, string Text)> Buttons { get; init; }
66 public bool UseBlink { get; init; }
75 public string Color1 { get; init; } = "#0F1E3A";
84 public string Color2 { get; init; } = "#0F1E3A";
93 public string ForegroundColor { get; init; } = "#FFFFFF";
102 public int BlinkIntervalMs { get; init; } = 600;
111 public int AutoClickRemainingSeconds { get; set; }
121 }
122
131 private TaskCompletionSource<DreamineDialogResult>? _tcs;
132
141 public DialogRequest? Current { get; private set; }
142
151 public event Action? RequestChanged;
152
193 public Task<DreamineDialogResult> ShowMessageBoxAsync(
194 string message, string title = "Information", int autoClickDelaySeconds = 0)
195 => Show(new DialogRequest
196 {
197 Title = title,
198 Message = message,
199 Buttons = new[] { (DreamineDialogResult.OK, "확인") },
200 AutoClickRemainingSeconds = autoClickDelaySeconds,
201 AutoClickResult = DreamineDialogResult.OK
202 });
203
236 public Task<DreamineDialogResult> ShowOkCancelAsync(string message, string title = "Confirm")
237 => Show(new DialogRequest
238 {
239 Title = title,
240 Message = message,
241 Buttons = new[] { (DreamineDialogResult.Cancel, "취소"), (DreamineDialogResult.OK, "확인") }
242 });
243
276 public Task<DreamineDialogResult> ShowYesNoAsync(string message, string title = "Question")
277 => Show(new DialogRequest
278 {
279 Title = title,
280 Message = message,
281 Buttons = new[] { (DreamineDialogResult.No, "아니오"), (DreamineDialogResult.Yes, "예") }
282 });
283
316 public Task<DreamineDialogResult> ShowBlinkAsync(BlinkPopupOptions options)
317 {
318 var buttons = new List<(DreamineDialogResult, string)>();
319 if (!string.IsNullOrEmpty(options.CancelText))
320 buttons.Add((DreamineDialogResult.Cancel, options.CancelText));
321 if (!string.IsNullOrEmpty(options.OkText))
322 buttons.Add((DreamineDialogResult.OK, options.OkText));
323
324 return Show(new DialogRequest
325 {
326 Title = options.Title ?? string.Empty,
327 Message = options.Message ?? string.Empty,
328 Buttons = buttons,
329 UseBlink = options.UseBlink,
330 Color1 = options.Color1,
331 Color2 = options.Color2,
332 ForegroundColor = options.ForegroundColor,
333 BlinkIntervalMs = options.BlinkIntervalMs
334 });
335 }
336
361 private Task<DreamineDialogResult> Show(DialogRequest request)
362 {
363 _tcs = new TaskCompletionSource<DreamineDialogResult>();
364 Current = request;
365 RequestChanged?.Invoke();
366 return _tcs.Task;
367 }
368
385 public void Complete(DreamineDialogResult result)
386 {
387 Current = null;
388 RequestChanged?.Invoke();
389 _tcs?.TrySetResult(result);
390 _tcs = null;
391 }
392
401 public void TickAutoClick()
402 {
403 if (Current is null || Current.AutoClickRemainingSeconds <= 0)
404 return;
405
406 Current.AutoClickRemainingSeconds--;
407 if (Current.AutoClickRemainingSeconds <= 0)
408 Complete(Current.AutoClickResult);
409 else
410 RequestChanged?.Invoke();
411 }
412}
Task< DreamineDialogResult > Show(DialogRequest request)
void Complete(DreamineDialogResult result)
Task< DreamineDialogResult > ShowOkCancelAsync(string message, string title="Confirm")
Task< DreamineDialogResult > ShowMessageBoxAsync(string message, string title="Information", int autoClickDelaySeconds=0)
TaskCompletionSource< DreamineDialogResult >? _tcs
Task< DreamineDialogResult > ShowYesNoAsync(string message, string title="Question")
Task< DreamineDialogResult > ShowBlinkAsync(BlinkPopupOptions options)
required IReadOnlyList<(DreamineDialogResult Result, string Text)> Buttons