@ncds/ui-admin 1.8.27 → 1.8.28-alpha.1

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 (528) hide show
  1. package/dist/cjs/assets/scripts/notification/const/icons.js +1 -2
  2. package/dist/cjs/assets/scripts/notification/const/index.js +0 -30
  3. package/dist/cjs/assets/scripts/notification/const/sizes.js +5 -5
  4. package/dist/cjs/assets/scripts/notification/index.js +0 -7
  5. package/dist/cjs/assets/scripts/shared/ButtonCloseX.js +5 -4
  6. package/dist/cjs/assets/scripts/tooltip/const/classNames.js +29 -0
  7. package/dist/cjs/assets/scripts/tooltip/const/constants.js +58 -0
  8. package/dist/cjs/assets/scripts/tooltip/const/icons.js +15 -0
  9. package/dist/cjs/assets/scripts/tooltip/const/index.js +117 -0
  10. package/dist/cjs/assets/scripts/tooltip/const/templates.js +67 -0
  11. package/dist/cjs/assets/scripts/tooltip/const/types.js +5 -0
  12. package/dist/cjs/assets/scripts/utils/sanitize.js +0 -13
  13. package/dist/cjs/src/__tests__/helpers/dom.js +14 -0
  14. package/dist/cjs/src/__tests__/helpers/fileInput.js +92 -0
  15. package/dist/cjs/src/__tests__/helpers/fixedToday.js +17 -0
  16. package/dist/cjs/src/__tests__/helpers/matchMedia.js +50 -0
  17. package/dist/cjs/src/__tests__/helpers/rect.js +25 -0
  18. package/dist/cjs/src/components/action/button/__tests__/Button.test.js +260 -0
  19. package/dist/cjs/src/components/action/button-group/__tests__/ButtonGroup.test.js +267 -0
  20. package/dist/cjs/src/components/data-display/data-grid/__tests__/DataGrid.test.js +350 -0
  21. package/dist/cjs/src/components/data-display/table/__tests__/Table.dnd.dragCell.test.js +320 -0
  22. package/dist/cjs/src/components/data-display/table/__tests__/Table.dnd.test.js +313 -0
  23. package/dist/cjs/src/components/data-display/table/__tests__/Table.scroll.test.js +194 -0
  24. package/dist/cjs/src/components/data-display/table/__tests__/Table.test.js +382 -0
  25. package/dist/cjs/src/components/data-display/table/__tests__/dnd-context.test.js +61 -0
  26. package/dist/cjs/src/components/data-display/table/__tests__/dnd-preview.test.js +230 -0
  27. package/dist/cjs/src/components/data-display/table/__tests__/tableDndTestUtils.js +266 -0
  28. package/dist/cjs/src/components/data-display/table/__tests__/tableTestUtils.js +48 -0
  29. package/dist/cjs/src/components/data-display/table/__tests__/useTableScrollbars.ownership.test.js +362 -0
  30. package/dist/cjs/src/components/data-display/table/useTableScrollbars.js +0 -24
  31. package/dist/cjs/src/components/feedback-and-status/badge/Badge.js +1 -1
  32. package/dist/cjs/src/components/feedback-and-status/badge/__tests__/Badge.test.js +189 -0
  33. package/dist/cjs/src/components/feedback-and-status/badge-group/__tests__/BadgeGroup.test.js +119 -0
  34. package/dist/cjs/src/components/feedback-and-status/carousel-arrow/__tests__/CarouselArrow.test.js +94 -0
  35. package/dist/cjs/src/components/feedback-and-status/carousel-number-group/__tests__/CarouselNumberGroup.test.js +64 -0
  36. package/dist/cjs/src/components/feedback-and-status/empty-state/__tests__/EmptyState.test.js +126 -0
  37. package/dist/cjs/src/components/feedback-and-status/progress-bar/__tests__/ProgressBar.test.js +277 -0
  38. package/dist/cjs/src/components/feedback-and-status/progress-bar/__tests__/useProgressBar.test.js +249 -0
  39. package/dist/cjs/src/components/feedback-and-status/progress-bar/__tests__/utils.test.js +22 -0
  40. package/dist/cjs/src/components/feedback-and-status/progress-circle/__tests__/ProgressCircle.test.js +102 -0
  41. package/dist/cjs/src/components/feedback-and-status/spinner/__tests__/Spinner.test.js +76 -0
  42. package/dist/cjs/src/components/feedback-and-status/tag/__tests__/Tag.test.js +604 -0
  43. package/dist/cjs/src/components/forms-and-input/checkbox/__tests__/Checkbox.test.js +213 -0
  44. package/dist/cjs/src/components/forms-and-input/combo-box/ComboBox.js +2 -2
  45. package/dist/cjs/src/components/forms-and-input/combo-box/__tests__/ComboBox.interaction.test.js +442 -0
  46. package/dist/cjs/src/components/forms-and-input/combo-box/__tests__/ComboBox.register.test.js +153 -0
  47. package/dist/cjs/src/components/forms-and-input/combo-box/__tests__/comboBoxTestUtils.js +92 -0
  48. package/dist/cjs/src/components/forms-and-input/date-picker/__tests__/DatePicker.input.test.js +546 -0
  49. package/dist/cjs/src/components/forms-and-input/date-picker/__tests__/DatePicker.position.test.js +550 -0
  50. package/dist/cjs/src/components/forms-and-input/date-picker/__tests__/utils.test.js +34 -0
  51. package/dist/cjs/src/components/forms-and-input/file-input/__tests__/FileInput.select.test.js +266 -0
  52. package/dist/cjs/src/components/forms-and-input/image-file-input/__tests__/ImageFileInput.select.test.js +416 -0
  53. package/dist/cjs/src/components/forms-and-input/input-base/__tests__/InputBase.slots.test.js +236 -0
  54. package/dist/cjs/src/components/forms-and-input/number-input/__tests__/NumberInput.test.js +570 -0
  55. package/dist/cjs/src/components/forms-and-input/password-input/__tests__/PasswordInput.toggle.test.js +113 -0
  56. package/dist/cjs/src/components/forms-and-input/radio/__tests__/Radio.test.js +57 -0
  57. package/dist/cjs/src/components/forms-and-input/range-date-picker/__tests__/RangeDatePicker.test.js +275 -0
  58. package/dist/cjs/src/components/forms-and-input/range-date-picker-with-buttons/__tests__/RangeDatePickerWithButtons.test.js +235 -2
  59. package/dist/cjs/src/components/forms-and-input/select/__tests__/Select.test.js +275 -0
  60. package/dist/cjs/src/components/forms-and-input/select-box/SelectBox.js +2 -2
  61. package/dist/cjs/src/components/forms-and-input/select-box/__tests__/SelectBox.portal.test.js +371 -0
  62. package/dist/cjs/src/components/forms-and-input/select-box/__tests__/SelectBox.test.js +1335 -0
  63. package/dist/cjs/src/components/forms-and-input/slider/__tests__/Slider.test.js +390 -0
  64. package/dist/cjs/src/components/forms-and-input/switch/__tests__/Switch.test.js +317 -0
  65. package/dist/cjs/src/components/forms-and-input/textarea/__tests__/Textarea.test.js +255 -0
  66. package/dist/cjs/src/components/forms-and-input/textarea/__tests__/Textarea.unmount.test.js +158 -0
  67. package/dist/cjs/src/components/forms-and-input/toggle/__tests__/Toggle.test.js +138 -0
  68. package/dist/cjs/src/components/image-and-icons/featured-icon/__tests__/FeaturedIcon.test.js +67 -0
  69. package/dist/cjs/src/components/layout/block-container/__tests__/BlockContainer.test.js +59 -0
  70. package/dist/cjs/src/components/layout/block-header/__tests__/BlockHeader.test.js +169 -0
  71. package/dist/cjs/src/components/layout/block-header/__tests__/SubTitle.test.js +77 -0
  72. package/dist/cjs/src/components/layout/divider/__tests__/Divider.test.js +65 -0
  73. package/dist/cjs/src/components/layout/ncua-scope/__tests__/NcuaScope.test.js +146 -0
  74. package/dist/cjs/src/components/layout/page-title/__tests__/PageTitle.test.js +164 -0
  75. package/dist/cjs/src/components/layout/page-title/__tests__/pageTitleStyle.test.js +94 -0
  76. package/dist/cjs/src/components/navigation/context-tab/__tests__/ContextTab.test.js +616 -0
  77. package/dist/cjs/src/components/navigation/context-tab/__tests__/useContextTabScroll.test.js +592 -0
  78. package/dist/cjs/src/components/navigation/horizontal-tab/__tests__/HorizontalTab.test.js +211 -0
  79. package/dist/cjs/src/components/navigation/pagination/__tests__/Pagination.navigation.test.js +285 -0
  80. package/dist/cjs/src/components/navigation/vertical-tab/__tests__/VerticalTab.test.js +255 -0
  81. package/dist/cjs/src/components/overlays/dropdown/__tests__/Dropdown.dnd.test.js +558 -0
  82. package/dist/cjs/src/components/overlays/dropdown/__tests__/Dropdown.test.js +1020 -0
  83. package/dist/cjs/src/components/overlays/dropdown/__tests__/dropdownTestUtils.js +24 -0
  84. package/dist/cjs/src/components/overlays/dropdown/__tests__/utils.test.js +56 -0
  85. package/dist/cjs/src/components/overlays/modal/__tests__/Modal.test.js +426 -0
  86. package/dist/cjs/src/components/overlays/notification/__tests__/FloatingNotification.test.js +284 -0
  87. package/dist/cjs/src/components/overlays/notification/__tests__/MessageNotification.test.js +12 -0
  88. package/dist/cjs/src/components/overlays/postcode-search-modal/PostcodeSearchModalTip.js +2 -2
  89. package/dist/cjs/src/components/overlays/postcode-search-modal/__tests__/PostcodeSearchModal.viewport.test.js +141 -0
  90. package/dist/cjs/src/components/overlays/tooltip/__tests__/Tooltip.test.js +829 -0
  91. package/dist/cjs/src/components/tab/__tests__/TabButton.test.js +252 -0
  92. package/dist/cjs/src/generated/scoped-css.js +1 -1
  93. package/dist/cjs/src/hooks/__tests__/useCallbackRef.test.js +152 -0
  94. package/dist/cjs/src/hooks/__tests__/useMediaQuery.test.js +119 -0
  95. package/dist/cjs/src/hooks/__tests__/usePortalState.ssr.test.js +25 -0
  96. package/dist/cjs/src/hooks/dropdown/__tests__/dropdownHooks.test.js +168 -0
  97. package/dist/cjs/src/types/component-meta.js +0 -4
  98. package/dist/cjs/src/utils/__tests__/date-picker.test.js +105 -0
  99. package/dist/cjs/src/utils/dropdown/__tests__/dropdownUtils.test.js +24 -0
  100. package/dist/cjs/src/utils/dropdown/__tests__/multiSelect.test.js +49 -0
  101. package/dist/cjs/src/utils/dropdown/multiSelect.js +1 -6
  102. package/dist/cjs/src/utils/portal-position/__tests__/portalPosition.nullAnchor.test.js +67 -0
  103. package/dist/cjs/vitest.config.js +22 -5
  104. package/dist/esm/assets/scripts/notification/const/icons.js +0 -1
  105. package/dist/esm/assets/scripts/notification/const/index.js +2 -2
  106. package/dist/esm/assets/scripts/notification/const/sizes.js +4 -4
  107. package/dist/esm/assets/scripts/notification/index.js +1 -1
  108. package/dist/esm/assets/scripts/shared/ButtonCloseX.js +6 -3
  109. package/dist/esm/assets/scripts/tooltip/const/classNames.js +23 -0
  110. package/dist/esm/assets/scripts/tooltip/const/constants.js +52 -0
  111. package/dist/esm/assets/scripts/tooltip/const/icons.js +9 -0
  112. package/dist/esm/assets/scripts/tooltip/const/index.js +5 -0
  113. package/dist/esm/assets/scripts/tooltip/const/templates.js +60 -0
  114. package/dist/esm/assets/scripts/tooltip/const/types.js +1 -0
  115. package/dist/esm/assets/scripts/utils/sanitize.js +0 -12
  116. package/dist/esm/src/__tests__/helpers/dom.js +8 -0
  117. package/dist/esm/src/__tests__/helpers/fileInput.js +78 -0
  118. package/dist/esm/src/__tests__/helpers/fixedToday.js +10 -0
  119. package/dist/esm/src/__tests__/helpers/matchMedia.js +44 -0
  120. package/dist/esm/src/__tests__/helpers/rect.js +18 -0
  121. package/dist/esm/src/components/action/button/__tests__/Button.test.js +257 -0
  122. package/dist/esm/src/components/action/button-group/__tests__/ButtonGroup.test.js +264 -0
  123. package/dist/esm/src/components/data-display/data-grid/__tests__/DataGrid.test.js +347 -0
  124. package/dist/esm/src/components/data-display/table/__tests__/Table.dnd.dragCell.test.js +317 -0
  125. package/dist/esm/src/components/data-display/table/__tests__/Table.dnd.test.js +310 -0
  126. package/dist/esm/src/components/data-display/table/__tests__/Table.scroll.test.js +191 -0
  127. package/dist/esm/src/components/data-display/table/__tests__/Table.test.js +379 -0
  128. package/dist/esm/src/components/data-display/table/__tests__/dnd-context.test.js +58 -0
  129. package/dist/esm/src/components/data-display/table/__tests__/dnd-preview.test.js +227 -0
  130. package/dist/esm/src/components/data-display/table/__tests__/tableDndTestUtils.js +240 -0
  131. package/dist/esm/src/components/data-display/table/__tests__/tableTestUtils.js +40 -0
  132. package/dist/esm/src/components/data-display/table/__tests__/useTableScrollbars.ownership.test.js +359 -0
  133. package/dist/esm/src/components/data-display/table/useTableScrollbars.js +1 -1
  134. package/dist/esm/src/components/feedback-and-status/badge/Badge.js +1 -1
  135. package/dist/esm/src/components/feedback-and-status/badge/__tests__/Badge.test.js +186 -0
  136. package/dist/esm/src/components/feedback-and-status/badge-group/__tests__/BadgeGroup.test.js +116 -0
  137. package/dist/esm/src/components/feedback-and-status/carousel-arrow/__tests__/CarouselArrow.test.js +91 -0
  138. package/dist/esm/src/components/feedback-and-status/carousel-number-group/__tests__/CarouselNumberGroup.test.js +61 -0
  139. package/dist/esm/src/components/feedback-and-status/empty-state/__tests__/EmptyState.test.js +123 -0
  140. package/dist/esm/src/components/feedback-and-status/progress-bar/__tests__/ProgressBar.test.js +274 -0
  141. package/dist/esm/src/components/feedback-and-status/progress-bar/__tests__/useProgressBar.test.js +246 -0
  142. package/dist/esm/src/components/feedback-and-status/progress-bar/__tests__/utils.test.js +19 -0
  143. package/dist/esm/src/components/feedback-and-status/progress-circle/__tests__/ProgressCircle.test.js +99 -0
  144. package/dist/esm/src/components/feedback-and-status/spinner/__tests__/Spinner.test.js +73 -0
  145. package/dist/esm/src/components/feedback-and-status/tag/__tests__/Tag.test.js +601 -0
  146. package/dist/esm/src/components/forms-and-input/checkbox/__tests__/Checkbox.test.js +210 -0
  147. package/dist/esm/src/components/forms-and-input/combo-box/ComboBox.js +1 -1
  148. package/dist/esm/src/components/forms-and-input/combo-box/__tests__/ComboBox.interaction.test.js +439 -0
  149. package/dist/esm/src/components/forms-and-input/combo-box/__tests__/ComboBox.register.test.js +151 -0
  150. package/dist/esm/src/components/forms-and-input/combo-box/__tests__/comboBoxTestUtils.js +77 -0
  151. package/dist/esm/src/components/forms-and-input/date-picker/__tests__/DatePicker.input.test.js +544 -0
  152. package/dist/esm/src/components/forms-and-input/date-picker/__tests__/DatePicker.position.test.js +546 -0
  153. package/dist/esm/src/components/forms-and-input/date-picker/__tests__/utils.test.js +31 -0
  154. package/dist/esm/src/components/forms-and-input/file-input/__tests__/FileInput.select.test.js +263 -0
  155. package/dist/esm/src/components/forms-and-input/image-file-input/__tests__/ImageFileInput.select.test.js +413 -0
  156. package/dist/esm/src/components/forms-and-input/input-base/__tests__/InputBase.slots.test.js +233 -0
  157. package/dist/esm/src/components/forms-and-input/number-input/__tests__/NumberInput.test.js +567 -0
  158. package/dist/esm/src/components/forms-and-input/password-input/__tests__/PasswordInput.toggle.test.js +110 -0
  159. package/dist/esm/src/components/forms-and-input/radio/__tests__/Radio.test.js +54 -0
  160. package/dist/esm/src/components/forms-and-input/range-date-picker/__tests__/RangeDatePicker.test.js +275 -0
  161. package/dist/esm/src/components/forms-and-input/range-date-picker-with-buttons/__tests__/RangeDatePickerWithButtons.test.js +235 -1
  162. package/dist/esm/src/components/forms-and-input/select/__tests__/Select.test.js +272 -0
  163. package/dist/esm/src/components/forms-and-input/select-box/SelectBox.js +1 -1
  164. package/dist/esm/src/components/forms-and-input/select-box/__tests__/SelectBox.portal.test.js +368 -0
  165. package/dist/esm/src/components/forms-and-input/select-box/__tests__/SelectBox.test.js +1332 -0
  166. package/dist/esm/src/components/forms-and-input/slider/__tests__/Slider.test.js +387 -0
  167. package/dist/esm/src/components/forms-and-input/switch/__tests__/Switch.test.js +314 -0
  168. package/dist/esm/src/components/forms-and-input/textarea/__tests__/Textarea.test.js +252 -0
  169. package/dist/esm/src/components/forms-and-input/textarea/__tests__/Textarea.unmount.test.js +155 -0
  170. package/dist/esm/src/components/forms-and-input/toggle/__tests__/Toggle.test.js +135 -0
  171. package/dist/esm/src/components/image-and-icons/featured-icon/__tests__/FeaturedIcon.test.js +64 -0
  172. package/dist/esm/src/components/layout/block-container/__tests__/BlockContainer.test.js +56 -0
  173. package/dist/esm/src/components/layout/block-header/__tests__/BlockHeader.test.js +166 -0
  174. package/dist/esm/src/components/layout/block-header/__tests__/SubTitle.test.js +74 -0
  175. package/dist/esm/src/components/layout/divider/__tests__/Divider.test.js +62 -0
  176. package/dist/esm/src/components/layout/ncua-scope/__tests__/NcuaScope.test.js +144 -0
  177. package/dist/esm/src/components/layout/page-title/__tests__/PageTitle.test.js +161 -0
  178. package/dist/esm/src/components/layout/page-title/__tests__/pageTitleStyle.test.js +91 -0
  179. package/dist/esm/src/components/navigation/context-tab/__tests__/ContextTab.test.js +613 -0
  180. package/dist/esm/src/components/navigation/context-tab/__tests__/useContextTabScroll.test.js +589 -0
  181. package/dist/esm/src/components/navigation/horizontal-tab/__tests__/HorizontalTab.test.js +209 -0
  182. package/dist/esm/src/components/navigation/pagination/__tests__/Pagination.navigation.test.js +282 -0
  183. package/dist/esm/src/components/navigation/vertical-tab/__tests__/VerticalTab.test.js +252 -0
  184. package/dist/esm/src/components/overlays/dropdown/__tests__/Dropdown.dnd.test.js +556 -0
  185. package/dist/esm/src/components/overlays/dropdown/__tests__/Dropdown.test.js +1017 -0
  186. package/dist/esm/src/components/overlays/dropdown/__tests__/dropdownTestUtils.js +15 -0
  187. package/dist/esm/src/components/overlays/dropdown/__tests__/utils.test.js +57 -1
  188. package/dist/esm/src/components/overlays/modal/__tests__/Modal.test.js +423 -0
  189. package/dist/esm/src/components/overlays/notification/__tests__/FloatingNotification.test.js +281 -0
  190. package/dist/esm/src/components/overlays/notification/__tests__/MessageNotification.test.js +12 -0
  191. package/dist/esm/src/components/overlays/postcode-search-modal/PostcodeSearchModalTip.js +1 -1
  192. package/dist/esm/src/components/overlays/postcode-search-modal/__tests__/PostcodeSearchModal.viewport.test.js +139 -0
  193. package/dist/esm/src/components/overlays/tooltip/__tests__/Tooltip.test.js +826 -0
  194. package/dist/esm/src/components/tab/__tests__/TabButton.test.js +249 -0
  195. package/dist/esm/src/generated/scoped-css.js +1 -1
  196. package/dist/esm/src/hooks/__tests__/useCallbackRef.test.js +149 -0
  197. package/dist/esm/src/hooks/__tests__/useMediaQuery.test.js +116 -0
  198. package/dist/esm/src/hooks/__tests__/usePortalState.ssr.test.js +22 -0
  199. package/dist/esm/src/hooks/dropdown/__tests__/dropdownHooks.test.js +165 -0
  200. package/dist/esm/src/types/component-meta.js +0 -4
  201. package/dist/esm/src/utils/__tests__/date-picker.test.js +107 -2
  202. package/dist/esm/src/utils/dropdown/__tests__/dropdownUtils.test.js +24 -0
  203. package/dist/esm/src/utils/dropdown/__tests__/multiSelect.test.js +46 -0
  204. package/dist/esm/src/utils/dropdown/multiSelect.js +5 -5
  205. package/dist/esm/src/utils/portal-position/__tests__/portalPosition.nullAnchor.test.js +64 -0
  206. package/dist/esm/vitest.config.js +22 -5
  207. package/dist/temp/assets/scripts/notification/const/icons.d.ts +0 -7
  208. package/dist/temp/assets/scripts/notification/const/icons.js +0 -1
  209. package/dist/temp/assets/scripts/notification/const/index.d.ts +3 -3
  210. package/dist/temp/assets/scripts/notification/const/index.js +2 -2
  211. package/dist/temp/assets/scripts/notification/const/sizes.d.ts +2 -14
  212. package/dist/temp/assets/scripts/notification/const/sizes.js +4 -4
  213. package/dist/temp/assets/scripts/notification/const/types.d.ts +3 -2
  214. package/dist/temp/assets/scripts/notification/index.d.ts +1 -1
  215. package/dist/temp/assets/scripts/notification/index.js +1 -1
  216. package/dist/temp/assets/scripts/shared/ButtonCloseX.d.ts +0 -2
  217. package/dist/temp/assets/scripts/shared/ButtonCloseX.js +6 -3
  218. package/dist/temp/assets/scripts/table/scrollbar/const.d.ts +0 -1
  219. package/dist/temp/assets/scripts/tooltip/const/classNames.d.ts +17 -0
  220. package/dist/temp/assets/scripts/tooltip/const/classNames.js +23 -0
  221. package/dist/temp/assets/scripts/tooltip/const/constants.d.ts +33 -0
  222. package/dist/temp/assets/scripts/tooltip/const/constants.js +48 -0
  223. package/dist/temp/assets/scripts/tooltip/const/icons.d.ts +4 -0
  224. package/dist/temp/assets/scripts/tooltip/const/icons.js +9 -0
  225. package/dist/temp/assets/scripts/tooltip/const/index.d.ts +5 -0
  226. package/dist/temp/assets/scripts/tooltip/const/index.js +5 -0
  227. package/dist/temp/assets/scripts/tooltip/const/templates.d.ts +16 -0
  228. package/dist/temp/assets/scripts/tooltip/const/templates.js +60 -0
  229. package/dist/temp/assets/scripts/tooltip/const/types.d.ts +17 -0
  230. package/dist/temp/assets/scripts/tooltip/const/types.js +1 -0
  231. package/dist/temp/assets/scripts/utils/sanitize.d.ts +0 -6
  232. package/dist/temp/assets/scripts/utils/sanitize.js +0 -12
  233. package/dist/temp/src/__tests__/helpers/dom.d.ts +2 -0
  234. package/dist/temp/src/__tests__/helpers/dom.js +8 -0
  235. package/dist/temp/src/__tests__/helpers/fileInput.d.ts +27 -0
  236. package/dist/temp/src/__tests__/helpers/fileInput.js +70 -0
  237. package/dist/temp/src/__tests__/helpers/fixedToday.d.ts +4 -0
  238. package/dist/temp/src/__tests__/helpers/fixedToday.js +8 -0
  239. package/dist/temp/src/__tests__/helpers/matchMedia.d.ts +13 -0
  240. package/dist/temp/src/__tests__/helpers/matchMedia.js +42 -0
  241. package/dist/temp/src/__tests__/helpers/rect.d.ts +2 -0
  242. package/dist/temp/src/__tests__/helpers/rect.js +5 -0
  243. package/dist/temp/src/components/action/button/__tests__/Button.test.d.ts +1 -0
  244. package/dist/temp/src/components/action/button/__tests__/Button.test.js +180 -0
  245. package/dist/temp/src/components/action/button-group/__tests__/ButtonGroup.test.d.ts +1 -0
  246. package/dist/temp/src/components/action/button-group/__tests__/ButtonGroup.test.js +162 -0
  247. package/dist/temp/src/components/data-display/data-grid/__tests__/DataGrid.test.d.ts +1 -0
  248. package/dist/temp/src/components/data-display/data-grid/__tests__/DataGrid.test.js +291 -0
  249. package/dist/temp/src/components/data-display/table/__tests__/Table.dnd.dragCell.test.d.ts +1 -0
  250. package/dist/temp/src/components/data-display/table/__tests__/Table.dnd.dragCell.test.js +255 -0
  251. package/dist/temp/src/components/data-display/table/__tests__/Table.dnd.test.d.ts +1 -0
  252. package/dist/temp/src/components/data-display/table/__tests__/Table.dnd.test.js +240 -0
  253. package/dist/temp/src/components/data-display/table/__tests__/Table.scroll.test.d.ts +1 -0
  254. package/dist/temp/src/components/data-display/table/__tests__/Table.scroll.test.js +145 -0
  255. package/dist/temp/src/components/data-display/table/__tests__/Table.test.d.ts +1 -0
  256. package/dist/temp/src/components/data-display/table/__tests__/Table.test.js +295 -0
  257. package/dist/temp/src/components/data-display/table/__tests__/dnd-context.test.d.ts +1 -0
  258. package/dist/temp/src/components/data-display/table/__tests__/dnd-context.test.js +42 -0
  259. package/dist/temp/src/components/data-display/table/__tests__/dnd-preview.test.d.ts +1 -0
  260. package/dist/temp/src/components/data-display/table/__tests__/dnd-preview.test.js +226 -0
  261. package/dist/temp/src/components/data-display/table/__tests__/tableDndTestUtils.d.ts +76 -0
  262. package/dist/temp/src/components/data-display/table/__tests__/tableDndTestUtils.js +153 -0
  263. package/dist/temp/src/components/data-display/table/__tests__/tableTestUtils.d.ts +11 -0
  264. package/dist/temp/src/components/data-display/table/__tests__/tableTestUtils.js +40 -0
  265. package/dist/temp/src/components/data-display/table/__tests__/useTableScrollbars.ownership.test.d.ts +1 -0
  266. package/dist/temp/src/components/data-display/table/__tests__/useTableScrollbars.ownership.test.js +269 -0
  267. package/dist/temp/src/components/data-display/table/dnd-context.d.ts +1 -1
  268. package/dist/temp/src/components/data-display/table/useTableScrollbars.d.ts +2 -2
  269. package/dist/temp/src/components/data-display/table/useTableScrollbars.js +1 -1
  270. package/dist/temp/src/components/feedback-and-status/badge/Badge.d.ts +1 -1
  271. package/dist/temp/src/components/feedback-and-status/badge/Badge.js +1 -1
  272. package/dist/temp/src/components/feedback-and-status/badge/__tests__/Badge.test.d.ts +1 -0
  273. package/dist/temp/src/components/feedback-and-status/badge/__tests__/Badge.test.js +136 -0
  274. package/dist/temp/src/components/feedback-and-status/badge-group/__tests__/BadgeGroup.test.d.ts +1 -0
  275. package/dist/temp/src/components/feedback-and-status/badge-group/__tests__/BadgeGroup.test.js +103 -0
  276. package/dist/temp/src/components/feedback-and-status/carousel-arrow/__tests__/CarouselArrow.test.d.ts +1 -0
  277. package/dist/temp/src/components/feedback-and-status/carousel-arrow/__tests__/CarouselArrow.test.js +81 -0
  278. package/dist/temp/src/components/feedback-and-status/carousel-number-group/__tests__/CarouselNumberGroup.test.d.ts +1 -0
  279. package/dist/temp/src/components/feedback-and-status/carousel-number-group/__tests__/CarouselNumberGroup.test.js +53 -0
  280. package/dist/temp/src/components/feedback-and-status/empty-state/__tests__/EmptyState.test.d.ts +1 -0
  281. package/dist/temp/src/components/feedback-and-status/empty-state/__tests__/EmptyState.test.js +86 -0
  282. package/dist/temp/src/components/feedback-and-status/progress-bar/__tests__/ProgressBar.test.d.ts +1 -0
  283. package/dist/temp/src/components/feedback-and-status/progress-bar/__tests__/ProgressBar.test.js +221 -0
  284. package/dist/temp/src/components/feedback-and-status/progress-bar/__tests__/useProgressBar.test.d.ts +1 -0
  285. package/dist/temp/src/components/feedback-and-status/progress-bar/__tests__/useProgressBar.test.js +168 -0
  286. package/dist/temp/src/components/feedback-and-status/progress-bar/__tests__/utils.test.d.ts +1 -0
  287. package/dist/temp/src/components/feedback-and-status/progress-bar/__tests__/utils.test.js +35 -0
  288. package/dist/temp/src/components/feedback-and-status/progress-circle/__tests__/ProgressCircle.test.d.ts +1 -0
  289. package/dist/temp/src/components/feedback-and-status/progress-circle/__tests__/ProgressCircle.test.js +106 -0
  290. package/dist/temp/src/components/feedback-and-status/spinner/__tests__/Spinner.test.d.ts +1 -0
  291. package/dist/temp/src/components/feedback-and-status/spinner/__tests__/Spinner.test.js +73 -0
  292. package/dist/temp/src/components/feedback-and-status/tag/__tests__/Tag.test.d.ts +1 -0
  293. package/dist/temp/src/components/feedback-and-status/tag/__tests__/Tag.test.js +392 -0
  294. package/dist/temp/src/components/forms-and-input/checkbox/__tests__/Checkbox.test.d.ts +1 -0
  295. package/dist/temp/src/components/forms-and-input/checkbox/__tests__/Checkbox.test.js +180 -0
  296. package/dist/temp/src/components/forms-and-input/combo-box/ComboBox.d.ts +1 -2
  297. package/dist/temp/src/components/forms-and-input/combo-box/ComboBox.js +1 -1
  298. package/dist/temp/src/components/forms-and-input/combo-box/__tests__/ComboBox.interaction.test.d.ts +1 -0
  299. package/dist/temp/src/components/forms-and-input/combo-box/__tests__/ComboBox.interaction.test.js +295 -0
  300. package/dist/temp/src/components/forms-and-input/combo-box/__tests__/ComboBox.register.test.d.ts +1 -0
  301. package/dist/temp/src/components/forms-and-input/combo-box/__tests__/ComboBox.register.test.js +111 -0
  302. package/dist/temp/src/components/forms-and-input/combo-box/__tests__/comboBoxTestUtils.d.ts +22 -0
  303. package/dist/temp/src/components/forms-and-input/combo-box/__tests__/comboBoxTestUtils.js +69 -0
  304. package/dist/temp/src/components/forms-and-input/date-picker/__tests__/DatePicker.input.test.d.ts +1 -0
  305. package/dist/temp/src/components/forms-and-input/date-picker/__tests__/DatePicker.input.test.js +358 -0
  306. package/dist/temp/src/components/forms-and-input/date-picker/__tests__/DatePicker.position.test.d.ts +1 -0
  307. package/dist/temp/src/components/forms-and-input/date-picker/__tests__/DatePicker.position.test.js +361 -0
  308. package/dist/temp/src/components/forms-and-input/date-picker/__tests__/utils.test.d.ts +1 -0
  309. package/dist/temp/src/components/forms-and-input/date-picker/__tests__/utils.test.js +34 -0
  310. package/dist/temp/src/components/forms-and-input/file-input/__tests__/FileInput.select.test.d.ts +1 -0
  311. package/dist/temp/src/components/forms-and-input/file-input/__tests__/FileInput.select.test.js +206 -0
  312. package/dist/temp/src/components/forms-and-input/image-file-input/__tests__/ImageFileInput.select.test.d.ts +1 -0
  313. package/dist/temp/src/components/forms-and-input/image-file-input/__tests__/ImageFileInput.select.test.js +292 -0
  314. package/dist/temp/src/components/forms-and-input/input-base/__tests__/InputBase.slots.test.d.ts +1 -0
  315. package/dist/temp/src/components/forms-and-input/input-base/__tests__/InputBase.slots.test.js +177 -0
  316. package/dist/temp/src/components/forms-and-input/number-input/__tests__/NumberInput.test.d.ts +1 -0
  317. package/dist/temp/src/components/forms-and-input/number-input/__tests__/NumberInput.test.js +434 -0
  318. package/dist/temp/src/components/forms-and-input/password-input/__tests__/PasswordInput.toggle.test.d.ts +1 -0
  319. package/dist/temp/src/components/forms-and-input/password-input/__tests__/PasswordInput.toggle.test.js +88 -0
  320. package/dist/temp/src/components/forms-and-input/radio/__tests__/Radio.test.d.ts +1 -0
  321. package/dist/temp/src/components/forms-and-input/radio/__tests__/Radio.test.js +42 -0
  322. package/dist/temp/src/components/forms-and-input/range-date-picker/__tests__/RangeDatePicker.test.js +137 -0
  323. package/dist/temp/src/components/forms-and-input/range-date-picker-with-buttons/__tests__/RangeDatePickerWithButtons.test.js +201 -1
  324. package/dist/temp/src/components/forms-and-input/select/__tests__/Select.test.d.ts +1 -0
  325. package/dist/temp/src/components/forms-and-input/select/__tests__/Select.test.js +214 -0
  326. package/dist/temp/src/components/forms-and-input/select-box/SelectBox.d.ts +1 -2
  327. package/dist/temp/src/components/forms-and-input/select-box/SelectBox.js +1 -1
  328. package/dist/temp/src/components/forms-and-input/select-box/__tests__/SelectBox.portal.test.d.ts +1 -0
  329. package/dist/temp/src/components/forms-and-input/select-box/__tests__/SelectBox.portal.test.js +312 -0
  330. package/dist/temp/src/components/forms-and-input/select-box/__tests__/SelectBox.test.d.ts +1 -0
  331. package/dist/temp/src/components/forms-and-input/select-box/__tests__/SelectBox.test.js +991 -0
  332. package/dist/temp/src/components/forms-and-input/slider/__tests__/Slider.test.d.ts +1 -0
  333. package/dist/temp/src/components/forms-and-input/slider/__tests__/Slider.test.js +294 -0
  334. package/dist/temp/src/components/forms-and-input/switch/__tests__/Switch.test.d.ts +1 -0
  335. package/dist/temp/src/components/forms-and-input/switch/__tests__/Switch.test.js +234 -0
  336. package/dist/temp/src/components/forms-and-input/textarea/__tests__/Textarea.test.d.ts +1 -0
  337. package/dist/temp/src/components/forms-and-input/textarea/__tests__/Textarea.test.js +207 -0
  338. package/dist/temp/src/components/forms-and-input/textarea/__tests__/Textarea.unmount.test.d.ts +1 -0
  339. package/dist/temp/src/components/forms-and-input/textarea/__tests__/Textarea.unmount.test.js +120 -0
  340. package/dist/temp/src/components/forms-and-input/toggle/__tests__/Toggle.test.d.ts +1 -0
  341. package/dist/temp/src/components/forms-and-input/toggle/__tests__/Toggle.test.js +125 -0
  342. package/dist/temp/src/components/image-and-icons/featured-icon/__tests__/FeaturedIcon.test.d.ts +1 -0
  343. package/dist/temp/src/components/image-and-icons/featured-icon/__tests__/FeaturedIcon.test.js +47 -0
  344. package/dist/temp/src/components/layout/block-container/__tests__/BlockContainer.test.d.ts +1 -0
  345. package/dist/temp/src/components/layout/block-container/__tests__/BlockContainer.test.js +53 -0
  346. package/dist/temp/src/components/layout/block-header/__tests__/BlockHeader.test.d.ts +1 -0
  347. package/dist/temp/src/components/layout/block-header/__tests__/BlockHeader.test.js +127 -0
  348. package/dist/temp/src/components/layout/block-header/__tests__/SubTitle.test.d.ts +1 -0
  349. package/dist/temp/src/components/layout/block-header/__tests__/SubTitle.test.js +76 -0
  350. package/dist/temp/src/components/layout/divider/__tests__/Divider.test.d.ts +1 -0
  351. package/dist/temp/src/components/layout/divider/__tests__/Divider.test.js +53 -0
  352. package/dist/temp/src/components/layout/ncua-scope/__tests__/NcuaScope.test.d.ts +1 -0
  353. package/dist/temp/src/components/layout/ncua-scope/__tests__/NcuaScope.test.js +136 -0
  354. package/dist/temp/src/components/layout/page-title/__tests__/PageTitle.test.d.ts +1 -0
  355. package/dist/temp/src/components/layout/page-title/__tests__/PageTitle.test.js +119 -0
  356. package/dist/temp/src/components/layout/page-title/__tests__/pageTitleStyle.test.d.ts +1 -0
  357. package/dist/temp/src/components/layout/page-title/__tests__/pageTitleStyle.test.js +94 -0
  358. package/dist/temp/src/components/navigation/context-tab/__tests__/ContextTab.test.d.ts +1 -0
  359. package/dist/temp/src/components/navigation/context-tab/__tests__/ContextTab.test.js +447 -0
  360. package/dist/temp/src/components/navigation/context-tab/__tests__/useContextTabScroll.test.d.ts +1 -0
  361. package/dist/temp/src/components/navigation/context-tab/__tests__/useContextTabScroll.test.js +352 -0
  362. package/dist/temp/src/components/navigation/horizontal-tab/__tests__/HorizontalTab.test.d.ts +1 -0
  363. package/dist/temp/src/components/navigation/horizontal-tab/__tests__/HorizontalTab.test.js +152 -0
  364. package/dist/temp/src/components/navigation/pagination/__tests__/Pagination.navigation.test.d.ts +1 -0
  365. package/dist/temp/src/components/navigation/pagination/__tests__/Pagination.navigation.test.js +265 -0
  366. package/dist/temp/src/components/navigation/vertical-tab/__tests__/VerticalTab.test.d.ts +1 -0
  367. package/dist/temp/src/components/navigation/vertical-tab/__tests__/VerticalTab.test.js +172 -0
  368. package/dist/temp/src/components/overlays/dropdown/__tests__/Dropdown.dnd.test.d.ts +1 -0
  369. package/dist/temp/src/components/overlays/dropdown/__tests__/Dropdown.dnd.test.js +423 -0
  370. package/dist/temp/src/components/overlays/dropdown/__tests__/Dropdown.test.d.ts +1 -0
  371. package/dist/temp/src/components/overlays/dropdown/__tests__/Dropdown.test.js +699 -0
  372. package/dist/temp/src/components/overlays/dropdown/__tests__/dropdownTestUtils.d.ts +3 -0
  373. package/dist/temp/src/components/overlays/dropdown/__tests__/dropdownTestUtils.js +17 -0
  374. package/dist/temp/src/components/overlays/dropdown/__tests__/utils.test.js +24 -1
  375. package/dist/temp/src/components/overlays/modal/__tests__/Modal.test.d.ts +1 -0
  376. package/dist/temp/src/components/overlays/modal/__tests__/Modal.test.js +307 -0
  377. package/dist/temp/src/components/overlays/notification/MessageNotificationParts.d.ts +0 -1
  378. package/dist/temp/src/components/overlays/notification/NotificationActionButtons.d.ts +0 -1
  379. package/dist/temp/src/components/overlays/notification/__tests__/FloatingNotification.test.d.ts +1 -0
  380. package/dist/temp/src/components/overlays/notification/__tests__/FloatingNotification.test.js +218 -0
  381. package/dist/temp/src/components/overlays/notification/__tests__/MessageNotification.test.js +10 -0
  382. package/dist/temp/src/components/overlays/postcode-search-modal/PostcodeSearchModalTip.d.ts +1 -3
  383. package/dist/temp/src/components/overlays/postcode-search-modal/PostcodeSearchModalTip.js +1 -1
  384. package/dist/temp/src/components/overlays/postcode-search-modal/__tests__/PostcodeSearchModal.viewport.test.d.ts +1 -0
  385. package/dist/temp/src/components/overlays/postcode-search-modal/__tests__/PostcodeSearchModal.viewport.test.js +112 -0
  386. package/dist/temp/src/components/overlays/tooltip/__tests__/Tooltip.test.d.ts +1 -0
  387. package/dist/temp/src/components/overlays/tooltip/__tests__/Tooltip.test.js +538 -0
  388. package/dist/temp/src/components/tab/__tests__/TabButton.test.d.ts +1 -0
  389. package/dist/temp/src/components/tab/__tests__/TabButton.test.js +181 -0
  390. package/dist/temp/src/constant/date-picker.d.ts +2 -1
  391. package/dist/temp/src/generated/scoped-css.js +1 -1
  392. package/dist/temp/src/hooks/__tests__/useCallbackRef.test.d.ts +1 -0
  393. package/dist/temp/src/hooks/__tests__/useCallbackRef.test.js +99 -0
  394. package/dist/temp/src/hooks/__tests__/useMediaQuery.test.d.ts +1 -0
  395. package/dist/temp/src/hooks/__tests__/useMediaQuery.test.js +95 -0
  396. package/dist/temp/src/hooks/__tests__/usePortalState.ssr.test.d.ts +1 -0
  397. package/dist/temp/src/hooks/__tests__/usePortalState.ssr.test.js +19 -0
  398. package/dist/temp/src/hooks/dropdown/__tests__/dropdownHooks.test.d.ts +1 -0
  399. package/dist/temp/src/hooks/dropdown/__tests__/dropdownHooks.test.js +147 -0
  400. package/dist/temp/src/types/component-meta.d.ts +2 -1
  401. package/dist/temp/src/types/component-meta.js +0 -4
  402. package/dist/temp/src/utils/__tests__/date-picker.test.js +58 -2
  403. package/dist/temp/src/utils/dropdown/__tests__/dropdownUtils.test.js +9 -0
  404. package/dist/temp/src/utils/dropdown/__tests__/multiSelect.test.d.ts +1 -0
  405. package/dist/temp/src/utils/dropdown/__tests__/multiSelect.test.js +41 -0
  406. package/dist/temp/src/utils/dropdown/multiSelect.d.ts +0 -20
  407. package/dist/temp/src/utils/dropdown/multiSelect.js +5 -5
  408. package/dist/temp/src/utils/portal-position/__tests__/portalPosition.nullAnchor.test.d.ts +1 -0
  409. package/dist/temp/src/utils/portal-position/__tests__/portalPosition.nullAnchor.test.js +57 -0
  410. package/dist/temp/vitest.config.js +20 -3
  411. package/dist/types/assets/scripts/notification/const/icons.d.ts +0 -7
  412. package/dist/types/assets/scripts/notification/const/index.d.ts +3 -3
  413. package/dist/types/assets/scripts/notification/const/sizes.d.ts +2 -14
  414. package/dist/types/assets/scripts/notification/const/types.d.ts +3 -2
  415. package/dist/types/assets/scripts/notification/index.d.ts +1 -1
  416. package/dist/types/assets/scripts/shared/ButtonCloseX.d.ts +0 -2
  417. package/dist/types/assets/scripts/table/scrollbar/const.d.ts +0 -1
  418. package/dist/types/assets/scripts/tooltip/const/classNames.d.ts +17 -0
  419. package/dist/types/assets/scripts/tooltip/const/constants.d.ts +33 -0
  420. package/dist/types/assets/scripts/tooltip/const/icons.d.ts +4 -0
  421. package/dist/types/assets/scripts/tooltip/const/index.d.ts +5 -0
  422. package/dist/types/assets/scripts/tooltip/const/templates.d.ts +16 -0
  423. package/dist/types/assets/scripts/tooltip/const/types.d.ts +17 -0
  424. package/dist/types/assets/scripts/utils/sanitize.d.ts +0 -6
  425. package/dist/types/src/__tests__/helpers/dom.d.ts +2 -0
  426. package/dist/types/src/__tests__/helpers/fileInput.d.ts +27 -0
  427. package/dist/types/src/__tests__/helpers/fixedToday.d.ts +4 -0
  428. package/dist/types/src/__tests__/helpers/matchMedia.d.ts +13 -0
  429. package/dist/types/src/__tests__/helpers/rect.d.ts +2 -0
  430. package/dist/types/src/components/action/button/__tests__/Button.test.d.ts +1 -0
  431. package/dist/types/src/components/action/button-group/__tests__/ButtonGroup.test.d.ts +1 -0
  432. package/dist/types/src/components/data-display/data-grid/__tests__/DataGrid.test.d.ts +1 -0
  433. package/dist/types/src/components/data-display/table/__tests__/Table.dnd.dragCell.test.d.ts +1 -0
  434. package/dist/types/src/components/data-display/table/__tests__/Table.dnd.test.d.ts +1 -0
  435. package/dist/types/src/components/data-display/table/__tests__/Table.scroll.test.d.ts +1 -0
  436. package/dist/types/src/components/data-display/table/__tests__/Table.test.d.ts +1 -0
  437. package/dist/types/src/components/data-display/table/__tests__/dnd-context.test.d.ts +1 -0
  438. package/dist/types/src/components/data-display/table/__tests__/dnd-preview.test.d.ts +1 -0
  439. package/dist/types/src/components/data-display/table/__tests__/tableDndTestUtils.d.ts +76 -0
  440. package/dist/types/src/components/data-display/table/__tests__/tableTestUtils.d.ts +11 -0
  441. package/dist/types/src/components/data-display/table/__tests__/useTableScrollbars.ownership.test.d.ts +1 -0
  442. package/dist/types/src/components/data-display/table/dnd-context.d.ts +1 -1
  443. package/dist/types/src/components/data-display/table/useTableScrollbars.d.ts +2 -2
  444. package/dist/types/src/components/feedback-and-status/badge/Badge.d.ts +1 -1
  445. package/dist/types/src/components/feedback-and-status/badge/__tests__/Badge.test.d.ts +1 -0
  446. package/dist/types/src/components/feedback-and-status/badge-group/__tests__/BadgeGroup.test.d.ts +1 -0
  447. package/dist/types/src/components/feedback-and-status/carousel-arrow/__tests__/CarouselArrow.test.d.ts +1 -0
  448. package/dist/types/src/components/feedback-and-status/carousel-number-group/__tests__/CarouselNumberGroup.test.d.ts +1 -0
  449. package/dist/types/src/components/feedback-and-status/empty-state/__tests__/EmptyState.test.d.ts +1 -0
  450. package/dist/types/src/components/feedback-and-status/progress-bar/__tests__/ProgressBar.test.d.ts +1 -0
  451. package/dist/types/src/components/feedback-and-status/progress-bar/__tests__/useProgressBar.test.d.ts +1 -0
  452. package/dist/types/src/components/feedback-and-status/progress-bar/__tests__/utils.test.d.ts +1 -0
  453. package/dist/types/src/components/feedback-and-status/progress-circle/__tests__/ProgressCircle.test.d.ts +1 -0
  454. package/dist/types/src/components/feedback-and-status/spinner/__tests__/Spinner.test.d.ts +1 -0
  455. package/dist/types/src/components/feedback-and-status/tag/__tests__/Tag.test.d.ts +1 -0
  456. package/dist/types/src/components/forms-and-input/checkbox/__tests__/Checkbox.test.d.ts +1 -0
  457. package/dist/types/src/components/forms-and-input/combo-box/ComboBox.d.ts +1 -2
  458. package/dist/types/src/components/forms-and-input/combo-box/__tests__/ComboBox.interaction.test.d.ts +1 -0
  459. package/dist/types/src/components/forms-and-input/combo-box/__tests__/ComboBox.register.test.d.ts +1 -0
  460. package/dist/types/src/components/forms-and-input/combo-box/__tests__/comboBoxTestUtils.d.ts +22 -0
  461. package/dist/types/src/components/forms-and-input/date-picker/__tests__/DatePicker.input.test.d.ts +1 -0
  462. package/dist/types/src/components/forms-and-input/date-picker/__tests__/DatePicker.position.test.d.ts +1 -0
  463. package/dist/types/src/components/forms-and-input/date-picker/__tests__/utils.test.d.ts +1 -0
  464. package/dist/types/src/components/forms-and-input/file-input/__tests__/FileInput.select.test.d.ts +1 -0
  465. package/dist/types/src/components/forms-and-input/image-file-input/__tests__/ImageFileInput.select.test.d.ts +1 -0
  466. package/dist/types/src/components/forms-and-input/input-base/__tests__/InputBase.slots.test.d.ts +1 -0
  467. package/dist/types/src/components/forms-and-input/number-input/__tests__/NumberInput.test.d.ts +1 -0
  468. package/dist/types/src/components/forms-and-input/password-input/__tests__/PasswordInput.toggle.test.d.ts +1 -0
  469. package/dist/types/src/components/forms-and-input/radio/__tests__/Radio.test.d.ts +1 -0
  470. package/dist/types/src/components/forms-and-input/select/__tests__/Select.test.d.ts +1 -0
  471. package/dist/types/src/components/forms-and-input/select-box/SelectBox.d.ts +1 -2
  472. package/dist/types/src/components/forms-and-input/select-box/__tests__/SelectBox.portal.test.d.ts +1 -0
  473. package/dist/types/src/components/forms-and-input/select-box/__tests__/SelectBox.test.d.ts +1 -0
  474. package/dist/types/src/components/forms-and-input/slider/__tests__/Slider.test.d.ts +1 -0
  475. package/dist/types/src/components/forms-and-input/switch/__tests__/Switch.test.d.ts +1 -0
  476. package/dist/types/src/components/forms-and-input/textarea/__tests__/Textarea.test.d.ts +1 -0
  477. package/dist/types/src/components/forms-and-input/textarea/__tests__/Textarea.unmount.test.d.ts +1 -0
  478. package/dist/types/src/components/forms-and-input/toggle/__tests__/Toggle.test.d.ts +1 -0
  479. package/dist/types/src/components/image-and-icons/featured-icon/__tests__/FeaturedIcon.test.d.ts +1 -0
  480. package/dist/types/src/components/layout/block-container/__tests__/BlockContainer.test.d.ts +1 -0
  481. package/dist/types/src/components/layout/block-header/__tests__/BlockHeader.test.d.ts +1 -0
  482. package/dist/types/src/components/layout/block-header/__tests__/SubTitle.test.d.ts +1 -0
  483. package/dist/types/src/components/layout/divider/__tests__/Divider.test.d.ts +1 -0
  484. package/dist/types/src/components/layout/ncua-scope/__tests__/NcuaScope.test.d.ts +1 -0
  485. package/dist/types/src/components/layout/page-title/__tests__/PageTitle.test.d.ts +1 -0
  486. package/dist/types/src/components/layout/page-title/__tests__/pageTitleStyle.test.d.ts +1 -0
  487. package/dist/types/src/components/navigation/context-tab/__tests__/ContextTab.test.d.ts +1 -0
  488. package/dist/types/src/components/navigation/context-tab/__tests__/useContextTabScroll.test.d.ts +1 -0
  489. package/dist/types/src/components/navigation/horizontal-tab/__tests__/HorizontalTab.test.d.ts +1 -0
  490. package/dist/types/src/components/navigation/pagination/__tests__/Pagination.navigation.test.d.ts +1 -0
  491. package/dist/types/src/components/navigation/vertical-tab/__tests__/VerticalTab.test.d.ts +1 -0
  492. package/dist/types/src/components/overlays/dropdown/__tests__/Dropdown.dnd.test.d.ts +1 -0
  493. package/dist/types/src/components/overlays/dropdown/__tests__/Dropdown.test.d.ts +1 -0
  494. package/dist/types/src/components/overlays/dropdown/__tests__/dropdownTestUtils.d.ts +3 -0
  495. package/dist/types/src/components/overlays/modal/__tests__/Modal.test.d.ts +1 -0
  496. package/dist/types/src/components/overlays/notification/MessageNotificationParts.d.ts +0 -1
  497. package/dist/types/src/components/overlays/notification/NotificationActionButtons.d.ts +0 -1
  498. package/dist/types/src/components/overlays/notification/__tests__/FloatingNotification.test.d.ts +1 -0
  499. package/dist/types/src/components/overlays/postcode-search-modal/PostcodeSearchModalTip.d.ts +1 -3
  500. package/dist/types/src/components/overlays/postcode-search-modal/__tests__/PostcodeSearchModal.viewport.test.d.ts +1 -0
  501. package/dist/types/src/components/overlays/tooltip/__tests__/Tooltip.test.d.ts +1 -0
  502. package/dist/types/src/components/tab/__tests__/TabButton.test.d.ts +1 -0
  503. package/dist/types/src/constant/date-picker.d.ts +2 -1
  504. package/dist/types/src/hooks/__tests__/useCallbackRef.test.d.ts +1 -0
  505. package/dist/types/src/hooks/__tests__/useMediaQuery.test.d.ts +1 -0
  506. package/dist/types/src/hooks/__tests__/usePortalState.ssr.test.d.ts +1 -0
  507. package/dist/types/src/hooks/dropdown/__tests__/dropdownHooks.test.d.ts +1 -0
  508. package/dist/types/src/types/component-meta.d.ts +2 -1
  509. package/dist/types/src/utils/dropdown/__tests__/multiSelect.test.d.ts +1 -0
  510. package/dist/types/src/utils/dropdown/multiSelect.d.ts +0 -20
  511. package/dist/types/src/utils/portal-position/__tests__/portalPosition.nullAnchor.test.d.ts +1 -0
  512. package/dist/ui-admin/assets/styles/style.css +15 -18
  513. package/package.json +3 -8
  514. package/dist/cjs/src/constant/index.js +0 -27
  515. package/dist/cjs/src/constant/size.js +0 -7
  516. package/dist/cjs/src/contexts/index.js +0 -16
  517. package/dist/esm/src/constant/index.js +0 -2
  518. package/dist/esm/src/constant/size.js +0 -1
  519. package/dist/esm/src/contexts/index.js +0 -1
  520. package/dist/temp/src/constant/index.d.ts +0 -2
  521. package/dist/temp/src/constant/index.js +0 -2
  522. package/dist/temp/src/constant/size.d.ts +0 -1
  523. package/dist/temp/src/constant/size.js +0 -1
  524. package/dist/temp/src/contexts/index.d.ts +0 -1
  525. package/dist/temp/src/contexts/index.js +0 -1
  526. package/dist/types/src/constant/index.d.ts +0 -2
  527. package/dist/types/src/constant/size.d.ts +0 -1
  528. package/dist/types/src/contexts/index.d.ts +0 -1
@@ -0,0 +1,209 @@
1
+ // @vitest-environment jsdom
2
+ //
3
+ // HorizontalTab (src/components/navigation/horizontal-tab/HorizontalTab.tsx) 위험 경로 — 위험 목록표 HT-xx.
4
+ // swiper/react 는 mock — Swiper 는 받은 props 를 기록하고 children 을 div 로, SwiperSlide 는
5
+ // className 을 가진 div 로 렌더한다 (슬라이드 계산은 swiper 소관). TabButton 은 실구현.
6
+ import { createElement } from 'react';
7
+ import { createRoot } from 'react-dom/client';
8
+ import { act } from 'react-dom/test-utils';
9
+ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
10
+ const mocks = vi.hoisted(() => ({
11
+ swiperProps: vi.fn()
12
+ }));
13
+ vi.mock('swiper/react', async () => {
14
+ const {
15
+ createElement: h
16
+ } = await import('react');
17
+ return {
18
+ Swiper: _ref => {
19
+ let {
20
+ children,
21
+ ...props
22
+ } = _ref;
23
+ mocks.swiperProps(props);
24
+ return h('div', {
25
+ className: 'swiper-mock'
26
+ }, children);
27
+ },
28
+ SwiperSlide: _ref2 => {
29
+ let {
30
+ children,
31
+ className
32
+ } = _ref2;
33
+ return h('div', {
34
+ className
35
+ }, children);
36
+ }
37
+ };
38
+ });
39
+ import { HorizontalTab } from '../HorizontalTab';
40
+ globalThis.IS_REACT_ACT_ENVIRONMENT = true;
41
+ const UNDERLINE_GAP = 16;
42
+ const DEFAULT_GAP = 8;
43
+ let root = null;
44
+ let container = null;
45
+ beforeEach(() => {
46
+ mocks.swiperProps.mockReset();
47
+ });
48
+ afterEach(() => {
49
+ if (root) {
50
+ act(() => {
51
+ root?.unmount();
52
+ });
53
+ }
54
+ root = null;
55
+ container?.remove();
56
+ container = null;
57
+ vi.restoreAllMocks();
58
+ });
59
+ const render = props => {
60
+ if (!container) {
61
+ container = document.createElement('div');
62
+ document.body.appendChild(container);
63
+ root = createRoot(container);
64
+ }
65
+ act(() => {
66
+ root?.render(/*#__PURE__*/createElement(HorizontalTab, props));
67
+ });
68
+ return container;
69
+ };
70
+ const click = element => {
71
+ act(() => {
72
+ element.click();
73
+ });
74
+ };
75
+ const tabs = view => Array.from(view.querySelectorAll('.ncua-tab-button'));
76
+ const activeLabels = view => tabs(view).filter(tab => tab.classList.contains('is-active')).map(tab => tab.textContent);
77
+ const buttonMenus = onClick => [{
78
+ id: 'order',
79
+ label: '주문',
80
+ onClick
81
+ }, {
82
+ id: 'claim',
83
+ label: '클레임',
84
+ onClick
85
+ }, {
86
+ id: 'settle',
87
+ label: '정산',
88
+ onClick
89
+ }];
90
+ describe('HorizontalTab — 탭 목록과 활성 탭 (HT-01)', () => {
91
+ it('HT-01 menus 를 슬라이드마다 TabButton 으로 렌더하고 activeTab 과 id 가 같은 탭만 is-active', () => {
92
+ const view = render({
93
+ menus: buttonMenus(),
94
+ activeTab: 'claim'
95
+ });
96
+ expect(view.querySelectorAll('.ncua-horizontal-tab__item')).toHaveLength(buttonMenus().length);
97
+ expect(tabs(view).map(tab => tab.textContent)).toEqual(['주문', '클레임', '정산']);
98
+ expect(activeLabels(view)).toEqual(['클레임']);
99
+ });
100
+ it('HT-01 링크 메뉴는 id 가 아니라 href 를 activeTab 과 비교한다', () => {
101
+ const menus = [{
102
+ id: 'order',
103
+ label: '주문',
104
+ href: '/orders'
105
+ }, {
106
+ id: '/claims',
107
+ label: '클레임',
108
+ href: '/claims-list'
109
+ }];
110
+ const view = render({
111
+ menus,
112
+ activeTab: '/orders'
113
+ });
114
+ expect(activeLabels(view)).toEqual(['주문']);
115
+ });
116
+ it('HT-01 activeTab 이 어떤 탭과도 맞지 않으면 활성 탭이 없다', () => {
117
+ const view = render({
118
+ menus: buttonMenus(),
119
+ activeTab: 'none'
120
+ });
121
+ expect(activeLabels(view)).toEqual([]);
122
+ });
123
+ });
124
+ describe('HorizontalTab — 탭 click (HT-02)', () => {
125
+ it('HT-02 탭을 click 하면 그 메뉴의 onClick 을 그 메뉴 id 로 호출한다', () => {
126
+ const onClick = vi.fn();
127
+ const view = render({
128
+ menus: buttonMenus(onClick),
129
+ activeTab: 'order'
130
+ });
131
+ click(tabs(view)[2]);
132
+ expect(onClick).toHaveBeenCalledWith('settle');
133
+ });
134
+ });
135
+ describe('HorizontalTab — 빈 메뉴 (HT-03)', () => {
136
+ it.each([['빈 배열', {
137
+ menus: []
138
+ }], ['미지정', {}]])('HT-03 menus 가 %s 이면 아무것도 렌더하지 않는다', (_label, props) => {
139
+ const view = render(props);
140
+ expect(view.innerHTML).toBe('');
141
+ expect(mocks.swiperProps).not.toHaveBeenCalled();
142
+ });
143
+ });
144
+ describe('HorizontalTab — 슬라이드 간격 (HT-04)', () => {
145
+ it.each([['underline', UNDERLINE_GAP], ['button-primary', DEFAULT_GAP], ['button-white', DEFAULT_GAP], ['underline-fill', DEFAULT_GAP]])('HT-04 type %s 면 Swiper 를 slidesPerView auto · spaceBetween %i 로 만든다', (type, gap) => {
146
+ render({
147
+ type,
148
+ menus: buttonMenus()
149
+ });
150
+ expect(mocks.swiperProps.mock.lastCall?.[0]).toEqual({
151
+ slidesPerView: 'auto',
152
+ spaceBetween: gap
153
+ });
154
+ });
155
+ });
156
+ describe('HorizontalTab — 재렌더 시 탭 재마운트 (HT-05)', () => {
157
+ it('HT-05 activeTab 이 바뀌어 다시 렌더하면 모든 탭 버튼이 새 노드로 바뀌어 포커스를 잃는다', () => {
158
+ // 현재 동작 고정 — 결함 후보: #597 (슬라이드 key 가 렌더마다 새 uniqueId 라 재렌더마다 재마운트, 키보드 포커스 유실)
159
+ const view = render({
160
+ menus: buttonMenus(),
161
+ activeTab: 'order'
162
+ });
163
+ const before = tabs(view)[1];
164
+ before.focus();
165
+ expect(document.activeElement).toBe(before);
166
+ render({
167
+ menus: buttonMenus(),
168
+ activeTab: 'claim'
169
+ });
170
+ expect(before.isConnected).toBe(false);
171
+ expect(tabs(view)[1]).not.toBe(before);
172
+ expect(document.activeElement).toBe(document.body);
173
+ });
174
+ it.todo('HT-05 activeTab 이 바뀌어도 탭 버튼 노드와 포커스가 유지된다 (기대, #597)');
175
+ });
176
+ describe('HorizontalTab — 클래스와 TabButton 전달 (HT-06)', () => {
177
+ it('HT-06 기본은 button-primary · sm 클래스이고 full-width 는 없다', () => {
178
+ const view = render({
179
+ menus: buttonMenus()
180
+ });
181
+ const rootElement = view.querySelector('.ncua-horizontal-tab');
182
+ expect(rootElement?.classList.contains('ncua-horizontal-tab--button-primary')).toBe(true);
183
+ expect(rootElement?.classList.contains('ncua-horizontal-tab--sm')).toBe(true);
184
+ expect(rootElement?.classList.contains('full-width')).toBe(false);
185
+ });
186
+ it('HT-06 type·size·fullWidth·className 을 루트 클래스로 반영한다', () => {
187
+ const view = render({
188
+ menus: buttonMenus(),
189
+ type: 'underline',
190
+ size: 'lg',
191
+ fullWidth: true,
192
+ className: 'my-tabs'
193
+ });
194
+ const rootElement = view.querySelector('.ncua-horizontal-tab');
195
+ expect(rootElement?.classList.contains('ncua-horizontal-tab--underline')).toBe(true);
196
+ expect(rootElement?.classList.contains('ncua-horizontal-tab--lg')).toBe(true);
197
+ expect(rootElement?.classList.contains('full-width')).toBe(true);
198
+ expect(rootElement?.classList.contains('my-tabs')).toBe(true);
199
+ });
200
+ it('HT-06 TabButton 에 넘기는 size·tabButtonType 은 DOM 속성으로 새지 않는다', () => {
201
+ const view = render({
202
+ menus: buttonMenus(),
203
+ type: 'underline',
204
+ size: 'lg'
205
+ });
206
+ expect(tabs(view)[0].hasAttribute('size')).toBe(false);
207
+ expect(tabs(view)[0].hasAttribute('tabbuttontype')).toBe(false);
208
+ });
209
+ });
@@ -0,0 +1,282 @@
1
+ // @vitest-environment jsdom
2
+ import { ArrowLeft, ArrowRight, ChevronLeft, ChevronRight } from '@ncds/ui-admin-icon';
3
+ import { createElement } from 'react';
4
+ import { createRoot } from 'react-dom/client';
5
+ import { renderToStaticMarkup } from 'react-dom/server';
6
+ import { act } from 'react-dom/test-utils';
7
+ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
8
+ import { COLOR } from '../../../../../constant/color';
9
+ import { Pagination } from '../Pagination';
10
+ // React 18에서 act() 사용 시 필요한 플래그 (미설정 시 console.error 경고 발생)
11
+ globalThis.IS_REACT_ACT_ENVIRONMENT = true;
12
+ const ITEM_COUNT_PER_PAGE = 10;
13
+ const TOTAL_COUNT = 250;
14
+ const TOTAL_PAGE = TOTAL_COUNT / ITEM_COUNT_PER_PAGE;
15
+ /** 그룹 크기 — 기본값 10 과 다르게 골라 그룹 계산이 기본값에 기대지 않게 한다 */
16
+ const PAGE_GROUP_SIZE = 5;
17
+ const FIRST_PAGE = 1;
18
+ /** 첫 그룹(1~5) 안의 페이지 */
19
+ const PAGE_IN_FIRST_GROUP = 3;
20
+ const SECOND_GROUP_START = FIRST_PAGE + PAGE_GROUP_SIZE;
21
+ const THIRD_GROUP_START = SECOND_GROUP_START + PAGE_GROUP_SIZE;
22
+ /** 앞뒤 그룹이 있어 이전 · 다음이 모두 활성인 페이지 */
23
+ const PAGE_IN_THIRD_GROUP = THIRD_GROUP_START + 1;
24
+ const LAST_PAGE_OF_SECOND_GROUP = THIRD_GROUP_START - 1;
25
+ const groupPages = start => Array.from({
26
+ length: PAGE_GROUP_SIZE
27
+ }, (_, i) => start + i);
28
+ const SECOND_GROUP_PAGES = groupPages(SECOND_GROUP_START);
29
+ const THIRD_GROUP_PAGES = groupPages(THIRD_GROUP_START);
30
+ let root = null;
31
+ let container = null;
32
+ const render = function () {
33
+ let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
34
+ if (!container) {
35
+ container = document.createElement('div');
36
+ document.body.appendChild(container);
37
+ root = createRoot(container);
38
+ }
39
+ act(() => {
40
+ root?.render(/*#__PURE__*/createElement(Pagination, {
41
+ totalCount: TOTAL_COUNT,
42
+ itemCountPerPage: ITEM_COUNT_PER_PAGE,
43
+ pageCount: PAGE_GROUP_SIZE,
44
+ currentPage: PAGE_IN_FIRST_GROUP,
45
+ ...props
46
+ }));
47
+ });
48
+ return container;
49
+ };
50
+ /** React 이벤트 핸들러 예외는 click() 밖으로 던져지지 않고 window error 로만 보고된다 */
51
+ let windowErrors = [];
52
+ const collectWindowError = event => {
53
+ windowErrors.push(event.error);
54
+ event.preventDefault();
55
+ };
56
+ beforeEach(() => {
57
+ windowErrors = [];
58
+ window.addEventListener('error', collectWindowError);
59
+ });
60
+ afterEach(() => {
61
+ window.removeEventListener('error', collectWindowError);
62
+ if (root && container) {
63
+ act(() => root?.unmount());
64
+ container.remove();
65
+ }
66
+ root = null;
67
+ container = null;
68
+ });
69
+ const mustQuery = (rootEl, selector) => {
70
+ const found = rootEl.querySelector(selector);
71
+ if (!found) throw new Error(`요소를 찾을 수 없습니다: ${selector}`);
72
+ return found;
73
+ };
74
+ const pageButton = (el, page) => {
75
+ const found = Array.from(el.querySelectorAll('.ncua-pagination__page-num')).find(button => button.textContent === String(page));
76
+ if (!found) throw new Error(`페이지 버튼을 찾을 수 없습니다: ${page}`);
77
+ return found;
78
+ };
79
+ const pageNums = el => Array.from(el.querySelectorAll('.ncua-pagination__page-num')).map(button => Number(button.textContent));
80
+ const click = element => act(() => element.click());
81
+ describe('Pagination — 페이지 번호 클릭 (PGN-01)', () => {
82
+ it('PGN-01 페이지 번호를 클릭하면 onPageChange 로 그 번호를 알린다', () => {
83
+ // Given: 첫 그룹을 보는 페이지네이션
84
+ const onPageChange = vi.fn();
85
+ const el = render({
86
+ onPageChange
87
+ });
88
+ // When: 4 페이지 버튼을 클릭한다
89
+ const target = PAGE_IN_FIRST_GROUP + 1;
90
+ click(pageButton(el, target));
91
+ // Then: 그 번호로 알린다
92
+ expect(onPageChange).toHaveBeenCalledWith(target);
93
+ });
94
+ it('PGN-01 onPageChange 가 없으면 페이지 번호를 클릭해도 예외가 나지 않는다', () => {
95
+ // Given: onPageChange 없이 렌더
96
+ const el = render();
97
+ // When: 페이지 버튼을 클릭한다
98
+ click(pageButton(el, PAGE_IN_FIRST_GROUP + 1));
99
+ // Then: window error 가 없다
100
+ expect(windowErrors).toEqual([]);
101
+ });
102
+ it('PGN-01 (대조) onPageChange 가 던지면 window error 로 수집된다 — 위 단언이 공허하지 않음', () => {
103
+ // Given: 던지는 onPageChange
104
+ const el = render({
105
+ onPageChange: () => {
106
+ throw new Error('의도한 예외');
107
+ }
108
+ });
109
+ // When: 페이지 버튼을 클릭한다
110
+ click(pageButton(el, PAGE_IN_FIRST_GROUP + 1));
111
+ // Then: 수집 배열에 예외가 남는다
112
+ expect(windowErrors.length).toBeGreaterThan(0);
113
+ });
114
+ });
115
+ describe('Pagination — pc 그룹 이동 (PGN-02)', () => {
116
+ it.each([['처음', '.ncua-pagination__first', FIRST_PAGE], ['이전 그룹', '.ncua-pagination__before', SECOND_GROUP_START], ['다음 그룹', '.ncua-pagination__next', THIRD_GROUP_START + PAGE_GROUP_SIZE], ['마지막', '.ncua-pagination__last', TOTAL_PAGE]])('PGN-02 세 번째 그룹에서 %s 버튼(%s)은 onPageChange 로 %s 번호를 알린다', (_name, selector, expected) => {
117
+ // Given: 세 번째 그룹 첫 페이지로 렌더한 페이지네이션
118
+ const onPageChange = vi.fn();
119
+ const el = render({
120
+ onPageChange,
121
+ currentPage: THIRD_GROUP_START
122
+ });
123
+ // When: 내비 버튼을 클릭한다
124
+ click(mustQuery(el, selector));
125
+ // Then: 그 번호로 알린다
126
+ expect(onPageChange).toHaveBeenCalledWith(expected);
127
+ });
128
+ it('PGN-02 currentPage 가 start + 그룹 크기가 되면 다음 그룹 번호로 목록을 바꾼다', () => {
129
+ // Given: 첫 그룹을 보던 페이지네이션
130
+ render();
131
+ // When: 다음 그룹 첫 페이지로 이동한다
132
+ const el = render({
133
+ currentPage: SECOND_GROUP_START
134
+ });
135
+ // Then: 두 번째 그룹 번호가 보인다
136
+ expect(pageNums(el)).toEqual(SECOND_GROUP_PAGES);
137
+ });
138
+ it('PGN-02 이전 그룹의 페이지로 가면 한 그룹 앞으로 목록을 바꾼다', () => {
139
+ // Given: 세 번째 그룹을 보던 페이지네이션
140
+ const before = pageNums(render({
141
+ currentPage: THIRD_GROUP_START
142
+ }));
143
+ // When: 두 번째 그룹의 마지막 페이지로 이동한다
144
+ const el = render({
145
+ currentPage: LAST_PAGE_OF_SECOND_GROUP
146
+ });
147
+ // Then: 세 번째 그룹에서 두 번째 그룹으로 바뀐다
148
+ expect(before).toEqual(THIRD_GROUP_PAGES);
149
+ expect(pageNums(el)).toEqual(SECOND_GROUP_PAGES);
150
+ });
151
+ });
152
+ /** 폼 안에 렌더하고 submit 발생을 기록한다 (preventDefault 로 jsdom 의 폼 전송을 막는다) */
153
+ const renderInForm = function () {
154
+ let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
155
+ if (container) throw new Error('renderInForm 은 render 와 같은 테스트에서 쓰지 않는다 — 앞선 root 가 정리되지 않는다');
156
+ const submits = [];
157
+ container = document.createElement('div');
158
+ document.body.appendChild(container);
159
+ const formRoot = createRoot(container);
160
+ root = formRoot;
161
+ act(() => {
162
+ formRoot.render(/*#__PURE__*/createElement('form', {
163
+ onSubmit: event => {
164
+ event.preventDefault();
165
+ submits.push(event.nativeEvent);
166
+ }
167
+ }, /*#__PURE__*/createElement(Pagination, {
168
+ totalCount: TOTAL_COUNT,
169
+ itemCountPerPage: ITEM_COUNT_PER_PAGE,
170
+ pageCount: PAGE_GROUP_SIZE,
171
+ currentPage: PAGE_IN_FIRST_GROUP,
172
+ onPageChange: vi.fn(),
173
+ ...props
174
+ })));
175
+ });
176
+ return {
177
+ el: container,
178
+ submits
179
+ };
180
+ };
181
+ describe('Pagination — 폼 안 버튼 (PGN-04)', () => {
182
+ it('PGN-04 폼 안에서 페이지 번호를 클릭하면 type 이 없어 폼을 제출한다', () => {
183
+ // 현재 동작 고정 — 결함 후보: #627 PGN-04 (페이지 번호 button 에 type 이 없어 의도 없는 폼 제출)
184
+ // Given: 폼 안의 페이지네이션
185
+ const {
186
+ el,
187
+ submits
188
+ } = renderInForm();
189
+ const target = pageButton(el, PAGE_IN_FIRST_GROUP + 1);
190
+ // When: 페이지 번호를 클릭한다
191
+ click(target);
192
+ // Then: type 속성이 없고 폼이 제출된다
193
+ expect(target.getAttribute('type')).toBeNull();
194
+ expect(submits).toHaveLength(1);
195
+ });
196
+ it.each([['이전', '.ncua-pagination__before'], ['다음', '.ncua-pagination__next']])('PGN-04 폼 안에서 %s 버튼(공용 Button)을 클릭하면 폼을 제출한다', (_name, selector) => {
197
+ // 현재 동작 고정 — 결함 후보: #627 PGN-04 (#620 VNT-12 같은 뿌리 — NavButton 은 type 기본값 없는 공용 Button)
198
+ // Given: 세 번째 그룹(11~15)을 보는 폼 안 페이지네이션 (이전 · 다음 모두 활성)
199
+ const {
200
+ el,
201
+ submits
202
+ } = renderInForm({
203
+ currentPage: PAGE_IN_THIRD_GROUP
204
+ });
205
+ const nav = mustQuery(el, selector);
206
+ // When: 내비 버튼을 클릭한다
207
+ click(nav);
208
+ // Then: 비활성이 아닌 버튼이고 폼이 제출된다
209
+ expect(nav.disabled).toBe(false);
210
+ expect(submits).toHaveLength(1);
211
+ });
212
+ it('PGN-04 (대조) restProps 로 type="button" 을 넘기면 페이지 번호 클릭이 폼을 제출하지 않는다', () => {
213
+ // Given: type="button" 을 넘긴 폼 안 페이지네이션 (restProps 는 페이지 번호 button 에만 전달된다)
214
+ const {
215
+ el,
216
+ submits
217
+ } = renderInForm({
218
+ type: 'button'
219
+ });
220
+ // When: 페이지 번호를 클릭한다
221
+ click(pageButton(el, PAGE_IN_FIRST_GROUP + 1));
222
+ // Then: submit 이 없다 — 위 케이스의 submit 기록이 배선 착시가 아님을 보인다
223
+ expect(submits).toEqual([]);
224
+ });
225
+ it.todo('PGN-04 기대 동작 (#627): 페이지 번호 · 처음 · 이전 · 다음 · 마지막 버튼은 type="button" 이라 폼을 제출하지 않는다');
226
+ });
227
+ /** NavButton 아이콘 크기 — pc 16 · mo 20 */
228
+ const NAV_ICON_SIZE_PC = 16;
229
+ const NAV_ICON_SIZE_MO = 20;
230
+ const navIcon = (el, selector) => mustQuery(el, `${selector} svg`);
231
+ /** 아이콘 컴포넌트의 svg 내부 도형 마크업 — 버튼 안 아이콘이 어느 아이콘인지 구분한다 */
232
+ const iconPaths = (icon, size) => {
233
+ const host = document.createElement('div');
234
+ host.innerHTML = renderToStaticMarkup(/*#__PURE__*/createElement(icon, {
235
+ width: size,
236
+ height: size
237
+ }));
238
+ return mustQuery(host, 'svg').innerHTML;
239
+ };
240
+ describe('Pagination — mo 이전 · 다음 (PGN-03)', () => {
241
+ it.each([['이전', '.ncua-pagination__before', PAGE_IN_FIRST_GROUP - 1], ['다음', '.ncua-pagination__next', PAGE_IN_FIRST_GROUP + 1]])('PGN-03 mo 에서 %s 버튼은 currentPage 기준 한 칸 이동한 번호를 알린다', (_name, selector, expected) => {
242
+ // Given: mo 페이지네이션 (그룹 크기와 무관하게 한 칸씩 이동)
243
+ const onPageChange = vi.fn();
244
+ const el = render({
245
+ onPageChange,
246
+ breakPoint: 'mo'
247
+ });
248
+ // When: 내비 버튼을 클릭한다
249
+ click(mustQuery(el, selector));
250
+ // Then: 한 칸 이동한 번호를 알린다
251
+ expect(onPageChange).toHaveBeenCalledWith(expected);
252
+ });
253
+ // 비활성 · 이동 버튼 노출(pc 대조 포함)은 Pagination.test.ts 'mo 모드 이전/다음 버튼 노출' 이 고정한다
254
+ });
255
+ describe('NavButton — 아이콘 색 · 크기 (PGN-05)', () => {
256
+ it('PGN-05 비활성 버튼 아이콘은 gray200, 활성 버튼 아이콘은 gray700 이다', () => {
257
+ // Given/When: 첫 그룹 — 처음 · 이전은 비활성, 다음 · 마지막은 활성
258
+ const el = render();
259
+ // Then: 색이 상태를 따른다
260
+ expect([navIcon(el, '.ncua-pagination__first').getAttribute('color'), navIcon(el, '.ncua-pagination__next').getAttribute('color')]).toEqual([COLOR.gray200, COLOR.gray700]);
261
+ });
262
+ it.each([['pc', NAV_ICON_SIZE_PC, 'ncua-btn--xs'], ['mo', NAV_ICON_SIZE_MO, 'ncua-btn--sm']])('PGN-05 %s 는 아이콘 %s px · 버튼 크기 클래스 %s', (breakPoint, iconSize, sizeClass) => {
263
+ const el = render({
264
+ breakPoint
265
+ });
266
+ const next = mustQuery(el, '.ncua-pagination__next');
267
+ expect(navIcon(el, '.ncua-pagination__next').getAttribute('width')).toBe(String(iconSize));
268
+ expect(Array.from(next.classList)).toContain(sizeClass);
269
+ });
270
+ it.each([['pc', '이전', '.ncua-pagination__before', 'ChevronLeft', ChevronLeft, NAV_ICON_SIZE_PC], ['pc', '다음', '.ncua-pagination__next', 'ChevronRight', ChevronRight, NAV_ICON_SIZE_PC], ['mo', '이전', '.ncua-pagination__before', 'ArrowLeft', ArrowLeft, NAV_ICON_SIZE_MO], ['mo', '다음', '.ncua-pagination__next', 'ArrowRight', ArrowRight, NAV_ICON_SIZE_MO]])('PGN-05 %s 의 %s 버튼(%s)은 %s 아이콘을 그린다', (breakPoint, _name, selector, _iconName, icon, size) => {
271
+ // Given/When: 이전 · 다음이 모두 활성인 세 번째 그룹
272
+ const el = render({
273
+ breakPoint,
274
+ currentPage: PAGE_IN_THIRD_GROUP
275
+ });
276
+ // Then: 버튼 안 svg 의 내부 도형이 기대 아이콘과 같다
277
+ expect(navIcon(el, selector).innerHTML).toBe(iconPaths(icon, size));
278
+ });
279
+ it('PGN-05 (대조) Chevron 과 Arrow 아이콘 도형은 서로 달라 위 단언이 공허하지 않다', () => {
280
+ expect(iconPaths(ChevronRight, NAV_ICON_SIZE_PC)).not.toBe(iconPaths(ArrowRight, NAV_ICON_SIZE_PC));
281
+ });
282
+ });