BoardIdSelector.razor 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. <div class="modal-backdrop fade show" style="background-color: rgba(0,0,0,0.5);"></div>
  2. <div class="modal fade show" tabindex="-1" style="display: block;">
  3. <div class="modal-dialog modal-xl">
  4. <div class="modal-content">
  5. <div class="modal-header">
  6. <h5 class="modal-title">选择主板ID (1-72)</h5>
  7. <button type="button" class="btn-close" @onclick="OnCancel"></button>
  8. </div>
  9. <div class="modal-body">
  10. <div class="container-fluid">
  11. <div class="row">
  12. @for (int i = 1; i <= 72; i++)
  13. {
  14. var isUsed = usedBoardIds.Contains(i);
  15. var item = i;
  16. <div class="col-1 mb-2">
  17. <button class="btn w-100 @(isUsed ? "btn-secondary disabled" : "btn-outline-primary")"
  18. disabled="@isUsed"
  19. @onclick="() => OnSelect(item)"
  20. style="font-size: 0.7rem; padding: 0.25rem 0.5rem;">
  21. @item
  22. </button>
  23. </div>
  24. }
  25. </div>
  26. </div>
  27. </div>
  28. <div class="modal-footer">
  29. <button type="button" class="btn btn-secondary" @onclick="OnCancel">取消</button>
  30. </div>
  31. </div>
  32. </div>
  33. </div>
  34. @code {
  35. [Parameter] public List<int> usedBoardIds { get; set; } = new();
  36. [Parameter] public EventCallback<int> OnSelected { get; set; }
  37. [Parameter] public EventCallback OnCancelled { get; set; }
  38. private async Task OnSelect(int id)
  39. {
  40. await OnSelected.InvokeAsync(id);
  41. }
  42. private async Task OnCancel()
  43. {
  44. await OnCancelled.InvokeAsync();
  45. }
  46. }