@dcrackel/hematournamentui 1.0.706 → 1.0.707

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (330) hide show
  1. package/.prettierignore +7 -1
  2. package/.storybook/main.js +5 -12
  3. package/.storybook/preview-head.html +10 -3
  4. package/.storybook/preview.js +5 -13
  5. package/AGENTS.md +31 -1
  6. package/README.md +29 -22
  7. package/dist/HemaTournamentUI-lib.es.js +7189 -7467
  8. package/dist/HemaTournamentUI-lib.umd.js +27 -27
  9. package/dist/hematournamentui-tailwind.css +0 -24
  10. package/dist/hematournamentui.css +1 -1
  11. package/eslint.config.js +49 -23
  12. package/package.json +6 -2
  13. package/postcss.config.js +3 -3
  14. package/prettier.config.js +16 -10
  15. package/src/config/boutScreenConfigurations.js +52 -50
  16. package/src/main.js +1 -1
  17. package/src/mocks/EventQuestionsMock.js +43 -55
  18. package/src/mocks/assignments.js +180 -181
  19. package/src/mocks/clubGetAllMock.js +8143 -8143
  20. package/src/mocks/eventMock.js +205 -205
  21. package/src/mocks/eventPersonGetInitalPoolAssignmentsLivePools.js +541 -542
  22. package/src/mocks/eventPersonGetInitalPoolAssignmentsPreparing.js +522 -523
  23. package/src/mocks/eventPersonGetInitialPoolAssignments.js +386 -387
  24. package/src/mocks/eventPersonGetInitialPoolAssignments2.js +2267 -2268
  25. package/src/mocks/eventPersonGetInitialStaff.js +94 -95
  26. package/src/mocks/eventPersonGetPoolAssignmentEvent.js +161 -162
  27. package/src/mocks/eventRules.js +87 -86
  28. package/src/mocks/eventpersonGetEventById.js +1737 -1737
  29. package/src/mocks/getAllClubs.js +8143 -8143
  30. package/src/mocks/getAllStaffByTournamentId.js +74 -75
  31. package/src/mocks/getAllWeapons.js +81 -82
  32. package/src/mocks/getAttendance.js +43 -44
  33. package/src/mocks/getClub.js +43 -44
  34. package/src/mocks/getClubDisplayByClubId.js +104 -105
  35. package/src/mocks/getDEBouts-128Fencers.js +3247 -3248
  36. package/src/mocks/getDEBouts-42Fencers.js +3736 -3737
  37. package/src/mocks/getDEBouts-67Fencers.js +6684 -6690
  38. package/src/mocks/getDEBouts-DoubleElim.js +4198 -4199
  39. package/src/mocks/getDEWithBouts.js +628 -629
  40. package/src/mocks/getDeBouts-12fencers.js +1255 -1256
  41. package/src/mocks/getDeBouts-15fencers.js +925 -927
  42. package/src/mocks/getDeBouts-22fencers.js +1683 -1685
  43. package/src/mocks/getDeBouts-6fencers.js +818 -818
  44. package/src/mocks/getEventByTournamentId.js +47 -48
  45. package/src/mocks/getFinalEventResult.js +304 -305
  46. package/src/mocks/getPenaltiesByEvent.js +655 -656
  47. package/src/mocks/getPoolResults.js +1533 -1534
  48. package/src/mocks/getPoolsWithBouts.js +662 -663
  49. package/src/mocks/getPoolsWithBouts6PoolId139.js +885 -886
  50. package/src/mocks/getPoolsWithBoutsByPoolId.js +841 -841
  51. package/src/mocks/getPoolsWithBoutsClubColors.js +4 -4
  52. package/src/mocks/getPoolsWithBoutsComplete.js +919 -921
  53. package/src/mocks/locationMock.js +3213 -3214
  54. package/src/mocks/mockRoutes.js +3 -3
  55. package/src/mocks/personGetAllMock.js +2536 -2537
  56. package/src/mocks/personsMock.js +17569 -17570
  57. package/src/mocks/singleEventMock.js +249 -250
  58. package/src/mocks/tournamentMock.js +1988 -1927
  59. package/src/stories/Atoms/CheckBox/BaseCheckbox.stories.js +25 -23
  60. package/src/stories/Atoms/CheckBox/BaseCheckbox.vue +30 -24
  61. package/src/stories/Atoms/Icon/BaseIcon.stories.js +63 -64
  62. package/src/stories/Atoms/Icon/BaseIcon.test.js +67 -69
  63. package/src/stories/Atoms/Icon/BaseIcon.vue +2 -3
  64. package/src/stories/Atoms/Input/BaseInput.stories.js +18 -18
  65. package/src/stories/Atoms/Input/BaseInput.test.js +65 -67
  66. package/src/stories/Atoms/Input/BaseInput.vue +36 -31
  67. package/src/stories/Atoms/RadioGroup/BaseRadioGroup.stories.js +21 -21
  68. package/src/stories/Atoms/RadioGroup/BaseRadioGroup.test.js +31 -31
  69. package/src/stories/Atoms/RadioGroup/BaseRadioGroup.vue +23 -18
  70. package/src/stories/Atoms/Tag/BaseTag.stories.js +21 -21
  71. package/src/stories/Atoms/Tag/BaseTag.test.js +26 -30
  72. package/src/stories/Atoms/Tag/BaseTag.vue +18 -19
  73. package/src/stories/Atoms/Text/BaseText.stories.js +54 -62
  74. package/src/stories/Atoms/Text/BaseText.test.js +152 -154
  75. package/src/stories/Atoms/Text/BaseText.vue +103 -81
  76. package/src/stories/Configure.mdx +5 -3
  77. package/src/stories/Molecules/Boxes/BoutBoxes/HandshotCounterBox/HandshotCounterBox.stories.js +24 -24
  78. package/src/stories/Molecules/Boxes/BoutBoxes/HandshotCounterBox/HandshotCounterBox.vue +33 -15
  79. package/src/stories/Molecules/Boxes/BoutBoxes/PassesBox/PassesBox.stories.js +46 -48
  80. package/src/stories/Molecules/Boxes/BoutBoxes/PassesBox/PassesBox.vue +38 -25
  81. package/src/stories/Molecules/Boxes/BoutBoxes/PenaltyConfirmationBox/PenaltyConfirmationBox.stories.js +4 -4
  82. package/src/stories/Molecules/Boxes/BoutBoxes/PenaltyConfirmationBox/PenaltyConfirmationBox.vue +9 -4
  83. package/src/stories/Molecules/Boxes/BoutBoxes/ScoreBox/ScoreBox.stories.js +90 -90
  84. package/src/stories/Molecules/Boxes/BoutBoxes/ScoreBox/ScoreBox.vue +51 -32
  85. package/src/stories/Molecules/Boxes/BoutBoxes/TimerBox/TimerBox.stories.js +25 -25
  86. package/src/stories/Molecules/Boxes/BoutBoxes/TimerBox/TimerBox.vue +47 -12
  87. package/src/stories/Molecules/Boxes/CounterBox/CounterBox.stories.js +19 -19
  88. package/src/stories/Molecules/Boxes/CounterBox/CounterBox.vue +25 -19
  89. package/src/stories/Molecules/Boxes/EventStatusBox/EventStatusBox.stories.js +25 -28
  90. package/src/stories/Molecules/Boxes/EventStatusBox/EventStatusBox.vue +7 -7
  91. package/src/stories/Molecules/Breadcrumb/Admin/Breadcrumb.stories.js +28 -29
  92. package/src/stories/Molecules/Breadcrumb/Admin/Breadcrumb.test.js +58 -58
  93. package/src/stories/Molecules/Breadcrumb/Admin/Breadcrumb.vue +15 -15
  94. package/src/stories/Molecules/Buttons/BaseButton/BaseButton.stories.js +86 -86
  95. package/src/stories/Molecules/Buttons/BaseButton/BaseButton.test.js +101 -103
  96. package/src/stories/Molecules/Buttons/BaseButton/BaseButton.vue +87 -24
  97. package/src/stories/Molecules/Buttons/ButtonBar/ButtonBar.stories.js +31 -31
  98. package/src/stories/Molecules/Buttons/ButtonBar/ButtonBar.vue +19 -21
  99. package/src/stories/Molecules/CombinationInputs/TitledInput/TitledInput.stories.js +57 -57
  100. package/src/stories/Molecules/CombinationInputs/TitledInput/TitledInput.test.js +64 -64
  101. package/src/stories/Molecules/CombinationInputs/TitledInput/TitledInput.vue +17 -16
  102. package/src/stories/Molecules/Filters/FilterAndSortBar/FilterAndSortBar.stories.js +19 -19
  103. package/src/stories/Molecules/Filters/FilterAndSortBar/FilterAndSortBar.vue +18 -7
  104. package/src/stories/Molecules/Filters/FilterUpcomingPast/FilterUpcomingPast.stories.js +16 -18
  105. package/src/stories/Molecules/Filters/FilterUpcomingPast/FilterUpcomingPast.vue +31 -13
  106. package/src/stories/Molecules/Indicators/ServerConnected/ServerConnected.stories.js +27 -27
  107. package/src/stories/Molecules/Indicators/ServerConnected/ServerConnected.vue +6 -5
  108. package/src/stories/Molecules/Inputs/MultiSelect/MultiSelect.stories.js +35 -35
  109. package/src/stories/Molecules/Inputs/MultiSelect/MultiSelect.vue +13 -8
  110. package/src/stories/Molecules/Inputs/Toggle/Toggle.stories.js +27 -27
  111. package/src/stories/Molecules/Inputs/Toggle/Toggle.vue +8 -5
  112. package/src/stories/Molecules/Menus/TabBar/TabBar.stories.js +18 -18
  113. package/src/stories/Molecules/Menus/TabBar/TabBar.vue +1 -2
  114. package/src/stories/Molecules/Modals/AddDisplayModal/AddDisplay.stories.js +36 -27
  115. package/src/stories/Molecules/Modals/AddDisplayModal/AddDisplayModal.vue +25 -15
  116. package/src/stories/Molecules/Modals/BaseModal/BaseModal.stories.js +66 -65
  117. package/src/stories/Molecules/Modals/BaseModal/BaseModal.vue +47 -9
  118. package/src/stories/Molecules/Modals/ConfirmModal/ConfirmModal.stories.js +23 -23
  119. package/src/stories/Molecules/Modals/ConfirmModal/ConfirmModal.vue +59 -11
  120. package/src/stories/Molecules/Modals/DirectorModal/DirectorModal.stories.js +37 -37
  121. package/src/stories/Molecules/Modals/DirectorModal/DirectorModal.vue +27 -22
  122. package/src/stories/Molecules/Modals/EditBoutModal/EditBoutModal.stories.js +41 -41
  123. package/src/stories/Molecules/Modals/EditBoutModal/EditBoutModal.vue +27 -15
  124. package/src/stories/Molecules/Modals/EventWizardModal/EventWizardModal.stories.js +29 -30
  125. package/src/stories/Molecules/Modals/EventWizardModal/EventWizardModal.vue +18 -16
  126. package/src/stories/Molecules/Modals/LoadingModal/LoadingModal.stories.js +21 -21
  127. package/src/stories/Molecules/Modals/LoadingModal/LoadingModal.vue +7 -7
  128. package/src/stories/Molecules/Modals/PenaltyModal/PenaltyModal.stories.js +24 -24
  129. package/src/stories/Molecules/Modals/PenaltyModal/PenaltyModal.vue +30 -25
  130. package/src/stories/Molecules/Reorder/ReorderableShell.stories.js +81 -77
  131. package/src/stories/Molecules/Reorder/ReorderableShell.vue +46 -43
  132. package/src/stories/Molecules/StepIndicator/BaseStepIndicator/StepIndicator.stories.js +40 -40
  133. package/src/stories/Molecules/StepIndicator/BaseStepIndicator/StepIndicator.vue +23 -25
  134. package/src/stories/Organisms/Cards/BoutCard/BoutCard.stories.js +34 -29
  135. package/src/stories/Organisms/Cards/BoutCard/BoutCard.vue +69 -66
  136. package/src/stories/Organisms/Cards/BoutCard/Variants/BoutCardActive/BoutCardActive.stories.js +24 -22
  137. package/src/stories/Organisms/Cards/BoutCard/Variants/BoutCardActive/BoutCardActive.vue +53 -41
  138. package/src/stories/Organisms/Cards/BoutCard/Variants/BoutCardInactive/BoutCardInactive.stories.js +24 -37
  139. package/src/stories/Organisms/Cards/BoutCard/Variants/BoutCardInactive/BoutCardInactive.vue +88 -103
  140. package/src/stories/Organisms/Cards/BoutCard/Variants/BoutCardReorder/BoutCardReorder.vue +13 -14
  141. package/src/stories/Organisms/Cards/BoutCard/Variants/BoutCardWaiting/BoutCardWaiting.stories.js +5 -5
  142. package/src/stories/Organisms/Cards/BoutCard/Variants/BoutCardWaiting/BoutCardWaiting.vue +22 -21
  143. package/src/stories/Organisms/Cards/ClubCard/ClubCard.stories.js +14 -17
  144. package/src/stories/Organisms/Cards/ClubCard/ClubCard.vue +25 -18
  145. package/src/stories/Organisms/Cards/Director/DirectorCard.stories.js +23 -23
  146. package/src/stories/Organisms/Cards/Director/DirectorCard.vue +159 -103
  147. package/src/stories/Organisms/Cards/EditBout/EditBout.stories.js +47 -47
  148. package/src/stories/Organisms/Cards/EditBout/EditBout.test.js +51 -0
  149. package/src/stories/Organisms/Cards/EditBout/EditBout.vue +82 -54
  150. package/src/stories/Organisms/Cards/EventCard/EventCard.stories.js +9 -10
  151. package/src/stories/Organisms/Cards/EventCard/EventCard.vue +83 -63
  152. package/src/stories/Organisms/Cards/FencerCard/FencerCard.stories.js +105 -105
  153. package/src/stories/Organisms/Cards/FencerCard/FencerCard.vue +142 -58
  154. package/src/stories/Organisms/Cards/FencerFinalResultCard/FencerFinalResultCard.stories.js +14 -14
  155. package/src/stories/Organisms/Cards/FencerFinalResultCard/FencerFinalResultCard.vue +37 -26
  156. package/src/stories/Organisms/Cards/FencerPoolResultsCard/FencerPoolResults.stories.js +24 -24
  157. package/src/stories/Organisms/Cards/FencerPoolResultsCard/FencerPoolResultsCard.vue +95 -28
  158. package/src/stories/Organisms/Cards/ImportFencerCard/ImportFencerCard.stories.js +59 -60
  159. package/src/stories/Organisms/Cards/ImportFencerCard/ImportFencerCard.vue +13 -7
  160. package/src/stories/Organisms/Cards/KioskCard/KioskCard.stories.js +34 -34
  161. package/src/stories/Organisms/Cards/KioskCard/KioskCard.vue +149 -104
  162. package/src/stories/Organisms/Cards/PenaltyCard/PenaltyCard.stories.js +19 -20
  163. package/src/stories/Organisms/Cards/PenaltyCard/PenaltyCard.vue +207 -163
  164. package/src/stories/Organisms/Cards/PenaltyFencerCard/PenaltyFencerCard.stories.js +17 -17
  165. package/src/stories/Organisms/Cards/PenaltyFencerCard/PenaltyFencerCard.vue +88 -46
  166. package/src/stories/Organisms/Cards/PoolBoutMatchCard/PoolBoutMatchCard.stories.js +182 -182
  167. package/src/stories/Organisms/Cards/PoolBoutMatchCard/PoolBoutMatchCard.vue +21 -12
  168. package/src/stories/Organisms/Cards/PoolFencerCard/PoolFencerCard.stories.js +25 -28
  169. package/src/stories/Organisms/Cards/PoolFencerCard/PoolFencerCard.vue +28 -22
  170. package/src/stories/Organisms/Cards/StaffCard/StaffCard.stories.js +62 -62
  171. package/src/stories/Organisms/Cards/StaffCard/StaffCard.vue +27 -22
  172. package/src/stories/Organisms/Cards/TableauBoutCard/SpacingConfig.js +103 -103
  173. package/src/stories/Organisms/Cards/TableauBoutCard/TableauBoutCard.stories.js +73 -73
  174. package/src/stories/Organisms/Cards/TableauBoutCard/TableauBoutCard.test.js +44 -0
  175. package/src/stories/Organisms/Cards/TableauBoutCard/TableauBoutCard.vue +69 -56
  176. package/src/stories/Organisms/Cards/TableauFencerCard/TableauFencerCard.stories.js +80 -81
  177. package/src/stories/Organisms/Cards/TableauFencerCard/TableauFencerCard.vue +39 -22
  178. package/src/stories/Organisms/Cards/TournamentAdminCard/TournamentAdmin.stories.js +20 -20
  179. package/src/stories/Organisms/Cards/TournamentAdminCard/TournamentAdminCard.vue +62 -33
  180. package/src/stories/Organisms/Cards/WaitlistFencerCard/WaitlistFencerCard.vue +44 -30
  181. package/src/stories/Organisms/ComplexInputs/AddressAutocomplete/AddressAutocomplete.stories.js +6 -7
  182. package/src/stories/Organisms/ComplexInputs/AddressAutocomplete/AddressAutocomplete.vue +7 -8
  183. package/src/stories/Organisms/ComplexInputs/ClubColorPicker/ClubColorPicker.stories.js +31 -31
  184. package/src/stories/Organisms/ComplexInputs/ClubColorPicker/ClubColorPicker.vue +30 -35
  185. package/src/stories/Organisms/ComplexInputs/DatePicker/DatePicker.stories.js +13 -16
  186. package/src/stories/Organisms/ComplexInputs/DatePicker/DatePicker.vue +68 -70
  187. package/src/stories/Organisms/ComplexInputs/DropDown/DropDownMenu.stories.js +32 -34
  188. package/src/stories/Organisms/ComplexInputs/DropDown/DropDownMenu.vue +48 -25
  189. package/src/stories/Organisms/ComplexInputs/FindLocation/FindLocation.stories.js +21 -21
  190. package/src/stories/Organisms/ComplexInputs/FindLocation/FindLocation.vue +65 -38
  191. package/src/stories/Organisms/ComplexInputs/FindOrAddPerson/FindOrAddPerson.stories.js +19 -20
  192. package/src/stories/Organisms/ComplexInputs/FindOrAddPerson/FindOrAddPerson.vue +46 -21
  193. package/src/stories/Organisms/ComplexInputs/FindPerson/FindPerson.stories.js +22 -22
  194. package/src/stories/Organisms/ComplexInputs/FindPerson/FindPerson.vue +68 -23
  195. package/src/stories/Organisms/ComplexInputs/ImageCropper/ImageCropper.stories.js +13 -13
  196. package/src/stories/Organisms/ComplexInputs/ImageCropper/ImageCropper.vue +25 -24
  197. package/src/stories/Organisms/ComplexInputs/TextBoxEditor/TextBoxEditor.stories.js +6 -10
  198. package/src/stories/Organisms/ComplexInputs/TextBoxEditor/TextBoxEditor.vue +112 -48
  199. package/src/stories/Organisms/Containers/BoutsSection/BoutsSection.stories.js +43 -44
  200. package/src/stories/Organisms/Containers/BoutsSection/BoutsSection.vue +30 -23
  201. package/src/stories/Organisms/Containers/FinalResults/FinalResultsTable.stories.js +20 -20
  202. package/src/stories/Organisms/Containers/FinalResults/FinalResultsTable.vue +12 -12
  203. package/src/stories/Organisms/Containers/KioskContainer/KioskContainer.stories.js +24 -25
  204. package/src/stories/Organisms/Containers/KioskContainer/KioskContainer.vue +112 -87
  205. package/src/stories/Organisms/Containers/Pool/Pool.stories.js +54 -54
  206. package/src/stories/Organisms/Containers/Pool/Pool.vue +64 -41
  207. package/src/stories/Organisms/Containers/PoolGrid/PoolGrid.stories.js +17 -19
  208. package/src/stories/Organisms/Containers/PoolGrid/PoolGrid.vue +189 -135
  209. package/src/stories/Organisms/Containers/PoolResults/PoolResultsTable.stories.js +53 -54
  210. package/src/stories/Organisms/Containers/PoolResults/PoolResultsTable.vue +107 -73
  211. package/src/stories/Organisms/Containers/Tableau/Tableau.stories.js +23 -24
  212. package/src/stories/Organisms/Containers/Tableau/Tableau.test.js +49 -10
  213. package/src/stories/Organisms/Containers/Tableau/Tableau.vue +96 -173
  214. package/src/stories/Organisms/Containers/TableauColumn/TabeauColumn.stories.js +26 -27
  215. package/src/stories/Organisms/Containers/TableauColumn/TableauColumn.vue +20 -17
  216. package/src/stories/Organisms/Containers/TableauLines/SpacingConfig.js +153 -103
  217. package/src/stories/Organisms/Containers/TableauLines/TableauLines.stories.js +13 -15
  218. package/src/stories/Organisms/Containers/TableauLines/TableauLines.vue +7 -8
  219. package/src/stories/Organisms/Form/AddDisplay/AddDisplay.stories.js +26 -26
  220. package/src/stories/Organisms/Form/AddDisplay/AddDisplay.vue +130 -118
  221. package/src/stories/Organisms/Form/AddNewPerson/AddNewPerson.stories.js +14 -15
  222. package/src/stories/Organisms/Form/AddNewPerson/AddNewPerson.vue +94 -88
  223. package/src/stories/Organisms/Grids/GridContainer.stories.js +101 -101
  224. package/src/stories/Organisms/Grids/GridContainer.vue +160 -136
  225. package/src/stories/Organisms/Headers/AttendanceSummary/AttendanceSummary.stories.js +47 -47
  226. package/src/stories/Organisms/Headers/AttendanceSummary/AttendanceSummary.vue +65 -54
  227. package/src/stories/Organisms/Headers/EventFinalResultsHeader/EventFinalResultsHeader.stories.js +27 -27
  228. package/src/stories/Organisms/Headers/EventFinalResultsHeader/EventFinalResultsHeader.vue +38 -22
  229. package/src/stories/Organisms/Headers/PenaltySummary/PenaltySummary.stories.js +80 -80
  230. package/src/stories/Organisms/Headers/PenaltySummary/PenaltySummary.vue +14 -6
  231. package/src/stories/Organisms/Headers/PoolResultsHeader/PoolResultsHeader.stories.js +34 -34
  232. package/src/stories/Organisms/Headers/PoolResultsHeader/PoolResultsHeader.vue +36 -36
  233. package/src/stories/Organisms/Headers/PoolSummary/PoolSummary.stories.js +21 -21
  234. package/src/stories/Organisms/Headers/PoolSummary/PoolSummary.vue +56 -29
  235. package/src/stories/Organisms/Headers/ToggleHeader/ToggleHeader.stories.js +38 -38
  236. package/src/stories/Organisms/Headers/ToggleHeader/ToggleHeader.vue +19 -20
  237. package/src/stories/Organisms/RankCalculator/ByLetter/RankCalculator.stories.js +12 -13
  238. package/src/stories/Organisms/RankCalculator/ByLetter/RankCalculator.vue +47 -41
  239. package/src/stories/Organisms/RankCalculator/ByPoints/RankCalculatorByPoints.stories.js +12 -13
  240. package/src/stories/Organisms/RankCalculator/ByPoints/RankCalculatorByPoints.vue +66 -37
  241. package/src/stories/Organisms/Skeletons/ClubManagement/ClubManagement.stories.js +6 -10
  242. package/src/stories/Organisms/Skeletons/ClubManagement/ClubMangementSkeleton.vue +2 -2
  243. package/src/stories/Organisms/Skeletons/EventCard/EventCardSkeleton.stories.js +6 -10
  244. package/src/stories/Organisms/Skeletons/EventCard/EventCardSkeleton.vue +2 -3
  245. package/src/stories/Organisms/Skeletons/FencerCard/FencerCardSkeleton.stories.js +6 -10
  246. package/src/stories/Organisms/Skeletons/FencerCard/FencerCardSkeleton.vue +1 -1
  247. package/src/stories/Organisms/Skeletons/PersonManagement/PersonManagementSkeleton.stories.js +6 -9
  248. package/src/stories/Organisms/Skeletons/PersonManagement/PersonManagementSkeleton.vue +2 -2
  249. package/src/stories/Organisms/Skeletons/PoolSkeleton/PoolSkeleton.stories.js +6 -10
  250. package/src/stories/Organisms/Skeletons/PoolSkeleton/PoolSkeleton.vue +10 -4
  251. package/src/stories/Organisms/Skeletons/TournamentCard/TournamentCardSkeleton.stories.js +6 -10
  252. package/src/stories/Organisms/Skeletons/TournamentCard/TournamentCardSkeleton.vue +2 -2
  253. package/src/stories/Organisms/Wizards/EditEventWizard/BasicEventInfo/BasicEventInfo.stories.js +34 -34
  254. package/src/stories/Organisms/Wizards/EditEventWizard/BasicEventInfo/BasicEventInfo.vue +106 -56
  255. package/src/stories/Organisms/Wizards/EditEventWizard/DirectElimination/DirectElimination.stories.js +95 -95
  256. package/src/stories/Organisms/Wizards/EditEventWizard/DirectElimination/DirectElimination.vue +129 -69
  257. package/src/stories/Organisms/Wizards/EditEventWizard/DirectEliminationPromotion/DirectEliminationPromotion.stories.js +87 -88
  258. package/src/stories/Organisms/Wizards/EditEventWizard/DirectEliminationPromotion/DirectEliminationPromotion.vue +105 -60
  259. package/src/stories/Organisms/Wizards/EditEventWizard/EditEventWizard.stories.js +82 -82
  260. package/src/stories/Organisms/Wizards/EditEventWizard/EditEventWizard.vue +150 -177
  261. package/src/stories/Organisms/Wizards/EditEventWizard/EventCustomization/EventCustomization.stories.js +28 -28
  262. package/src/stories/Organisms/Wizards/EditEventWizard/EventCustomization/EventCustomization.vue +96 -36
  263. package/src/stories/Organisms/Wizards/EditEventWizard/PoolConfiguration/PoolConfiguration.stories.js +99 -99
  264. package/src/stories/Organisms/Wizards/EditEventWizard/PoolConfiguration/PoolConfiguration.vue +115 -67
  265. package/src/stories/Templates/Assignment/Assignment.stories.js +22 -23
  266. package/src/stories/Templates/Assignment/Assignment.vue +210 -161
  267. package/src/stories/Templates/ClubManagement/ClubBasic/ClubBasic.stories.js +90 -90
  268. package/src/stories/Templates/ClubManagement/ClubBasic/ClubBasic.vue +68 -55
  269. package/src/stories/Templates/ClubManagement/ClubManagement.stories.js +87 -87
  270. package/src/stories/Templates/ClubManagement/ClubManagement.vue +167 -147
  271. package/src/stories/Templates/EventManagement/Bracket/Bracket.stories.js +82 -103
  272. package/src/stories/Templates/EventManagement/Bracket/Bracket.test.js +88 -43
  273. package/src/stories/Templates/EventManagement/Bracket/Bracket.vue +167 -200
  274. package/src/stories/Templates/EventManagement/EditEventInfo/EditEventInfo.stories.js +49 -50
  275. package/src/stories/Templates/EventManagement/EditEventInfo/EditEventInfo.vue +21 -21
  276. package/src/stories/Templates/EventManagement/EventAttendance/EventAttendance.stories.js +105 -103
  277. package/src/stories/Templates/EventManagement/EventAttendance/EventAttendance.vue +289 -226
  278. package/src/stories/Templates/EventManagement/EventFinalResults/EventFinalResults.stories.js +30 -30
  279. package/src/stories/Templates/EventManagement/EventFinalResults/EventFinalResults.vue +27 -22
  280. package/src/stories/Templates/EventManagement/KioskDisplay/KioskDisplay.stories.js +44 -45
  281. package/src/stories/Templates/EventManagement/KioskDisplay/KioskDisplay.vue +52 -43
  282. package/src/stories/Templates/EventManagement/Penalties/PenaltyReport.stories.js +28 -29
  283. package/src/stories/Templates/EventManagement/Penalties/PenaltyReport.vue +54 -39
  284. package/src/stories/Templates/EventManagement/PoolLive/PoolLive.stories.js +80 -111
  285. package/src/stories/Templates/EventManagement/PoolLive/PoolLive.test.js +121 -0
  286. package/src/stories/Templates/EventManagement/PoolLive/PoolLive.vue +290 -255
  287. package/src/stories/Templates/EventManagement/PoolManagement/PoolManagement.stories.js +109 -107
  288. package/src/stories/Templates/EventManagement/PoolManagement/PoolManagement.vue +144 -87
  289. package/src/stories/Templates/EventManagement/PoolResults/PoolResults.stories.js +56 -57
  290. package/src/stories/Templates/EventManagement/PoolResults/PoolResults.vue +132 -123
  291. package/src/stories/Templates/EventManagement/StaffList/StaffList.stories.js +56 -57
  292. package/src/stories/Templates/EventManagement/StaffList/StaffList.vue +84 -47
  293. package/src/stories/Templates/Menus/Admin/AdminLeftMenu.stories.js +29 -29
  294. package/src/stories/Templates/Menus/Admin/AdminLeftMenu.vue +71 -67
  295. package/src/stories/Templates/Menus/EditEventsTopMenu/EditEventsTopMenu.stories.js +39 -40
  296. package/src/stories/Templates/Menus/EditEventsTopMenu/EditEventsTopMenu.vue +79 -71
  297. package/src/stories/Templates/PersonManagement/Admin/Administration/Administration.stories.js +47 -47
  298. package/src/stories/Templates/PersonManagement/Admin/Administration/Administration.vue +39 -42
  299. package/src/stories/Templates/PersonManagement/Admin/FencerAdmin/FencerAdmin.stories.js +54 -54
  300. package/src/stories/Templates/PersonManagement/Admin/FencerAdmin/FencerAdmin.vue +27 -31
  301. package/src/stories/Templates/PersonManagement/Admin/MergeAccounts/MergeAccounts.stories.js +69 -69
  302. package/src/stories/Templates/PersonManagement/Admin/MergeAccounts/MergeAccounts.vue +78 -89
  303. package/src/stories/Templates/PersonManagement/Attendance/Attendance.stories.js +22 -22
  304. package/src/stories/Templates/PersonManagement/Attendance/Attendance.vue +61 -33
  305. package/src/stories/Templates/PersonManagement/Basic/BasicEdit.stories.js +29 -29
  306. package/src/stories/Templates/PersonManagement/Basic/BasicEdit.vue +80 -53
  307. package/src/stories/Templates/PersonManagement/PersonManagement.stories.js +84 -86
  308. package/src/stories/Templates/PersonManagement/PersonManagement.vue +107 -82
  309. package/src/stories/Templates/TournamentManagement/ListEvents/ListEvents.stories.js +31 -31
  310. package/src/stories/Templates/TournamentManagement/ListEvents/ListEvents.vue +70 -51
  311. package/src/stories/Templates/TournamentManagement/TournamentManagement.stories.js +79 -79
  312. package/src/stories/Templates/TournamentManagement/TournamentManagement.vue +275 -230
  313. package/src/stories/Templates/TournamentManagement/TournamentPageOne/TournamentPageOne.stories.js +113 -113
  314. package/src/stories/Templates/TournamentManagement/TournamentPageOne/TournamentPageOne.vue +175 -146
  315. package/src/stories/Templates/TournamentManagement/TournamentPageTwo/TournamentPageTwo.stories.js +77 -77
  316. package/src/stories/Templates/TournamentManagement/TournamentPageTwo/TournamentPageTwo.vue +208 -185
  317. package/src/stories/Util/Validations/AddNewPersonModalValidation.js +23 -19
  318. package/src/stories/Util/Validations/ClubManagementValidations.js +17 -21
  319. package/src/stories/Util/Validations/PersonManagementValidations.js +26 -22
  320. package/src/stories/Util/Validations/TournamentFieldsValidations.js +20 -18
  321. package/src/stories/Util/seeding.js +131 -131
  322. package/src/stories/Util/tabs.js +75 -75
  323. package/tailwind/tailwind.css +5 -7
  324. package/tailwind.config.js +12 -15
  325. package/vite.config.js +3 -3
  326. package/src/mocks/getDirectors.js +0 -18
  327. package/src/stories/Molecules/Modals/AssignDirectorModal/AssignDirectorModal.stories.js +0 -45
  328. package/src/stories/Molecules/Modals/AssignDirectorModal/AssignDirectorModal.vue +0 -111
  329. package/src/stories/Organisms/Cards/DirectorAssignmentCard/DirectorAssignmentCard.stories.js +0 -45
  330. package/src/stories/Organisms/Cards/DirectorAssignmentCard/DirectorAssignmentCard.vue +0 -83
@@ -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
+ };