@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,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>