@dcrackel/hematournamentui 1.0.706 → 1.0.708

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 (350) 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 +118 -88
  6. package/README.md +29 -22
  7. package/dist/HemaTournamentUI-lib.es.js +8394 -8807
  8. package/dist/HemaTournamentUI-lib.umd.js +27 -27
  9. package/dist/hematournamentui-tailwind.css +183 -428
  10. package/dist/hematournamentui.css +1 -1
  11. package/eslint.config.js +49 -23
  12. package/package.json +15 -11
  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/index.js +2 -0
  17. package/src/main.js +1 -1
  18. package/src/mocks/EventQuestionsMock.js +43 -55
  19. package/src/mocks/assignments.js +180 -181
  20. package/src/mocks/clubGetAllMock.js +8143 -8143
  21. package/src/mocks/eventMock.js +205 -205
  22. package/src/mocks/eventPersonGetInitalPoolAssignmentsLivePools.js +541 -542
  23. package/src/mocks/eventPersonGetInitalPoolAssignmentsPreparing.js +522 -523
  24. package/src/mocks/eventPersonGetInitialPoolAssignments.js +386 -387
  25. package/src/mocks/eventPersonGetInitialPoolAssignments2.js +2267 -2268
  26. package/src/mocks/eventPersonGetInitialStaff.js +94 -95
  27. package/src/mocks/eventPersonGetPoolAssignmentEvent.js +161 -162
  28. package/src/mocks/eventRules.js +87 -86
  29. package/src/mocks/eventpersonGetEventById.js +1737 -1737
  30. package/src/mocks/getAllClubs.js +8143 -8143
  31. package/src/mocks/getAllStaffByTournamentId.js +74 -75
  32. package/src/mocks/getAllWeapons.js +81 -82
  33. package/src/mocks/getAttendance.js +43 -44
  34. package/src/mocks/getClub.js +43 -44
  35. package/src/mocks/getClubDisplayByClubId.js +104 -105
  36. package/src/mocks/getDEBouts-128Fencers.js +3247 -3248
  37. package/src/mocks/getDEBouts-42Fencers.js +3736 -3737
  38. package/src/mocks/getDEBouts-67Fencers.js +6684 -6690
  39. package/src/mocks/getDEBouts-DoubleElim.js +4198 -4199
  40. package/src/mocks/getDEBouts-TableOf128.js +37 -0
  41. package/src/mocks/getDEBouts-TableOf64.js +35 -0
  42. package/src/mocks/getDEWithBouts.js +628 -629
  43. package/src/mocks/getDeBouts-12fencers.js +1255 -1256
  44. package/src/mocks/getDeBouts-15fencers.js +925 -927
  45. package/src/mocks/getDeBouts-22fencers.js +1683 -1685
  46. package/src/mocks/getDeBouts-6fencers.js +818 -818
  47. package/src/mocks/getEventByTournamentId.js +47 -48
  48. package/src/mocks/getFinalEventResult.js +304 -305
  49. package/src/mocks/getPenaltiesByEvent.js +655 -656
  50. package/src/mocks/getPoolResults.js +1533 -1534
  51. package/src/mocks/getPoolsWithBouts.js +662 -663
  52. package/src/mocks/getPoolsWithBouts6PoolId139.js +885 -886
  53. package/src/mocks/getPoolsWithBoutsByPoolId.js +841 -841
  54. package/src/mocks/getPoolsWithBoutsClubColors.js +4 -4
  55. package/src/mocks/getPoolsWithBoutsComplete.js +919 -921
  56. package/src/mocks/locationMock.js +3213 -3214
  57. package/src/mocks/mockRoutes.js +3 -3
  58. package/src/mocks/personGetAllMock.js +2536 -2537
  59. package/src/mocks/personsMock.js +17569 -17570
  60. package/src/mocks/singleEventMock.js +249 -250
  61. package/src/mocks/tournamentMock.js +1988 -1927
  62. package/src/stories/Atoms/CheckBox/BaseCheckbox.stories.js +25 -23
  63. package/src/stories/Atoms/CheckBox/BaseCheckbox.vue +30 -24
  64. package/src/stories/Atoms/Icon/BaseIcon.stories.js +63 -64
  65. package/src/stories/Atoms/Icon/BaseIcon.test.js +67 -69
  66. package/src/stories/Atoms/Icon/BaseIcon.vue +2 -3
  67. package/src/stories/Atoms/Input/BaseInput.stories.js +18 -18
  68. package/src/stories/Atoms/Input/BaseInput.test.js +65 -67
  69. package/src/stories/Atoms/Input/BaseInput.vue +36 -31
  70. package/src/stories/Atoms/RadioGroup/BaseRadioGroup.stories.js +21 -21
  71. package/src/stories/Atoms/RadioGroup/BaseRadioGroup.test.js +31 -31
  72. package/src/stories/Atoms/RadioGroup/BaseRadioGroup.vue +23 -18
  73. package/src/stories/Atoms/Tag/BaseTag.stories.js +21 -21
  74. package/src/stories/Atoms/Tag/BaseTag.test.js +26 -30
  75. package/src/stories/Atoms/Tag/BaseTag.vue +18 -19
  76. package/src/stories/Atoms/Text/BaseText.stories.js +54 -62
  77. package/src/stories/Atoms/Text/BaseText.test.js +152 -154
  78. package/src/stories/Atoms/Text/BaseText.vue +103 -81
  79. package/src/stories/Configure.mdx +5 -3
  80. package/src/stories/Molecules/Boxes/BoutBoxes/HandshotCounterBox/HandshotCounterBox.stories.js +24 -24
  81. package/src/stories/Molecules/Boxes/BoutBoxes/HandshotCounterBox/HandshotCounterBox.vue +33 -15
  82. package/src/stories/Molecules/Boxes/BoutBoxes/PassesBox/PassesBox.stories.js +46 -48
  83. package/src/stories/Molecules/Boxes/BoutBoxes/PassesBox/PassesBox.vue +38 -25
  84. package/src/stories/Molecules/Boxes/BoutBoxes/PenaltyConfirmationBox/PenaltyConfirmationBox.stories.js +4 -4
  85. package/src/stories/Molecules/Boxes/BoutBoxes/PenaltyConfirmationBox/PenaltyConfirmationBox.vue +9 -4
  86. package/src/stories/Molecules/Boxes/BoutBoxes/ScoreBox/ScoreBox.stories.js +90 -90
  87. package/src/stories/Molecules/Boxes/BoutBoxes/ScoreBox/ScoreBox.vue +51 -32
  88. package/src/stories/Molecules/Boxes/BoutBoxes/TimerBox/TimerBox.stories.js +25 -25
  89. package/src/stories/Molecules/Boxes/BoutBoxes/TimerBox/TimerBox.vue +47 -12
  90. package/src/stories/Molecules/Boxes/CounterBox/CounterBox.stories.js +19 -19
  91. package/src/stories/Molecules/Boxes/CounterBox/CounterBox.vue +25 -19
  92. package/src/stories/Molecules/Boxes/EventStatusBox/EventStatusBox.stories.js +25 -28
  93. package/src/stories/Molecules/Boxes/EventStatusBox/EventStatusBox.vue +7 -7
  94. package/src/stories/Molecules/Breadcrumb/Admin/Breadcrumb.stories.js +28 -29
  95. package/src/stories/Molecules/Breadcrumb/Admin/Breadcrumb.test.js +58 -58
  96. package/src/stories/Molecules/Breadcrumb/Admin/Breadcrumb.vue +15 -15
  97. package/src/stories/Molecules/Buttons/BaseButton/BaseButton.stories.js +86 -86
  98. package/src/stories/Molecules/Buttons/BaseButton/BaseButton.test.js +101 -103
  99. package/src/stories/Molecules/Buttons/BaseButton/BaseButton.vue +87 -24
  100. package/src/stories/Molecules/Buttons/ButtonBar/ButtonBar.stories.js +31 -31
  101. package/src/stories/Molecules/Buttons/ButtonBar/ButtonBar.vue +19 -21
  102. package/src/stories/Molecules/CombinationInputs/TitledInput/TitledInput.stories.js +57 -57
  103. package/src/stories/Molecules/CombinationInputs/TitledInput/TitledInput.test.js +64 -64
  104. package/src/stories/Molecules/CombinationInputs/TitledInput/TitledInput.vue +17 -16
  105. package/src/stories/Molecules/Filters/FilterAndSortBar/FilterAndSortBar.stories.js +19 -19
  106. package/src/stories/Molecules/Filters/FilterAndSortBar/FilterAndSortBar.vue +18 -7
  107. package/src/stories/Molecules/Filters/FilterUpcomingPast/FilterUpcomingPast.stories.js +16 -18
  108. package/src/stories/Molecules/Filters/FilterUpcomingPast/FilterUpcomingPast.vue +31 -13
  109. package/src/stories/Molecules/Indicators/MissingHemaRatingsId/MissingHemaRatingsId.stories.js +23 -0
  110. package/src/stories/Molecules/Indicators/MissingHemaRatingsId/MissingHemaRatingsId.vue +35 -0
  111. package/src/stories/Molecules/Indicators/ServerConnected/ServerConnected.stories.js +27 -27
  112. package/src/stories/Molecules/Indicators/ServerConnected/ServerConnected.vue +6 -5
  113. package/src/stories/Molecules/Inputs/MultiSelect/MultiSelect.stories.js +35 -35
  114. package/src/stories/Molecules/Inputs/MultiSelect/MultiSelect.vue +13 -8
  115. package/src/stories/Molecules/Inputs/Toggle/Toggle.stories.js +27 -27
  116. package/src/stories/Molecules/Inputs/Toggle/Toggle.vue +8 -5
  117. package/src/stories/Molecules/Menus/TabBar/TabBar.stories.js +18 -18
  118. package/src/stories/Molecules/Menus/TabBar/TabBar.vue +1 -2
  119. package/src/stories/Molecules/Modals/AddDisplayModal/AddDisplay.stories.js +36 -27
  120. package/src/stories/Molecules/Modals/AddDisplayModal/AddDisplayModal.vue +25 -15
  121. package/src/stories/Molecules/Modals/BaseModal/BaseModal.stories.js +66 -65
  122. package/src/stories/Molecules/Modals/BaseModal/BaseModal.vue +47 -9
  123. package/src/stories/Molecules/Modals/ConfirmModal/ConfirmModal.stories.js +23 -23
  124. package/src/stories/Molecules/Modals/ConfirmModal/ConfirmModal.vue +59 -11
  125. package/src/stories/Molecules/Modals/DirectorModal/DirectorModal.stories.js +37 -37
  126. package/src/stories/Molecules/Modals/DirectorModal/DirectorModal.test.js +18 -0
  127. package/src/stories/Molecules/Modals/DirectorModal/DirectorModal.vue +29 -23
  128. package/src/stories/Molecules/Modals/EditBoutModal/EditBoutModal.stories.js +41 -41
  129. package/src/stories/Molecules/Modals/EditBoutModal/EditBoutModal.vue +28 -16
  130. package/src/stories/Molecules/Modals/EventWizardModal/EventWizardModal.stories.js +29 -30
  131. package/src/stories/Molecules/Modals/EventWizardModal/EventWizardModal.vue +18 -16
  132. package/src/stories/Molecules/Modals/LoadingModal/LoadingModal.stories.js +21 -21
  133. package/src/stories/Molecules/Modals/LoadingModal/LoadingModal.vue +7 -7
  134. package/src/stories/Molecules/Modals/PenaltyModal/PenaltyModal.stories.js +24 -24
  135. package/src/stories/Molecules/Modals/PenaltyModal/PenaltyModal.vue +30 -25
  136. package/src/stories/Molecules/Reorder/ReorderableShell.stories.js +81 -77
  137. package/src/stories/Molecules/Reorder/ReorderableShell.vue +46 -43
  138. package/src/stories/Molecules/StepIndicator/BaseStepIndicator/StepIndicator.stories.js +40 -40
  139. package/src/stories/Molecules/StepIndicator/BaseStepIndicator/StepIndicator.vue +23 -25
  140. package/src/stories/Organisms/Cards/BoutCard/BoutCard.stories.js +34 -29
  141. package/src/stories/Organisms/Cards/BoutCard/BoutCard.vue +69 -66
  142. package/src/stories/Organisms/Cards/BoutCard/Variants/BoutCardActive/BoutCardActive.stories.js +24 -22
  143. package/src/stories/Organisms/Cards/BoutCard/Variants/BoutCardActive/BoutCardActive.vue +53 -41
  144. package/src/stories/Organisms/Cards/BoutCard/Variants/BoutCardInactive/BoutCardInactive.stories.js +24 -37
  145. package/src/stories/Organisms/Cards/BoutCard/Variants/BoutCardInactive/BoutCardInactive.vue +88 -103
  146. package/src/stories/Organisms/Cards/BoutCard/Variants/BoutCardReorder/BoutCardReorder.vue +13 -14
  147. package/src/stories/Organisms/Cards/BoutCard/Variants/BoutCardWaiting/BoutCardWaiting.stories.js +5 -5
  148. package/src/stories/Organisms/Cards/BoutCard/Variants/BoutCardWaiting/BoutCardWaiting.vue +22 -21
  149. package/src/stories/Organisms/Cards/BracketDirectorAssignmentCard/BracketDirectorAssignmentCard.stories.js +33 -0
  150. package/src/stories/Organisms/Cards/BracketDirectorAssignmentCard/BracketDirectorAssignmentCard.test.js +45 -0
  151. package/src/stories/Organisms/Cards/BracketDirectorAssignmentCard/BracketDirectorAssignmentCard.vue +103 -0
  152. package/src/stories/Organisms/Cards/ClubCard/ClubCard.stories.js +14 -17
  153. package/src/stories/Organisms/Cards/ClubCard/ClubCard.vue +25 -18
  154. package/src/stories/Organisms/Cards/Director/DirectorCard.stories.js +23 -23
  155. package/src/stories/Organisms/Cards/Director/DirectorCard.vue +159 -103
  156. package/src/stories/Organisms/Cards/EditBout/EditBout.stories.js +47 -47
  157. package/src/stories/Organisms/Cards/EditBout/EditBout.test.js +51 -0
  158. package/src/stories/Organisms/Cards/EditBout/EditBout.vue +82 -54
  159. package/src/stories/Organisms/Cards/EventCard/EventCard.stories.js +9 -10
  160. package/src/stories/Organisms/Cards/EventCard/EventCard.vue +83 -63
  161. package/src/stories/Organisms/Cards/FencerCard/FencerCard.stories.js +105 -105
  162. package/src/stories/Organisms/Cards/FencerCard/FencerCard.vue +298 -194
  163. package/src/stories/Organisms/Cards/FencerFinalResultCard/FencerFinalResultCard.stories.js +14 -14
  164. package/src/stories/Organisms/Cards/FencerFinalResultCard/FencerFinalResultCard.vue +37 -26
  165. package/src/stories/Organisms/Cards/FencerPoolResultsCard/FencerPoolResults.stories.js +24 -24
  166. package/src/stories/Organisms/Cards/FencerPoolResultsCard/FencerPoolResultsCard.vue +95 -28
  167. package/src/stories/Organisms/Cards/ImportFencerCard/ImportFencerCard.stories.js +59 -60
  168. package/src/stories/Organisms/Cards/ImportFencerCard/ImportFencerCard.vue +13 -7
  169. package/src/stories/Organisms/Cards/KioskCard/KioskCard.stories.js +34 -34
  170. package/src/stories/Organisms/Cards/KioskCard/KioskCard.vue +149 -104
  171. package/src/stories/Organisms/Cards/PenaltyCard/PenaltyCard.stories.js +19 -20
  172. package/src/stories/Organisms/Cards/PenaltyCard/PenaltyCard.vue +207 -163
  173. package/src/stories/Organisms/Cards/PenaltyFencerCard/PenaltyFencerCard.stories.js +17 -17
  174. package/src/stories/Organisms/Cards/PenaltyFencerCard/PenaltyFencerCard.vue +88 -46
  175. package/src/stories/Organisms/Cards/PoolBoutMatchCard/PoolBoutMatchCard.stories.js +182 -182
  176. package/src/stories/Organisms/Cards/PoolBoutMatchCard/PoolBoutMatchCard.vue +21 -12
  177. package/src/stories/Organisms/Cards/PoolFencerCard/PoolFencerCard.stories.js +25 -28
  178. package/src/stories/Organisms/Cards/PoolFencerCard/PoolFencerCard.vue +28 -22
  179. package/src/stories/Organisms/Cards/StaffCard/StaffCard.stories.js +62 -62
  180. package/src/stories/Organisms/Cards/StaffCard/StaffCard.vue +27 -22
  181. package/src/stories/Organisms/Cards/TableauBoutCard/TableauBoutCard.stories.js +60 -98
  182. package/src/stories/Organisms/Cards/TableauBoutCard/TableauBoutCard.test.js +143 -0
  183. package/src/stories/Organisms/Cards/TableauBoutCard/TableauBoutCard.vue +256 -202
  184. package/src/stories/Organisms/Cards/TableauFencerCard/TableauFencerCard.stories.js +69 -93
  185. package/src/stories/Organisms/Cards/TableauFencerCard/TableauFencerCard.vue +80 -111
  186. package/src/stories/Organisms/Cards/TournamentAdminCard/TournamentAdmin.stories.js +20 -20
  187. package/src/stories/Organisms/Cards/TournamentAdminCard/TournamentAdminCard.vue +62 -33
  188. package/src/stories/Organisms/Cards/WaitlistFencerCard/WaitlistFencerCard.vue +56 -32
  189. package/src/stories/Organisms/ComplexInputs/AddressAutocomplete/AddressAutocomplete.stories.js +6 -7
  190. package/src/stories/Organisms/ComplexInputs/AddressAutocomplete/AddressAutocomplete.vue +7 -8
  191. package/src/stories/Organisms/ComplexInputs/ClubColorPicker/ClubColorPicker.stories.js +31 -31
  192. package/src/stories/Organisms/ComplexInputs/ClubColorPicker/ClubColorPicker.vue +30 -35
  193. package/src/stories/Organisms/ComplexInputs/DatePicker/DatePicker.stories.js +13 -16
  194. package/src/stories/Organisms/ComplexInputs/DatePicker/DatePicker.vue +68 -70
  195. package/src/stories/Organisms/ComplexInputs/DropDown/DropDownMenu.stories.js +32 -34
  196. package/src/stories/Organisms/ComplexInputs/DropDown/DropDownMenu.vue +48 -25
  197. package/src/stories/Organisms/ComplexInputs/FindLocation/FindLocation.stories.js +21 -21
  198. package/src/stories/Organisms/ComplexInputs/FindLocation/FindLocation.vue +65 -38
  199. package/src/stories/Organisms/ComplexInputs/FindOrAddPerson/FindOrAddPerson.stories.js +19 -20
  200. package/src/stories/Organisms/ComplexInputs/FindOrAddPerson/FindOrAddPerson.vue +46 -21
  201. package/src/stories/Organisms/ComplexInputs/FindPerson/FindPerson.stories.js +22 -22
  202. package/src/stories/Organisms/ComplexInputs/FindPerson/FindPerson.vue +68 -23
  203. package/src/stories/Organisms/ComplexInputs/ImageCropper/ImageCropper.stories.js +13 -13
  204. package/src/stories/Organisms/ComplexInputs/ImageCropper/ImageCropper.vue +25 -24
  205. package/src/stories/Organisms/ComplexInputs/TextBoxEditor/TextBoxEditor.stories.js +6 -10
  206. package/src/stories/Organisms/ComplexInputs/TextBoxEditor/TextBoxEditor.vue +112 -48
  207. package/src/stories/Organisms/Containers/BoutsSection/BoutsSection.stories.js +43 -44
  208. package/src/stories/Organisms/Containers/BoutsSection/BoutsSection.vue +30 -23
  209. package/src/stories/Organisms/Containers/FinalResults/FinalResultsTable.stories.js +20 -20
  210. package/src/stories/Organisms/Containers/FinalResults/FinalResultsTable.vue +12 -12
  211. package/src/stories/Organisms/Containers/KioskContainer/KioskContainer.stories.js +24 -25
  212. package/src/stories/Organisms/Containers/KioskContainer/KioskContainer.vue +112 -87
  213. package/src/stories/Organisms/Containers/Pool/Pool.stories.js +54 -54
  214. package/src/stories/Organisms/Containers/Pool/Pool.vue +64 -41
  215. package/src/stories/Organisms/Containers/PoolGrid/PoolGrid.stories.js +17 -19
  216. package/src/stories/Organisms/Containers/PoolGrid/PoolGrid.vue +189 -135
  217. package/src/stories/Organisms/Containers/PoolResults/PoolResultsTable.stories.js +53 -54
  218. package/src/stories/Organisms/Containers/PoolResults/PoolResultsTable.vue +107 -73
  219. package/src/stories/Organisms/Containers/Tableau/Tableau.stories.js +23 -24
  220. package/src/stories/Organisms/Containers/Tableau/Tableau.test.js +177 -10
  221. package/src/stories/Organisms/Containers/Tableau/Tableau.vue +319 -198
  222. package/src/stories/Organisms/Containers/Tableau/components/BracketDirectorAssignmentPanel.test.js +29 -0
  223. package/src/stories/Organisms/Containers/Tableau/components/BracketDirectorAssignmentPanel.vue +46 -0
  224. package/src/stories/Organisms/Containers/Tableau/components/TableauSvgOverlay.test.js +21 -0
  225. package/src/stories/Organisms/Containers/Tableau/components/TableauSvgOverlay.vue +39 -0
  226. package/src/stories/Organisms/Containers/Tableau/layout/TableauLayoutEngine.js +145 -0
  227. package/src/stories/Organisms/Containers/Tableau/layout/TableauLayoutEngine.test.js +64 -0
  228. package/src/stories/Organisms/Containers/Tableau/plannedAssignments.js +57 -0
  229. package/src/stories/Organisms/Containers/Tableau/plannedAssignments.test.js +65 -0
  230. package/src/stories/Organisms/Containers/TableauColumn/TabeauColumn.stories.js +26 -27
  231. package/src/stories/Organisms/Containers/TableauColumn/TableauColumn.vue +31 -26
  232. package/src/stories/Organisms/Form/AddDisplay/AddDisplay.stories.js +26 -26
  233. package/src/stories/Organisms/Form/AddDisplay/AddDisplay.vue +130 -118
  234. package/src/stories/Organisms/Form/AddNewPerson/AddNewPerson.stories.js +14 -15
  235. package/src/stories/Organisms/Form/AddNewPerson/AddNewPerson.vue +94 -88
  236. package/src/stories/Organisms/Grids/GridContainer.stories.js +101 -101
  237. package/src/stories/Organisms/Grids/GridContainer.vue +160 -136
  238. package/src/stories/Organisms/Headers/AttendanceSummary/AttendanceSummary.stories.js +47 -47
  239. package/src/stories/Organisms/Headers/AttendanceSummary/AttendanceSummary.vue +65 -54
  240. package/src/stories/Organisms/Headers/EventFinalResultsHeader/EventFinalResultsHeader.stories.js +27 -27
  241. package/src/stories/Organisms/Headers/EventFinalResultsHeader/EventFinalResultsHeader.vue +38 -22
  242. package/src/stories/Organisms/Headers/PenaltySummary/PenaltySummary.stories.js +80 -80
  243. package/src/stories/Organisms/Headers/PenaltySummary/PenaltySummary.vue +14 -6
  244. package/src/stories/Organisms/Headers/PoolResultsHeader/PoolResultsHeader.stories.js +34 -34
  245. package/src/stories/Organisms/Headers/PoolResultsHeader/PoolResultsHeader.vue +36 -36
  246. package/src/stories/Organisms/Headers/PoolSummary/PoolSummary.stories.js +21 -21
  247. package/src/stories/Organisms/Headers/PoolSummary/PoolSummary.vue +56 -29
  248. package/src/stories/Organisms/Headers/ToggleHeader/ToggleHeader.stories.js +38 -38
  249. package/src/stories/Organisms/Headers/ToggleHeader/ToggleHeader.vue +19 -20
  250. package/src/stories/Organisms/RankCalculator/ByLetter/RankCalculator.stories.js +12 -13
  251. package/src/stories/Organisms/RankCalculator/ByLetter/RankCalculator.vue +47 -41
  252. package/src/stories/Organisms/RankCalculator/ByPoints/RankCalculatorByPoints.stories.js +12 -13
  253. package/src/stories/Organisms/RankCalculator/ByPoints/RankCalculatorByPoints.vue +66 -37
  254. package/src/stories/Organisms/Skeletons/ClubManagement/ClubManagement.stories.js +6 -10
  255. package/src/stories/Organisms/Skeletons/ClubManagement/ClubMangementSkeleton.vue +2 -2
  256. package/src/stories/Organisms/Skeletons/EventCard/EventCardSkeleton.stories.js +6 -10
  257. package/src/stories/Organisms/Skeletons/EventCard/EventCardSkeleton.vue +2 -3
  258. package/src/stories/Organisms/Skeletons/FencerCard/FencerCardSkeleton.stories.js +6 -10
  259. package/src/stories/Organisms/Skeletons/FencerCard/FencerCardSkeleton.vue +1 -1
  260. package/src/stories/Organisms/Skeletons/PersonManagement/PersonManagementSkeleton.stories.js +6 -9
  261. package/src/stories/Organisms/Skeletons/PersonManagement/PersonManagementSkeleton.vue +2 -2
  262. package/src/stories/Organisms/Skeletons/PoolSkeleton/PoolSkeleton.stories.js +6 -10
  263. package/src/stories/Organisms/Skeletons/PoolSkeleton/PoolSkeleton.vue +10 -4
  264. package/src/stories/Organisms/Skeletons/TournamentCard/TournamentCardSkeleton.stories.js +6 -10
  265. package/src/stories/Organisms/Skeletons/TournamentCard/TournamentCardSkeleton.vue +2 -2
  266. package/src/stories/Organisms/Wizards/EditEventWizard/BasicEventInfo/BasicEventInfo.stories.js +34 -34
  267. package/src/stories/Organisms/Wizards/EditEventWizard/BasicEventInfo/BasicEventInfo.vue +106 -56
  268. package/src/stories/Organisms/Wizards/EditEventWizard/DirectElimination/DirectElimination.stories.js +95 -95
  269. package/src/stories/Organisms/Wizards/EditEventWizard/DirectElimination/DirectElimination.vue +129 -69
  270. package/src/stories/Organisms/Wizards/EditEventWizard/DirectEliminationPromotion/DirectEliminationPromotion.stories.js +87 -88
  271. package/src/stories/Organisms/Wizards/EditEventWizard/DirectEliminationPromotion/DirectEliminationPromotion.vue +105 -60
  272. package/src/stories/Organisms/Wizards/EditEventWizard/EditEventWizard.stories.js +82 -82
  273. package/src/stories/Organisms/Wizards/EditEventWizard/EditEventWizard.vue +150 -177
  274. package/src/stories/Organisms/Wizards/EditEventWizard/EventCustomization/EventCustomization.stories.js +28 -28
  275. package/src/stories/Organisms/Wizards/EditEventWizard/EventCustomization/EventCustomization.vue +96 -36
  276. package/src/stories/Organisms/Wizards/EditEventWizard/PoolConfiguration/PoolConfiguration.stories.js +99 -99
  277. package/src/stories/Organisms/Wizards/EditEventWizard/PoolConfiguration/PoolConfiguration.vue +115 -67
  278. package/src/stories/Templates/Assignment/Assignment.stories.js +22 -23
  279. package/src/stories/Templates/Assignment/Assignment.vue +210 -161
  280. package/src/stories/Templates/ClubManagement/ClubBasic/ClubBasic.stories.js +90 -90
  281. package/src/stories/Templates/ClubManagement/ClubBasic/ClubBasic.vue +68 -55
  282. package/src/stories/Templates/ClubManagement/ClubManagement.stories.js +87 -87
  283. package/src/stories/Templates/ClubManagement/ClubManagement.vue +167 -147
  284. package/src/stories/Templates/EventManagement/Bracket/Bracket.stories.js +216 -109
  285. package/src/stories/Templates/EventManagement/Bracket/Bracket.test.js +138 -43
  286. package/src/stories/Templates/EventManagement/Bracket/Bracket.vue +198 -195
  287. package/src/stories/Templates/EventManagement/Bracket/BracketPlannedSuggestions.js +39 -0
  288. package/src/stories/Templates/EventManagement/Bracket/BracketStoryHarness.js +39 -0
  289. package/src/stories/Templates/EventManagement/Bracket/BracketStoryHarness.test.js +79 -0
  290. package/src/stories/Templates/EventManagement/EditEventInfo/EditEventInfo.stories.js +49 -50
  291. package/src/stories/Templates/EventManagement/EditEventInfo/EditEventInfo.vue +21 -21
  292. package/src/stories/Templates/EventManagement/EventAttendance/EventAttendance.stories.js +105 -103
  293. package/src/stories/Templates/EventManagement/EventAttendance/EventAttendance.vue +289 -226
  294. package/src/stories/Templates/EventManagement/EventFinalResults/EventFinalResults.stories.js +30 -30
  295. package/src/stories/Templates/EventManagement/EventFinalResults/EventFinalResults.vue +27 -22
  296. package/src/stories/Templates/EventManagement/KioskDisplay/KioskDisplay.stories.js +44 -45
  297. package/src/stories/Templates/EventManagement/KioskDisplay/KioskDisplay.vue +52 -43
  298. package/src/stories/Templates/EventManagement/Penalties/PenaltyReport.stories.js +28 -29
  299. package/src/stories/Templates/EventManagement/Penalties/PenaltyReport.vue +54 -39
  300. package/src/stories/Templates/EventManagement/PoolLive/PoolLive.stories.js +80 -111
  301. package/src/stories/Templates/EventManagement/PoolLive/PoolLive.test.js +121 -0
  302. package/src/stories/Templates/EventManagement/PoolLive/PoolLive.vue +290 -255
  303. package/src/stories/Templates/EventManagement/PoolManagement/PoolManagement.stories.js +109 -107
  304. package/src/stories/Templates/EventManagement/PoolManagement/PoolManagement.vue +144 -87
  305. package/src/stories/Templates/EventManagement/PoolResults/PoolResults.stories.js +56 -57
  306. package/src/stories/Templates/EventManagement/PoolResults/PoolResults.vue +132 -123
  307. package/src/stories/Templates/EventManagement/StaffList/StaffList.stories.js +56 -57
  308. package/src/stories/Templates/EventManagement/StaffList/StaffList.vue +84 -47
  309. package/src/stories/Templates/Menus/Admin/AdminLeftMenu.stories.js +29 -29
  310. package/src/stories/Templates/Menus/Admin/AdminLeftMenu.vue +71 -67
  311. package/src/stories/Templates/Menus/EditEventsTopMenu/EditEventsTopMenu.stories.js +39 -40
  312. package/src/stories/Templates/Menus/EditEventsTopMenu/EditEventsTopMenu.vue +79 -71
  313. package/src/stories/Templates/PersonManagement/Admin/Administration/Administration.stories.js +47 -47
  314. package/src/stories/Templates/PersonManagement/Admin/Administration/Administration.vue +39 -42
  315. package/src/stories/Templates/PersonManagement/Admin/FencerAdmin/FencerAdmin.stories.js +54 -54
  316. package/src/stories/Templates/PersonManagement/Admin/FencerAdmin/FencerAdmin.vue +27 -31
  317. package/src/stories/Templates/PersonManagement/Admin/MergeAccounts/MergeAccounts.stories.js +69 -69
  318. package/src/stories/Templates/PersonManagement/Admin/MergeAccounts/MergeAccounts.vue +78 -89
  319. package/src/stories/Templates/PersonManagement/Attendance/Attendance.stories.js +22 -22
  320. package/src/stories/Templates/PersonManagement/Attendance/Attendance.vue +61 -33
  321. package/src/stories/Templates/PersonManagement/Basic/BasicEdit.stories.js +29 -29
  322. package/src/stories/Templates/PersonManagement/Basic/BasicEdit.vue +80 -53
  323. package/src/stories/Templates/PersonManagement/PersonManagement.stories.js +84 -86
  324. package/src/stories/Templates/PersonManagement/PersonManagement.vue +107 -82
  325. package/src/stories/Templates/TournamentManagement/ListEvents/ListEvents.stories.js +31 -31
  326. package/src/stories/Templates/TournamentManagement/ListEvents/ListEvents.vue +70 -51
  327. package/src/stories/Templates/TournamentManagement/TournamentManagement.stories.js +79 -79
  328. package/src/stories/Templates/TournamentManagement/TournamentManagement.vue +275 -230
  329. package/src/stories/Templates/TournamentManagement/TournamentPageOne/TournamentPageOne.stories.js +113 -113
  330. package/src/stories/Templates/TournamentManagement/TournamentPageOne/TournamentPageOne.vue +175 -146
  331. package/src/stories/Templates/TournamentManagement/TournamentPageTwo/TournamentPageTwo.stories.js +77 -77
  332. package/src/stories/Templates/TournamentManagement/TournamentPageTwo/TournamentPageTwo.vue +208 -185
  333. package/src/stories/Util/Validations/AddNewPersonModalValidation.js +23 -19
  334. package/src/stories/Util/Validations/ClubManagementValidations.js +17 -21
  335. package/src/stories/Util/Validations/PersonManagementValidations.js +26 -22
  336. package/src/stories/Util/Validations/TournamentFieldsValidations.js +20 -18
  337. package/src/stories/Util/seeding.js +131 -131
  338. package/src/stories/Util/tabs.js +75 -75
  339. package/tailwind/tailwind.css +5 -7
  340. package/tailwind.config.js +12 -15
  341. package/vite.config.js +3 -3
  342. package/src/mocks/getDirectors.js +0 -18
  343. package/src/stories/Molecules/Modals/AssignDirectorModal/AssignDirectorModal.stories.js +0 -45
  344. package/src/stories/Molecules/Modals/AssignDirectorModal/AssignDirectorModal.vue +0 -111
  345. package/src/stories/Organisms/Cards/DirectorAssignmentCard/DirectorAssignmentCard.stories.js +0 -45
  346. package/src/stories/Organisms/Cards/DirectorAssignmentCard/DirectorAssignmentCard.vue +0 -83
  347. package/src/stories/Organisms/Cards/TableauBoutCard/SpacingConfig.js +0 -111
  348. package/src/stories/Organisms/Containers/TableauLines/SpacingConfig.js +0 -112
  349. package/src/stories/Organisms/Containers/TableauLines/TableauLines.stories.js +0 -23
  350. package/src/stories/Organisms/Containers/TableauLines/TableauLines.vue +0 -79
@@ -2,36 +2,68 @@
2
2
  <div class="w-full bg-poolSetup p-2">
3
3
  <!-- Header Section -->
4
4
  <div class="flex items-center mb-6">
5
- <div v-if="!portraitURL" class="w-12 h-12 rounded-full bg-dropdownSelect flex items-center justify-center"/>
6
- <img v-if="portraitURL" :src="portraitURL" alt="Portrait" class="w-9 h-9 rounded-r-md">
5
+ <div v-if="!portraitURL" class="w-12 h-12 rounded-full bg-dropdownSelect flex items-center justify-center" />
6
+ <img v-if="portraitURL" :src="portraitURL" alt="Portrait" class="w-9 h-9 rounded-r-md" />
7
7
  <div>
8
8
  <div class="pl-3">
9
- <BaseText :text="displayName" size="lg" color="primary" weight="bold"/>
10
- <BaseText :text="clubName" size="sm" color="quinary"/>
9
+ <BaseText :text="displayName" size="lg" color="primary" weight="bold" />
10
+ <BaseText :text="clubName" size="sm" color="quinary" />
11
11
  </div>
12
12
  </div>
13
13
  </div>
14
14
 
15
15
  <!-- Flags Section -->
16
16
  <div class="flex justify-around mb-6">
17
- <div class="h-12 w-12 bg-neutral border rounded-full z-0 shadow" :class="yellowCardToggle ? 'border border-gold' : 'border'">
18
- <BaseIcon iconName="fa-cards-blank" size="3xl" color="gold" class="pt-1 ml-1 z-1" @click="toggleCard('gold')"/>
19
- <span class="h-5 w-5 rounded-full flex justify-center ml-9 -mt-3 z-10 border" :class="yellowCardToggle ? 'bg-gold' : 'bg-gray-200'" >
20
- <BaseText :text="yellowCardCount" size="xs" color="primary"/></span>
17
+ <div
18
+ class="h-12 w-12 bg-neutral border rounded-full z-0 shadow"
19
+ :class="yellowCardToggle ? 'border border-gold' : 'border'"
20
+ >
21
+ <BaseIcon iconName="fa-cards-blank" size="3xl" color="gold" class="pt-1 ml-1 z-1" @click="toggleCard('gold')" />
22
+ <span
23
+ class="h-5 w-5 rounded-full flex justify-center ml-9 -mt-3 z-10 border"
24
+ :class="yellowCardToggle ? 'bg-gold' : 'bg-gray-200'"
25
+ >
26
+ <BaseText :text="yellowCardCount" size="xs" color="primary"
27
+ /></span>
21
28
  </div>
22
29
  <div class="h-12 w-12 bg-neutral rounded-full z-0 shadow" :class="redCardToggle ? 'border border-red' : 'border'">
23
- <BaseIcon iconName="fa-cards-blank" size="3xl" color="red" class="pt-1 ml-1 z-1" @click="toggleCard('red')"/>
24
- <span class="h-5 w-5 rounded-full flex justify-center ml-9 -mt-3 z-10 border" :class="redCardToggle ? 'bg-red' : 'bg-gray-200'">
25
- <BaseText :text="redCardCount" size="xs" :color="redCardToggle ? 'neutral' : 'primary'"/></span>
30
+ <BaseIcon iconName="fa-cards-blank" size="3xl" color="red" class="pt-1 ml-1 z-1" @click="toggleCard('red')" />
31
+ <span
32
+ class="h-5 w-5 rounded-full flex justify-center ml-9 -mt-3 z-10 border"
33
+ :class="redCardToggle ? 'bg-red' : 'bg-gray-200'"
34
+ >
35
+ <BaseText :text="redCardCount" size="xs" :color="redCardToggle ? 'neutral' : 'primary'"
36
+ /></span>
26
37
  </div>
27
- <div class="h-12 w-12 bg-neutral border rounded-full z-0 shadow" :class="blackCardToggle ? 'border border-black' : 'border'">
28
- <BaseIcon iconName="fa-cards-blank" size="3xl" color="black" class="pt-1 ml-1 z-1" @click="toggleCard('black')"/>
38
+ <div
39
+ class="h-12 w-12 bg-neutral border rounded-full z-0 shadow"
40
+ :class="blackCardToggle ? 'border border-black' : 'border'"
41
+ >
42
+ <BaseIcon
43
+ iconName="fa-cards-blank"
44
+ size="3xl"
45
+ color="black"
46
+ class="pt-1 ml-1 z-1"
47
+ @click="toggleCard('black')"
48
+ />
29
49
  </div>
30
- <div class="h-12 w-12 bg-neutral border rounded-full z-0 shadow" :class="noteToggle ? 'border border-blue' : 'border'">
31
- <BaseIcon iconName="fa-pen-to-square" size="3xl" color="blue" class="pt-1 ml-2 z-1" @click="toggleNote"/>
50
+ <div
51
+ class="h-12 w-12 bg-neutral border rounded-full z-0 shadow"
52
+ :class="noteToggle ? 'border border-blue' : 'border'"
53
+ >
54
+ <BaseIcon iconName="fa-pen-to-square" size="3xl" color="blue" class="pt-1 ml-2 z-1" @click="toggleNote" />
32
55
  </div>
33
- <div class="h-12 w-12 bg-neutral border rounded-full z-0 shadow" :class="medicalToggle ? 'border border-orange' : 'border'">
34
- <BaseIcon iconName="fa-truck-medical" size="3xl" color="orange" class="pt-1 ml-2 z-1" @click="toggleCard('medical')"/>
56
+ <div
57
+ class="h-12 w-12 bg-neutral border rounded-full z-0 shadow"
58
+ :class="medicalToggle ? 'border border-orange' : 'border'"
59
+ >
60
+ <BaseIcon
61
+ iconName="fa-truck-medical"
62
+ size="3xl"
63
+ color="orange"
64
+ class="pt-1 ml-2 z-1"
65
+ @click="toggleCard('medical')"
66
+ />
35
67
  </div>
36
68
  </div>
37
69
 
@@ -39,13 +71,11 @@
39
71
  <div class="mb-3">
40
72
  <div class="flex flex-wrap gap-2">
41
73
  <button
42
- v-for="phrase in quickPhrases"
43
- :key="phrase"
44
- type="button"
45
- class="rounded-full border px-3 py-1 text-sm shadow-sm bg-white
46
- hover:bg-gray-50 active:scale-[0.98] transition
47
- disabled:opacity-40 disabled:cursor-not-allowed"
48
- @click="applyQuickPhrase(phrase)"
74
+ v-for="phrase in quickPhrases"
75
+ :key="phrase"
76
+ type="button"
77
+ class="rounded-full border px-3 py-1 text-sm shadow-sm bg-white hover:bg-gray-50 active:scale-[0.98] transition disabled:opacity-40 disabled:cursor-not-allowed"
78
+ @click="applyQuickPhrase(phrase)"
49
79
  >
50
80
  {{ phrase }}
51
81
  </button>
@@ -54,68 +84,86 @@
54
84
 
55
85
  <!-- Notes Section -->
56
86
  <div class="mb-4">
57
- <textarea v-model="currentNote" class="w-full h-20 border rounded-md p-2" placeholder="Add a note..."/>
87
+ <textarea v-model="currentNote" class="w-full h-20 border rounded-md p-2" placeholder="Add a note..." />
58
88
  <div class="w-full flex justify-between">
59
89
  <BaseButton type="primary" label="Clear" size="sm" @buttonClick="clearPenalty()" />
60
90
  <BaseButton v-if="toggled" type="primary" label="Save Penalty" size="sm" @buttonClick="handlePenalty()" />
61
- <BaseText v-if="!toggled" text="Save Penalty" color="quinary" size="sm" class="bg-poolSetup border p-2 rounded-lg ml-1 resize-none focus:ring-primary focus:border-primary" />
91
+ <BaseText
92
+ v-if="!toggled"
93
+ text="Save Penalty"
94
+ color="quinary"
95
+ size="sm"
96
+ class="bg-poolSetup border p-2 rounded-lg ml-1 resize-none focus:ring-primary focus:border-primary"
97
+ />
62
98
  </div>
63
99
  </div>
64
100
 
65
101
  <!-- Past cards Section -->
66
102
  <div>
67
- <BaseText v-if="pastCards && pastCards.length" text="Past Cards in this Event" type="h3" size="lg" color="primary" weight="bold" class="mb-2 "/>
68
- <div v-for="card in pastCards" :key="card.PenaltyId" class="flex items-center justify-between bg-neutral mb-2 border shadow-md p-2 rounded-lg">
69
- <BaseIcon :iconName="getFlagIcon(card.PenaltyType)" :color="getFlagColor(card.PenaltyType)"/>
70
- <div class="flex-grow ml-4 text-sm" @click="selectPastCard(card)">
71
- <BaseText :text="card.Notes" type="p" size="sm" color="primary" class=""/>
103
+ <BaseText
104
+ v-if="pastCards && pastCards.length"
105
+ text="Past Cards in this Event"
106
+ type="h3"
107
+ size="lg"
108
+ color="primary"
109
+ weight="bold"
110
+ class="mb-2"
111
+ />
112
+ <div
113
+ v-for="card in pastCards"
114
+ :key="card.PenaltyId"
115
+ class="flex items-center justify-between bg-neutral mb-2 border shadow-md p-2 rounded-lg"
116
+ >
117
+ <BaseIcon :iconName="getFlagIcon(card.PenaltyType)" :color="getFlagColor(card.PenaltyType)" />
118
+ <div class="flex-grow ml-4 text-sm" @click="selectPastCard(card)">
119
+ <BaseText :text="card.Notes" type="p" size="sm" color="primary" class="" />
72
120
  </div>
73
- <BaseIcon iconName="fa-times" color="red" @click="removeNote(card.PenaltyId)"/>
121
+ <BaseIcon iconName="fa-times" color="red" @click="removeNote(card.PenaltyId)" />
74
122
  </div>
75
123
  </div>
76
124
  </div>
77
125
  <ConfirmModal
78
- :show="showConfirmModal"
79
- iconName="fa-circle-exclamation"
80
- iconColor="alarmText"
81
- iconBackgroundColor="alarmHighlight"
82
- iconBorderColor="lossRed"
83
- headerText="Fencer will be Removed!"
84
- bodyText="This action requires a second staff member's approval. Do you wish to continue?"
85
- confirmText="Confirm"
86
- cancelText="Cancel"
87
- @confirm-modal="confirmAction"
88
- @cancel-modal="cancelAction"
89
- @update:show="showConfirmModal = $event"
126
+ :show="showConfirmModal"
127
+ iconName="fa-circle-exclamation"
128
+ iconColor="alarmText"
129
+ iconBackgroundColor="alarmHighlight"
130
+ iconBorderColor="lossRed"
131
+ headerText="Fencer will be Removed!"
132
+ bodyText="This action requires a second staff member's approval. Do you wish to continue?"
133
+ confirmText="Confirm"
134
+ cancelText="Cancel"
135
+ @confirm-modal="confirmAction"
136
+ @cancel-modal="cancelAction"
137
+ @update:show="showConfirmModal = $event"
90
138
  />
91
139
  </template>
92
140
 
93
141
  <script>
94
- import BaseIcon from "../../../Atoms/Icon/BaseIcon.vue";
95
- import BaseButton from "../../../Molecules/Buttons/BaseButton/BaseButton.vue";
96
- import BaseText from "../../../Atoms/Text/BaseText.vue";
97
- import ConfirmModal from "../../../Molecules/Modals/ConfirmModal/ConfirmModal.vue";
98
-
99
- const flagIcons = {
100
- Yellow: 'fa-cards-blank',
101
- Red: 'fa-cards-blank',
102
- Black: 'fa-cards-blank',
103
- Note: 'fa-user-md',
104
- Medical: 'fa-truck-medical'
105
- };
106
-
107
- const flagColors = {
108
- Yellow: 'gold',
109
- Red: 'red',
110
- Black: 'black',
111
- Note: 'blue',
112
- Medical: 'orange'
113
- };
114
-
115
- export default {
116
- name: "PenaltyCard",
117
- components: {ConfirmModal, BaseIcon, BaseButton, BaseText},
118
- emits: ["penalty:remove", "penalty:add", "penalty:update", "toggleFlag"],
142
+ import BaseIcon from '../../../Atoms/Icon/BaseIcon.vue';
143
+ import BaseButton from '../../../Molecules/Buttons/BaseButton/BaseButton.vue';
144
+ import BaseText from '../../../Atoms/Text/BaseText.vue';
145
+ import ConfirmModal from '../../../Molecules/Modals/ConfirmModal/ConfirmModal.vue';
146
+
147
+ const flagIcons = {
148
+ Yellow: 'fa-cards-blank',
149
+ Red: 'fa-cards-blank',
150
+ Black: 'fa-cards-blank',
151
+ Note: 'fa-user-md',
152
+ Medical: 'fa-truck-medical'
153
+ };
154
+
155
+ const flagColors = {
156
+ Yellow: 'gold',
157
+ Red: 'red',
158
+ Black: 'black',
159
+ Note: 'blue',
160
+ Medical: 'orange'
161
+ };
162
+
163
+ export default {
164
+ name: 'PenaltyCard',
165
+ components: { ConfirmModal, BaseIcon, BaseButton, BaseText },
166
+ emits: ['penalty:remove', 'penalty:add', 'penalty:update', 'toggleFlag'],
119
167
  props: {
120
168
  fencer1: {
121
169
  type: Boolean,
@@ -125,11 +173,11 @@ export default {
125
173
  bout: {
126
174
  type: Object,
127
175
  required: true
128
- },
176
+ }
129
177
  },
130
178
  data() {
131
179
  return {
132
- currentNote: "",
180
+ currentNote: '',
133
181
  selectPenaltyId: 0,
134
182
  pastNotes: [],
135
183
  yellowCardToggle: false,
@@ -142,13 +190,7 @@ export default {
142
190
  medicalCount: 0,
143
191
  medicalToggle: false,
144
192
  showConfirmModal: false,
145
- quickPhrases: [
146
- 'Back of Head',
147
- 'Excessive force',
148
- 'Gear issue',
149
- 'Ignoring director',
150
- 'Unsafe fencing',
151
- ],
193
+ quickPhrases: ['Back of Head', 'Excessive force', 'Gear issue', 'Ignoring director', 'Unsafe fencing']
152
194
  };
153
195
  },
154
196
  mounted() {
@@ -156,36 +198,38 @@ export default {
156
198
  },
157
199
  computed: {
158
200
  portraitURL() {
159
- const images = this.fencer1 ? this.bout?.Person1?.Images ?? [] : this.bout?.Person2?.Images ?? [];
201
+ const images = this.fencer1 ? (this.bout?.Person1?.Images ?? []) : (this.bout?.Person2?.Images ?? []);
160
202
  const portrait = images.find(image => image.URL);
161
203
  return portrait ? portrait.URL : '';
162
204
  },
163
- displayName() {
164
- return this.selectedPerson?.DisplayName || '';
165
- },
166
- clubName() {
167
- return this.selectedPerson?.Club?.Name || '';
168
- },
169
- pastCards() {
170
- return this.selectedPersonPenalties;
171
- },
172
- selectedPerson() {
173
- return this.fencer1 ? this.bout.Person1 : this.bout.Person2;
174
- },
175
- selectedPersonId() {
176
- return this.fencer1 ? this.bout.Person1Id : this.bout.Person2Id;
177
- },
178
- selectedPersonPenalties() {
179
- return Array.isArray(this.selectedPerson?.Penalties) ? this.selectedPerson.Penalties : [];
180
- },
181
- toggled() {
182
- return this.yellowCardToggle || this.redCardToggle || this.noteToggle || this.blackCardToggle || this.medicalToggle;
205
+ displayName() {
206
+ return this.selectedPerson?.DisplayName || '';
207
+ },
208
+ clubName() {
209
+ return this.selectedPerson?.Club?.Name || '';
210
+ },
211
+ pastCards() {
212
+ return this.selectedPersonPenalties;
183
213
  },
214
+ selectedPerson() {
215
+ return this.fencer1 ? this.bout.Person1 : this.bout.Person2;
216
+ },
217
+ selectedPersonId() {
218
+ return this.fencer1 ? this.bout.Person1Id : this.bout.Person2Id;
219
+ },
220
+ selectedPersonPenalties() {
221
+ return Array.isArray(this.selectedPerson?.Penalties) ? this.selectedPerson.Penalties : [];
222
+ },
223
+ toggled() {
224
+ return (
225
+ this.yellowCardToggle || this.redCardToggle || this.noteToggle || this.blackCardToggle || this.medicalToggle
226
+ );
227
+ }
184
228
  },
185
229
  methods: {
186
230
  applyQuickPhrase(phrase) {
187
231
  this.currentNote = this.currentNote + phrase;
188
- },
232
+ },
189
233
  selectPastCard(card) {
190
234
  this.selectPenaltyId = card.PenaltyId;
191
235
  this.currentNote = card.Notes;
@@ -202,13 +246,13 @@ export default {
202
246
  clearPenalty() {
203
247
  this.toggleAllOff();
204
248
  this.currentNote = '';
205
- },
206
- countCards() {
207
- const boutPenalties = this.selectedPersonPenalties.filter(penalty => penalty.BoutId === this.bout.BoutId);
208
- this.yellowCardCount = boutPenalties.filter(penalty => penalty.PenaltyType === "Yellow").length;
209
- this.redCardCount = boutPenalties.filter(penalty => penalty.PenaltyType === "Red").length;
210
- this.blackCardCount = boutPenalties.filter(penalty => penalty.PenaltyType === "Black").length;
211
- this.medicalCount = boutPenalties.filter(penalty => penalty.PenaltyType === "Medical").length;
249
+ },
250
+ countCards() {
251
+ const boutPenalties = this.selectedPersonPenalties.filter(penalty => penalty.BoutId === this.bout.BoutId);
252
+ this.yellowCardCount = boutPenalties.filter(penalty => penalty.PenaltyType === 'Yellow').length;
253
+ this.redCardCount = boutPenalties.filter(penalty => penalty.PenaltyType === 'Red').length;
254
+ this.blackCardCount = boutPenalties.filter(penalty => penalty.PenaltyType === 'Black').length;
255
+ this.medicalCount = boutPenalties.filter(penalty => penalty.PenaltyType === 'Medical').length;
212
256
  },
213
257
  toggleAllOff() {
214
258
  if (this.yellowCardToggle) this.yellowCardCount--;
@@ -231,15 +275,15 @@ export default {
231
275
  this.toggleAllOff();
232
276
 
233
277
  const cardMappings = {
234
- gold: {toggle: 'yellowCardToggle', count: 'yellowCardCount'},
235
- red: {toggle: 'redCardToggle', count: 'redCardCount'},
236
- black: {toggle: 'blackCardToggle', count: 'blackCardCount'},
237
- medical: {toggle: 'medicalToggle', count: 'medicalCount'},
238
- note: {toggle: 'noteToggle'}
278
+ gold: { toggle: 'yellowCardToggle', count: 'yellowCardCount' },
279
+ red: { toggle: 'redCardToggle', count: 'redCardCount' },
280
+ black: { toggle: 'blackCardToggle', count: 'blackCardCount' },
281
+ medical: { toggle: 'medicalToggle', count: 'medicalCount' },
282
+ note: { toggle: 'noteToggle' }
239
283
  };
240
284
 
241
285
  if (cardMappings[card]) {
242
- const {toggle, count} = cardMappings[card];
286
+ const { toggle, count } = cardMappings[card];
243
287
 
244
288
  if (toggle) {
245
289
  this[toggle] = !this[toggle];
@@ -250,42 +294,42 @@ export default {
250
294
  }
251
295
  }
252
296
 
253
- this.$emit("toggleFlag", card);
297
+ this.$emit('toggleFlag', card);
254
298
  },
255
299
  toggleNote() {
256
300
  this.toggleAllOff();
257
301
  this.noteToggle = !this.noteToggle;
258
- this.currentNote = "";
302
+ this.currentNote = '';
259
303
  },
260
- addNewPenalty() {
261
- const newPenalty = {
262
- BoutId: this.bout.BoutId,
263
- PersonId: this.selectedPersonId,
264
- PenaltyId: Date.now(),
265
- PenaltyType: this.getToggled(),
266
- Notes: this.currentNote
267
- };
268
-
269
- this.ensureSelectedPersonPenaltyState();
270
- this.selectedPerson.Penalties.push(newPenalty);
271
- this.updateSelectedPersonLastNote(this.currentNote);
272
-
273
- this.countCards();
274
- this.$emit("penalty:add", newPenalty);
275
- this.currentNote = "";
304
+ addNewPenalty() {
305
+ const newPenalty = {
306
+ BoutId: this.bout.BoutId,
307
+ PersonId: this.selectedPersonId,
308
+ PenaltyId: Date.now(),
309
+ PenaltyType: this.getToggled(),
310
+ Notes: this.currentNote
311
+ };
312
+
313
+ this.ensureSelectedPersonPenaltyState();
314
+ this.selectedPerson.Penalties.push(newPenalty);
315
+ this.updateSelectedPersonLastNote(this.currentNote);
316
+
317
+ this.countCards();
318
+ this.$emit('penalty:add', newPenalty);
319
+ this.currentNote = '';
276
320
  },
277
321
  updatePenalty() {
278
322
  const penalties = this.fencer1 ? this.bout.Person1.Penalties : this.bout.Person2.Penalties;
279
323
  const existingPenaltyIndex = penalties.findIndex(p => p.PenaltyId === this.selectPenaltyId);
280
324
 
281
325
  if (existingPenaltyIndex !== -1) {
282
- penalties[existingPenaltyIndex].PenaltyType = this.getToggled();
283
- penalties[existingPenaltyIndex].Notes = this.currentNote;
284
- penalties[existingPenaltyIndex].PersonId = this.selectedPersonId;
285
- this.updateSelectedPersonLastNote(this.currentNote);
286
-
287
- this.$emit('penalty:update', penalties[existingPenaltyIndex]);
288
- }
326
+ penalties[existingPenaltyIndex].PenaltyType = this.getToggled();
327
+ penalties[existingPenaltyIndex].Notes = this.currentNote;
328
+ penalties[existingPenaltyIndex].PersonId = this.selectedPersonId;
329
+ this.updateSelectedPersonLastNote(this.currentNote);
330
+
331
+ this.$emit('penalty:update', penalties[existingPenaltyIndex]);
332
+ }
289
333
 
290
334
  this.countCards();
291
335
  this.selectPenaltyId = null;
@@ -324,32 +368,32 @@ export default {
324
368
  this.countCards();
325
369
  }
326
370
  },
327
- confirmAction(){
371
+ confirmAction() {
328
372
  this.addNewPenalty();
329
373
  },
330
374
  cancelAction() {
331
375
  this.blackCardToggle = false;
332
- this.currentNote = "";
333
- },
334
- getFlagIcon(flag) {
335
- return flagIcons[flag] || 'fa-circle';
336
- },
337
- getFlagColor(flag) {
338
- return flagColors[flag] || 'gray';
339
- },
340
- ensureSelectedPersonPenaltyState() {
341
- if (!Array.isArray(this.selectedPerson.Penalties)) {
342
- this.selectedPerson.Penalties = [];
343
- }
344
-
345
- if (!Array.isArray(this.selectedPerson.EventPersons)) {
346
- this.selectedPerson.EventPersons = [{ LastNote: '' }];
347
- }
348
- },
349
- updateSelectedPersonLastNote(note) {
350
- this.ensureSelectedPersonPenaltyState();
351
- this.selectedPerson.EventPersons[0].LastNote = note;
352
- },
353
- },
354
- };
355
- </script>
376
+ this.currentNote = '';
377
+ },
378
+ getFlagIcon(flag) {
379
+ return flagIcons[flag] || 'fa-circle';
380
+ },
381
+ getFlagColor(flag) {
382
+ return flagColors[flag] || 'gray';
383
+ },
384
+ ensureSelectedPersonPenaltyState() {
385
+ if (!Array.isArray(this.selectedPerson.Penalties)) {
386
+ this.selectedPerson.Penalties = [];
387
+ }
388
+
389
+ if (!Array.isArray(this.selectedPerson.EventPersons)) {
390
+ this.selectedPerson.EventPersons = [{ LastNote: '' }];
391
+ }
392
+ },
393
+ updateSelectedPersonLastNote(note) {
394
+ this.ensureSelectedPersonPenaltyState();
395
+ this.selectedPerson.EventPersons[0].LastNote = note;
396
+ }
397
+ }
398
+ };
399
+ </script>
@@ -2,22 +2,22 @@ import PenaltyFencerCard from './PenaltyFencerCard.vue';
2
2
  import getPenaltiesByEvent from '../../../../mocks/getPenaltiesByEvent.js';
3
3
 
4
4
  export default {
5
- title: 'Organisms/Cards/PenaltyFencerCard',
6
- component: PenaltyFencerCard,
7
- tags: ['autodocs'],
8
- args: {
9
- personPenalties: getPenaltiesByEvent.Penalties[0],
10
- eventName: "Lynx Cup 2026"
11
- },
12
- argTypes: {
13
- personPenalties: { control: 'object' },
14
- eventName: { control: 'text' }
15
- }
16
- };
5
+ title: 'Organisms/Cards/PenaltyFencerCard',
6
+ component: PenaltyFencerCard,
7
+ tags: ['autodocs'],
8
+ args: {
9
+ personPenalties: getPenaltiesByEvent.Penalties[0],
10
+ eventName: 'Lynx Cup 2026'
11
+ },
12
+ argTypes: {
13
+ personPenalties: { control: 'object' },
14
+ eventName: { control: 'text' }
15
+ }
16
+ };
17
17
 
18
18
  export const Default = {
19
- args: {
20
- personPenalties: getPenaltiesByEvent.Penalties[2],
21
- eventName: "Lynx Cup 2026"
22
- }
23
- }
19
+ args: {
20
+ personPenalties: getPenaltiesByEvent.Penalties[2],
21
+ eventName: 'Lynx Cup 2026'
22
+ }
23
+ };