@dcrackel/hematournamentui 1.0.706 → 1.0.708

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (350) hide show
  1. package/.prettierignore +7 -1
  2. package/.storybook/main.js +5 -12
  3. package/.storybook/preview-head.html +10 -3
  4. package/.storybook/preview.js +5 -13
  5. package/AGENTS.md +118 -88
  6. package/README.md +29 -22
  7. package/dist/HemaTournamentUI-lib.es.js +8394 -8807
  8. package/dist/HemaTournamentUI-lib.umd.js +27 -27
  9. package/dist/hematournamentui-tailwind.css +183 -428
  10. package/dist/hematournamentui.css +1 -1
  11. package/eslint.config.js +49 -23
  12. package/package.json +15 -11
  13. package/postcss.config.js +3 -3
  14. package/prettier.config.js +16 -10
  15. package/src/config/boutScreenConfigurations.js +52 -50
  16. package/src/index.js +2 -0
  17. package/src/main.js +1 -1
  18. package/src/mocks/EventQuestionsMock.js +43 -55
  19. package/src/mocks/assignments.js +180 -181
  20. package/src/mocks/clubGetAllMock.js +8143 -8143
  21. package/src/mocks/eventMock.js +205 -205
  22. package/src/mocks/eventPersonGetInitalPoolAssignmentsLivePools.js +541 -542
  23. package/src/mocks/eventPersonGetInitalPoolAssignmentsPreparing.js +522 -523
  24. package/src/mocks/eventPersonGetInitialPoolAssignments.js +386 -387
  25. package/src/mocks/eventPersonGetInitialPoolAssignments2.js +2267 -2268
  26. package/src/mocks/eventPersonGetInitialStaff.js +94 -95
  27. package/src/mocks/eventPersonGetPoolAssignmentEvent.js +161 -162
  28. package/src/mocks/eventRules.js +87 -86
  29. package/src/mocks/eventpersonGetEventById.js +1737 -1737
  30. package/src/mocks/getAllClubs.js +8143 -8143
  31. package/src/mocks/getAllStaffByTournamentId.js +74 -75
  32. package/src/mocks/getAllWeapons.js +81 -82
  33. package/src/mocks/getAttendance.js +43 -44
  34. package/src/mocks/getClub.js +43 -44
  35. package/src/mocks/getClubDisplayByClubId.js +104 -105
  36. package/src/mocks/getDEBouts-128Fencers.js +3247 -3248
  37. package/src/mocks/getDEBouts-42Fencers.js +3736 -3737
  38. package/src/mocks/getDEBouts-67Fencers.js +6684 -6690
  39. package/src/mocks/getDEBouts-DoubleElim.js +4198 -4199
  40. package/src/mocks/getDEBouts-TableOf128.js +37 -0
  41. package/src/mocks/getDEBouts-TableOf64.js +35 -0
  42. package/src/mocks/getDEWithBouts.js +628 -629
  43. package/src/mocks/getDeBouts-12fencers.js +1255 -1256
  44. package/src/mocks/getDeBouts-15fencers.js +925 -927
  45. package/src/mocks/getDeBouts-22fencers.js +1683 -1685
  46. package/src/mocks/getDeBouts-6fencers.js +818 -818
  47. package/src/mocks/getEventByTournamentId.js +47 -48
  48. package/src/mocks/getFinalEventResult.js +304 -305
  49. package/src/mocks/getPenaltiesByEvent.js +655 -656
  50. package/src/mocks/getPoolResults.js +1533 -1534
  51. package/src/mocks/getPoolsWithBouts.js +662 -663
  52. package/src/mocks/getPoolsWithBouts6PoolId139.js +885 -886
  53. package/src/mocks/getPoolsWithBoutsByPoolId.js +841 -841
  54. package/src/mocks/getPoolsWithBoutsClubColors.js +4 -4
  55. package/src/mocks/getPoolsWithBoutsComplete.js +919 -921
  56. package/src/mocks/locationMock.js +3213 -3214
  57. package/src/mocks/mockRoutes.js +3 -3
  58. package/src/mocks/personGetAllMock.js +2536 -2537
  59. package/src/mocks/personsMock.js +17569 -17570
  60. package/src/mocks/singleEventMock.js +249 -250
  61. package/src/mocks/tournamentMock.js +1988 -1927
  62. package/src/stories/Atoms/CheckBox/BaseCheckbox.stories.js +25 -23
  63. package/src/stories/Atoms/CheckBox/BaseCheckbox.vue +30 -24
  64. package/src/stories/Atoms/Icon/BaseIcon.stories.js +63 -64
  65. package/src/stories/Atoms/Icon/BaseIcon.test.js +67 -69
  66. package/src/stories/Atoms/Icon/BaseIcon.vue +2 -3
  67. package/src/stories/Atoms/Input/BaseInput.stories.js +18 -18
  68. package/src/stories/Atoms/Input/BaseInput.test.js +65 -67
  69. package/src/stories/Atoms/Input/BaseInput.vue +36 -31
  70. package/src/stories/Atoms/RadioGroup/BaseRadioGroup.stories.js +21 -21
  71. package/src/stories/Atoms/RadioGroup/BaseRadioGroup.test.js +31 -31
  72. package/src/stories/Atoms/RadioGroup/BaseRadioGroup.vue +23 -18
  73. package/src/stories/Atoms/Tag/BaseTag.stories.js +21 -21
  74. package/src/stories/Atoms/Tag/BaseTag.test.js +26 -30
  75. package/src/stories/Atoms/Tag/BaseTag.vue +18 -19
  76. package/src/stories/Atoms/Text/BaseText.stories.js +54 -62
  77. package/src/stories/Atoms/Text/BaseText.test.js +152 -154
  78. package/src/stories/Atoms/Text/BaseText.vue +103 -81
  79. package/src/stories/Configure.mdx +5 -3
  80. package/src/stories/Molecules/Boxes/BoutBoxes/HandshotCounterBox/HandshotCounterBox.stories.js +24 -24
  81. package/src/stories/Molecules/Boxes/BoutBoxes/HandshotCounterBox/HandshotCounterBox.vue +33 -15
  82. package/src/stories/Molecules/Boxes/BoutBoxes/PassesBox/PassesBox.stories.js +46 -48
  83. package/src/stories/Molecules/Boxes/BoutBoxes/PassesBox/PassesBox.vue +38 -25
  84. package/src/stories/Molecules/Boxes/BoutBoxes/PenaltyConfirmationBox/PenaltyConfirmationBox.stories.js +4 -4
  85. package/src/stories/Molecules/Boxes/BoutBoxes/PenaltyConfirmationBox/PenaltyConfirmationBox.vue +9 -4
  86. package/src/stories/Molecules/Boxes/BoutBoxes/ScoreBox/ScoreBox.stories.js +90 -90
  87. package/src/stories/Molecules/Boxes/BoutBoxes/ScoreBox/ScoreBox.vue +51 -32
  88. package/src/stories/Molecules/Boxes/BoutBoxes/TimerBox/TimerBox.stories.js +25 -25
  89. package/src/stories/Molecules/Boxes/BoutBoxes/TimerBox/TimerBox.vue +47 -12
  90. package/src/stories/Molecules/Boxes/CounterBox/CounterBox.stories.js +19 -19
  91. package/src/stories/Molecules/Boxes/CounterBox/CounterBox.vue +25 -19
  92. package/src/stories/Molecules/Boxes/EventStatusBox/EventStatusBox.stories.js +25 -28
  93. package/src/stories/Molecules/Boxes/EventStatusBox/EventStatusBox.vue +7 -7
  94. package/src/stories/Molecules/Breadcrumb/Admin/Breadcrumb.stories.js +28 -29
  95. package/src/stories/Molecules/Breadcrumb/Admin/Breadcrumb.test.js +58 -58
  96. package/src/stories/Molecules/Breadcrumb/Admin/Breadcrumb.vue +15 -15
  97. package/src/stories/Molecules/Buttons/BaseButton/BaseButton.stories.js +86 -86
  98. package/src/stories/Molecules/Buttons/BaseButton/BaseButton.test.js +101 -103
  99. package/src/stories/Molecules/Buttons/BaseButton/BaseButton.vue +87 -24
  100. package/src/stories/Molecules/Buttons/ButtonBar/ButtonBar.stories.js +31 -31
  101. package/src/stories/Molecules/Buttons/ButtonBar/ButtonBar.vue +19 -21
  102. package/src/stories/Molecules/CombinationInputs/TitledInput/TitledInput.stories.js +57 -57
  103. package/src/stories/Molecules/CombinationInputs/TitledInput/TitledInput.test.js +64 -64
  104. package/src/stories/Molecules/CombinationInputs/TitledInput/TitledInput.vue +17 -16
  105. package/src/stories/Molecules/Filters/FilterAndSortBar/FilterAndSortBar.stories.js +19 -19
  106. package/src/stories/Molecules/Filters/FilterAndSortBar/FilterAndSortBar.vue +18 -7
  107. package/src/stories/Molecules/Filters/FilterUpcomingPast/FilterUpcomingPast.stories.js +16 -18
  108. package/src/stories/Molecules/Filters/FilterUpcomingPast/FilterUpcomingPast.vue +31 -13
  109. package/src/stories/Molecules/Indicators/MissingHemaRatingsId/MissingHemaRatingsId.stories.js +23 -0
  110. package/src/stories/Molecules/Indicators/MissingHemaRatingsId/MissingHemaRatingsId.vue +35 -0
  111. package/src/stories/Molecules/Indicators/ServerConnected/ServerConnected.stories.js +27 -27
  112. package/src/stories/Molecules/Indicators/ServerConnected/ServerConnected.vue +6 -5
  113. package/src/stories/Molecules/Inputs/MultiSelect/MultiSelect.stories.js +35 -35
  114. package/src/stories/Molecules/Inputs/MultiSelect/MultiSelect.vue +13 -8
  115. package/src/stories/Molecules/Inputs/Toggle/Toggle.stories.js +27 -27
  116. package/src/stories/Molecules/Inputs/Toggle/Toggle.vue +8 -5
  117. package/src/stories/Molecules/Menus/TabBar/TabBar.stories.js +18 -18
  118. package/src/stories/Molecules/Menus/TabBar/TabBar.vue +1 -2
  119. package/src/stories/Molecules/Modals/AddDisplayModal/AddDisplay.stories.js +36 -27
  120. package/src/stories/Molecules/Modals/AddDisplayModal/AddDisplayModal.vue +25 -15
  121. package/src/stories/Molecules/Modals/BaseModal/BaseModal.stories.js +66 -65
  122. package/src/stories/Molecules/Modals/BaseModal/BaseModal.vue +47 -9
  123. package/src/stories/Molecules/Modals/ConfirmModal/ConfirmModal.stories.js +23 -23
  124. package/src/stories/Molecules/Modals/ConfirmModal/ConfirmModal.vue +59 -11
  125. package/src/stories/Molecules/Modals/DirectorModal/DirectorModal.stories.js +37 -37
  126. package/src/stories/Molecules/Modals/DirectorModal/DirectorModal.test.js +18 -0
  127. package/src/stories/Molecules/Modals/DirectorModal/DirectorModal.vue +29 -23
  128. package/src/stories/Molecules/Modals/EditBoutModal/EditBoutModal.stories.js +41 -41
  129. package/src/stories/Molecules/Modals/EditBoutModal/EditBoutModal.vue +28 -16
  130. package/src/stories/Molecules/Modals/EventWizardModal/EventWizardModal.stories.js +29 -30
  131. package/src/stories/Molecules/Modals/EventWizardModal/EventWizardModal.vue +18 -16
  132. package/src/stories/Molecules/Modals/LoadingModal/LoadingModal.stories.js +21 -21
  133. package/src/stories/Molecules/Modals/LoadingModal/LoadingModal.vue +7 -7
  134. package/src/stories/Molecules/Modals/PenaltyModal/PenaltyModal.stories.js +24 -24
  135. package/src/stories/Molecules/Modals/PenaltyModal/PenaltyModal.vue +30 -25
  136. package/src/stories/Molecules/Reorder/ReorderableShell.stories.js +81 -77
  137. package/src/stories/Molecules/Reorder/ReorderableShell.vue +46 -43
  138. package/src/stories/Molecules/StepIndicator/BaseStepIndicator/StepIndicator.stories.js +40 -40
  139. package/src/stories/Molecules/StepIndicator/BaseStepIndicator/StepIndicator.vue +23 -25
  140. package/src/stories/Organisms/Cards/BoutCard/BoutCard.stories.js +34 -29
  141. package/src/stories/Organisms/Cards/BoutCard/BoutCard.vue +69 -66
  142. package/src/stories/Organisms/Cards/BoutCard/Variants/BoutCardActive/BoutCardActive.stories.js +24 -22
  143. package/src/stories/Organisms/Cards/BoutCard/Variants/BoutCardActive/BoutCardActive.vue +53 -41
  144. package/src/stories/Organisms/Cards/BoutCard/Variants/BoutCardInactive/BoutCardInactive.stories.js +24 -37
  145. package/src/stories/Organisms/Cards/BoutCard/Variants/BoutCardInactive/BoutCardInactive.vue +88 -103
  146. package/src/stories/Organisms/Cards/BoutCard/Variants/BoutCardReorder/BoutCardReorder.vue +13 -14
  147. package/src/stories/Organisms/Cards/BoutCard/Variants/BoutCardWaiting/BoutCardWaiting.stories.js +5 -5
  148. package/src/stories/Organisms/Cards/BoutCard/Variants/BoutCardWaiting/BoutCardWaiting.vue +22 -21
  149. package/src/stories/Organisms/Cards/BracketDirectorAssignmentCard/BracketDirectorAssignmentCard.stories.js +33 -0
  150. package/src/stories/Organisms/Cards/BracketDirectorAssignmentCard/BracketDirectorAssignmentCard.test.js +45 -0
  151. package/src/stories/Organisms/Cards/BracketDirectorAssignmentCard/BracketDirectorAssignmentCard.vue +103 -0
  152. package/src/stories/Organisms/Cards/ClubCard/ClubCard.stories.js +14 -17
  153. package/src/stories/Organisms/Cards/ClubCard/ClubCard.vue +25 -18
  154. package/src/stories/Organisms/Cards/Director/DirectorCard.stories.js +23 -23
  155. package/src/stories/Organisms/Cards/Director/DirectorCard.vue +159 -103
  156. package/src/stories/Organisms/Cards/EditBout/EditBout.stories.js +47 -47
  157. package/src/stories/Organisms/Cards/EditBout/EditBout.test.js +51 -0
  158. package/src/stories/Organisms/Cards/EditBout/EditBout.vue +82 -54
  159. package/src/stories/Organisms/Cards/EventCard/EventCard.stories.js +9 -10
  160. package/src/stories/Organisms/Cards/EventCard/EventCard.vue +83 -63
  161. package/src/stories/Organisms/Cards/FencerCard/FencerCard.stories.js +105 -105
  162. package/src/stories/Organisms/Cards/FencerCard/FencerCard.vue +298 -194
  163. package/src/stories/Organisms/Cards/FencerFinalResultCard/FencerFinalResultCard.stories.js +14 -14
  164. package/src/stories/Organisms/Cards/FencerFinalResultCard/FencerFinalResultCard.vue +37 -26
  165. package/src/stories/Organisms/Cards/FencerPoolResultsCard/FencerPoolResults.stories.js +24 -24
  166. package/src/stories/Organisms/Cards/FencerPoolResultsCard/FencerPoolResultsCard.vue +95 -28
  167. package/src/stories/Organisms/Cards/ImportFencerCard/ImportFencerCard.stories.js +59 -60
  168. package/src/stories/Organisms/Cards/ImportFencerCard/ImportFencerCard.vue +13 -7
  169. package/src/stories/Organisms/Cards/KioskCard/KioskCard.stories.js +34 -34
  170. package/src/stories/Organisms/Cards/KioskCard/KioskCard.vue +149 -104
  171. package/src/stories/Organisms/Cards/PenaltyCard/PenaltyCard.stories.js +19 -20
  172. package/src/stories/Organisms/Cards/PenaltyCard/PenaltyCard.vue +207 -163
  173. package/src/stories/Organisms/Cards/PenaltyFencerCard/PenaltyFencerCard.stories.js +17 -17
  174. package/src/stories/Organisms/Cards/PenaltyFencerCard/PenaltyFencerCard.vue +88 -46
  175. package/src/stories/Organisms/Cards/PoolBoutMatchCard/PoolBoutMatchCard.stories.js +182 -182
  176. package/src/stories/Organisms/Cards/PoolBoutMatchCard/PoolBoutMatchCard.vue +21 -12
  177. package/src/stories/Organisms/Cards/PoolFencerCard/PoolFencerCard.stories.js +25 -28
  178. package/src/stories/Organisms/Cards/PoolFencerCard/PoolFencerCard.vue +28 -22
  179. package/src/stories/Organisms/Cards/StaffCard/StaffCard.stories.js +62 -62
  180. package/src/stories/Organisms/Cards/StaffCard/StaffCard.vue +27 -22
  181. package/src/stories/Organisms/Cards/TableauBoutCard/TableauBoutCard.stories.js +60 -98
  182. package/src/stories/Organisms/Cards/TableauBoutCard/TableauBoutCard.test.js +143 -0
  183. package/src/stories/Organisms/Cards/TableauBoutCard/TableauBoutCard.vue +256 -202
  184. package/src/stories/Organisms/Cards/TableauFencerCard/TableauFencerCard.stories.js +69 -93
  185. package/src/stories/Organisms/Cards/TableauFencerCard/TableauFencerCard.vue +80 -111
  186. package/src/stories/Organisms/Cards/TournamentAdminCard/TournamentAdmin.stories.js +20 -20
  187. package/src/stories/Organisms/Cards/TournamentAdminCard/TournamentAdminCard.vue +62 -33
  188. package/src/stories/Organisms/Cards/WaitlistFencerCard/WaitlistFencerCard.vue +56 -32
  189. package/src/stories/Organisms/ComplexInputs/AddressAutocomplete/AddressAutocomplete.stories.js +6 -7
  190. package/src/stories/Organisms/ComplexInputs/AddressAutocomplete/AddressAutocomplete.vue +7 -8
  191. package/src/stories/Organisms/ComplexInputs/ClubColorPicker/ClubColorPicker.stories.js +31 -31
  192. package/src/stories/Organisms/ComplexInputs/ClubColorPicker/ClubColorPicker.vue +30 -35
  193. package/src/stories/Organisms/ComplexInputs/DatePicker/DatePicker.stories.js +13 -16
  194. package/src/stories/Organisms/ComplexInputs/DatePicker/DatePicker.vue +68 -70
  195. package/src/stories/Organisms/ComplexInputs/DropDown/DropDownMenu.stories.js +32 -34
  196. package/src/stories/Organisms/ComplexInputs/DropDown/DropDownMenu.vue +48 -25
  197. package/src/stories/Organisms/ComplexInputs/FindLocation/FindLocation.stories.js +21 -21
  198. package/src/stories/Organisms/ComplexInputs/FindLocation/FindLocation.vue +65 -38
  199. package/src/stories/Organisms/ComplexInputs/FindOrAddPerson/FindOrAddPerson.stories.js +19 -20
  200. package/src/stories/Organisms/ComplexInputs/FindOrAddPerson/FindOrAddPerson.vue +46 -21
  201. package/src/stories/Organisms/ComplexInputs/FindPerson/FindPerson.stories.js +22 -22
  202. package/src/stories/Organisms/ComplexInputs/FindPerson/FindPerson.vue +68 -23
  203. package/src/stories/Organisms/ComplexInputs/ImageCropper/ImageCropper.stories.js +13 -13
  204. package/src/stories/Organisms/ComplexInputs/ImageCropper/ImageCropper.vue +25 -24
  205. package/src/stories/Organisms/ComplexInputs/TextBoxEditor/TextBoxEditor.stories.js +6 -10
  206. package/src/stories/Organisms/ComplexInputs/TextBoxEditor/TextBoxEditor.vue +112 -48
  207. package/src/stories/Organisms/Containers/BoutsSection/BoutsSection.stories.js +43 -44
  208. package/src/stories/Organisms/Containers/BoutsSection/BoutsSection.vue +30 -23
  209. package/src/stories/Organisms/Containers/FinalResults/FinalResultsTable.stories.js +20 -20
  210. package/src/stories/Organisms/Containers/FinalResults/FinalResultsTable.vue +12 -12
  211. package/src/stories/Organisms/Containers/KioskContainer/KioskContainer.stories.js +24 -25
  212. package/src/stories/Organisms/Containers/KioskContainer/KioskContainer.vue +112 -87
  213. package/src/stories/Organisms/Containers/Pool/Pool.stories.js +54 -54
  214. package/src/stories/Organisms/Containers/Pool/Pool.vue +64 -41
  215. package/src/stories/Organisms/Containers/PoolGrid/PoolGrid.stories.js +17 -19
  216. package/src/stories/Organisms/Containers/PoolGrid/PoolGrid.vue +189 -135
  217. package/src/stories/Organisms/Containers/PoolResults/PoolResultsTable.stories.js +53 -54
  218. package/src/stories/Organisms/Containers/PoolResults/PoolResultsTable.vue +107 -73
  219. package/src/stories/Organisms/Containers/Tableau/Tableau.stories.js +23 -24
  220. package/src/stories/Organisms/Containers/Tableau/Tableau.test.js +177 -10
  221. package/src/stories/Organisms/Containers/Tableau/Tableau.vue +319 -198
  222. package/src/stories/Organisms/Containers/Tableau/components/BracketDirectorAssignmentPanel.test.js +29 -0
  223. package/src/stories/Organisms/Containers/Tableau/components/BracketDirectorAssignmentPanel.vue +46 -0
  224. package/src/stories/Organisms/Containers/Tableau/components/TableauSvgOverlay.test.js +21 -0
  225. package/src/stories/Organisms/Containers/Tableau/components/TableauSvgOverlay.vue +39 -0
  226. package/src/stories/Organisms/Containers/Tableau/layout/TableauLayoutEngine.js +145 -0
  227. package/src/stories/Organisms/Containers/Tableau/layout/TableauLayoutEngine.test.js +64 -0
  228. package/src/stories/Organisms/Containers/Tableau/plannedAssignments.js +57 -0
  229. package/src/stories/Organisms/Containers/Tableau/plannedAssignments.test.js +65 -0
  230. package/src/stories/Organisms/Containers/TableauColumn/TabeauColumn.stories.js +26 -27
  231. package/src/stories/Organisms/Containers/TableauColumn/TableauColumn.vue +31 -26
  232. package/src/stories/Organisms/Form/AddDisplay/AddDisplay.stories.js +26 -26
  233. package/src/stories/Organisms/Form/AddDisplay/AddDisplay.vue +130 -118
  234. package/src/stories/Organisms/Form/AddNewPerson/AddNewPerson.stories.js +14 -15
  235. package/src/stories/Organisms/Form/AddNewPerson/AddNewPerson.vue +94 -88
  236. package/src/stories/Organisms/Grids/GridContainer.stories.js +101 -101
  237. package/src/stories/Organisms/Grids/GridContainer.vue +160 -136
  238. package/src/stories/Organisms/Headers/AttendanceSummary/AttendanceSummary.stories.js +47 -47
  239. package/src/stories/Organisms/Headers/AttendanceSummary/AttendanceSummary.vue +65 -54
  240. package/src/stories/Organisms/Headers/EventFinalResultsHeader/EventFinalResultsHeader.stories.js +27 -27
  241. package/src/stories/Organisms/Headers/EventFinalResultsHeader/EventFinalResultsHeader.vue +38 -22
  242. package/src/stories/Organisms/Headers/PenaltySummary/PenaltySummary.stories.js +80 -80
  243. package/src/stories/Organisms/Headers/PenaltySummary/PenaltySummary.vue +14 -6
  244. package/src/stories/Organisms/Headers/PoolResultsHeader/PoolResultsHeader.stories.js +34 -34
  245. package/src/stories/Organisms/Headers/PoolResultsHeader/PoolResultsHeader.vue +36 -36
  246. package/src/stories/Organisms/Headers/PoolSummary/PoolSummary.stories.js +21 -21
  247. package/src/stories/Organisms/Headers/PoolSummary/PoolSummary.vue +56 -29
  248. package/src/stories/Organisms/Headers/ToggleHeader/ToggleHeader.stories.js +38 -38
  249. package/src/stories/Organisms/Headers/ToggleHeader/ToggleHeader.vue +19 -20
  250. package/src/stories/Organisms/RankCalculator/ByLetter/RankCalculator.stories.js +12 -13
  251. package/src/stories/Organisms/RankCalculator/ByLetter/RankCalculator.vue +47 -41
  252. package/src/stories/Organisms/RankCalculator/ByPoints/RankCalculatorByPoints.stories.js +12 -13
  253. package/src/stories/Organisms/RankCalculator/ByPoints/RankCalculatorByPoints.vue +66 -37
  254. package/src/stories/Organisms/Skeletons/ClubManagement/ClubManagement.stories.js +6 -10
  255. package/src/stories/Organisms/Skeletons/ClubManagement/ClubMangementSkeleton.vue +2 -2
  256. package/src/stories/Organisms/Skeletons/EventCard/EventCardSkeleton.stories.js +6 -10
  257. package/src/stories/Organisms/Skeletons/EventCard/EventCardSkeleton.vue +2 -3
  258. package/src/stories/Organisms/Skeletons/FencerCard/FencerCardSkeleton.stories.js +6 -10
  259. package/src/stories/Organisms/Skeletons/FencerCard/FencerCardSkeleton.vue +1 -1
  260. package/src/stories/Organisms/Skeletons/PersonManagement/PersonManagementSkeleton.stories.js +6 -9
  261. package/src/stories/Organisms/Skeletons/PersonManagement/PersonManagementSkeleton.vue +2 -2
  262. package/src/stories/Organisms/Skeletons/PoolSkeleton/PoolSkeleton.stories.js +6 -10
  263. package/src/stories/Organisms/Skeletons/PoolSkeleton/PoolSkeleton.vue +10 -4
  264. package/src/stories/Organisms/Skeletons/TournamentCard/TournamentCardSkeleton.stories.js +6 -10
  265. package/src/stories/Organisms/Skeletons/TournamentCard/TournamentCardSkeleton.vue +2 -2
  266. package/src/stories/Organisms/Wizards/EditEventWizard/BasicEventInfo/BasicEventInfo.stories.js +34 -34
  267. package/src/stories/Organisms/Wizards/EditEventWizard/BasicEventInfo/BasicEventInfo.vue +106 -56
  268. package/src/stories/Organisms/Wizards/EditEventWizard/DirectElimination/DirectElimination.stories.js +95 -95
  269. package/src/stories/Organisms/Wizards/EditEventWizard/DirectElimination/DirectElimination.vue +129 -69
  270. package/src/stories/Organisms/Wizards/EditEventWizard/DirectEliminationPromotion/DirectEliminationPromotion.stories.js +87 -88
  271. package/src/stories/Organisms/Wizards/EditEventWizard/DirectEliminationPromotion/DirectEliminationPromotion.vue +105 -60
  272. package/src/stories/Organisms/Wizards/EditEventWizard/EditEventWizard.stories.js +82 -82
  273. package/src/stories/Organisms/Wizards/EditEventWizard/EditEventWizard.vue +150 -177
  274. package/src/stories/Organisms/Wizards/EditEventWizard/EventCustomization/EventCustomization.stories.js +28 -28
  275. package/src/stories/Organisms/Wizards/EditEventWizard/EventCustomization/EventCustomization.vue +96 -36
  276. package/src/stories/Organisms/Wizards/EditEventWizard/PoolConfiguration/PoolConfiguration.stories.js +99 -99
  277. package/src/stories/Organisms/Wizards/EditEventWizard/PoolConfiguration/PoolConfiguration.vue +115 -67
  278. package/src/stories/Templates/Assignment/Assignment.stories.js +22 -23
  279. package/src/stories/Templates/Assignment/Assignment.vue +210 -161
  280. package/src/stories/Templates/ClubManagement/ClubBasic/ClubBasic.stories.js +90 -90
  281. package/src/stories/Templates/ClubManagement/ClubBasic/ClubBasic.vue +68 -55
  282. package/src/stories/Templates/ClubManagement/ClubManagement.stories.js +87 -87
  283. package/src/stories/Templates/ClubManagement/ClubManagement.vue +167 -147
  284. package/src/stories/Templates/EventManagement/Bracket/Bracket.stories.js +216 -109
  285. package/src/stories/Templates/EventManagement/Bracket/Bracket.test.js +138 -43
  286. package/src/stories/Templates/EventManagement/Bracket/Bracket.vue +198 -195
  287. package/src/stories/Templates/EventManagement/Bracket/BracketPlannedSuggestions.js +39 -0
  288. package/src/stories/Templates/EventManagement/Bracket/BracketStoryHarness.js +39 -0
  289. package/src/stories/Templates/EventManagement/Bracket/BracketStoryHarness.test.js +79 -0
  290. package/src/stories/Templates/EventManagement/EditEventInfo/EditEventInfo.stories.js +49 -50
  291. package/src/stories/Templates/EventManagement/EditEventInfo/EditEventInfo.vue +21 -21
  292. package/src/stories/Templates/EventManagement/EventAttendance/EventAttendance.stories.js +105 -103
  293. package/src/stories/Templates/EventManagement/EventAttendance/EventAttendance.vue +289 -226
  294. package/src/stories/Templates/EventManagement/EventFinalResults/EventFinalResults.stories.js +30 -30
  295. package/src/stories/Templates/EventManagement/EventFinalResults/EventFinalResults.vue +27 -22
  296. package/src/stories/Templates/EventManagement/KioskDisplay/KioskDisplay.stories.js +44 -45
  297. package/src/stories/Templates/EventManagement/KioskDisplay/KioskDisplay.vue +52 -43
  298. package/src/stories/Templates/EventManagement/Penalties/PenaltyReport.stories.js +28 -29
  299. package/src/stories/Templates/EventManagement/Penalties/PenaltyReport.vue +54 -39
  300. package/src/stories/Templates/EventManagement/PoolLive/PoolLive.stories.js +80 -111
  301. package/src/stories/Templates/EventManagement/PoolLive/PoolLive.test.js +121 -0
  302. package/src/stories/Templates/EventManagement/PoolLive/PoolLive.vue +290 -255
  303. package/src/stories/Templates/EventManagement/PoolManagement/PoolManagement.stories.js +109 -107
  304. package/src/stories/Templates/EventManagement/PoolManagement/PoolManagement.vue +144 -87
  305. package/src/stories/Templates/EventManagement/PoolResults/PoolResults.stories.js +56 -57
  306. package/src/stories/Templates/EventManagement/PoolResults/PoolResults.vue +132 -123
  307. package/src/stories/Templates/EventManagement/StaffList/StaffList.stories.js +56 -57
  308. package/src/stories/Templates/EventManagement/StaffList/StaffList.vue +84 -47
  309. package/src/stories/Templates/Menus/Admin/AdminLeftMenu.stories.js +29 -29
  310. package/src/stories/Templates/Menus/Admin/AdminLeftMenu.vue +71 -67
  311. package/src/stories/Templates/Menus/EditEventsTopMenu/EditEventsTopMenu.stories.js +39 -40
  312. package/src/stories/Templates/Menus/EditEventsTopMenu/EditEventsTopMenu.vue +79 -71
  313. package/src/stories/Templates/PersonManagement/Admin/Administration/Administration.stories.js +47 -47
  314. package/src/stories/Templates/PersonManagement/Admin/Administration/Administration.vue +39 -42
  315. package/src/stories/Templates/PersonManagement/Admin/FencerAdmin/FencerAdmin.stories.js +54 -54
  316. package/src/stories/Templates/PersonManagement/Admin/FencerAdmin/FencerAdmin.vue +27 -31
  317. package/src/stories/Templates/PersonManagement/Admin/MergeAccounts/MergeAccounts.stories.js +69 -69
  318. package/src/stories/Templates/PersonManagement/Admin/MergeAccounts/MergeAccounts.vue +78 -89
  319. package/src/stories/Templates/PersonManagement/Attendance/Attendance.stories.js +22 -22
  320. package/src/stories/Templates/PersonManagement/Attendance/Attendance.vue +61 -33
  321. package/src/stories/Templates/PersonManagement/Basic/BasicEdit.stories.js +29 -29
  322. package/src/stories/Templates/PersonManagement/Basic/BasicEdit.vue +80 -53
  323. package/src/stories/Templates/PersonManagement/PersonManagement.stories.js +84 -86
  324. package/src/stories/Templates/PersonManagement/PersonManagement.vue +107 -82
  325. package/src/stories/Templates/TournamentManagement/ListEvents/ListEvents.stories.js +31 -31
  326. package/src/stories/Templates/TournamentManagement/ListEvents/ListEvents.vue +70 -51
  327. package/src/stories/Templates/TournamentManagement/TournamentManagement.stories.js +79 -79
  328. package/src/stories/Templates/TournamentManagement/TournamentManagement.vue +275 -230
  329. package/src/stories/Templates/TournamentManagement/TournamentPageOne/TournamentPageOne.stories.js +113 -113
  330. package/src/stories/Templates/TournamentManagement/TournamentPageOne/TournamentPageOne.vue +175 -146
  331. package/src/stories/Templates/TournamentManagement/TournamentPageTwo/TournamentPageTwo.stories.js +77 -77
  332. package/src/stories/Templates/TournamentManagement/TournamentPageTwo/TournamentPageTwo.vue +208 -185
  333. package/src/stories/Util/Validations/AddNewPersonModalValidation.js +23 -19
  334. package/src/stories/Util/Validations/ClubManagementValidations.js +17 -21
  335. package/src/stories/Util/Validations/PersonManagementValidations.js +26 -22
  336. package/src/stories/Util/Validations/TournamentFieldsValidations.js +20 -18
  337. package/src/stories/Util/seeding.js +131 -131
  338. package/src/stories/Util/tabs.js +75 -75
  339. package/tailwind/tailwind.css +5 -7
  340. package/tailwind.config.js +12 -15
  341. package/vite.config.js +3 -3
  342. package/src/mocks/getDirectors.js +0 -18
  343. package/src/stories/Molecules/Modals/AssignDirectorModal/AssignDirectorModal.stories.js +0 -45
  344. package/src/stories/Molecules/Modals/AssignDirectorModal/AssignDirectorModal.vue +0 -111
  345. package/src/stories/Organisms/Cards/DirectorAssignmentCard/DirectorAssignmentCard.stories.js +0 -45
  346. package/src/stories/Organisms/Cards/DirectorAssignmentCard/DirectorAssignmentCard.vue +0 -83
  347. package/src/stories/Organisms/Cards/TableauBoutCard/SpacingConfig.js +0 -111
  348. package/src/stories/Organisms/Containers/TableauLines/SpacingConfig.js +0 -112
  349. package/src/stories/Organisms/Containers/TableauLines/TableauLines.stories.js +0 -23
  350. package/src/stories/Organisms/Containers/TableauLines/TableauLines.vue +0 -79
@@ -1,87 +1,85 @@
1
1
  import BaseInput from './BaseInput.vue';
2
- import { mount } from "@vue/test-utils";
3
- import { describe, expect, test, it } from "vitest";
2
+ import { mount } from '@vue/test-utils';
3
+ import { describe, expect, test, it } from 'vitest';
4
4
 
5
5
  describe('BaseInput.vue', () => {
6
+ it('renders with default props', () => {
7
+ const wrapper = mount(BaseInput);
8
+ const inputElement = wrapper.find('input');
6
9
 
7
- it('renders with default props', () => {
8
- const wrapper = mount(BaseInput);
9
- const inputElement = wrapper.find('input');
10
+ expect(inputElement.attributes('placeholder')).toBe('');
11
+ expect(wrapper.vm.internalValue).toBe('');
12
+ });
10
13
 
11
- expect(inputElement.attributes('placeholder')).toBe('');
12
- expect(wrapper.vm.internalValue).toBe('');
14
+ it('initializes with the correct value prop', () => {
15
+ const initialValue = 'Hello, World!';
16
+ const wrapper = mount(BaseInput, {
17
+ props: {
18
+ value: initialValue
19
+ }
13
20
  });
14
21
 
15
- it('initializes with the correct value prop', () => {
16
- const initialValue = 'Hello, World!';
17
- const wrapper = mount(BaseInput, {
18
- props: {
19
- value: initialValue
20
- }
21
- });
22
+ expect(wrapper.vm.internalValue).toBe(initialValue);
23
+ });
22
24
 
23
- expect(wrapper.vm.internalValue).toBe(initialValue);
24
- });
25
+ it('updates internalValue when value prop changes', async () => {
26
+ const wrapper = mount(BaseInput);
27
+ await wrapper.setProps({ value: 'New Value' });
25
28
 
26
- it('updates internalValue when value prop changes', async () => {
27
- const wrapper = mount(BaseInput);
28
- await wrapper.setProps({ value: 'New Value' });
29
+ expect(wrapper.vm.internalValue).toBe('New Value');
30
+ });
29
31
 
30
- expect(wrapper.vm.internalValue).toBe('New Value');
31
- });
32
+ it('emits update:value with a delay upon input', async () => {
33
+ const wrapper = mount(BaseInput);
34
+ const inputElement = wrapper.find('input');
32
35
 
33
- it('emits update:value with a delay upon input', async () => {
34
- const wrapper = mount(BaseInput);
35
- const inputElement = wrapper.find('input');
36
+ await inputElement.setValue('Test Input');
36
37
 
37
- await inputElement.setValue('Test Input');
38
+ // TODO: Handle timer-related functionality with vitest
39
+ await new Promise(resolve => setTimeout(resolve, 350));
38
40
 
39
- // TODO: Handle timer-related functionality with vitest
40
- await new Promise(resolve => setTimeout(resolve, 350));
41
+ expect(wrapper.emitted('update:value')).toBeTruthy();
42
+ expect(wrapper.emitted('update:value')[0]).toEqual(['Test Input']);
43
+ });
41
44
 
42
- expect(wrapper.emitted('update:value')).toBeTruthy();
43
- expect(wrapper.emitted('update:value')[0]).toEqual(['Test Input']);
45
+ it('applies formInput styles when type is formInput', () => {
46
+ const wrapper = mount(BaseInput, {
47
+ props: {
48
+ type: 'formInput',
49
+ invalid: false
50
+ }
44
51
  });
52
+ const inputElement = wrapper.find('input');
53
+ expect(inputElement.classes()).toContain('border');
54
+ expect(inputElement.classes()).toContain('rounded-lg');
55
+ expect(inputElement.classes()).toContain('text-secondary');
56
+ expect(inputElement.classes()).toContain('placeholder:text-xs');
57
+ expect(inputElement.classes()).toContain('text-sm');
58
+ expect(inputElement.classes()).toContain('p-2');
59
+ expect(inputElement.classes()).toContain('w-full');
60
+ expect(inputElement.classes()).toContain('border-dropdownSelect');
61
+ });
45
62
 
46
- it('applies formInput styles when type is formInput', () => {
47
- const wrapper = mount(BaseInput, {
48
- props: {
49
- type: 'formInput',
50
- invalid: false
51
- }
52
- });
53
- const inputElement = wrapper.find('input');
54
- expect(inputElement.classes()).toContain('border');
55
- expect(inputElement.classes()).toContain('rounded-lg');
56
- expect(inputElement.classes()).toContain('text-secondary');
57
- expect(inputElement.classes()).toContain('placeholder:text-xs');
58
- expect(inputElement.classes()).toContain('text-sm');
59
- expect(inputElement.classes()).toContain('p-2');
60
- expect(inputElement.classes()).toContain('w-full');
61
- expect(inputElement.classes()).toContain('border-dropdownSelect');
63
+ it('applies border-alarm class when invalid is true', () => {
64
+ const wrapper = mount(BaseInput, {
65
+ props: {
66
+ type: 'formInput',
67
+ invalid: true
68
+ }
62
69
  });
70
+ const inputElement = wrapper.find('input');
71
+ expect(inputElement.classes()).toContain('border-alarm');
72
+ });
63
73
 
64
- it('applies border-alarm class when invalid is true', () => {
65
- const wrapper = mount(BaseInput, {
66
- props: {
67
- type: 'formInput',
68
- invalid: true
69
- }
70
- });
71
- const inputElement = wrapper.find('input');
72
- expect(inputElement.classes()).toContain('border-alarm');
74
+ it('does not apply border-alarm class when invalid is false', () => {
75
+ const wrapper = mount(BaseInput, {
76
+ props: {
77
+ type: 'formInput',
78
+ invalid: false
79
+ }
73
80
  });
74
-
75
- it('does not apply border-alarm class when invalid is false', () => {
76
- const wrapper = mount(BaseInput, {
77
- props: {
78
- type: 'formInput',
79
- invalid: false
80
- }
81
- });
82
- const inputElement = wrapper.find('input');
83
- expect(inputElement.classes()).not.toContain('border-alarm');
84
- expect(inputElement.classes()).toContain('border-dropdownSelect');
85
- });
86
-
81
+ const inputElement = wrapper.find('input');
82
+ expect(inputElement.classes()).not.toContain('border-alarm');
83
+ expect(inputElement.classes()).toContain('border-dropdownSelect');
84
+ });
87
85
  });
@@ -1,33 +1,33 @@
1
1
  <template>
2
2
  <div :class="iconName ? '' : ''">
3
3
  <input
4
- ref="input"
5
- v-model="internalValue"
6
- :class="baseClasses"
7
- :placeholder="placeholder"
8
- :type="inputType"
9
- :disabled="disabled"
10
- @input="onInput"
11
- @focus="onFocus"
12
- @blur="onBlur"
4
+ ref="input"
5
+ v-model="internalValue"
6
+ :class="baseClasses"
7
+ :placeholder="placeholder"
8
+ :type="inputType"
9
+ :disabled="disabled"
10
+ @input="onInput"
11
+ @focus="onFocus"
12
+ @blur="onBlur"
13
13
  />
14
14
  </div>
15
15
  </template>
16
16
 
17
- <script>
18
- const sizeClasses = {
19
- xs: ' text-xs',
20
- sm: ' text-sm',
21
- md: ' text-md',
22
- lg: ' text-lg',
23
- xl: ' text-xl',
24
- '2xl': ' text-2xl',
25
- '3xl': ' text-3xl',
26
- '4xl': ' text-4xl',
27
- '5xl': ' text-5xl'
28
- };
29
-
30
- export default {
17
+ <script>
18
+ const sizeClasses = {
19
+ xs: ' text-xs',
20
+ sm: ' text-sm',
21
+ md: ' text-md',
22
+ lg: ' text-lg',
23
+ xl: ' text-xl',
24
+ '2xl': ' text-2xl',
25
+ '3xl': ' text-3xl',
26
+ '4xl': ' text-4xl',
27
+ '5xl': ' text-5xl'
28
+ };
29
+
30
+ export default {
31
31
  name: 'BaseInput',
32
32
  emits: ['update:value'],
33
33
  props: {
@@ -76,7 +76,10 @@ export default {
76
76
  iconColor: {
77
77
  type: String,
78
78
  default: 'primary',
79
- validator: value => ['neutral', 'primary', 'secondary', 'tertiary', 'quaternary', 'quinary', 'bright', 'white', 'alarm'].includes(value)
79
+ validator: value =>
80
+ ['neutral', 'primary', 'secondary', 'tertiary', 'quaternary', 'quinary', 'bright', 'white', 'alarm'].includes(
81
+ value
82
+ )
80
83
  },
81
84
  allowPercent: {
82
85
  type: Boolean,
@@ -97,12 +100,12 @@ export default {
97
100
  classes += this.invalid ? ' border border-alarm p-2' : ' border border-dropdownSelect p-2';
98
101
  }
99
102
 
100
- if (this.centerInput) classes += ' text-center';
101
-
102
- classes += sizeClasses[this.size] || '';
103
-
104
- return classes;
105
- }
103
+ if (this.centerInput) classes += ' text-center';
104
+
105
+ classes += sizeClasses[this.size] || '';
106
+
107
+ return classes;
108
+ }
106
109
  },
107
110
  watch: {
108
111
  value(newValue) {
@@ -117,7 +120,9 @@ export default {
117
120
  sanitizedValue = sanitizedValue.replace(/\D/g, '');
118
121
  }
119
122
  if (this.inputType === 'text') {
120
- this.allowPercent ? sanitizedValue = sanitizedValue.replace(/[\\'"=*<>|#$^(){}\[\]]/g, '') : sanitizedValue = sanitizedValue.replace(/[\\'"=*<>|#$%^(){}\[\]]/g, '');
123
+ this.allowPercent
124
+ ? (sanitizedValue = sanitizedValue.replace(/[\\'"=*<>|#$^(){}\[\]]/g, ''))
125
+ : (sanitizedValue = sanitizedValue.replace(/[\\'"=*<>|#$%^(){}\[\]]/g, ''));
121
126
  }
122
127
 
123
128
  this.internalValue = sanitizedValue;
@@ -1,31 +1,31 @@
1
1
  import BaseRadioGroup from './BaseRadioGroup.vue';
2
2
 
3
3
  export default {
4
- title: 'Atoms/BaseRadioGroup',
5
- component: BaseRadioGroup,
6
- tags: ['autodocs'],
7
- argTypes: {
8
- items: {
9
- control: {
10
- type: 'object',
11
- },
12
- }
13
- },
4
+ title: 'Atoms/BaseRadioGroup',
5
+ component: BaseRadioGroup,
6
+ tags: ['autodocs'],
7
+ argTypes: {
8
+ items: {
9
+ control: {
10
+ type: 'object'
11
+ }
12
+ }
13
+ }
14
14
  };
15
15
 
16
- const Template = (args) => ({
17
- components: { BaseRadioGroup },
18
- setup() {
19
- return { args };
20
- },
21
- template: '<BaseRadioGroup v-bind="args" />',
16
+ const Template = args => ({
17
+ components: { BaseRadioGroup },
18
+ setup() {
19
+ return { args };
20
+ },
21
+ template: '<BaseRadioGroup v-bind="args" />'
22
22
  });
23
23
 
24
24
  export const Default = Template.bind({});
25
25
  Default.args = {
26
- items: [
27
- { label: 'Option 1', value: 'opt1', description: 'Description for Item1' },
28
- { label: 'Option 2', value: 'opt2', description: 'Description for Item2' },
29
- { label: 'Option 2', value: 'opt2', description: 'Description for Item3' },
30
- ]
26
+ items: [
27
+ { label: 'Option 1', value: 'opt1', description: 'Description for Item1' },
28
+ { label: 'Option 2', value: 'opt2', description: 'Description for Item2' },
29
+ { label: 'Option 2', value: 'opt2', description: 'Description for Item3' }
30
+ ]
31
31
  };
@@ -3,45 +3,45 @@ import { mount } from '@vue/test-utils';
3
3
  import BaseRadioGroup from './BaseRadioGroup.vue';
4
4
 
5
5
  const items = [
6
- { label: 'Option 1', description: 'Description 1', value: '1' },
7
- { label: 'Option 2', description: 'Description 2', value: '2' },
8
- { label: 'Option 3', description: 'Description 3', value: '3' },
9
- // Add more items as needed
6
+ { label: 'Option 1', description: 'Description 1', value: '1' },
7
+ { label: 'Option 2', description: 'Description 2', value: '2' },
8
+ { label: 'Option 3', description: 'Description 3', value: '3' }
9
+ // Add more items as needed
10
10
  ];
11
11
 
12
12
  describe('BaseRadioGroup', () => {
13
- it('renders correct number of items', () => {
14
- const wrapper = mount(BaseRadioGroup, {
15
- props: { items }
16
- });
17
- expect(wrapper.findAll('[role="radio"]').length).toBe(items.length);
13
+ it('renders correct number of items', () => {
14
+ const wrapper = mount(BaseRadioGroup, {
15
+ props: { items }
18
16
  });
17
+ expect(wrapper.findAll('[role="radio"]').length).toBe(items.length);
18
+ });
19
19
 
20
- it('applies correct classes based on selectedIndex and invalid prop', async () => {
21
- const wrapper = mount(BaseRadioGroup, {
22
- props: { items, invalid: true }
23
- });
24
- await wrapper.vm.selectItem(0);
25
- expect(wrapper.findAll('.bg-tertiary').length).toBe(1);
26
- expect(wrapper.find('.border-alarm').exists()).toBeTruthy();
20
+ it('applies correct classes based on selectedIndex and invalid prop', async () => {
21
+ const wrapper = mount(BaseRadioGroup, {
22
+ props: { items, invalid: true }
27
23
  });
24
+ await wrapper.vm.selectItem(0);
25
+ expect(wrapper.findAll('.bg-tertiary').length).toBe(1);
26
+ expect(wrapper.find('.border-alarm').exists()).toBeTruthy();
27
+ });
28
28
 
29
- it('updates selectedIndex and emits event on item click', async () => {
30
- const wrapper = mount(BaseRadioGroup, {
31
- props: { items }
32
- });
33
- await wrapper.findAll('[role="radio"]')[0].trigger('click');
34
-
35
- expect(wrapper.vm.selectedIndex).toBe(0);
36
- expect(wrapper.emitted('update:value')[0]).toEqual([items[0].value]);
29
+ it('updates selectedIndex and emits event on item click', async () => {
30
+ const wrapper = mount(BaseRadioGroup, {
31
+ props: { items }
37
32
  });
33
+ await wrapper.findAll('[role="radio"]')[0].trigger('click');
34
+
35
+ expect(wrapper.vm.selectedIndex).toBe(0);
36
+ expect(wrapper.emitted('update:value')[0]).toEqual([items[0].value]);
37
+ });
38
38
 
39
- it('handles keyboard interaction correctly', async () => {
40
- const wrapper = mount(BaseRadioGroup, {
41
- props: { items }
42
- });
43
- await wrapper.findAll('[role="radio"]')[0].trigger('keydown.enter');
44
- expect(wrapper.vm.selectedIndex).toBe(0);
45
- expect(wrapper.emitted('update:value')[0]).toEqual([items[0].value]);
39
+ it('handles keyboard interaction correctly', async () => {
40
+ const wrapper = mount(BaseRadioGroup, {
41
+ props: { items }
46
42
  });
43
+ await wrapper.findAll('[role="radio"]')[0].trigger('keydown.enter');
44
+ expect(wrapper.vm.selectedIndex).toBe(0);
45
+ expect(wrapper.emitted('update:value')[0]).toEqual([items[0].value]);
46
+ });
47
47
  });
@@ -1,20 +1,26 @@
1
1
  <template>
2
2
  <div class="text-xl" role="radiogroup">
3
3
  <div
4
- class="flex flex-row p-4 text-quaternary rounded-lg mb-2 shadow border hover:bg-tertiary"
5
- v-for="(item, index) in items"
6
- :key="index"
7
- :class="[selectedIndex === index ? ' bg-tertiary' : ' bg-white', invalid ? ' border-alarm' : ' border-dropdownSelect']"
8
- @click="selectItem(index)"
9
- role="radio"
10
- :aria-checked="selectedIndex === index ? 'true' : 'false'"
11
- tabindex="0"
12
- @keydown.enter.prevent="selectItem(index)"
4
+ class="flex flex-row p-4 text-quaternary rounded-lg mb-2 shadow border hover:bg-tertiary"
5
+ v-for="(item, index) in items"
6
+ :key="index"
7
+ :class="[
8
+ selectedIndex === index ? ' bg-tertiary' : ' bg-white',
9
+ invalid ? ' border-alarm' : ' border-dropdownSelect'
10
+ ]"
11
+ @click="selectItem(index)"
12
+ role="radio"
13
+ :aria-checked="selectedIndex === index ? 'true' : 'false'"
14
+ tabindex="0"
15
+ @keydown.enter.prevent="selectItem(index)"
13
16
  >
14
- <i :class="[selectedIndex === index ? 'fa-circle-dot text-quaternary ' : 'fa-circle ' ]" class="fa-regular pr-4 pt-2"></i>
17
+ <i
18
+ :class="[selectedIndex === index ? 'fa-circle-dot text-quaternary ' : 'fa-circle ']"
19
+ class="fa-regular pr-4 pt-2"
20
+ ></i>
15
21
  <div class="flex flex-col">
16
- <p :class="[selectedIndex === index ? 'text-quaternary ' : '' ]" class="font-bold text-sm">{{ item.label }}</p>
17
- <p :class="[selectedIndex === index ? 'text-quaternary ' : '' ]" class="text-sm">{{ item.description }}</p>
22
+ <p :class="[selectedIndex === index ? 'text-quaternary ' : '']" class="font-bold text-sm">{{ item.label }}</p>
23
+ <p :class="[selectedIndex === index ? 'text-quaternary ' : '']" class="text-sm">{{ item.description }}</p>
18
24
  </div>
19
25
  </div>
20
26
  </div>
@@ -27,15 +33,15 @@ export default {
27
33
  props: {
28
34
  invalid: {
29
35
  type: Boolean,
30
- default: false,
36
+ default: false
31
37
  },
32
38
  items: {
33
39
  type: Array,
34
- required: true,
40
+ required: true
35
41
  },
36
42
  value: {
37
43
  type: String,
38
- required: false,
44
+ required: false
39
45
  }
40
46
  },
41
47
  data() {
@@ -52,8 +58,7 @@ export default {
52
58
  selectItem(index) {
53
59
  this.selectedIndex = index;
54
60
  this.$emit('update:value', this.items[index].value);
55
- },
56
- },
61
+ }
62
+ }
57
63
  };
58
64
  </script>
59
-
@@ -1,29 +1,29 @@
1
1
  import BaseTag from './BaseTag.vue';
2
2
 
3
3
  export default {
4
- title: 'Atoms/BaseTag',
5
- component: BaseTag,
6
- tags: ['autodocs'],
7
- argTypes: {
8
- label: {
9
- control: {
10
- type: 'text',
11
- defaultValue: 'Default Label'
12
- }
13
- },
14
- backgroundColor: {
15
- control: {
16
- type: 'select'
17
- },
18
- options: ['primary', 'secondary', 'tertiary', 'neutral', 'bright'],
19
- defaultValue: 'primary'
20
- }
4
+ title: 'Atoms/BaseTag',
5
+ component: BaseTag,
6
+ tags: ['autodocs'],
7
+ argTypes: {
8
+ label: {
9
+ control: {
10
+ type: 'text',
11
+ defaultValue: 'Default Label'
12
+ }
13
+ },
14
+ backgroundColor: {
15
+ control: {
16
+ type: 'select'
17
+ },
18
+ options: ['primary', 'secondary', 'tertiary', 'neutral', 'bright'],
19
+ defaultValue: 'primary'
21
20
  }
21
+ }
22
22
  };
23
23
 
24
24
  export const Basic = {
25
- args: {
26
- label: 'default tag',
27
- backgroundColor: 'primary'
28
- }
25
+ args: {
26
+ label: 'default tag',
27
+ backgroundColor: 'primary'
28
+ }
29
29
  };
@@ -1,42 +1,38 @@
1
1
  import BaseTag from './BaseTag.vue';
2
- import { mount } from "@vue/test-utils";
3
- import { describe, expect, test, it } from "vitest";
2
+ import { mount } from '@vue/test-utils';
3
+ import { describe, expect, test, it } from 'vitest';
4
4
 
5
5
  describe('base-tag.vue', () => {
6
-
7
- it('renders with default classes and primary background color', () => {
8
- const wrapper = mount(BaseTag, {
9
- props: { label: 'Test Tag' }
10
- });
11
- const tagElement = wrapper.find('div');
12
-
13
- expect(tagElement.classes()).toContain('cursor-pointer');
14
- expect(tagElement.classes()).toContain('bg-primary');
15
- expect(tagElement.text()).toBe('Test Tag');
6
+ it('renders with default classes and primary background color', () => {
7
+ const wrapper = mount(BaseTag, {
8
+ props: { label: 'Test Tag' }
16
9
  });
10
+ const tagElement = wrapper.find('div');
17
11
 
18
- it('renders with specified background color classes', () => {
19
- const backgrounds = ['primary', 'secondary', 'tertiary', 'neutral', 'bright'];
20
-
21
- backgrounds.forEach(async (bg) => {
22
- const wrapper = mount(BaseTag, {
23
- props: { label: 'Test Tag', backgroundColor: bg }
24
- });
25
- const tagElement = wrapper.find('div');
12
+ expect(tagElement.classes()).toContain('cursor-pointer');
13
+ expect(tagElement.classes()).toContain('bg-primary');
14
+ expect(tagElement.text()).toBe('Test Tag');
15
+ });
26
16
 
27
- expect(tagElement.classes()).toContain(`bg-${bg}`);
28
- });
29
- });
17
+ it('renders with specified background color classes', () => {
18
+ const backgrounds = ['primary', 'secondary', 'tertiary', 'neutral', 'bright'];
30
19
 
31
- it('renders with primary background color for unknown values', () => {
32
- const wrapper = mount(BaseTag, {
33
- props: { label: 'Test Tag', backgroundColor: 'unknown' }
34
- });
35
- const tagElement = wrapper.find('div');
20
+ backgrounds.forEach(async bg => {
21
+ const wrapper = mount(BaseTag, {
22
+ props: { label: 'Test Tag', backgroundColor: bg }
23
+ });
24
+ const tagElement = wrapper.find('div');
36
25
 
37
- expect(tagElement.classes()).toContain('bg-primary');
26
+ expect(tagElement.classes()).toContain(`bg-${bg}`);
38
27
  });
28
+ });
39
29
 
30
+ it('renders with primary background color for unknown values', () => {
31
+ const wrapper = mount(BaseTag, {
32
+ props: { label: 'Test Tag', backgroundColor: 'unknown' }
33
+ });
34
+ const tagElement = wrapper.find('div');
40
35
 
41
-
36
+ expect(tagElement.classes()).toContain('bg-primary');
37
+ });
42
38
  });
@@ -3,17 +3,17 @@
3
3
  </template>
4
4
 
5
5
  <script>
6
- import { computed, reactive } from 'vue';
7
-
8
- const backgroundColorClasses = {
9
- primary: ' bg-primary',
10
- secondary: ' bg-secondary',
11
- tertiary: ' bg-tertiary',
12
- neutral: ' bg-neutral',
13
- bright: ' bg-bright'
14
- };
15
-
16
- export default {
6
+ import { computed } from 'vue';
7
+
8
+ const backgroundColorClasses = {
9
+ primary: ' bg-primary',
10
+ secondary: ' bg-secondary',
11
+ tertiary: ' bg-tertiary',
12
+ neutral: ' bg-neutral',
13
+ bright: ' bg-bright'
14
+ };
15
+
16
+ export default {
17
17
  name: 'base-tag',
18
18
 
19
19
  props: {
@@ -30,14 +30,13 @@ export default {
30
30
  },
31
31
 
32
32
  setup(props) {
33
- props = reactive(props);
34
-
35
33
  return {
36
- classes: computed(() => {
37
- const baseClasses = 'cursor-pointer inline-block py-1 px-3 my-2 ml-3 text-xs font-normal rounded-full text-neutral';
38
- return `${baseClasses}${backgroundColorClasses[props.backgroundColor] || backgroundColorClasses.primary}`;
39
- })
40
- };
41
- }
34
+ classes: computed(() => {
35
+ const baseClasses =
36
+ 'cursor-pointer inline-block py-1 px-3 my-2 ml-3 text-xs font-normal rounded-full text-neutral';
37
+ return `${baseClasses}${backgroundColorClasses[props.backgroundColor] || backgroundColorClasses.primary}`;
38
+ })
39
+ };
40
+ }
42
41
  };
43
42
  </script>