@dcrackel/hematournamentui 1.0.706 → 1.0.707

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (330) hide show
  1. package/.prettierignore +7 -1
  2. package/.storybook/main.js +5 -12
  3. package/.storybook/preview-head.html +10 -3
  4. package/.storybook/preview.js +5 -13
  5. package/AGENTS.md +31 -1
  6. package/README.md +29 -22
  7. package/dist/HemaTournamentUI-lib.es.js +7189 -7467
  8. package/dist/HemaTournamentUI-lib.umd.js +27 -27
  9. package/dist/hematournamentui-tailwind.css +0 -24
  10. package/dist/hematournamentui.css +1 -1
  11. package/eslint.config.js +49 -23
  12. package/package.json +6 -2
  13. package/postcss.config.js +3 -3
  14. package/prettier.config.js +16 -10
  15. package/src/config/boutScreenConfigurations.js +52 -50
  16. package/src/main.js +1 -1
  17. package/src/mocks/EventQuestionsMock.js +43 -55
  18. package/src/mocks/assignments.js +180 -181
  19. package/src/mocks/clubGetAllMock.js +8143 -8143
  20. package/src/mocks/eventMock.js +205 -205
  21. package/src/mocks/eventPersonGetInitalPoolAssignmentsLivePools.js +541 -542
  22. package/src/mocks/eventPersonGetInitalPoolAssignmentsPreparing.js +522 -523
  23. package/src/mocks/eventPersonGetInitialPoolAssignments.js +386 -387
  24. package/src/mocks/eventPersonGetInitialPoolAssignments2.js +2267 -2268
  25. package/src/mocks/eventPersonGetInitialStaff.js +94 -95
  26. package/src/mocks/eventPersonGetPoolAssignmentEvent.js +161 -162
  27. package/src/mocks/eventRules.js +87 -86
  28. package/src/mocks/eventpersonGetEventById.js +1737 -1737
  29. package/src/mocks/getAllClubs.js +8143 -8143
  30. package/src/mocks/getAllStaffByTournamentId.js +74 -75
  31. package/src/mocks/getAllWeapons.js +81 -82
  32. package/src/mocks/getAttendance.js +43 -44
  33. package/src/mocks/getClub.js +43 -44
  34. package/src/mocks/getClubDisplayByClubId.js +104 -105
  35. package/src/mocks/getDEBouts-128Fencers.js +3247 -3248
  36. package/src/mocks/getDEBouts-42Fencers.js +3736 -3737
  37. package/src/mocks/getDEBouts-67Fencers.js +6684 -6690
  38. package/src/mocks/getDEBouts-DoubleElim.js +4198 -4199
  39. package/src/mocks/getDEWithBouts.js +628 -629
  40. package/src/mocks/getDeBouts-12fencers.js +1255 -1256
  41. package/src/mocks/getDeBouts-15fencers.js +925 -927
  42. package/src/mocks/getDeBouts-22fencers.js +1683 -1685
  43. package/src/mocks/getDeBouts-6fencers.js +818 -818
  44. package/src/mocks/getEventByTournamentId.js +47 -48
  45. package/src/mocks/getFinalEventResult.js +304 -305
  46. package/src/mocks/getPenaltiesByEvent.js +655 -656
  47. package/src/mocks/getPoolResults.js +1533 -1534
  48. package/src/mocks/getPoolsWithBouts.js +662 -663
  49. package/src/mocks/getPoolsWithBouts6PoolId139.js +885 -886
  50. package/src/mocks/getPoolsWithBoutsByPoolId.js +841 -841
  51. package/src/mocks/getPoolsWithBoutsClubColors.js +4 -4
  52. package/src/mocks/getPoolsWithBoutsComplete.js +919 -921
  53. package/src/mocks/locationMock.js +3213 -3214
  54. package/src/mocks/mockRoutes.js +3 -3
  55. package/src/mocks/personGetAllMock.js +2536 -2537
  56. package/src/mocks/personsMock.js +17569 -17570
  57. package/src/mocks/singleEventMock.js +249 -250
  58. package/src/mocks/tournamentMock.js +1988 -1927
  59. package/src/stories/Atoms/CheckBox/BaseCheckbox.stories.js +25 -23
  60. package/src/stories/Atoms/CheckBox/BaseCheckbox.vue +30 -24
  61. package/src/stories/Atoms/Icon/BaseIcon.stories.js +63 -64
  62. package/src/stories/Atoms/Icon/BaseIcon.test.js +67 -69
  63. package/src/stories/Atoms/Icon/BaseIcon.vue +2 -3
  64. package/src/stories/Atoms/Input/BaseInput.stories.js +18 -18
  65. package/src/stories/Atoms/Input/BaseInput.test.js +65 -67
  66. package/src/stories/Atoms/Input/BaseInput.vue +36 -31
  67. package/src/stories/Atoms/RadioGroup/BaseRadioGroup.stories.js +21 -21
  68. package/src/stories/Atoms/RadioGroup/BaseRadioGroup.test.js +31 -31
  69. package/src/stories/Atoms/RadioGroup/BaseRadioGroup.vue +23 -18
  70. package/src/stories/Atoms/Tag/BaseTag.stories.js +21 -21
  71. package/src/stories/Atoms/Tag/BaseTag.test.js +26 -30
  72. package/src/stories/Atoms/Tag/BaseTag.vue +18 -19
  73. package/src/stories/Atoms/Text/BaseText.stories.js +54 -62
  74. package/src/stories/Atoms/Text/BaseText.test.js +152 -154
  75. package/src/stories/Atoms/Text/BaseText.vue +103 -81
  76. package/src/stories/Configure.mdx +5 -3
  77. package/src/stories/Molecules/Boxes/BoutBoxes/HandshotCounterBox/HandshotCounterBox.stories.js +24 -24
  78. package/src/stories/Molecules/Boxes/BoutBoxes/HandshotCounterBox/HandshotCounterBox.vue +33 -15
  79. package/src/stories/Molecules/Boxes/BoutBoxes/PassesBox/PassesBox.stories.js +46 -48
  80. package/src/stories/Molecules/Boxes/BoutBoxes/PassesBox/PassesBox.vue +38 -25
  81. package/src/stories/Molecules/Boxes/BoutBoxes/PenaltyConfirmationBox/PenaltyConfirmationBox.stories.js +4 -4
  82. package/src/stories/Molecules/Boxes/BoutBoxes/PenaltyConfirmationBox/PenaltyConfirmationBox.vue +9 -4
  83. package/src/stories/Molecules/Boxes/BoutBoxes/ScoreBox/ScoreBox.stories.js +90 -90
  84. package/src/stories/Molecules/Boxes/BoutBoxes/ScoreBox/ScoreBox.vue +51 -32
  85. package/src/stories/Molecules/Boxes/BoutBoxes/TimerBox/TimerBox.stories.js +25 -25
  86. package/src/stories/Molecules/Boxes/BoutBoxes/TimerBox/TimerBox.vue +47 -12
  87. package/src/stories/Molecules/Boxes/CounterBox/CounterBox.stories.js +19 -19
  88. package/src/stories/Molecules/Boxes/CounterBox/CounterBox.vue +25 -19
  89. package/src/stories/Molecules/Boxes/EventStatusBox/EventStatusBox.stories.js +25 -28
  90. package/src/stories/Molecules/Boxes/EventStatusBox/EventStatusBox.vue +7 -7
  91. package/src/stories/Molecules/Breadcrumb/Admin/Breadcrumb.stories.js +28 -29
  92. package/src/stories/Molecules/Breadcrumb/Admin/Breadcrumb.test.js +58 -58
  93. package/src/stories/Molecules/Breadcrumb/Admin/Breadcrumb.vue +15 -15
  94. package/src/stories/Molecules/Buttons/BaseButton/BaseButton.stories.js +86 -86
  95. package/src/stories/Molecules/Buttons/BaseButton/BaseButton.test.js +101 -103
  96. package/src/stories/Molecules/Buttons/BaseButton/BaseButton.vue +87 -24
  97. package/src/stories/Molecules/Buttons/ButtonBar/ButtonBar.stories.js +31 -31
  98. package/src/stories/Molecules/Buttons/ButtonBar/ButtonBar.vue +19 -21
  99. package/src/stories/Molecules/CombinationInputs/TitledInput/TitledInput.stories.js +57 -57
  100. package/src/stories/Molecules/CombinationInputs/TitledInput/TitledInput.test.js +64 -64
  101. package/src/stories/Molecules/CombinationInputs/TitledInput/TitledInput.vue +17 -16
  102. package/src/stories/Molecules/Filters/FilterAndSortBar/FilterAndSortBar.stories.js +19 -19
  103. package/src/stories/Molecules/Filters/FilterAndSortBar/FilterAndSortBar.vue +18 -7
  104. package/src/stories/Molecules/Filters/FilterUpcomingPast/FilterUpcomingPast.stories.js +16 -18
  105. package/src/stories/Molecules/Filters/FilterUpcomingPast/FilterUpcomingPast.vue +31 -13
  106. package/src/stories/Molecules/Indicators/ServerConnected/ServerConnected.stories.js +27 -27
  107. package/src/stories/Molecules/Indicators/ServerConnected/ServerConnected.vue +6 -5
  108. package/src/stories/Molecules/Inputs/MultiSelect/MultiSelect.stories.js +35 -35
  109. package/src/stories/Molecules/Inputs/MultiSelect/MultiSelect.vue +13 -8
  110. package/src/stories/Molecules/Inputs/Toggle/Toggle.stories.js +27 -27
  111. package/src/stories/Molecules/Inputs/Toggle/Toggle.vue +8 -5
  112. package/src/stories/Molecules/Menus/TabBar/TabBar.stories.js +18 -18
  113. package/src/stories/Molecules/Menus/TabBar/TabBar.vue +1 -2
  114. package/src/stories/Molecules/Modals/AddDisplayModal/AddDisplay.stories.js +36 -27
  115. package/src/stories/Molecules/Modals/AddDisplayModal/AddDisplayModal.vue +25 -15
  116. package/src/stories/Molecules/Modals/BaseModal/BaseModal.stories.js +66 -65
  117. package/src/stories/Molecules/Modals/BaseModal/BaseModal.vue +47 -9
  118. package/src/stories/Molecules/Modals/ConfirmModal/ConfirmModal.stories.js +23 -23
  119. package/src/stories/Molecules/Modals/ConfirmModal/ConfirmModal.vue +59 -11
  120. package/src/stories/Molecules/Modals/DirectorModal/DirectorModal.stories.js +37 -37
  121. package/src/stories/Molecules/Modals/DirectorModal/DirectorModal.vue +27 -22
  122. package/src/stories/Molecules/Modals/EditBoutModal/EditBoutModal.stories.js +41 -41
  123. package/src/stories/Molecules/Modals/EditBoutModal/EditBoutModal.vue +27 -15
  124. package/src/stories/Molecules/Modals/EventWizardModal/EventWizardModal.stories.js +29 -30
  125. package/src/stories/Molecules/Modals/EventWizardModal/EventWizardModal.vue +18 -16
  126. package/src/stories/Molecules/Modals/LoadingModal/LoadingModal.stories.js +21 -21
  127. package/src/stories/Molecules/Modals/LoadingModal/LoadingModal.vue +7 -7
  128. package/src/stories/Molecules/Modals/PenaltyModal/PenaltyModal.stories.js +24 -24
  129. package/src/stories/Molecules/Modals/PenaltyModal/PenaltyModal.vue +30 -25
  130. package/src/stories/Molecules/Reorder/ReorderableShell.stories.js +81 -77
  131. package/src/stories/Molecules/Reorder/ReorderableShell.vue +46 -43
  132. package/src/stories/Molecules/StepIndicator/BaseStepIndicator/StepIndicator.stories.js +40 -40
  133. package/src/stories/Molecules/StepIndicator/BaseStepIndicator/StepIndicator.vue +23 -25
  134. package/src/stories/Organisms/Cards/BoutCard/BoutCard.stories.js +34 -29
  135. package/src/stories/Organisms/Cards/BoutCard/BoutCard.vue +69 -66
  136. package/src/stories/Organisms/Cards/BoutCard/Variants/BoutCardActive/BoutCardActive.stories.js +24 -22
  137. package/src/stories/Organisms/Cards/BoutCard/Variants/BoutCardActive/BoutCardActive.vue +53 -41
  138. package/src/stories/Organisms/Cards/BoutCard/Variants/BoutCardInactive/BoutCardInactive.stories.js +24 -37
  139. package/src/stories/Organisms/Cards/BoutCard/Variants/BoutCardInactive/BoutCardInactive.vue +88 -103
  140. package/src/stories/Organisms/Cards/BoutCard/Variants/BoutCardReorder/BoutCardReorder.vue +13 -14
  141. package/src/stories/Organisms/Cards/BoutCard/Variants/BoutCardWaiting/BoutCardWaiting.stories.js +5 -5
  142. package/src/stories/Organisms/Cards/BoutCard/Variants/BoutCardWaiting/BoutCardWaiting.vue +22 -21
  143. package/src/stories/Organisms/Cards/ClubCard/ClubCard.stories.js +14 -17
  144. package/src/stories/Organisms/Cards/ClubCard/ClubCard.vue +25 -18
  145. package/src/stories/Organisms/Cards/Director/DirectorCard.stories.js +23 -23
  146. package/src/stories/Organisms/Cards/Director/DirectorCard.vue +159 -103
  147. package/src/stories/Organisms/Cards/EditBout/EditBout.stories.js +47 -47
  148. package/src/stories/Organisms/Cards/EditBout/EditBout.test.js +51 -0
  149. package/src/stories/Organisms/Cards/EditBout/EditBout.vue +82 -54
  150. package/src/stories/Organisms/Cards/EventCard/EventCard.stories.js +9 -10
  151. package/src/stories/Organisms/Cards/EventCard/EventCard.vue +83 -63
  152. package/src/stories/Organisms/Cards/FencerCard/FencerCard.stories.js +105 -105
  153. package/src/stories/Organisms/Cards/FencerCard/FencerCard.vue +142 -58
  154. package/src/stories/Organisms/Cards/FencerFinalResultCard/FencerFinalResultCard.stories.js +14 -14
  155. package/src/stories/Organisms/Cards/FencerFinalResultCard/FencerFinalResultCard.vue +37 -26
  156. package/src/stories/Organisms/Cards/FencerPoolResultsCard/FencerPoolResults.stories.js +24 -24
  157. package/src/stories/Organisms/Cards/FencerPoolResultsCard/FencerPoolResultsCard.vue +95 -28
  158. package/src/stories/Organisms/Cards/ImportFencerCard/ImportFencerCard.stories.js +59 -60
  159. package/src/stories/Organisms/Cards/ImportFencerCard/ImportFencerCard.vue +13 -7
  160. package/src/stories/Organisms/Cards/KioskCard/KioskCard.stories.js +34 -34
  161. package/src/stories/Organisms/Cards/KioskCard/KioskCard.vue +149 -104
  162. package/src/stories/Organisms/Cards/PenaltyCard/PenaltyCard.stories.js +19 -20
  163. package/src/stories/Organisms/Cards/PenaltyCard/PenaltyCard.vue +207 -163
  164. package/src/stories/Organisms/Cards/PenaltyFencerCard/PenaltyFencerCard.stories.js +17 -17
  165. package/src/stories/Organisms/Cards/PenaltyFencerCard/PenaltyFencerCard.vue +88 -46
  166. package/src/stories/Organisms/Cards/PoolBoutMatchCard/PoolBoutMatchCard.stories.js +182 -182
  167. package/src/stories/Organisms/Cards/PoolBoutMatchCard/PoolBoutMatchCard.vue +21 -12
  168. package/src/stories/Organisms/Cards/PoolFencerCard/PoolFencerCard.stories.js +25 -28
  169. package/src/stories/Organisms/Cards/PoolFencerCard/PoolFencerCard.vue +28 -22
  170. package/src/stories/Organisms/Cards/StaffCard/StaffCard.stories.js +62 -62
  171. package/src/stories/Organisms/Cards/StaffCard/StaffCard.vue +27 -22
  172. package/src/stories/Organisms/Cards/TableauBoutCard/SpacingConfig.js +103 -103
  173. package/src/stories/Organisms/Cards/TableauBoutCard/TableauBoutCard.stories.js +73 -73
  174. package/src/stories/Organisms/Cards/TableauBoutCard/TableauBoutCard.test.js +44 -0
  175. package/src/stories/Organisms/Cards/TableauBoutCard/TableauBoutCard.vue +69 -56
  176. package/src/stories/Organisms/Cards/TableauFencerCard/TableauFencerCard.stories.js +80 -81
  177. package/src/stories/Organisms/Cards/TableauFencerCard/TableauFencerCard.vue +39 -22
  178. package/src/stories/Organisms/Cards/TournamentAdminCard/TournamentAdmin.stories.js +20 -20
  179. package/src/stories/Organisms/Cards/TournamentAdminCard/TournamentAdminCard.vue +62 -33
  180. package/src/stories/Organisms/Cards/WaitlistFencerCard/WaitlistFencerCard.vue +44 -30
  181. package/src/stories/Organisms/ComplexInputs/AddressAutocomplete/AddressAutocomplete.stories.js +6 -7
  182. package/src/stories/Organisms/ComplexInputs/AddressAutocomplete/AddressAutocomplete.vue +7 -8
  183. package/src/stories/Organisms/ComplexInputs/ClubColorPicker/ClubColorPicker.stories.js +31 -31
  184. package/src/stories/Organisms/ComplexInputs/ClubColorPicker/ClubColorPicker.vue +30 -35
  185. package/src/stories/Organisms/ComplexInputs/DatePicker/DatePicker.stories.js +13 -16
  186. package/src/stories/Organisms/ComplexInputs/DatePicker/DatePicker.vue +68 -70
  187. package/src/stories/Organisms/ComplexInputs/DropDown/DropDownMenu.stories.js +32 -34
  188. package/src/stories/Organisms/ComplexInputs/DropDown/DropDownMenu.vue +48 -25
  189. package/src/stories/Organisms/ComplexInputs/FindLocation/FindLocation.stories.js +21 -21
  190. package/src/stories/Organisms/ComplexInputs/FindLocation/FindLocation.vue +65 -38
  191. package/src/stories/Organisms/ComplexInputs/FindOrAddPerson/FindOrAddPerson.stories.js +19 -20
  192. package/src/stories/Organisms/ComplexInputs/FindOrAddPerson/FindOrAddPerson.vue +46 -21
  193. package/src/stories/Organisms/ComplexInputs/FindPerson/FindPerson.stories.js +22 -22
  194. package/src/stories/Organisms/ComplexInputs/FindPerson/FindPerson.vue +68 -23
  195. package/src/stories/Organisms/ComplexInputs/ImageCropper/ImageCropper.stories.js +13 -13
  196. package/src/stories/Organisms/ComplexInputs/ImageCropper/ImageCropper.vue +25 -24
  197. package/src/stories/Organisms/ComplexInputs/TextBoxEditor/TextBoxEditor.stories.js +6 -10
  198. package/src/stories/Organisms/ComplexInputs/TextBoxEditor/TextBoxEditor.vue +112 -48
  199. package/src/stories/Organisms/Containers/BoutsSection/BoutsSection.stories.js +43 -44
  200. package/src/stories/Organisms/Containers/BoutsSection/BoutsSection.vue +30 -23
  201. package/src/stories/Organisms/Containers/FinalResults/FinalResultsTable.stories.js +20 -20
  202. package/src/stories/Organisms/Containers/FinalResults/FinalResultsTable.vue +12 -12
  203. package/src/stories/Organisms/Containers/KioskContainer/KioskContainer.stories.js +24 -25
  204. package/src/stories/Organisms/Containers/KioskContainer/KioskContainer.vue +112 -87
  205. package/src/stories/Organisms/Containers/Pool/Pool.stories.js +54 -54
  206. package/src/stories/Organisms/Containers/Pool/Pool.vue +64 -41
  207. package/src/stories/Organisms/Containers/PoolGrid/PoolGrid.stories.js +17 -19
  208. package/src/stories/Organisms/Containers/PoolGrid/PoolGrid.vue +189 -135
  209. package/src/stories/Organisms/Containers/PoolResults/PoolResultsTable.stories.js +53 -54
  210. package/src/stories/Organisms/Containers/PoolResults/PoolResultsTable.vue +107 -73
  211. package/src/stories/Organisms/Containers/Tableau/Tableau.stories.js +23 -24
  212. package/src/stories/Organisms/Containers/Tableau/Tableau.test.js +49 -10
  213. package/src/stories/Organisms/Containers/Tableau/Tableau.vue +96 -173
  214. package/src/stories/Organisms/Containers/TableauColumn/TabeauColumn.stories.js +26 -27
  215. package/src/stories/Organisms/Containers/TableauColumn/TableauColumn.vue +20 -17
  216. package/src/stories/Organisms/Containers/TableauLines/SpacingConfig.js +153 -103
  217. package/src/stories/Organisms/Containers/TableauLines/TableauLines.stories.js +13 -15
  218. package/src/stories/Organisms/Containers/TableauLines/TableauLines.vue +7 -8
  219. package/src/stories/Organisms/Form/AddDisplay/AddDisplay.stories.js +26 -26
  220. package/src/stories/Organisms/Form/AddDisplay/AddDisplay.vue +130 -118
  221. package/src/stories/Organisms/Form/AddNewPerson/AddNewPerson.stories.js +14 -15
  222. package/src/stories/Organisms/Form/AddNewPerson/AddNewPerson.vue +94 -88
  223. package/src/stories/Organisms/Grids/GridContainer.stories.js +101 -101
  224. package/src/stories/Organisms/Grids/GridContainer.vue +160 -136
  225. package/src/stories/Organisms/Headers/AttendanceSummary/AttendanceSummary.stories.js +47 -47
  226. package/src/stories/Organisms/Headers/AttendanceSummary/AttendanceSummary.vue +65 -54
  227. package/src/stories/Organisms/Headers/EventFinalResultsHeader/EventFinalResultsHeader.stories.js +27 -27
  228. package/src/stories/Organisms/Headers/EventFinalResultsHeader/EventFinalResultsHeader.vue +38 -22
  229. package/src/stories/Organisms/Headers/PenaltySummary/PenaltySummary.stories.js +80 -80
  230. package/src/stories/Organisms/Headers/PenaltySummary/PenaltySummary.vue +14 -6
  231. package/src/stories/Organisms/Headers/PoolResultsHeader/PoolResultsHeader.stories.js +34 -34
  232. package/src/stories/Organisms/Headers/PoolResultsHeader/PoolResultsHeader.vue +36 -36
  233. package/src/stories/Organisms/Headers/PoolSummary/PoolSummary.stories.js +21 -21
  234. package/src/stories/Organisms/Headers/PoolSummary/PoolSummary.vue +56 -29
  235. package/src/stories/Organisms/Headers/ToggleHeader/ToggleHeader.stories.js +38 -38
  236. package/src/stories/Organisms/Headers/ToggleHeader/ToggleHeader.vue +19 -20
  237. package/src/stories/Organisms/RankCalculator/ByLetter/RankCalculator.stories.js +12 -13
  238. package/src/stories/Organisms/RankCalculator/ByLetter/RankCalculator.vue +47 -41
  239. package/src/stories/Organisms/RankCalculator/ByPoints/RankCalculatorByPoints.stories.js +12 -13
  240. package/src/stories/Organisms/RankCalculator/ByPoints/RankCalculatorByPoints.vue +66 -37
  241. package/src/stories/Organisms/Skeletons/ClubManagement/ClubManagement.stories.js +6 -10
  242. package/src/stories/Organisms/Skeletons/ClubManagement/ClubMangementSkeleton.vue +2 -2
  243. package/src/stories/Organisms/Skeletons/EventCard/EventCardSkeleton.stories.js +6 -10
  244. package/src/stories/Organisms/Skeletons/EventCard/EventCardSkeleton.vue +2 -3
  245. package/src/stories/Organisms/Skeletons/FencerCard/FencerCardSkeleton.stories.js +6 -10
  246. package/src/stories/Organisms/Skeletons/FencerCard/FencerCardSkeleton.vue +1 -1
  247. package/src/stories/Organisms/Skeletons/PersonManagement/PersonManagementSkeleton.stories.js +6 -9
  248. package/src/stories/Organisms/Skeletons/PersonManagement/PersonManagementSkeleton.vue +2 -2
  249. package/src/stories/Organisms/Skeletons/PoolSkeleton/PoolSkeleton.stories.js +6 -10
  250. package/src/stories/Organisms/Skeletons/PoolSkeleton/PoolSkeleton.vue +10 -4
  251. package/src/stories/Organisms/Skeletons/TournamentCard/TournamentCardSkeleton.stories.js +6 -10
  252. package/src/stories/Organisms/Skeletons/TournamentCard/TournamentCardSkeleton.vue +2 -2
  253. package/src/stories/Organisms/Wizards/EditEventWizard/BasicEventInfo/BasicEventInfo.stories.js +34 -34
  254. package/src/stories/Organisms/Wizards/EditEventWizard/BasicEventInfo/BasicEventInfo.vue +106 -56
  255. package/src/stories/Organisms/Wizards/EditEventWizard/DirectElimination/DirectElimination.stories.js +95 -95
  256. package/src/stories/Organisms/Wizards/EditEventWizard/DirectElimination/DirectElimination.vue +129 -69
  257. package/src/stories/Organisms/Wizards/EditEventWizard/DirectEliminationPromotion/DirectEliminationPromotion.stories.js +87 -88
  258. package/src/stories/Organisms/Wizards/EditEventWizard/DirectEliminationPromotion/DirectEliminationPromotion.vue +105 -60
  259. package/src/stories/Organisms/Wizards/EditEventWizard/EditEventWizard.stories.js +82 -82
  260. package/src/stories/Organisms/Wizards/EditEventWizard/EditEventWizard.vue +150 -177
  261. package/src/stories/Organisms/Wizards/EditEventWizard/EventCustomization/EventCustomization.stories.js +28 -28
  262. package/src/stories/Organisms/Wizards/EditEventWizard/EventCustomization/EventCustomization.vue +96 -36
  263. package/src/stories/Organisms/Wizards/EditEventWizard/PoolConfiguration/PoolConfiguration.stories.js +99 -99
  264. package/src/stories/Organisms/Wizards/EditEventWizard/PoolConfiguration/PoolConfiguration.vue +115 -67
  265. package/src/stories/Templates/Assignment/Assignment.stories.js +22 -23
  266. package/src/stories/Templates/Assignment/Assignment.vue +210 -161
  267. package/src/stories/Templates/ClubManagement/ClubBasic/ClubBasic.stories.js +90 -90
  268. package/src/stories/Templates/ClubManagement/ClubBasic/ClubBasic.vue +68 -55
  269. package/src/stories/Templates/ClubManagement/ClubManagement.stories.js +87 -87
  270. package/src/stories/Templates/ClubManagement/ClubManagement.vue +167 -147
  271. package/src/stories/Templates/EventManagement/Bracket/Bracket.stories.js +82 -103
  272. package/src/stories/Templates/EventManagement/Bracket/Bracket.test.js +88 -43
  273. package/src/stories/Templates/EventManagement/Bracket/Bracket.vue +167 -200
  274. package/src/stories/Templates/EventManagement/EditEventInfo/EditEventInfo.stories.js +49 -50
  275. package/src/stories/Templates/EventManagement/EditEventInfo/EditEventInfo.vue +21 -21
  276. package/src/stories/Templates/EventManagement/EventAttendance/EventAttendance.stories.js +105 -103
  277. package/src/stories/Templates/EventManagement/EventAttendance/EventAttendance.vue +289 -226
  278. package/src/stories/Templates/EventManagement/EventFinalResults/EventFinalResults.stories.js +30 -30
  279. package/src/stories/Templates/EventManagement/EventFinalResults/EventFinalResults.vue +27 -22
  280. package/src/stories/Templates/EventManagement/KioskDisplay/KioskDisplay.stories.js +44 -45
  281. package/src/stories/Templates/EventManagement/KioskDisplay/KioskDisplay.vue +52 -43
  282. package/src/stories/Templates/EventManagement/Penalties/PenaltyReport.stories.js +28 -29
  283. package/src/stories/Templates/EventManagement/Penalties/PenaltyReport.vue +54 -39
  284. package/src/stories/Templates/EventManagement/PoolLive/PoolLive.stories.js +80 -111
  285. package/src/stories/Templates/EventManagement/PoolLive/PoolLive.test.js +121 -0
  286. package/src/stories/Templates/EventManagement/PoolLive/PoolLive.vue +290 -255
  287. package/src/stories/Templates/EventManagement/PoolManagement/PoolManagement.stories.js +109 -107
  288. package/src/stories/Templates/EventManagement/PoolManagement/PoolManagement.vue +144 -87
  289. package/src/stories/Templates/EventManagement/PoolResults/PoolResults.stories.js +56 -57
  290. package/src/stories/Templates/EventManagement/PoolResults/PoolResults.vue +132 -123
  291. package/src/stories/Templates/EventManagement/StaffList/StaffList.stories.js +56 -57
  292. package/src/stories/Templates/EventManagement/StaffList/StaffList.vue +84 -47
  293. package/src/stories/Templates/Menus/Admin/AdminLeftMenu.stories.js +29 -29
  294. package/src/stories/Templates/Menus/Admin/AdminLeftMenu.vue +71 -67
  295. package/src/stories/Templates/Menus/EditEventsTopMenu/EditEventsTopMenu.stories.js +39 -40
  296. package/src/stories/Templates/Menus/EditEventsTopMenu/EditEventsTopMenu.vue +79 -71
  297. package/src/stories/Templates/PersonManagement/Admin/Administration/Administration.stories.js +47 -47
  298. package/src/stories/Templates/PersonManagement/Admin/Administration/Administration.vue +39 -42
  299. package/src/stories/Templates/PersonManagement/Admin/FencerAdmin/FencerAdmin.stories.js +54 -54
  300. package/src/stories/Templates/PersonManagement/Admin/FencerAdmin/FencerAdmin.vue +27 -31
  301. package/src/stories/Templates/PersonManagement/Admin/MergeAccounts/MergeAccounts.stories.js +69 -69
  302. package/src/stories/Templates/PersonManagement/Admin/MergeAccounts/MergeAccounts.vue +78 -89
  303. package/src/stories/Templates/PersonManagement/Attendance/Attendance.stories.js +22 -22
  304. package/src/stories/Templates/PersonManagement/Attendance/Attendance.vue +61 -33
  305. package/src/stories/Templates/PersonManagement/Basic/BasicEdit.stories.js +29 -29
  306. package/src/stories/Templates/PersonManagement/Basic/BasicEdit.vue +80 -53
  307. package/src/stories/Templates/PersonManagement/PersonManagement.stories.js +84 -86
  308. package/src/stories/Templates/PersonManagement/PersonManagement.vue +107 -82
  309. package/src/stories/Templates/TournamentManagement/ListEvents/ListEvents.stories.js +31 -31
  310. package/src/stories/Templates/TournamentManagement/ListEvents/ListEvents.vue +70 -51
  311. package/src/stories/Templates/TournamentManagement/TournamentManagement.stories.js +79 -79
  312. package/src/stories/Templates/TournamentManagement/TournamentManagement.vue +275 -230
  313. package/src/stories/Templates/TournamentManagement/TournamentPageOne/TournamentPageOne.stories.js +113 -113
  314. package/src/stories/Templates/TournamentManagement/TournamentPageOne/TournamentPageOne.vue +175 -146
  315. package/src/stories/Templates/TournamentManagement/TournamentPageTwo/TournamentPageTwo.stories.js +77 -77
  316. package/src/stories/Templates/TournamentManagement/TournamentPageTwo/TournamentPageTwo.vue +208 -185
  317. package/src/stories/Util/Validations/AddNewPersonModalValidation.js +23 -19
  318. package/src/stories/Util/Validations/ClubManagementValidations.js +17 -21
  319. package/src/stories/Util/Validations/PersonManagementValidations.js +26 -22
  320. package/src/stories/Util/Validations/TournamentFieldsValidations.js +20 -18
  321. package/src/stories/Util/seeding.js +131 -131
  322. package/src/stories/Util/tabs.js +75 -75
  323. package/tailwind/tailwind.css +5 -7
  324. package/tailwind.config.js +12 -15
  325. package/vite.config.js +3 -3
  326. package/src/mocks/getDirectors.js +0 -18
  327. package/src/stories/Molecules/Modals/AssignDirectorModal/AssignDirectorModal.stories.js +0 -45
  328. package/src/stories/Molecules/Modals/AssignDirectorModal/AssignDirectorModal.vue +0 -111
  329. package/src/stories/Organisms/Cards/DirectorAssignmentCard/DirectorAssignmentCard.stories.js +0 -45
  330. package/src/stories/Organisms/Cards/DirectorAssignmentCard/DirectorAssignmentCard.vue +0 -83
@@ -6,71 +6,72 @@
6
6
  <div class="flex justify-between shadow-lg drop-shadow p-2 rounded-xl bg-poolBox w-5/12">
7
7
  <div class="flex space-x-4 items-center">
8
8
  <div class="relative">
9
- <img :src="missingPortrait" alt="Placeholder portrait" class="w-12 h-12 rounded-full"/>
9
+ <img :src="missingPortrait" alt="Placeholder portrait" class="w-12 h-12 rounded-full" />
10
10
  <div :class="`w-4 h-4 rounded-full bg-${card.fencer1.colorDot} relative -mt-4 ml-9 z-10`"></div>
11
11
  </div>
12
12
  <div>
13
- <BaseText text="Waiting to be selected" size="md" color="quaternary" weight="bold"/>
14
- <BaseText text="starting soon" size="xs" color="quinary"/>
13
+ <BaseText text="Waiting to be selected" size="md" color="quaternary" weight="bold" />
14
+ <BaseText text="starting soon" size="xs" color="quinary" />
15
15
  </div>
16
16
  </div>
17
- <BaseText text="" size="3xl" weight="bold" class="align-middle pr-3 pt-0.5"/>
17
+ <BaseText text="" size="3xl" weight="bold" class="align-middle pr-3 pt-0.5" />
18
18
  </div>
19
19
 
20
20
  <!-- Right placeholder -->
21
21
  <div class="flex justify-between shadow-lg drop-shadow p-2 rounded-xl bg-poolBox w-5/12">
22
22
  <div class="flex justify-end space-x-4 ml-4 w-full">
23
23
  <div class="text-right">
24
- <BaseText text="Waiting to be selected" size="md" color="quaternary" weight="bold"/>
25
- <BaseText text="starting soon" size="xs" color="quinary"/>
24
+ <BaseText text="Waiting to be selected" size="md" color="quaternary" weight="bold" />
25
+ <BaseText text="starting soon" size="xs" color="quinary" />
26
26
  </div>
27
27
  <div class="relative">
28
- <img :src="missingPortrait" alt="Placeholder portrait" class="w-12 h-12 rounded-full"/>
28
+ <img :src="missingPortrait" alt="Placeholder portrait" class="w-12 h-12 rounded-full" />
29
29
  <div :class="`w-4 h-4 rounded-full bg-${card.fencer2.colorDot} relative -mt-4 -ml-1 z-10`"></div>
30
30
  </div>
31
31
  </div>
32
32
  </div>
33
33
 
34
- <section class="w-18 bg-primary">
35
- </section>
34
+ <section class="w-18 bg-primary"></section>
36
35
  </div>
37
36
 
38
37
  <!-- Mobile -->
39
38
  <div class="flex md:hidden justify-between items-center p-4 border rounded-md bg-poolBox">
40
39
  <div class="relative flex flex-col items-center">
41
- <img :src="missingPortrait" alt="Placeholder portrait" class="w-12 h-12 rounded-full"/>
40
+ <img :src="missingPortrait" alt="Placeholder portrait" class="w-12 h-12 rounded-full" />
42
41
  <div :class="`w-4 h-4 rounded-full bg-${card.fencer1.colorDot} relative -mt-4 ml-9 z-10`"></div>
43
42
  </div>
44
43
 
45
44
  <div class="text-center flex-1 mx-4">
46
- <BaseText text="Select a Match!" size="md" color="quaternary" weight="bold"/>
47
- <BaseText text="to get started" size="xs" color="quinary"/>
45
+ <BaseText text="Select a Match!" size="md" color="quaternary" weight="bold" />
46
+ <BaseText text="to get started" size="xs" color="quinary" />
48
47
  </div>
49
48
 
50
49
  <!-- right portrait -->
51
50
  <div class="relative w-12 h-12">
52
51
  <img :src="missingPortrait" alt="Portrait" class="w-12 h-12 rounded-full" />
53
- <div :class="`absolute -mt-4 -right-1 w-4 h-4 rounded-full bg-${card.fencer2.colorDot} ring-2 ring-white`"></div>
52
+ <div
53
+ :class="`absolute -mt-4 -right-1 w-4 h-4 rounded-full bg-${card.fencer2.colorDot} ring-2 ring-white`"
54
+ ></div>
54
55
  </div>
55
56
  </div>
56
57
  </section>
57
58
  </template>
58
59
 
59
60
  <script>
60
- import BaseText from "../../../../../Atoms/Text/BaseText.vue";
61
- import missingPortrait from "../../../../../../assets/portrait1.png";
61
+ import BaseText from '../../../../../Atoms/Text/BaseText.vue';
62
+ import missingPortrait from '../../../../../../assets/portrait1.png';
62
63
 
63
64
  export default {
64
- name: "BoutCardWaiting",
65
- components: {BaseText },
65
+ name: 'BoutCardWaiting',
66
+ components: { BaseText },
66
67
  props: {
67
68
  card: {
68
69
  type: Object,
69
70
  required: true
70
- },
71
+ }
71
72
  },
72
73
  data() {
73
74
  return { missingPortrait };
74
- },
75
- };
76
- </script>
75
+ }
76
+ };
77
+ </script>
@@ -1,23 +1,20 @@
1
1
  import ClubCard from './ClubCard.vue';
2
- import getAllClubs from '../../../../mocks/getAllClubs.js'
2
+ import getAllClubs from '../../../../mocks/getAllClubs.js';
3
3
 
4
4
  export default {
5
- title: 'Organisms/Cards/ClubCard',
6
- component: ClubCard,
7
- tags: ['autodocs'],
8
- args: {
9
- detail: Object
10
- },
11
- argTypes: {
12
- detail: getAllClubs[10]
13
- },
5
+ title: 'Organisms/Cards/ClubCard',
6
+ component: ClubCard,
7
+ tags: ['autodocs'],
8
+ args: {
9
+ detail: Object
10
+ },
11
+ argTypes: {
12
+ detail: getAllClubs[10]
13
+ }
14
14
  };
15
15
 
16
-
17
16
  export const Default = {
18
- args: {
19
- detail: getAllClubs[9]
20
- }
21
- }
22
-
23
-
17
+ args: {
18
+ detail: getAllClubs[9]
19
+ }
20
+ };
@@ -1,43 +1,50 @@
1
1
  <template>
2
- <div class="flex items-center border border-dropdownSelect rounded-lg shadow-lg bg-white w-full hover:border-bright my-4"
3
- @click="handleClick">
4
- <div class="hidden md:flex mr-2 md:mr-4 border-r border-dropdownSelect h-12 md:h-14 md:w-10 w-2 items-center justify-center">
5
- </div>
2
+ <div
3
+ class="flex items-center border border-dropdownSelect rounded-lg shadow-lg bg-white w-full hover:border-bright my-4"
4
+ @click="handleClick"
5
+ >
6
+ <div
7
+ class="hidden md:flex mr-2 md:mr-4 border-r border-dropdownSelect h-12 md:h-14 md:w-10 w-2 items-center justify-center"
8
+ ></div>
6
9
 
7
10
  <div class="p-2 md:p-0 w-20">
8
11
  <div v-if="!clubImage" class="w-10 h-10 md:w-14 md:h-10 rounded-lg bg-dropdownSelect"></div>
9
- <img v-if="clubImage" :src="clubImage" alt="Club Logo" class="w-10 h-10 md:w-16 md:h-12 rounded-lg object-cover">
12
+ <img
13
+ v-if="clubImage"
14
+ :src="clubImage"
15
+ alt="Club Logo"
16
+ class="w-10 h-10 md:w-16 md:h-12 rounded-lg object-cover"
17
+ />
10
18
  </div>
11
19
 
12
20
  <div class="flex flex-col w-3/4 justify-start md:ml-4">
13
21
  <span class="w-full flex justify-start">
14
- <BaseText :text="clubName" size="" color="quaternary" weight="bold" class="text-sm md:text-lg"/>
22
+ <BaseText :text="clubName" size="" color="quaternary" weight="bold" class="text-sm md:text-lg" />
15
23
  </span>
16
24
  <span class="w-full flex flex-col justify-start">
17
- <BaseText :text="clubLocation" size="" color="quinary" weight="normal" class="text-xs md:text-md"/>
25
+ <BaseText :text="clubLocation" size="" color="quinary" weight="normal" class="text-xs md:text-md" />
18
26
  </span>
19
27
  </div>
20
28
 
21
29
  <section class="justify-end w-1/2 hidden md:flex mr-8">
22
30
  <div v-if="memberCount" class="flex flex-col items-center mr-4">
23
- <BaseText :text="'Members'" size="xs" color="quinary" weight="normal"/>
24
- <BaseText :text="memberCount" size="" color="quaternary" weight="bold" class="text-xs md:text-sm"/>
31
+ <BaseText :text="'Members'" size="xs" color="quinary" weight="normal" />
32
+ <BaseText :text="memberCount" size="" color="quaternary" weight="bold" class="text-xs md:text-sm" />
25
33
  </div>
26
34
  <div v-if="hostedTournaments" class="flex flex-col items-center">
27
- <BaseText :text="'Hosted'" size="xs" color="quinary" weight="normal"/>
28
- <BaseText :text="hostedTournaments" size="" color="quaternary" weight="bold" class="text-xs md:text-sm"/>
35
+ <BaseText :text="'Hosted'" size="xs" color="quinary" weight="normal" />
36
+ <BaseText :text="hostedTournaments" size="" color="quaternary" weight="bold" class="text-xs md:text-sm" />
29
37
  </div>
30
38
  </section>
31
39
  </div>
32
40
  </template>
33
41
 
34
-
35
42
  <script>
36
- import BaseText from "../../../Atoms/Text/BaseText.vue";
43
+ import BaseText from '../../../Atoms/Text/BaseText.vue';
37
44
 
38
45
  export default {
39
46
  name: 'ClubCard',
40
- components: {BaseText},
47
+ components: { BaseText },
41
48
  emits: ['edit'],
42
49
  props: {
43
50
  detail: {
@@ -47,15 +54,15 @@ export default {
47
54
  },
48
55
  computed: {
49
56
  clubName() {
50
- return this.detail?.Name ?? "Unknown Club";
57
+ return this.detail?.Name ?? 'Unknown Club';
51
58
  },
52
59
  clubLocation() {
53
60
  return this.detail?.Address?.Name
54
- ? `${this.detail.Address.Name}, ${this.detail.Address.City}, ${this.detail.Address.State}`
55
- : "Location Unknown";
61
+ ? `${this.detail.Address.Name}, ${this.detail.Address.City}, ${this.detail.Address.State}`
62
+ : 'Location Unknown';
56
63
  },
57
64
  clubImage() {
58
- return this.detail?.Images?.[0]?.URL ?? "";
65
+ return this.detail?.Images?.[0]?.URL ?? '';
59
66
  },
60
67
  memberCount() {
61
68
  return this.detail?.MemberCount ?? 0;
@@ -1,31 +1,31 @@
1
1
  import DirectorCard from './DirectorCard.vue';
2
- import getPoolsWithBoutsByPoolId from "../../../../mocks/getPoolsWithBoutsByPoolId.js";
2
+ import getPoolsWithBoutsByPoolId from '../../../../mocks/getPoolsWithBoutsByPoolId.js';
3
3
 
4
4
  const hostingClubColors = {
5
- Color1: 'red',
6
- Color2: 'blue'
7
- }
5
+ Color1: 'red',
6
+ Color2: 'blue'
7
+ };
8
8
 
9
9
  export default {
10
- title: 'Organisms/Cards/DirectorCard',
11
- component: DirectorCard,
12
- tags: ['autodocs'],
13
- args: {
14
- eventRules: getPoolsWithBoutsByPoolId.event.EventRules,
15
- bout: getPoolsWithBoutsByPoolId.pools[0].Bouts[0],
16
- hostingClubColors: getPoolsWithBoutsByPoolId.hostingClubColors,
17
- },
18
- argTypes: {
19
- eventRules: { control: 'object' },
20
- bout: { control: 'object' },
21
- hostingClubColors: { control: 'object' },
22
- },
10
+ title: 'Organisms/Cards/DirectorCard',
11
+ component: DirectorCard,
12
+ tags: ['autodocs'],
13
+ args: {
14
+ eventRules: getPoolsWithBoutsByPoolId.event.EventRules,
15
+ bout: getPoolsWithBoutsByPoolId.pools[0].Bouts[0],
16
+ hostingClubColors: getPoolsWithBoutsByPoolId.hostingClubColors
17
+ },
18
+ argTypes: {
19
+ eventRules: { control: 'object' },
20
+ bout: { control: 'object' },
21
+ hostingClubColors: { control: 'object' }
22
+ }
23
23
  };
24
24
 
25
25
  export const Default = {
26
- args: {
27
- eventRules: getPoolsWithBoutsByPoolId.event.EventRules,
28
- bout: getPoolsWithBoutsByPoolId.pools[0].Bouts[0],
29
- hostingClubColors: getPoolsWithBoutsByPoolId.hostingClubColors,
30
- }
31
- };
26
+ args: {
27
+ eventRules: getPoolsWithBoutsByPoolId.event.EventRules,
28
+ bout: getPoolsWithBoutsByPoolId.pools[0].Bouts[0],
29
+ hostingClubColors: getPoolsWithBoutsByPoolId.hostingClubColors
30
+ }
31
+ };
@@ -1,61 +1,109 @@
1
1
  <template>
2
2
  <section>
3
- <ScoreBox :fencer1="true"
4
- :bout="localBout"
5
- :hostingClubColors="hostingClubColors"
6
- :maxScore="parseInt(maxPoints)"
7
- :isCountingUp="isCountingUp"
8
- :showHandShotCounterBox="showHandShotCounterBox"
9
- :penaltiesReset="penaltiesReset"
10
- @penalty:open="openPenaltyModal"
11
- @update:Score="updateScore1"
12
- @update:HandShotValue="updateHandShot1"
3
+ <ScoreBox
4
+ :fencer1="true"
5
+ :bout="localBout"
6
+ :hostingClubColors="hostingClubColors"
7
+ :maxScore="parseInt(maxPoints)"
8
+ :isCountingUp="isCountingUp"
9
+ :showHandShotCounterBox="showHandShotCounterBox"
10
+ :penaltiesReset="penaltiesReset"
11
+ @penalty:open="openPenaltyModal"
12
+ @update:Score="updateScore1"
13
+ @update:HandShotValue="updateHandShot1"
14
+ />
15
+ <TimerBox
16
+ v-if="showTimerBox"
17
+ :timeLeft="timeLeft"
18
+ :running="timerRunning"
19
+ :ringName="RingName"
20
+ @startPause="toggleTimer"
21
+ @adjustTime="adjustTime"
13
22
  />
14
- <TimerBox v-if="showTimerBox"
15
- :timeLeft="timeLeft"
16
- :running="timerRunning"
17
- :ringName="RingName"
18
- @startPause="toggleTimer"
19
- @adjustTime="adjustTime" />
20
23
 
21
24
  <PassesBox v-if="showPassesBox" :bout="localBout" :maxPasses="parseInt(maxPasses)" @update:passes="updatePasses" />
22
25
  <PenaltyConfirmationBox v-if="showPenaltyConfirmationBox" />
23
- <ScoreBox :fencer1="false"
24
- :bout="localBout"
25
- :hostingClubColors="hostingClubColors"
26
- :maxScore="parseInt(maxPoints)"
27
- :isCountingUp="isCountingUp"
28
- :showHandShotCounterBox="showHandShotCounterBox"
29
- :penaltiesReset="penaltiesReset"
30
- @penalty:open="openPenaltyModal"
31
- @update:Score="updateScore2"
32
- @update:HandShotValue="updateHandShot2"
26
+ <ScoreBox
27
+ :fencer1="false"
28
+ :bout="localBout"
29
+ :hostingClubColors="hostingClubColors"
30
+ :maxScore="parseInt(maxPoints)"
31
+ :isCountingUp="isCountingUp"
32
+ :showHandShotCounterBox="showHandShotCounterBox"
33
+ :penaltiesReset="penaltiesReset"
34
+ @penalty:open="openPenaltyModal"
35
+ @update:Score="updateScore2"
36
+ @update:HandShotValue="updateHandShot2"
33
37
  />
34
38
 
35
39
  <div class="w-11/12 mt-5 mx-6">
36
- <BaseButton label="Submit" type="grayAndBlue" :selected="showSubmit" @buttonClick="submitBout"/>
40
+ <BaseButton label="Submit" type="grayAndBlue" :selected="showSubmit" @buttonClick="submitBout" />
37
41
  </div>
38
- <PenaltyModal :fencer1="fencer1ForModal" :bout="bout" :eventRules="eventRules" :show="showPenaltyModal"
39
- @update:closeModal="handleCloseModal"
40
- @penalty:remove="handleRemovePenalty"
41
- @penalty:add="handleAddPenalty"
42
- @penalty:update="handleUpdatePenalty"
42
+ <PenaltyModal
43
+ :fencer1="fencer1ForModal"
44
+ :bout="bout"
45
+ :eventRules="eventRules"
46
+ :show="showPenaltyModal"
47
+ @update:closeModal="handleCloseModal"
48
+ @penalty:remove="handleRemovePenalty"
49
+ @penalty:add="handleAddPenalty"
50
+ @penalty:update="handleUpdatePenalty"
43
51
  />
44
52
  </section>
45
53
  </template>
46
54
 
47
55
  <script>
48
- import ScoreBox from "../../../Molecules/Boxes/BoutBoxes/ScoreBox/ScoreBox.vue";
49
- import TimerBox from "../../../Molecules/Boxes/BoutBoxes/TimerBox/TimerBox.vue";
50
- import PassesBox from "../../../Molecules/Boxes/BoutBoxes/PassesBox/PassesBox.vue";
51
- import BaseButton from "../../../Molecules/Buttons/BaseButton/BaseButton.vue";
52
- import PenaltyConfirmationBox from "../../../Molecules/Boxes/BoutBoxes/PenaltyConfirmationBox/PenaltyConfirmationBox.vue";
53
- import PenaltyModal from "../../../Molecules/Modals/PenaltyModal/PenaltyModal.vue";
56
+ import ScoreBox from '../../../Molecules/Boxes/BoutBoxes/ScoreBox/ScoreBox.vue';
57
+ import TimerBox from '../../../Molecules/Boxes/BoutBoxes/TimerBox/TimerBox.vue';
58
+ import PassesBox from '../../../Molecules/Boxes/BoutBoxes/PassesBox/PassesBox.vue';
59
+ import BaseButton from '../../../Molecules/Buttons/BaseButton/BaseButton.vue';
60
+ import PenaltyConfirmationBox from '../../../Molecules/Boxes/BoutBoxes/PenaltyConfirmationBox/PenaltyConfirmationBox.vue';
61
+ import PenaltyModal from '../../../Molecules/Modals/PenaltyModal/PenaltyModal.vue';
62
+
63
+ const scoreReachedByDirection = {
64
+ true: (bout, maxPoints) => bout.Score1 === maxPoints || bout.Score2 === maxPoints,
65
+ false: bout => bout.Score1 === 0 || bout.Score2 === 0
66
+ };
67
+
68
+ const hasScoreReached = (bout, isCountingUp, maxPoints) =>
69
+ scoreReachedByDirection[String(isCountingUp)](bout, maxPoints);
70
+
71
+ const submitAvailabilityRules = [
72
+ {
73
+ matches: ({ showTimerBox }) => showTimerBox,
74
+ resolve: ({ isTimeExpired, isScoreReached }) => isTimeExpired || isScoreReached
75
+ },
76
+ {
77
+ matches: ({ showPassesBox }) => showPassesBox,
78
+ resolve: ({ isLastPass, isScoreReached }) => isLastPass || isScoreReached
79
+ },
80
+ {
81
+ matches: () => true,
82
+ resolve: () => true
83
+ }
84
+ ];
85
+
86
+ const getSubmitAvailability = context => {
87
+ if (context.isDoubleEliminationTie) return false;
88
+ return submitAvailabilityRules.find(rule => rule.matches(context)).resolve(context);
89
+ };
90
+
91
+ const clonePerson = person => {
92
+ if (!person) return person;
93
+ const eventPersons = (person.EventPersons || []).map(eventPerson => ({ ...eventPerson }));
94
+ return { ...person, EventPersons: eventPersons };
95
+ };
96
+
97
+ const cloneBout = bout => ({
98
+ ...(bout || {}),
99
+ Person1: clonePerson(bout?.Person1),
100
+ Person2: clonePerson(bout?.Person2)
101
+ });
54
102
 
55
103
  export default {
56
- name: "DirectorCard",
57
- components: {PenaltyModal, PenaltyConfirmationBox, ScoreBox, TimerBox, PassesBox, BaseButton },
58
- emits:["penalty:remove", "penalty:add", "penalty:update","submit:bout", "update:bout"],
104
+ name: 'DirectorCard',
105
+ components: { PenaltyModal, PenaltyConfirmationBox, ScoreBox, TimerBox, PassesBox, BaseButton },
106
+ emits: ['penalty:remove', 'penalty:add', 'penalty:update', 'submit:bout', 'update:bout'],
59
107
  props: {
60
108
  eventRules: Array,
61
109
  bout: Object,
@@ -67,19 +115,19 @@ export default {
67
115
  showPenaltyModal: false,
68
116
  showPenaltyConfirmationBox: false,
69
117
  fencer1ForModal: true,
70
- localBout: { ...this.bout },
118
+ localBout: cloneBout(this.bout),
71
119
  isCountingUp: true,
72
120
  lastNote1: '',
73
121
  lastNote2: '',
74
122
  timeLeft: 180,
75
123
  timerRunning: false,
76
- timerInterval: null,
77
- }
124
+ timerInterval: null
125
+ };
78
126
  },
79
127
  mounted() {
80
128
  this.initTime();
81
129
  this.determineCountingDirection();
82
- this.emitBout()
130
+ this.emitBout();
83
131
  },
84
132
  beforeUnmount() {
85
133
  clearInterval(this.timerInterval);
@@ -89,66 +137,74 @@ export default {
89
137
  return this.localBout.Pool?.RingName || 'Ring';
90
138
  },
91
139
  showPassesBox() {
92
- return Array.isArray(this.eventRules) &&
93
- !this.showPenaltyConfirmationBox && (
94
- this.eventRules.some((n2) => n2.Rules.RuleName === "PoolNumOfPasses") ||
95
- this.eventRules.some((n2) => n2.Rules.RuleName === "DENumOfPasses")
96
- );
140
+ return (
141
+ Array.isArray(this.eventRules) &&
142
+ !this.showPenaltyConfirmationBox &&
143
+ (this.eventRules.some(n2 => n2.Rules.RuleName === 'PoolNumOfPasses') ||
144
+ this.eventRules.some(n2 => n2.Rules.RuleName === 'DENumOfPasses'))
145
+ );
97
146
  },
98
147
  showTimerBox() {
99
- return Array.isArray(this.eventRules) &&
100
- !this.showPenaltyConfirmationBox && (
101
- this.eventRules.some((n2) => n2.Rules.RuleName === "PoolTime") ||
102
- this.eventRules.some((n2) => n2.Rules.RuleName === "DETime")
103
- );
148
+ return (
149
+ Array.isArray(this.eventRules) &&
150
+ !this.showPenaltyConfirmationBox &&
151
+ (this.eventRules.some(n2 => n2.Rules.RuleName === 'PoolTime') ||
152
+ this.eventRules.some(n2 => n2.Rules.RuleName === 'DETime'))
153
+ );
104
154
  },
105
155
  showHandShotCounterBox() {
106
- return Array.isArray(this.eventRules) &&
107
- this.eventRules.some((n2) => n2.Rules.RuleName === "CountHandshots" && n2.RuleValue === "true");
156
+ return (
157
+ Array.isArray(this.eventRules) &&
158
+ this.eventRules.some(n2 => n2.Rules.RuleName === 'CountHandshots' && n2.RuleValue === 'true')
159
+ );
108
160
  },
109
161
  penaltiesReset() {
110
- return Array.isArray(this.eventRules) &&
111
- this.eventRules.some((n2) => n2.Rules.RuleName === "PenaltiesReset" && n2.RuleValue === "true");
162
+ return (
163
+ Array.isArray(this.eventRules) &&
164
+ this.eventRules.some(n2 => n2.Rules.RuleName === 'PenaltiesReset' && n2.RuleValue === 'true')
165
+ );
112
166
  },
113
167
  maxPoints() {
114
168
  if (this.localBout.DEBoutId) {
115
- const e = Array.isArray(this.eventRules) ? this.eventRules.find((t) => t.Rules.RuleName === "DEMaxPoints") : null;
169
+ const e = Array.isArray(this.eventRules) ? this.eventRules.find(t => t.Rules.RuleName === 'DEMaxPoints') : null;
116
170
  return e ? parseInt(e.RuleValue) : 7;
117
171
  }
118
172
 
119
- const n2 = Array.isArray(this.eventRules) ? this.eventRules.find((e) => e.Rules.RuleName === "PoolMaxPoints") : null;
173
+ const n2 = Array.isArray(this.eventRules)
174
+ ? this.eventRules.find(e => e.Rules.RuleName === 'PoolMaxPoints')
175
+ : null;
120
176
  return n2 ? parseInt(n2.RuleValue) : 7;
121
177
  },
122
178
  maxPasses() {
123
179
  if (this.localBout.DEBoutId) {
124
- const e = Array.isArray(this.eventRules) ? this.eventRules.find((t) => t.Rules.RuleName === "DEMaxPasses") : null;
180
+ const e = Array.isArray(this.eventRules) ? this.eventRules.find(t => t.Rules.RuleName === 'DEMaxPasses') : null;
125
181
  return e ? parseInt(e.RuleValue) : 7;
126
182
  }
127
183
 
128
- const n2 = Array.isArray(this.eventRules) ? this.eventRules.find((e) => e.Rules.RuleName === "PoolNumOfPasses") : null;
184
+ const n2 = Array.isArray(this.eventRules)
185
+ ? this.eventRules.find(e => e.Rules.RuleName === 'PoolNumOfPasses')
186
+ : null;
129
187
  return n2 ? parseInt(n2.RuleValue) : 7;
130
- },
188
+ }
131
189
  },
132
190
  methods: {
133
191
  initTime() {
134
192
  const saved = Number(this.bout?.TimeLeft);
135
193
  // use saved if > 0, otherwise default from rules
136
- this.timeLeft = Number.isFinite(saved) && saved > 0
137
- ? saved
138
- : this.startTime(); // your DE/Pool rule lookup
194
+ this.timeLeft = Number.isFinite(saved) && saved > 0 ? saved : this.startTime(); // your DE/Pool rule lookup
139
195
  },
140
196
  startTime() {
141
197
  if (this.localBout.DEBoutId) {
142
- const e = Array.isArray(this.eventRules) ? this.eventRules.find((t) => t.Rules.RuleName === "DETime") : null;
198
+ const e = Array.isArray(this.eventRules) ? this.eventRules.find(t => t.Rules.RuleName === 'DETime') : null;
143
199
  return e ? parseInt(e.RuleValue) : 180;
144
200
  }
145
201
 
146
- const n2 = Array.isArray(this.eventRules) ? this.eventRules.find((e) => e.Rules.RuleName === "PoolTime") : null;
202
+ const n2 = Array.isArray(this.eventRules) ? this.eventRules.find(e => e.Rules.RuleName === 'PoolTime') : null;
147
203
  return n2 ? parseInt(n2.RuleValue) : 180;
148
204
  },
149
205
  determineCountingDirection() {
150
206
  if (Array.isArray(this.eventRules)) {
151
- const rule = this.eventRules.find(rule => rule.Rules.RuleName === "PoolScoreDirection");
207
+ const rule = this.eventRules.find(rule => rule.Rules.RuleName === 'PoolScoreDirection');
152
208
  this.isCountingUp = rule ? rule.RuleValue === 'true' : true;
153
209
  }
154
210
  },
@@ -209,25 +265,26 @@ export default {
209
265
  this.emitBout();
210
266
  },
211
267
  emitBout() {
212
- this.localBout.TimeLeft = this.timeLeft;
213
- if (!this.localBout.Started) this.localBout.Started = new Date().toISOString();
214
-
215
- const isScoreReached = this.isCountingUp ? (this.localBout.Score1 === this.maxPoints || this.localBout.Score2 === this.maxPoints)
216
- : (this.localBout.Score1 === 0 || this.localBout.Score2 === 0);
268
+ const updatedBout = {
269
+ ...this.localBout,
270
+ TimeLeft: this.timeLeft,
271
+ Started: this.localBout.Started || new Date().toISOString(),
272
+ IsCountingUp: this.isCountingUp,
273
+ ShowTimerBox: this.showTimerBox,
274
+ MaxPoints: this.maxPoints
275
+ };
276
+ const context = {
277
+ showPassesBox: this.showPassesBox,
278
+ showTimerBox: this.showTimerBox,
279
+ isScoreReached: hasScoreReached(updatedBout, this.isCountingUp, this.maxPoints),
280
+ isTimeExpired: updatedBout.TimeLeft === 0,
281
+ isLastPass: updatedBout.CurrentPass === this.maxPasses - 1,
282
+ isDoubleEliminationTie: Boolean(updatedBout.RoundLabel) && updatedBout.Score1 === updatedBout.Score2
283
+ };
217
284
 
218
- const isTimeExpired = this.localBout.TimeLeft === 0;
219
- const isLastPass = this.localBout.CurrentPass === this.maxPasses - 1;
220
-
221
- if (this.showPassesBox) this.showSubmit = isLastPass || isScoreReached;
222
- if (this.showTimerBox) this.showSubmit = isTimeExpired || isScoreReached;
223
- if (!this.showPassesBox && !this.showTimerBox) this.showSubmit = true;
224
- if (this.localBout.Score1 === this.localBout.Score2 && this.isDoubleElimination()) this.showSubmit = false;
225
- //display optoins
226
- this.localBout.IsCountingUp = this.isCountingUp;
227
- this.localBout.ShowTimerBox = this.showTimerBox;
228
- this.localBout.MaxPoints = this.maxPoints;
229
-
230
- this.$emit('update:bout', this.localBout);
285
+ this.localBout = updatedBout;
286
+ this.showSubmit = getSubmitAvailability(context);
287
+ this.$emit('update:bout', { ...updatedBout });
231
288
  },
232
289
  isDoubleElimination() {
233
290
  return this.localBout.RoundLabel;
@@ -237,19 +294,16 @@ export default {
237
294
  this.showPenaltyModal = true;
238
295
  },
239
296
  preparePenalty(penalty, fencer1) {
240
- const updatedPenalty = penalty.penalty;
241
- updatedPenalty.BoutId = this.localBout.BoutId;
242
- updatedPenalty.EventId = this.localBout.EventId;
243
-
244
- if (fencer1) {
245
- this.localBout.Person1.EventPersons[0].LastNote = updatedPenalty.Notes;
246
- updatedPenalty.PersonId = this.localBout.Person1Id;
247
- } else {
248
- this.localBout.Person2.EventPersons[0].LastNote = updatedPenalty.Notes;
249
- updatedPenalty.PersonId = this.localBout.Person2Id;
250
- }
297
+ const eventPerson = fencer1 ? this.localBout.Person1.EventPersons[0] : this.localBout.Person2.EventPersons[0];
298
+ const personId = fencer1 ? this.localBout.Person1Id : this.localBout.Person2Id;
299
+ eventPerson.LastNote = penalty.penalty.Notes;
251
300
 
252
- return updatedPenalty;
301
+ return {
302
+ ...penalty.penalty,
303
+ BoutId: this.localBout.BoutId,
304
+ EventId: this.localBout.EventId,
305
+ PersonId: personId
306
+ };
253
307
  },
254
308
  handleUpdatePenalty(penalty) {
255
309
  const updatedPenalty = this.preparePenalty(penalty, penalty.fencer1);
@@ -267,9 +321,11 @@ export default {
267
321
  this.showPenaltyModal = false;
268
322
  },
269
323
  handleRemovePenalty(penalty) {
270
- penalty.BoutId = this.localBout.BoutId;
271
- penalty.EventId = this.localBout.EventId;
272
- this.$emit('penalty:remove', penalty);
324
+ this.$emit('penalty:remove', {
325
+ ...penalty,
326
+ BoutId: this.localBout.BoutId,
327
+ EventId: this.localBout.EventId
328
+ });
273
329
  }
274
330
  },
275
331
  beforeDestroy() {