VmModalBody.cs 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. using VberAdmin.Web.Models.Input;
  2. namespace VberAdmin.Web.Models.Modals;
  3. public class VmModalBody : VmModalTabBodyBase
  4. {
  5. public VmModalBody(List<VmInputBase> inputs) : this()
  6. {
  7. AddInputs(inputs);
  8. }
  9. public VmModalBody()
  10. {
  11. _tabs = new List<VmModalTab>();
  12. }
  13. public bool TabAutoShow { get; set; } = true;
  14. public string BodyClass { get; set; } = "scroll-y px-5 px-lg-10";
  15. public string BodyContent { get; set; }
  16. private List<VmModalTab> _tabs;
  17. public List<VmModalTab> Tabs
  18. {
  19. get => _tabs.Select(SetTabDefault).ToList();
  20. set => _tabs = value;
  21. }
  22. public VmModalBody WithBodyContent(string body)
  23. {
  24. BodyContent += body;
  25. return this;
  26. }
  27. public VmModalBody WithBodyClass(string @class)
  28. {
  29. BodyClass += @class;
  30. return this;
  31. }
  32. public VmModalBody AddTab(string tabId, string name, string content = "")
  33. {
  34. _tabs.Add(new VmModalTab(tabId, name).WithContent(content));
  35. return this;
  36. }
  37. public VmModalBody AddTab(VmModalTabBodyBase tab)
  38. {
  39. _tabs.Add((VmModalTab)tab);
  40. return this;
  41. }
  42. public VmModalBody AddTab(VmModalTab tab)
  43. {
  44. _tabs.Add(tab);
  45. return this;
  46. }
  47. public VmModalBody AddTab(string tabId, string name, List<VmInputBase> inputs)
  48. {
  49. _tabs.Add((VmModalTab)new VmModalTab(tabId, name).AddInputs(inputs));
  50. return this;
  51. }
  52. public VmModalBody AddTabs(List<VmModalTab> tabs)
  53. {
  54. _tabs.AddRange(tabs);
  55. return this;
  56. }
  57. public VmModalBody SetTabNotAutoShow()
  58. {
  59. TabAutoShow = false;
  60. return this;
  61. }
  62. private VmModalTab SetTabDefault(VmModalTab tab)
  63. {
  64. tab.Modal = Modal;
  65. return tab;
  66. }
  67. }