@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
@@ -1,182 +1,231 @@
1
1
  <template>
2
2
  <div class="w-full md:p-4">
3
3
  <div class="w-full flex justify-between">
4
- <BaseText text="Assignments" color="primary" size="xl" type="h1" weight="bold" class="pt-2"/>
4
+ <BaseText text="Assignments" color="primary" size="xl" type="h1" weight="bold" class="pt-2" />
5
5
  <div class="flex">
6
- <BaseButton iconName="fa-arrow-rotate-right" :iconLeft="true" label="" size="sm" type="primary" @buttonClick="refreshAssignments" class="w-8 pl-4 md:w-12"/>
7
- <BaseButton label="Current" size="sm" :selected="showCurrent" type="primary" @buttonClick="showCurrent = true" />
8
- <BaseButton label="Past" size="sm" :selected="!showCurrent" type="primary" @buttonClick="showCurrent = false" class="w-16"/>
6
+ <BaseButton
7
+ iconName="fa-arrow-rotate-right"
8
+ :iconLeft="true"
9
+ label=""
10
+ size="sm"
11
+ type="primary"
12
+ @buttonClick="refreshAssignments"
13
+ class="w-8 pl-4 md:w-12"
14
+ />
15
+ <BaseButton
16
+ label="Current"
17
+ size="sm"
18
+ :selected="showCurrent"
19
+ type="primary"
20
+ @buttonClick="showCurrent = true"
21
+ />
22
+ <BaseButton
23
+ label="Past"
24
+ size="sm"
25
+ :selected="!showCurrent"
26
+ type="primary"
27
+ @buttonClick="showCurrent = false"
28
+ class="w-16"
29
+ />
9
30
  </div>
10
31
  </div>
11
32
 
12
- <div v-if="filteredAssignments.length === 0" class="text-center mt-10">
13
- <BaseText :text="emptyAssignmentsText" color="secondary" size="lg" weight="normal"/>
33
+ <div v-if="filteredAssignments.length === 0" class="text-center mt-10">
34
+ <BaseText :text="emptyAssignmentsText" color="secondary" size="lg" weight="normal" />
14
35
  </div>
15
36
 
16
37
  <section v-if="filteredAssignments.length > 0">
17
- <div v-for="tournament in filteredAssignments" :key="tournament.TournamentId" class="mb-6">
18
- <div class="flex mr-4 md:mr-0">
19
- <div class="hidden md:flex w-14 h-20 flex-col pt-5">
20
- <img :src="getTournamentArtworkURL(tournament)" alt="Tournament Artwork" class="w-14 h-14 rounded-lg object-cover"/>
21
- </div>
22
- <div class="w-full flex flex-col h-14 justify-end md:ml-2">
23
- <div class="w-full flex ml-2 justify-between border-b">
24
- <BaseText :text="tournament.Name" color="primary" size="lg" weight="bold"/>
25
- <BaseText :text="formatTournamentDates(tournament.StartDate, tournament.EndDate)" color="primary" size="sm" weight="normal" class="pt-1.5" />
38
+ <div v-for="tournament in filteredAssignments" :key="tournament.TournamentId" class="mb-6">
39
+ <div class="flex mr-4 md:mr-0">
40
+ <div class="hidden md:flex w-14 h-20 flex-col pt-5">
41
+ <img
42
+ :src="getTournamentArtworkURL(tournament)"
43
+ alt="Tournament Artwork"
44
+ class="w-14 h-14 rounded-lg object-cover"
45
+ />
26
46
  </div>
27
- </div>
28
- </div>
29
- <div class="md:ml-14 md:-mt-2 w-full mt-2">
30
- <section v-for="event in tournament.Events" :key="event.EventId" class="md:pl-4 mb-2 flex md:w-11/12">
31
- <div class="flex-grow flex justify-between items-center bg-poolSetup px-4 py-2 rounded-lg">
32
- <div class="flex items-center space-x-4">
33
- <BaseIcon :iconName="getRoleIcon(event)" :iconStyle="getIconStyle(event)" size="md" color="quinary" />
34
- <BaseText :text="event.EventName" color="primary" size="" weight="semi-bold" class="text-xs md:text-sm"/>
47
+ <div class="w-full flex flex-col h-14 justify-end md:ml-2">
48
+ <div class="w-full flex ml-2 justify-between border-b">
49
+ <BaseText :text="tournament.Name" color="primary" size="lg" weight="bold" />
50
+ <BaseText
51
+ :text="formatTournamentDates(tournament.StartDate, tournament.EndDate)"
52
+ color="primary"
53
+ size="sm"
54
+ weight="normal"
55
+ class="pt-1.5"
56
+ />
35
57
  </div>
36
- <span class="hidden md:flex">
37
- <BaseText :text="formatEventDate(event.Date, event.StartTime)" color="primary" size="" weight="normal" class="text-xs md:text-sm"/>
38
- </span>
39
58
  </div>
40
- <div class="w-12 md:flex bg-poolSetup ml-2 px-4 py-2 rounded-lg">
41
- <BaseIcon :iconName="getStatusIcon(event)" size="md" color="quinary" :class="getIconClass(event)" />
42
- </div>
43
- <div v-if="canForwardToEvent(event)" class="w-12 ml-1">
44
- <BaseButton iconName="fa-right-from-line" :iconLeft="false" label="" size="md" type="primary" @buttonClick="forwardToEvent(event)" class="h-10 w-10 pr-4"/>
45
- </div>
46
- <span v-if="shouldReserveForwardActionSpace(event)" class="w-12 ml-1" />
47
- </section>
59
+ </div>
60
+ <div class="md:ml-14 md:-mt-2 w-full mt-2">
61
+ <section v-for="event in tournament.Events" :key="event.EventId" class="md:pl-4 mb-2 flex md:w-11/12">
62
+ <div class="flex-grow flex justify-between items-center bg-poolSetup px-4 py-2 rounded-lg">
63
+ <div class="flex items-center space-x-4">
64
+ <BaseIcon :iconName="getRoleIcon(event)" :iconStyle="getIconStyle(event)" size="md" color="quinary" />
65
+ <BaseText
66
+ :text="event.EventName"
67
+ color="primary"
68
+ size=""
69
+ weight="semi-bold"
70
+ class="text-xs md:text-sm"
71
+ />
72
+ </div>
73
+ <span class="hidden md:flex">
74
+ <BaseText
75
+ :text="formatEventDate(event.Date, event.StartTime)"
76
+ color="primary"
77
+ size=""
78
+ weight="normal"
79
+ class="text-xs md:text-sm"
80
+ />
81
+ </span>
82
+ </div>
83
+ <div class="w-12 md:flex bg-poolSetup ml-2 px-4 py-2 rounded-lg">
84
+ <BaseIcon :iconName="getStatusIcon(event)" size="md" color="quinary" :class="getIconClass(event)" />
85
+ </div>
86
+ <div v-if="canForwardToEvent(event)" class="w-12 ml-1">
87
+ <BaseButton
88
+ iconName="fa-right-from-line"
89
+ :iconLeft="false"
90
+ label=""
91
+ size="md"
92
+ type="primary"
93
+ @buttonClick="forwardToEvent(event)"
94
+ class="h-10 w-10 pr-4"
95
+ />
96
+ </div>
97
+ <span v-if="shouldReserveForwardActionSpace(event)" class="w-12 ml-1" />
98
+ </section>
99
+ </div>
48
100
  </div>
49
- </div>
50
101
  </section>
51
102
  </div>
52
103
  </template>
53
104
 
54
105
  <script>
55
- import BaseButton from "../../Molecules/Buttons/BaseButton/BaseButton.vue";
56
- import BaseText from "../../Atoms/Text/BaseText.vue";
57
- import defaultImage from "../../../assets/default-tournament_old.png"
58
- import BaseIcon from "../../Atoms/Icon/BaseIcon.vue";
59
-
60
- const roleIcons = {
61
- Director: 'fa-referee',
62
- 'List Table': 'fa-laptop',
63
- 'Line Judge': 'fa-flag-pennant'
64
- };
65
-
66
- const roleIconStyles = {
67
- Director: 'fa-kit'
68
- };
69
-
70
- const daySuffixes = {
71
- 1: 'st',
72
- 2: 'nd',
73
- 3: 'rd'
74
- };
75
-
76
- const statusIcons = {
77
- planning: 'fa-hourglass',
78
- preparation: 'fa-hourglass-start',
79
- live: 'fa-play',
80
- results: 'fa-pause',
81
- de: 'fa-circle-play',
82
- completed: 'fa-trophy'
83
- };
84
-
85
- const statusIconClasses = {
86
- planning: 'mt-1 pl-1',
87
- preparation: 'mt-1 pl-1',
88
- live: 'mt-1 pl-0',
89
- results: 'mt-1 pl-1',
90
- de: 'mt-1 pl-0',
91
- completed: 'mt-0.5'
92
- };
93
-
94
- const actionableStatuses = ['live', 'results', 'de'];
95
-
96
- export default {
97
- name: "Assignment",
106
+ import BaseButton from '../../Molecules/Buttons/BaseButton/BaseButton.vue';
107
+ import BaseText from '../../Atoms/Text/BaseText.vue';
108
+ import defaultImage from '../../../assets/default-tournament_old.png';
109
+ import BaseIcon from '../../Atoms/Icon/BaseIcon.vue';
110
+
111
+ const roleIcons = {
112
+ Director: 'fa-referee',
113
+ 'List Table': 'fa-laptop',
114
+ 'Line Judge': 'fa-flag-pennant'
115
+ };
116
+
117
+ const roleIconStyles = {
118
+ Director: 'fa-kit'
119
+ };
120
+
121
+ const daySuffixes = {
122
+ 1: 'st',
123
+ 2: 'nd',
124
+ 3: 'rd'
125
+ };
126
+
127
+ const statusIcons = {
128
+ planning: 'fa-hourglass',
129
+ preparation: 'fa-hourglass-start',
130
+ live: 'fa-play',
131
+ results: 'fa-pause',
132
+ de: 'fa-circle-play',
133
+ completed: 'fa-trophy'
134
+ };
135
+
136
+ const statusIconClasses = {
137
+ planning: 'mt-1 pl-1',
138
+ preparation: 'mt-1 pl-1',
139
+ live: 'mt-1 pl-0',
140
+ results: 'mt-1 pl-1',
141
+ de: 'mt-1 pl-0',
142
+ completed: 'mt-0.5'
143
+ };
144
+
145
+ const actionableStatuses = ['live', 'results', 'de'];
146
+
147
+ export default {
148
+ name: 'Assignment',
98
149
  emits: ['forwardToEvent', 'refreshAssignments'],
99
- components: {BaseIcon, BaseText, BaseButton},
150
+ components: { BaseIcon, BaseText, BaseButton },
100
151
  props: {
101
152
  assignments: {
102
153
  type: Array,
103
- required: true,
104
- },
154
+ required: true
155
+ }
105
156
  },
106
157
  data() {
107
158
  return {
108
- showCurrent: true,
159
+ showCurrent: true
109
160
  };
110
161
  },
111
- computed: {
112
- filteredAssignments() {
113
- const today = this.getStartOfDay(new Date());
114
- return this.assignments.filter((tournament) => {
115
- const tournamentEndDate = this.getEndOfDay(tournament.EndDate);
116
- return this.showCurrent
117
- ? tournamentEndDate >= today
118
- : tournamentEndDate < today;
119
- });
120
- },
121
- emptyAssignmentsText() {
122
- return this.showCurrent ? 'No Current Assignments' : 'No Past Assignments';
123
- },
124
- },
125
- methods: {
126
- getTournamentArtworkURL(tournament) {
127
- if (Array.isArray(tournament.Images)) {
128
- const image = tournament.Images.find((item) => this.getImageUrl(item));
129
- return this.getImageUrl(image) || defaultImage;
130
- }
131
-
132
- return this.getImageUrl(tournament.Images) || defaultImage;
133
- },
134
- getImageUrl(image) {
135
- return image?.URL || image?.Url || image?.url;
136
- },
137
- getStartOfDay(date) {
138
- const normalizedDate = new Date(date);
139
- normalizedDate.setHours(0, 0, 0, 0);
140
- return normalizedDate;
141
- },
142
- getEndOfDay(date) {
143
- const normalizedDate = new Date(date);
144
- normalizedDate.setHours(23, 59, 59, 999);
145
- return normalizedDate;
146
- },
147
- formatEventDate(date, time) {
148
- const eventDate = new Date(`${date}T${time}`);
149
- const options = {weekday: 'long', hour: 'numeric', minute: '2-digit', hour12: true};
162
+ computed: {
163
+ filteredAssignments() {
164
+ const today = this.getStartOfDay(new Date());
165
+ return this.assignments.filter(tournament => {
166
+ const tournamentEndDate = this.getEndOfDay(tournament.EndDate);
167
+ return this.showCurrent ? tournamentEndDate >= today : tournamentEndDate < today;
168
+ });
169
+ },
170
+ emptyAssignmentsText() {
171
+ return this.showCurrent ? 'No Current Assignments' : 'No Past Assignments';
172
+ }
173
+ },
174
+ methods: {
175
+ getTournamentArtworkURL(tournament) {
176
+ if (Array.isArray(tournament.Images)) {
177
+ const image = tournament.Images.find(item => this.getImageUrl(item));
178
+ return this.getImageUrl(image) || defaultImage;
179
+ }
180
+
181
+ return this.getImageUrl(tournament.Images) || defaultImage;
182
+ },
183
+ getImageUrl(image) {
184
+ return image?.URL || image?.Url || image?.url;
185
+ },
186
+ getStartOfDay(date) {
187
+ const normalizedDate = new Date(date);
188
+ normalizedDate.setHours(0, 0, 0, 0);
189
+ return normalizedDate;
190
+ },
191
+ getEndOfDay(date) {
192
+ const normalizedDate = new Date(date);
193
+ normalizedDate.setHours(23, 59, 59, 999);
194
+ return normalizedDate;
195
+ },
196
+ formatEventDate(date, time) {
197
+ const eventDate = new Date(`${date}T${time}`);
198
+ const options = { weekday: 'long', hour: 'numeric', minute: '2-digit', hour12: true };
150
199
  return eventDate.toLocaleDateString('en-US', options);
151
- },
152
- getRoleIcon(event) {
153
- return roleIcons[event.Role] || 'fa-circle-question';
154
- },
155
- getIconStyle(event) {
156
- return roleIconStyles[event.Role] || 'fa-solid';
157
- },
158
- shouldShowButton(event) {
159
- return actionableStatuses.includes(this.getNormalizedStatus(event));
160
- },
161
- canForwardToEvent(event) {
162
- return this.showCurrent && this.shouldShowButton(event);
163
- },
164
- shouldReserveForwardActionSpace(event) {
165
- return this.showCurrent && !this.shouldShowButton(event);
166
- },
167
- formatTournamentDates(startDate, endDate) {
168
- const today = this.getStartOfDay(new Date());
169
-
170
- const formatDate = (date, includeYear) => {
171
- const d = new Date(date);
200
+ },
201
+ getRoleIcon(event) {
202
+ return roleIcons[event.Role] || 'fa-circle-question';
203
+ },
204
+ getIconStyle(event) {
205
+ return roleIconStyles[event.Role] || 'fa-solid';
206
+ },
207
+ shouldShowButton(event) {
208
+ return actionableStatuses.includes(this.getNormalizedStatus(event));
209
+ },
210
+ canForwardToEvent(event) {
211
+ return this.showCurrent && this.shouldShowButton(event);
212
+ },
213
+ shouldReserveForwardActionSpace(event) {
214
+ return this.showCurrent && !this.shouldShowButton(event);
215
+ },
216
+ formatTournamentDates(startDate, endDate) {
217
+ const today = this.getStartOfDay(new Date());
218
+
219
+ const formatDate = (date, includeYear) => {
220
+ const d = new Date(date);
172
221
  const day = d.getDate();
173
222
  const month = d.toLocaleString('default', { month: 'short' });
174
223
  const suffix = this.getDaySuffix(day);
175
224
  const year = includeYear ? ` ${d.getFullYear()}` : '';
176
- return `${month} ${day}${suffix}${year}`;
177
- };
178
-
179
- const includeYear = this.getEndOfDay(endDate) < today;
225
+ return `${month} ${day}${suffix}${year}`;
226
+ };
227
+
228
+ const includeYear = this.getEndOfDay(endDate) < today;
180
229
 
181
230
  if (startDate === endDate) {
182
231
  return formatDate(startDate, includeYear);
@@ -184,25 +233,25 @@ export default {
184
233
 
185
234
  return `${formatDate(startDate, includeYear)} to ${formatDate(endDate, includeYear)}`;
186
235
  },
187
- getDaySuffix(day) {
188
- if (day > 3 && day < 21) return 'th'; // General rule
189
- return daySuffixes[day % 10] || 'th';
190
- },
191
- getNormalizedStatus(event) {
192
- return String(event?.Status || '').toLowerCase();
193
- },
194
- getStatusIcon(event) {
195
- return statusIcons[this.getNormalizedStatus(event)] || 'fa-circle-question';
196
- },
197
- getIconClass(event) {
198
- return statusIconClasses[this.getNormalizedStatus(event)] || '';
199
- },
236
+ getDaySuffix(day) {
237
+ if (day > 3 && day < 21) return 'th'; // General rule
238
+ return daySuffixes[day % 10] || 'th';
239
+ },
240
+ getNormalizedStatus(event) {
241
+ return String(event?.Status || '').toLowerCase();
242
+ },
243
+ getStatusIcon(event) {
244
+ return statusIcons[this.getNormalizedStatus(event)] || 'fa-circle-question';
245
+ },
246
+ getIconClass(event) {
247
+ return statusIconClasses[this.getNormalizedStatus(event)] || '';
248
+ },
200
249
  forwardToEvent(event) {
201
250
  this.$emit('forwardToEvent', event);
202
251
  },
203
252
  refreshAssignments() {
204
253
  this.$emit('refreshAssignments');
205
- },
206
- },
254
+ }
255
+ }
207
256
  };
208
257
  </script>
@@ -1,96 +1,96 @@
1
- import ClubBasic from './ClubBasic.vue';
2
- import mockLocations from '../../../../mocks/locationMock.js';
3
-
4
- const validValidation = {
5
- Name: { invalid: false, message: '' },
6
- ShortName: { invalid: false, message: '' },
7
- Address: { invalid: false, message: '' },
8
- };
9
-
10
- const invalidValidation = {
11
- Name: { invalid: true, message: 'Required' },
12
- ShortName: { invalid: true, message: 'Required' },
13
- Address: { invalid: true, message: 'Required' },
14
- };
15
-
16
- export default {
17
- title: 'Templates/ClubManagement/ClubBasic',
18
- component: ClubBasic,
19
- tags: ['autodocs'],
20
- args: {
21
- club: {
22
- Name: "Columbus United Fencing Club",
23
- ShortName: "CUFC",
24
- TagLine: "A premier fencing club",
25
- Description: "The best place to train for historical fencing.",
26
- Address: {
27
- Name: "123 Fencing St, Columbus, OH"
28
- },
29
- Color1: "blue",
30
- Color2: "gold"
31
- },
32
- locations: mockLocations,
33
- validation: validValidation
34
- },
35
- argTypes: {
36
- club: { control: { type: 'object' } },
37
- locations: { control: { type: 'array' } },
38
- validation: { control: { type: 'object' } },
39
- 'add:newAddress': { action: 'add:newAddress' },
40
- 'update:club': { action: 'update:club' },
41
- }
42
- };
1
+ import ClubBasic from './ClubBasic.vue';
2
+ import mockLocations from '../../../../mocks/locationMock.js';
3
+
4
+ const validValidation = {
5
+ Name: { invalid: false, message: '' },
6
+ ShortName: { invalid: false, message: '' },
7
+ Address: { invalid: false, message: '' }
8
+ };
9
+
10
+ const invalidValidation = {
11
+ Name: { invalid: true, message: 'Required' },
12
+ ShortName: { invalid: true, message: 'Required' },
13
+ Address: { invalid: true, message: 'Required' }
14
+ };
15
+
16
+ export default {
17
+ title: 'Templates/ClubManagement/ClubBasic',
18
+ component: ClubBasic,
19
+ tags: ['autodocs'],
20
+ args: {
21
+ club: {
22
+ Name: 'Columbus United Fencing Club',
23
+ ShortName: 'CUFC',
24
+ TagLine: 'A premier fencing club',
25
+ Description: 'The best place to train for historical fencing.',
26
+ Address: {
27
+ Name: '123 Fencing St, Columbus, OH'
28
+ },
29
+ Color1: 'blue',
30
+ Color2: 'gold'
31
+ },
32
+ locations: mockLocations,
33
+ validation: validValidation
34
+ },
35
+ argTypes: {
36
+ club: { control: { type: 'object' } },
37
+ locations: { control: { type: 'array' } },
38
+ validation: { control: { type: 'object' } },
39
+ 'add:newAddress': { action: 'add:newAddress' },
40
+ 'update:club': { action: 'update:club' }
41
+ }
42
+ };
43
43
 
44
44
  export const Default = {
45
- args: {
46
- club: {
47
- Name: "Columbus United Fencing Club",
48
- ShortName: "CUFC",
49
- TagLine: "A premier fencing club",
50
- Description: "The best place to train for historical fencing.",
51
- Address: {
52
- Name: "123 Fencing St, Columbus, OH"
53
- },
54
- Color1: "blue",
55
- Color2: "gold"
56
- },
57
- locations: mockLocations,
58
- validation: validValidation
59
- }
60
- };
45
+ args: {
46
+ club: {
47
+ Name: 'Columbus United Fencing Club',
48
+ ShortName: 'CUFC',
49
+ TagLine: 'A premier fencing club',
50
+ Description: 'The best place to train for historical fencing.',
51
+ Address: {
52
+ Name: '123 Fencing St, Columbus, OH'
53
+ },
54
+ Color1: 'blue',
55
+ Color2: 'gold'
56
+ },
57
+ locations: mockLocations,
58
+ validation: validValidation
59
+ }
60
+ };
61
61
 
62
62
  export const EmptyClub = {
63
- args: {
64
- club: {
65
- Name: "",
66
- ShortName: "",
67
- TagLine: "",
68
- Description: "",
69
- Address: {
70
- Name: ""
71
- },
72
- Color1: "",
73
- Color2: ""
74
- },
75
- locations: mockLocations,
76
- validation: invalidValidation
77
- }
78
- };
63
+ args: {
64
+ club: {
65
+ Name: '',
66
+ ShortName: '',
67
+ TagLine: '',
68
+ Description: '',
69
+ Address: {
70
+ Name: ''
71
+ },
72
+ Color1: '',
73
+ Color2: ''
74
+ },
75
+ locations: mockLocations,
76
+ validation: invalidValidation
77
+ }
78
+ };
79
79
 
80
80
  export const CustomColors = {
81
- args: {
82
- club: {
83
- Name: "Steel City HEMA",
84
- ShortName: "SCH",
85
- TagLine: "Forging fencers one bout at a time",
86
- Description: "A club dedicated to steel weapon combat training.",
87
- Address: {
88
- Name: "456 Forge Ln, Pittsburgh, PA"
89
- },
90
- Color1: "red",
91
- Color2: "silver"
92
- },
93
- locations: mockLocations,
94
- validation: validValidation
95
- }
96
- };
81
+ args: {
82
+ club: {
83
+ Name: 'Steel City HEMA',
84
+ ShortName: 'SCH',
85
+ TagLine: 'Forging fencers one bout at a time',
86
+ Description: 'A club dedicated to steel weapon combat training.',
87
+ Address: {
88
+ Name: '456 Forge Ln, Pittsburgh, PA'
89
+ },
90
+ Color1: 'red',
91
+ Color2: 'silver'
92
+ },
93
+ locations: mockLocations,
94
+ validation: validValidation
95
+ }
96
+ };