@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,156 +1,218 @@
1
1
  <template>
2
2
  <section>
3
- <EditEventsTopMenu :currentTab="'Checkin'" :tabs="tabs(role, isMobile)" @tabMenuClick="handleTabMenuClick"/>
4
- <AttendanceSummary
5
- :event="event"
6
- :absent="absent"
7
- :present="present"
8
- :activeCount="activeRosterCount"
9
- :waitlistCount="waitlistCount"
10
- :capacity="eventCapacity"/>
3
+ <EditEventsTopMenu :currentTab="'Checkin'" :tabs="tabs(role, isMobile)" @tabMenuClick="handleTabMenuClick" />
4
+ <AttendanceSummary
5
+ :event="event"
6
+ :absent="absent"
7
+ :present="present"
8
+ :activeCount="activeRosterCount"
9
+ :waitlistCount="waitlistCount"
10
+ :capacity="eventCapacity"
11
+ />
11
12
  <div class="w-full flex flex-row justify-center mt-1 md:mt-3">
12
13
  <section class="w-full">
13
14
  <div class="w-full flex flex-col justify-center items-center" style="text-align: center">
14
15
  <section class="grid grid-cols-2 w-full mb-3 py-2">
15
16
  <div class="col-start-1 col-end-2 flex justify-start">
16
17
  <FindOrAddPerson
17
- :persons="personsAll"
18
- :fencingClubs="fencingClubs"
19
- :addBorder="false"
20
- :addNewText="'Add New'"
21
- @new-person-submitted="handleNewPerson"
22
- @person-selected="handleAddExistingPerson" />
18
+ :persons="personsAll"
19
+ :fencingClubs="fencingClubs"
20
+ :addBorder="false"
21
+ :addNewText="'Add New'"
22
+ @new-person-submitted="handleNewPerson"
23
+ @person-selected="handleAddExistingPerson"
24
+ />
23
25
  </div>
24
26
  <div class="col-start-2 col-end-3 flex justify-end">
25
27
  <DropDownMenu
26
- :label="label"
27
- :items="items"
28
- :selectedItem="localSelectedItem"
29
- @update:selectedItem="handleSelectedItem"/>
28
+ :label="label"
29
+ :items="items"
30
+ :selectedItem="localSelectedItem"
31
+ @update:selectedItem="handleSelectedItem"
32
+ />
30
33
  </div>
31
34
  </section>
32
35
 
33
- <section v-if="loading" class="w-full">
34
- <div v-for="index in 6" :key="index">
35
- <FencerCardSkeleton class="mb-4"/>
36
- </div>
37
- </section>
38
- <section v-if="!loading" class="w-full">
39
- <div v-if="activeRosterCount > 0" class="mb-2 flex items-center justify-between">
40
- <BaseText text="Active Roster" size="md" color="quaternary" weight="bold"/>
41
- <BaseText :text="activeRosterSummary" size="sm" color="quinary"/>
42
- </div>
43
- <div v-for="(person, index) in sortedActivePersons" :key="person.PersonId || person.Person?.PersonId || index">
44
- <FencerCard :person="person" class="mb-4"
45
- :isLast="index === sortedActivePersons.length - 1"
46
- :isEdit="event.Status === 'planning' || event.Status === 'preparation'"
47
- @forward:toProfile="handleForwardToProfile"
48
- @update:status="handleStatus"
49
- @remove:fencer="handleRemoveFencer"
50
- @update:moveUp="handleMoveUp"
51
- @update:moveDown="handleMoveDown"
52
- @request:weaver-sign="openWeaverModal"
53
- />
54
- </div>
55
- <section v-if="waitlistCount > 0" class="mt-6 w-full">
56
- <div class="mb-2 flex items-center justify-between">
57
- <BaseText text="Waitlist" size="md" color="quaternary" weight="bold"/>
58
- <BaseText :text="waitlistSummary" size="sm" color="quinary"/>
59
- </div>
60
- <div v-for="(person, index) in sortedWaitlistedPersons" :key="person.PersonId || person.Person?.PersonId || index" class="mb-3">
61
- <WaitlistFencerCard
62
- :person="person"
63
- :queuePosition="index + 1"
64
- @forward:toProfile="handleForwardToProfile"
65
- @move:active="handleMoveWaitlistToActive"
66
- @remove:fencer="handleRemoveWaitlistFencer"/>
67
- </div>
68
- </section>
69
- </section>
70
- <div v-if="!loading && personsInTournament.length === 0" class="mb-10">
36
+ <section v-if="loading" class="w-full">
37
+ <div v-for="index in 6" :key="index">
38
+ <FencerCardSkeleton class="mb-4" />
39
+ </div>
40
+ </section>
41
+ <section v-if="!loading" class="w-full">
42
+ <div v-if="activeRosterCount > 0" class="mb-2 flex items-center justify-between">
43
+ <BaseText text="Active Roster" size="md" color="quaternary" weight="bold" />
44
+ <BaseText :text="activeRosterSummary" size="sm" color="quinary" />
45
+ </div>
46
+ <div
47
+ v-for="(person, index) in sortedActivePersons"
48
+ :key="person.PersonId || person.Person?.PersonId || index"
49
+ >
50
+ <FencerCard
51
+ :person="person"
52
+ class="mb-4"
53
+ :isLast="index === sortedActivePersons.length - 1"
54
+ :isEdit="event.Status === 'planning' || event.Status === 'preparation'"
55
+ @forward:toProfile="handleForwardToProfile"
56
+ @update:status="handleStatus"
57
+ @remove:fencer="handleRemoveFencer"
58
+ @update:moveUp="handleMoveUp"
59
+ @update:moveDown="handleMoveDown"
60
+ @request:weaver-sign="openWeaverModal"
61
+ />
62
+ </div>
63
+ <section v-if="waitlistCount > 0" class="mt-6 w-full">
64
+ <div class="mb-2 flex items-center justify-between">
65
+ <BaseText text="Waitlist" size="md" color="quaternary" weight="bold" />
66
+ <BaseText :text="waitlistSummary" size="sm" color="quinary" />
67
+ </div>
68
+ <div
69
+ v-for="(person, index) in sortedWaitlistedPersons"
70
+ :key="person.PersonId || person.Person?.PersonId || index"
71
+ class="mb-3"
72
+ >
73
+ <WaitlistFencerCard
74
+ :person="person"
75
+ :queuePosition="index + 1"
76
+ @forward:toProfile="handleForwardToProfile"
77
+ @move:active="handleMoveWaitlistToActive"
78
+ @remove:fencer="handleRemoveWaitlistFencer"
79
+ />
80
+ </div>
81
+ </section>
82
+ </section>
83
+ <div v-if="!loading && personsInTournament.length === 0" class="mb-10">
71
84
  <div class="flex items-center border border-dropdownSelect rounded-lg shadow-lg bg-poolBox">
72
- <BaseText text="Remember to assign staff to your event!" size="lg" color="quaternary" weight="bold" class="w-full text-center py-2 px-8"/>
85
+ <BaseText
86
+ text="Remember to assign staff to your event!"
87
+ size="lg"
88
+ color="quaternary"
89
+ weight="bold"
90
+ class="w-full text-center py-2 px-8"
91
+ />
73
92
  </div>
74
- <img alt="Small desert scene with wind blowing." class="w-60 mt-8 mx-auto" :src="emptyDesertIcon"/>
75
- <BaseText :color="'primaryHighlight'" :size="'lg'" :text="'0 fencers have been added!'"
76
- :weight="'normal'" data-testid="text-num-events"/>
77
- <BaseText :color="'primaryHighlight'" :size="'md'" :text="'Click Add New button to get started.'"
78
- :weight="'normal'" data-testid="text-num-events"/>
93
+ <img alt="Small desert scene with wind blowing." class="w-60 mt-8 mx-auto" :src="emptyDesertIcon" />
94
+ <BaseText
95
+ :color="'primaryHighlight'"
96
+ :size="'lg'"
97
+ :text="'0 fencers have been added!'"
98
+ :weight="'normal'"
99
+ data-testid="text-num-events"
100
+ />
101
+ <BaseText
102
+ :color="'primaryHighlight'"
103
+ :size="'md'"
104
+ :text="'Click Add New button to get started.'"
105
+ :weight="'normal'"
106
+ data-testid="text-num-events"
107
+ />
79
108
  </div>
80
109
  </div>
81
110
  </section>
82
111
  </div>
83
112
  <BaseModal
84
- :show="showWeaverModal"
85
- @update:show="(v) => { if (!v) closeWeaverModal(); }"
86
- headerText="Confirm Waiver Signature"
87
- :bodyText="weaverModalBody"
88
- buttonText="Waiver Signed!"
89
- iconColor="dropdownSelect"
90
- iconBackgroundColor="toggleBackground"
91
- iconClass="ml-3"
92
- iconName="fa-file-signature"
93
- @submitModal="confirmWeaverSigned"
113
+ :show="showWeaverModal"
114
+ @update:show="
115
+ v => {
116
+ if (!v) closeWeaverModal();
117
+ }
118
+ "
119
+ headerText="Confirm Waiver Signature"
120
+ :bodyText="weaverModalBody"
121
+ buttonText="Waiver Signed!"
122
+ iconColor="dropdownSelect"
123
+ iconBackgroundColor="toggleBackground"
124
+ iconClass="ml-3"
125
+ iconName="fa-file-signature"
126
+ @submitModal="confirmWeaverSigned"
94
127
  />
95
128
  </section>
96
129
  </template>
97
130
 
98
131
  <script>
99
- import BaseText from "../../../Atoms/Text/BaseText.vue";
100
- import emptyDesertIcon from '../../../../assets/empty_desert_icon.png';
101
- import FencerCard from "../../../Organisms/Cards/FencerCard/FencerCard.vue";
102
- import WaitlistFencerCard from "../../../Organisms/Cards/WaitlistFencerCard/WaitlistFencerCard.vue";
103
- import EditEventsTopMenu from "../../Menus/EditEventsTopMenu/EditEventsTopMenu.vue";
104
- import DropDownMenu from "../../../Organisms/ComplexInputs/DropDown/DropDownMenu.vue";
105
- import FindOrAddPerson from "../../../Organisms/ComplexInputs/FindOrAddPerson/FindOrAddPerson.vue";
106
- import AttendanceSummary from "../../../Organisms/Headers/AttendanceSummary/AttendanceSummary.vue";
107
- import FencerCardSkeleton from "../../../Organisms/Skeletons/FencerCard/FencerCardSkeleton.vue";
108
- import BaseModal from "../../../Molecules/Modals/BaseModal/BaseModal.vue";
109
- import { tabs } from '../../../Util/tabs.js';
110
-
111
- const personSorters = {
112
- Seed: (a, b) => (a.Seed || 0) - (b.Seed || 0),
113
- FullName: (a, b) => a.Person.DisplayName.localeCompare(b.Person.DisplayName),
114
- HEMARating: (a, b) => {
115
- const ratingA = a.Person.HEMARatings?.[0]?.Rating || 0;
116
- const ratingB = b.Person.HEMARatings?.[0]?.Rating || 0;
117
- return ratingB - ratingA;
118
- },
119
- M2Rating: (a, b) => {
120
- const m2RatingA = a.Person.M2Ratings?.[0]?.Rating || 'U00';
121
- const m2RatingB = b.Person.M2Ratings?.[0]?.Rating || 'U00';
122
- return m2RatingA.localeCompare(m2RatingB);
123
- }
124
- };
125
-
126
- const waitlistStatuses = new Set(['waitlist', 'waitlisted', 'waitinglist']);
127
-
128
- const normalizeStatus = (status) => String(status || '').toLocaleLowerCase().replace(/[\s_-]/g, '');
129
-
130
- const isWaitlistedPerson = (person) => waitlistStatuses.has(normalizeStatus(person?.Status));
131
-
132
- const getEventRuleValue = (event, ruleName) => {
133
- const rule = event?.EventRules?.find(eventRule => eventRule?.Rules?.RuleName === ruleName);
134
- return rule?.RuleValue;
135
- };
136
-
137
- const getWaitlistOrderValue = (person) => {
138
- const order = person?.WaitlistPosition ?? person?.WaitlistOrder ?? person?.CreatedAt ?? person?.Seed ?? person?.PoolPosition ?? 0;
139
- return Number.isNaN(Number(order)) ? order : Number(order);
140
- };
141
-
142
- export default {
143
- emits: ['add:existing-person', 'add:person', 'forward:toProfile', 'move:waitlist-to-active', 'remove:fencer', 'remove:waitlist-fencer', 'tab:menu-click', 'update:moveDown', 'update:moveUp', 'update:person', 'weaver:sign'],
144
- components: {
145
- WaitlistFencerCard,
146
- FencerCardSkeleton,
132
+ import BaseText from '../../../Atoms/Text/BaseText.vue';
133
+ import emptyDesertIcon from '../../../../assets/empty_desert_icon.png';
134
+ import FencerCard from '../../../Organisms/Cards/FencerCard/FencerCard.vue';
135
+ import WaitlistFencerCard from '../../../Organisms/Cards/WaitlistFencerCard/WaitlistFencerCard.vue';
136
+ import EditEventsTopMenu from '../../Menus/EditEventsTopMenu/EditEventsTopMenu.vue';
137
+ import DropDownMenu from '../../../Organisms/ComplexInputs/DropDown/DropDownMenu.vue';
138
+ import FindOrAddPerson from '../../../Organisms/ComplexInputs/FindOrAddPerson/FindOrAddPerson.vue';
139
+ import AttendanceSummary from '../../../Organisms/Headers/AttendanceSummary/AttendanceSummary.vue';
140
+ import FencerCardSkeleton from '../../../Organisms/Skeletons/FencerCard/FencerCardSkeleton.vue';
141
+ import BaseModal from '../../../Molecules/Modals/BaseModal/BaseModal.vue';
142
+ import { tabs } from '../../../Util/tabs.js';
143
+
144
+ const personSorters = {
145
+ Seed: (a, b) => (a.Seed || 0) - (b.Seed || 0),
146
+ FullName: (a, b) => a.Person.DisplayName.localeCompare(b.Person.DisplayName),
147
+ HEMARating: (a, b) => {
148
+ const ratingA = a.Person.HEMARatings?.[0]?.Rating || 0;
149
+ const ratingB = b.Person.HEMARatings?.[0]?.Rating || 0;
150
+ return ratingB - ratingA;
151
+ },
152
+ M2Rating: (a, b) => {
153
+ const m2RatingA = a.Person.M2Ratings?.[0]?.Rating || 'U00';
154
+ const m2RatingB = b.Person.M2Ratings?.[0]?.Rating || 'U00';
155
+ return m2RatingA.localeCompare(m2RatingB);
156
+ }
157
+ };
158
+
159
+ const waitlistStatuses = new Set(['waitlist', 'waitlisted', 'waitinglist']);
160
+
161
+ const normalizeStatus = status =>
162
+ String(status || '')
163
+ .toLocaleLowerCase()
164
+ .replace(/[\s_-]/g, '');
165
+
166
+ const isWaitlistedPerson = person => waitlistStatuses.has(normalizeStatus(person?.Status));
167
+
168
+ const getEventRuleValue = (event, ruleName) => {
169
+ const rule = event?.EventRules?.find(eventRule => eventRule?.Rules?.RuleName === ruleName);
170
+ return rule?.RuleValue;
171
+ };
172
+
173
+ const waitlistOrderFields = ['WaitlistPosition', 'WaitlistOrder', 'CreatedAt', 'Seed', 'PoolPosition'];
174
+
175
+ const getFirstDefinedFieldValue = (record, fieldNames, fallback) => {
176
+ const source = record || {};
177
+ const fieldName = fieldNames.find(name => source[name] !== null && source[name] !== undefined);
178
+ if (!fieldName) return fallback;
179
+ return source[fieldName];
180
+ };
181
+
182
+ const normalizeOrderValue = value => {
183
+ const numericValue = Number(value);
184
+ return Number.isNaN(numericValue) ? value : numericValue;
185
+ };
186
+
187
+ const getWaitlistOrderValue = person => {
188
+ const order = getFirstDefinedFieldValue(person, waitlistOrderFields, 0);
189
+ return normalizeOrderValue(order);
190
+ };
191
+
192
+ export default {
193
+ emits: [
194
+ 'add:existing-person',
195
+ 'add:person',
196
+ 'forward:toProfile',
197
+ 'move:waitlist-to-active',
198
+ 'remove:fencer',
199
+ 'remove:waitlist-fencer',
200
+ 'tab:menu-click',
201
+ 'update:moveDown',
202
+ 'update:moveUp',
203
+ 'update:person',
204
+ 'weaver:sign'
205
+ ],
206
+ components: {
207
+ WaitlistFencerCard,
208
+ FencerCardSkeleton,
147
209
  AttendanceSummary,
148
210
  FindOrAddPerson,
149
211
  DropDownMenu,
150
212
  EditEventsTopMenu,
151
- FencerCard,
152
- BaseText,
153
- BaseModal
213
+ FencerCard,
214
+ BaseText,
215
+ BaseModal
154
216
  },
155
217
  props: {
156
218
  personsAll: Array,
@@ -183,14 +245,14 @@ export default {
183
245
  windowWidth: window.innerWidth,
184
246
  label: 'Sort by',
185
247
  items: [
186
- {text: 'Seed', link: 'Seed'},
187
- {text: 'Name', link: 'FullName'},
188
- {text: 'M2Rating', link: 'M2Rating'},
189
- {text: 'HEMARating', link: 'HEMARating'}
248
+ { text: 'Seed', link: 'Seed' },
249
+ { text: 'Name', link: 'FullName' },
250
+ { text: 'M2Rating', link: 'M2Rating' },
251
+ { text: 'HEMARating', link: 'HEMARating' }
190
252
  ],
191
- localSelectedItem: {text: 'Seed', link: 'Seed'},
253
+ localSelectedItem: { text: 'Seed', link: 'Seed' },
192
254
  showWeaverModal: false,
193
- pendingWeaverPerson: null,
255
+ pendingWeaverPerson: null
194
256
  };
195
257
  },
196
258
  mounted() {
@@ -201,90 +263,91 @@ export default {
201
263
  },
202
264
  computed: {
203
265
  weaverModalBody() {
204
- const p = this.pendingWeaverPerson?.Person;
205
- const name = p?.DisplayName ?? 'This fencer';
206
- return `Has ${name} completed signing the waiver?`;
266
+ const p = this.pendingWeaverPerson?.Person;
267
+ const name = p?.DisplayName ?? 'This fencer';
268
+ return `Has ${name} completed signing the waiver?`;
207
269
  },
208
270
  isMobile() {
209
271
  return this.windowWidth <= 748;
210
272
  },
211
- activePersons() {
212
- if (!Array.isArray(this.personsInTournament) || this.personsInTournament.length === 0) {
213
- return [];
214
- }
215
-
216
- return this.personsInTournament.filter(person => !isWaitlistedPerson(person));
217
- },
218
- waitlistedPersons() {
219
- if (!Array.isArray(this.personsInTournament) || this.personsInTournament.length === 0) {
220
- return [];
221
- }
222
-
223
- return this.personsInTournament.filter(isWaitlistedPerson);
224
- },
225
- sortedActivePersons() {
226
- if (this.activePersons.length === 0) {
227
- return [];
228
- }
229
-
230
- let sortedArray = [...this.activePersons]; // Clone array to prevent modifying props
231
-
232
- sortedArray.sort((a, b) => {
273
+ activePersons() {
274
+ if (!Array.isArray(this.personsInTournament) || this.personsInTournament.length === 0) {
275
+ return [];
276
+ }
277
+
278
+ return this.personsInTournament.filter(person => !isWaitlistedPerson(person));
279
+ },
280
+ waitlistedPersons() {
281
+ if (!Array.isArray(this.personsInTournament) || this.personsInTournament.length === 0) {
282
+ return [];
283
+ }
284
+
285
+ return this.personsInTournament.filter(isWaitlistedPerson);
286
+ },
287
+ sortedActivePersons() {
288
+ if (this.activePersons.length === 0) {
289
+ return [];
290
+ }
291
+
292
+ let sortedArray = [...this.activePersons]; // Clone array to prevent modifying props
293
+
294
+ sortedArray.sort((a, b) => {
233
295
  if (!a || !b || !a.Person || !b.Person) {
234
- console.warn("Undefined person object detected:", a, b);
296
+ console.warn('Undefined person object detected:', a, b);
235
297
  return 0;
236
298
  }
237
299
 
238
- const sortPersons = personSorters[this.localSelectedItem.link];
239
- if (sortPersons) return sortPersons(a, b);
240
-
241
- console.warn("Unknown sorting key:", this.localSelectedItem.link);
242
- return 0;
243
- });
244
- return sortedArray;
245
- },
246
- sortedWaitlistedPersons() {
247
- return [...this.waitlistedPersons].sort((a, b) => {
248
- const orderA = getWaitlistOrderValue(a);
249
- const orderB = getWaitlistOrderValue(b);
250
-
251
- if (typeof orderA === 'number' && typeof orderB === 'number') {
252
- return orderA - orderB;
253
- }
254
-
255
- return String(orderA).localeCompare(String(orderB));
256
- });
257
- },
258
- activeRosterCount() {
259
- return this.activePersons.length;
260
- },
261
- waitlistCount() {
262
- return this.waitlistedPersons.length;
263
- },
264
- eventCapacity() {
265
- const capacity = this.event?.CutOffNumber ?? this.event?.MaxFencers ?? getEventRuleValue(this.event, 'CutOffNumber');
266
- if (capacity === 0 || capacity === '0') {
267
- return 'Unlimited';
268
- }
269
-
270
- return capacity || '';
271
- },
272
- activeRosterSummary() {
273
- if (!this.eventCapacity) {
274
- return `${this.activeRosterCount} active`;
275
- }
276
-
277
- return `${this.activeRosterCount} / ${this.eventCapacity}`;
278
- },
279
- waitlistSummary() {
280
- return `${this.waitlistCount} waiting`;
281
- },
282
- absent() {
283
- return this.activePersons.filter(person => person.Status === 'Absent').length;
284
- },
285
- present() {
286
- return this.activePersons.filter(person => person.Status === 'Present').length;
287
- },
300
+ const sortPersons = personSorters[this.localSelectedItem.link];
301
+ if (sortPersons) return sortPersons(a, b);
302
+
303
+ console.warn('Unknown sorting key:', this.localSelectedItem.link);
304
+ return 0;
305
+ });
306
+ return sortedArray;
307
+ },
308
+ sortedWaitlistedPersons() {
309
+ return [...this.waitlistedPersons].sort((a, b) => {
310
+ const orderA = getWaitlistOrderValue(a);
311
+ const orderB = getWaitlistOrderValue(b);
312
+
313
+ if (typeof orderA === 'number' && typeof orderB === 'number') {
314
+ return orderA - orderB;
315
+ }
316
+
317
+ return String(orderA).localeCompare(String(orderB));
318
+ });
319
+ },
320
+ activeRosterCount() {
321
+ return this.activePersons.length;
322
+ },
323
+ waitlistCount() {
324
+ return this.waitlistedPersons.length;
325
+ },
326
+ eventCapacity() {
327
+ const capacity =
328
+ this.event?.CutOffNumber ?? this.event?.MaxFencers ?? getEventRuleValue(this.event, 'CutOffNumber');
329
+ if (capacity === 0 || capacity === '0') {
330
+ return 'Unlimited';
331
+ }
332
+
333
+ return capacity || '';
334
+ },
335
+ activeRosterSummary() {
336
+ if (!this.eventCapacity) {
337
+ return `${this.activeRosterCount} active`;
338
+ }
339
+
340
+ return `${this.activeRosterCount} / ${this.eventCapacity}`;
341
+ },
342
+ waitlistSummary() {
343
+ return `${this.waitlistCount} waiting`;
344
+ },
345
+ absent() {
346
+ return this.activePersons.filter(person => person.Status === 'Absent').length;
347
+ },
348
+ present() {
349
+ return this.activePersons.filter(person => person.Status === 'Present').length;
350
+ }
288
351
  },
289
352
  methods: {
290
353
  openWeaverModal(person) {
@@ -301,32 +364,32 @@ export default {
301
364
  },
302
365
  handleSelectedItem(selectedItem) {
303
366
  this.localSelectedItem = selectedItem;
304
- },
305
- handleStatus(person) {
306
- this.$emit('update:person', person);
307
- },
367
+ },
368
+ handleStatus(person) {
369
+ this.$emit('update:person', person);
370
+ },
308
371
  handleNewPerson(value) {
309
372
  this.$emit('add:person', value);
310
- },
311
- handleAddExistingPerson(value) {
312
- this.$emit('add:existing-person', value);
313
- },
373
+ },
374
+ handleAddExistingPerson(value) {
375
+ this.$emit('add:existing-person', value);
376
+ },
314
377
  handleTabMenuClick(value) {
315
378
  this.$emit('tab:menu-click', value);
316
- },
317
- handleRemoveFencer(value) {
318
- this.$emit('remove:fencer', value);
319
- },
320
- handleMoveWaitlistToActive(person) {
321
- this.$emit('move:waitlist-to-active', person);
322
- },
323
- handleRemoveWaitlistFencer(person) {
324
- this.$emit('remove:waitlist-fencer', person);
325
- },
326
- handleMoveUp(person){
379
+ },
380
+ handleRemoveFencer(value) {
381
+ this.$emit('remove:fencer', value);
382
+ },
383
+ handleMoveWaitlistToActive(person) {
384
+ this.$emit('move:waitlist-to-active', person);
385
+ },
386
+ handleRemoveWaitlistFencer(person) {
387
+ this.$emit('remove:waitlist-fencer', person);
388
+ },
389
+ handleMoveUp(person) {
327
390
  this.$emit('update:moveUp', person);
328
391
  },
329
- handleMoveDown(person){
392
+ handleMoveDown(person) {
330
393
  this.$emit('update:moveDown', person);
331
394
  },
332
395
  handleForwardToProfile(personId) {
@@ -336,5 +399,5 @@ export default {
336
399
  this.windowWidth = window.innerWidth;
337
400
  }
338
401
  }
339
- }
402
+ };
340
403
  </script>