@simplybusiness/mobius 3.3.2 → 3.4.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 (283) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/dist/cjs/components/Chopin/QuestionHelp/QuestionHelp.js +5 -10
  3. package/dist/cjs/components/Chopin/QuestionHelp/QuestionHelp.js.map +1 -1
  4. package/dist/cjs/components/Chopin/TradeSelector/Header/Header.d.ts +9 -0
  5. package/dist/cjs/components/Chopin/TradeSelector/Header/Header.js +14 -0
  6. package/dist/cjs/components/Chopin/TradeSelector/Header/Header.js.map +1 -0
  7. package/dist/cjs/components/Chopin/TradeSelector/Header/index.d.ts +1 -0
  8. package/dist/cjs/components/Chopin/TradeSelector/{Popover → Header}/index.js +1 -1
  9. package/dist/cjs/components/Chopin/TradeSelector/Header/index.js.map +1 -0
  10. package/dist/cjs/components/Chopin/TradeSelector/Listing/Listing.d.ts +12 -0
  11. package/dist/cjs/components/Chopin/TradeSelector/Listing/Listing.js +24 -0
  12. package/dist/cjs/components/Chopin/TradeSelector/Listing/Listing.js.map +1 -0
  13. package/dist/cjs/components/Chopin/TradeSelector/Listing/Listing.test.js +51 -0
  14. package/dist/cjs/components/Chopin/TradeSelector/Listing/Listing.test.js.map +1 -0
  15. package/dist/cjs/components/Chopin/TradeSelector/Listing/ListingItem.d.ts +10 -0
  16. package/dist/cjs/components/Chopin/TradeSelector/Listing/ListingItem.js +27 -0
  17. package/dist/cjs/components/Chopin/TradeSelector/Listing/ListingItem.js.map +1 -0
  18. package/dist/cjs/components/Chopin/TradeSelector/Listing/ListingItem.test.js +42 -0
  19. package/dist/cjs/components/Chopin/TradeSelector/Listing/ListingItem.test.js.map +1 -0
  20. package/dist/cjs/components/Chopin/TradeSelector/Listing/index.d.ts +1 -0
  21. package/dist/cjs/components/Chopin/TradeSelector/{ListBox → Listing}/index.js +1 -1
  22. package/dist/cjs/components/Chopin/TradeSelector/Listing/index.js.map +1 -0
  23. package/dist/cjs/components/Chopin/TradeSelector/SearchResults/SearchResults.d.ts +11 -11
  24. package/dist/cjs/components/Chopin/TradeSelector/SearchResults/SearchResults.js +92 -15
  25. package/dist/cjs/components/Chopin/TradeSelector/SearchResults/SearchResults.js.map +1 -1
  26. package/dist/cjs/components/Chopin/TradeSelector/SearchResults/SearchResults.test.js +96 -104
  27. package/dist/cjs/components/Chopin/TradeSelector/SearchResults/SearchResults.test.js.map +1 -1
  28. package/dist/cjs/components/Chopin/TradeSelector/TradeInput/TradeInput.d.ts +15 -0
  29. package/dist/cjs/components/Chopin/TradeSelector/TradeInput/TradeInput.js +37 -0
  30. package/dist/cjs/components/Chopin/TradeSelector/TradeInput/TradeInput.js.map +1 -0
  31. package/dist/cjs/components/Chopin/TradeSelector/TradeInput/TradeInput.test.js +57 -0
  32. package/dist/cjs/components/Chopin/TradeSelector/TradeInput/TradeInput.test.js.map +1 -0
  33. package/dist/cjs/components/Chopin/TradeSelector/TradeInput/index.d.ts +1 -0
  34. package/dist/cjs/components/Chopin/TradeSelector/{ComboBox → TradeInput}/index.js +1 -1
  35. package/dist/cjs/components/Chopin/TradeSelector/TradeInput/index.js.map +1 -0
  36. package/dist/cjs/components/Chopin/TradeSelector/TradeSelector.d.ts +2 -2
  37. package/dist/cjs/components/Chopin/TradeSelector/TradeSelector.js +62 -31
  38. package/dist/cjs/components/Chopin/TradeSelector/TradeSelector.js.map +1 -1
  39. package/dist/cjs/components/Chopin/TradeSelector/TradeSelector.test.js +152 -240
  40. package/dist/cjs/components/Chopin/TradeSelector/TradeSelector.test.js.map +1 -1
  41. package/dist/cjs/components/Chopin/TradeSelector/config/index.d.ts +9 -0
  42. package/dist/cjs/components/Chopin/TradeSelector/config/shared.d.ts +9 -0
  43. package/dist/cjs/components/Chopin/TradeSelector/config/shared.js +9 -0
  44. package/dist/cjs/components/Chopin/TradeSelector/config/shared.js.map +1 -1
  45. package/dist/cjs/components/Chopin/TradeSelector/jestHTMLDialogPolyfill.d.ts +1 -0
  46. package/dist/cjs/components/Chopin/TradeSelector/jestHTMLDialogPolyfill.js +17 -0
  47. package/dist/cjs/components/Chopin/TradeSelector/jestHTMLDialogPolyfill.js.map +1 -0
  48. package/dist/cjs/components/Chopin/TradeSelector/mockApiResults.d.ts +10 -0
  49. package/dist/cjs/components/Chopin/TradeSelector/mockApiResults.js +11 -1
  50. package/dist/cjs/components/Chopin/TradeSelector/mockApiResults.js.map +1 -1
  51. package/dist/cjs/components/Chopin/TradeSelector/types.d.ts +7 -5
  52. package/dist/cjs/components/Chopin/TradeSelector/useFetchTrades/index.d.ts +1 -0
  53. package/dist/cjs/components/Chopin/TradeSelector/{SelectedTrade → useFetchTrades}/index.js +1 -1
  54. package/dist/cjs/components/Chopin/TradeSelector/useFetchTrades/index.js.map +1 -0
  55. package/dist/cjs/components/Chopin/TradeSelector/useFetchTrades/useFetchTrades.d.ts +8 -0
  56. package/dist/cjs/components/Chopin/TradeSelector/useFetchTrades/useFetchTrades.js +62 -0
  57. package/dist/cjs/components/Chopin/TradeSelector/useFetchTrades/useFetchTrades.js.map +1 -0
  58. package/dist/cjs/components/Chopin/TradeSelector/useTradeSelectorUrl/index.d.ts +1 -0
  59. package/dist/cjs/components/Chopin/TradeSelector/useTradeSelectorUrl/index.js +18 -0
  60. package/dist/cjs/components/Chopin/TradeSelector/{useTradeSelector → useTradeSelectorUrl}/index.js.map +1 -1
  61. package/dist/cjs/components/Chopin/TradeSelector/useTradeSelectorUrl/useTradeSelectorUrl.d.ts +6 -0
  62. package/dist/cjs/components/Chopin/TradeSelector/useTradeSelectorUrl/useTradeSelectorUrl.js +20 -0
  63. package/dist/cjs/components/Chopin/TradeSelector/useTradeSelectorUrl/useTradeSelectorUrl.js.map +1 -0
  64. package/dist/cjs/components/Chopin/TradeSelector/useTradeSelectorUrl/useTradeSelectorUrl.test.js +29 -0
  65. package/dist/cjs/components/Chopin/TradeSelector/useTradeSelectorUrl/useTradeSelectorUrl.test.js.map +1 -0
  66. package/dist/cjs/components/Chopin/index.d.ts +5 -5
  67. package/dist/cjs/components/Chopin/index.js +5 -5
  68. package/dist/cjs/components/Chopin/index.js.map +1 -1
  69. package/dist/cjs/hooks/useOnClickOutside/index.d.ts +1 -0
  70. package/dist/cjs/hooks/useOnClickOutside/index.js +18 -0
  71. package/dist/cjs/hooks/useOnClickOutside/index.js.map +1 -0
  72. package/dist/cjs/hooks/useOnClickOutside/useOnClickOutside.d.ts +2 -0
  73. package/dist/cjs/hooks/useOnClickOutside/useOnClickOutside.js +23 -0
  74. package/dist/cjs/hooks/useOnClickOutside/useOnClickOutside.js.map +1 -0
  75. package/dist/esm/components/Chopin/QuestionHelp/QuestionHelp.js +6 -11
  76. package/dist/esm/components/Chopin/QuestionHelp/QuestionHelp.js.map +1 -1
  77. package/dist/esm/components/Chopin/TradeSelector/Header/Header.js +10 -0
  78. package/dist/esm/components/Chopin/TradeSelector/Header/Header.js.map +1 -0
  79. package/dist/esm/components/Chopin/TradeSelector/Header/index.js +2 -0
  80. package/dist/esm/components/Chopin/TradeSelector/Header/index.js.map +1 -0
  81. package/dist/esm/components/Chopin/TradeSelector/Listing/Listing.js +17 -0
  82. package/dist/esm/components/Chopin/TradeSelector/Listing/Listing.js.map +1 -0
  83. package/dist/esm/components/Chopin/TradeSelector/Listing/Listing.test.js +26 -0
  84. package/dist/esm/components/Chopin/TradeSelector/Listing/Listing.test.js.map +1 -0
  85. package/dist/esm/components/Chopin/TradeSelector/Listing/ListingItem.js +21 -0
  86. package/dist/esm/components/Chopin/TradeSelector/Listing/ListingItem.js.map +1 -0
  87. package/dist/esm/components/Chopin/TradeSelector/Listing/ListingItem.test.js +37 -0
  88. package/dist/esm/components/Chopin/TradeSelector/Listing/ListingItem.test.js.map +1 -0
  89. package/dist/esm/components/Chopin/TradeSelector/Listing/index.js +2 -0
  90. package/dist/esm/components/Chopin/TradeSelector/Listing/index.js.map +1 -0
  91. package/dist/esm/components/Chopin/TradeSelector/SearchResults/SearchResults.js +90 -16
  92. package/dist/esm/components/Chopin/TradeSelector/SearchResults/SearchResults.js.map +1 -1
  93. package/dist/esm/components/Chopin/TradeSelector/SearchResults/SearchResults.test.js +75 -103
  94. package/dist/esm/components/Chopin/TradeSelector/SearchResults/SearchResults.test.js.map +1 -1
  95. package/dist/esm/components/Chopin/TradeSelector/TradeInput/TradeInput.js +30 -0
  96. package/dist/esm/components/Chopin/TradeSelector/TradeInput/TradeInput.js.map +1 -0
  97. package/dist/esm/components/Chopin/TradeSelector/TradeInput/TradeInput.test.js +52 -0
  98. package/dist/esm/components/Chopin/TradeSelector/TradeInput/TradeInput.test.js.map +1 -0
  99. package/dist/esm/components/Chopin/TradeSelector/TradeInput/index.js +2 -0
  100. package/dist/esm/components/Chopin/TradeSelector/TradeInput/index.js.map +1 -0
  101. package/dist/esm/components/Chopin/TradeSelector/TradeSelector.js +63 -32
  102. package/dist/esm/components/Chopin/TradeSelector/TradeSelector.js.map +1 -1
  103. package/dist/esm/components/Chopin/TradeSelector/TradeSelector.test.js +154 -242
  104. package/dist/esm/components/Chopin/TradeSelector/TradeSelector.test.js.map +1 -1
  105. package/dist/esm/components/Chopin/TradeSelector/config/shared.js +9 -0
  106. package/dist/esm/components/Chopin/TradeSelector/config/shared.js.map +1 -1
  107. package/dist/esm/components/Chopin/TradeSelector/jestHTMLDialogPolyfill.js +13 -0
  108. package/dist/esm/components/Chopin/TradeSelector/jestHTMLDialogPolyfill.js.map +1 -0
  109. package/dist/esm/components/Chopin/TradeSelector/mockApiResults.js +10 -0
  110. package/dist/esm/components/Chopin/TradeSelector/mockApiResults.js.map +1 -1
  111. package/dist/esm/components/Chopin/TradeSelector/useFetchTrades/index.js +2 -0
  112. package/dist/esm/components/Chopin/TradeSelector/useFetchTrades/index.js.map +1 -0
  113. package/dist/esm/components/Chopin/TradeSelector/useFetchTrades/useFetchTrades.js +55 -0
  114. package/dist/esm/components/Chopin/TradeSelector/useFetchTrades/useFetchTrades.js.map +1 -0
  115. package/dist/esm/components/Chopin/TradeSelector/useTradeSelectorUrl/index.js +2 -0
  116. package/dist/esm/components/Chopin/TradeSelector/{useTradeSelector → useTradeSelectorUrl}/index.js.map +1 -1
  117. package/dist/esm/components/Chopin/TradeSelector/useTradeSelectorUrl/useTradeSelectorUrl.js +16 -0
  118. package/dist/esm/components/Chopin/TradeSelector/useTradeSelectorUrl/useTradeSelectorUrl.js.map +1 -0
  119. package/dist/esm/components/Chopin/TradeSelector/useTradeSelectorUrl/useTradeSelectorUrl.test.js +27 -0
  120. package/dist/esm/components/Chopin/TradeSelector/useTradeSelectorUrl/useTradeSelectorUrl.test.js.map +1 -0
  121. package/dist/esm/components/Chopin/index.js +5 -5
  122. package/dist/esm/components/Chopin/index.js.map +1 -1
  123. package/dist/esm/hooks/useOnClickOutside/index.js +2 -0
  124. package/dist/esm/hooks/useOnClickOutside/index.js.map +1 -0
  125. package/dist/esm/hooks/useOnClickOutside/useOnClickOutside.js +19 -0
  126. package/dist/esm/hooks/useOnClickOutside/useOnClickOutside.js.map +1 -0
  127. package/dist/mobius.d.ts +38 -30
  128. package/package.json +5 -7
  129. package/src/components/Chopin/QuestionHelp/QuestionHelp.tsx +8 -20
  130. package/src/components/Chopin/TradeSelector/Header/Header.tsx +33 -0
  131. package/src/components/Chopin/TradeSelector/Header/index.tsx +1 -0
  132. package/src/components/Chopin/TradeSelector/Listing/Listing.test.tsx +42 -0
  133. package/src/components/Chopin/TradeSelector/Listing/Listing.tsx +51 -0
  134. package/src/components/Chopin/TradeSelector/Listing/ListingItem.test.tsx +54 -0
  135. package/src/components/Chopin/TradeSelector/Listing/ListingItem.tsx +50 -0
  136. package/src/components/Chopin/TradeSelector/Listing/index.tsx +1 -0
  137. package/src/components/Chopin/TradeSelector/SearchResults/SearchResults.test.tsx +90 -130
  138. package/src/components/Chopin/TradeSelector/SearchResults/SearchResults.tsx +169 -66
  139. package/src/components/Chopin/TradeSelector/TradeInput/TradeInput.test.tsx +74 -0
  140. package/src/components/Chopin/TradeSelector/TradeInput/TradeInput.tsx +94 -0
  141. package/src/components/Chopin/TradeSelector/TradeInput/index.tsx +1 -0
  142. package/src/components/Chopin/TradeSelector/TradeSelector.story.mdx +75 -49
  143. package/src/components/Chopin/TradeSelector/TradeSelector.test.tsx +228 -300
  144. package/src/components/Chopin/TradeSelector/TradeSelector.tsx +124 -93
  145. package/src/components/Chopin/TradeSelector/config/shared.ts +9 -0
  146. package/src/components/Chopin/TradeSelector/jestHTMLDialogPolyfill.ts +17 -0
  147. package/src/components/Chopin/TradeSelector/mockApiResults.ts +11 -0
  148. package/src/components/Chopin/TradeSelector/types.ts +24 -6
  149. package/src/components/Chopin/TradeSelector/useFetchTrades/index.ts +1 -0
  150. package/src/components/Chopin/TradeSelector/useFetchTrades/useFetchTrades.ts +67 -0
  151. package/src/components/Chopin/TradeSelector/useTradeSelectorUrl/index.ts +1 -0
  152. package/src/components/Chopin/TradeSelector/useTradeSelectorUrl/useTradeSelectorUrl.test.ts +37 -0
  153. package/src/components/Chopin/TradeSelector/useTradeSelectorUrl/useTradeSelectorUrl.ts +26 -0
  154. package/src/components/Chopin/index.tsx +5 -5
  155. package/src/components/Link/Link.story.mdx +14 -0
  156. package/src/hooks/useOnClickOutside/index.ts +1 -0
  157. package/src/hooks/useOnClickOutside/useOnClickOutside.ts +23 -0
  158. package/dist/cjs/components/Chopin/TradeSelector/ComboBox/ComboBox.d.ts +0 -9
  159. package/dist/cjs/components/Chopin/TradeSelector/ComboBox/ComboBox.js +0 -37
  160. package/dist/cjs/components/Chopin/TradeSelector/ComboBox/ComboBox.js.map +0 -1
  161. package/dist/cjs/components/Chopin/TradeSelector/ComboBox/ComboBox.test.js +0 -59
  162. package/dist/cjs/components/Chopin/TradeSelector/ComboBox/ComboBox.test.js.map +0 -1
  163. package/dist/cjs/components/Chopin/TradeSelector/ComboBox/index.d.ts +0 -1
  164. package/dist/cjs/components/Chopin/TradeSelector/ComboBox/index.js.map +0 -1
  165. package/dist/cjs/components/Chopin/TradeSelector/ListBox/ListBox.d.ts +0 -13
  166. package/dist/cjs/components/Chopin/TradeSelector/ListBox/ListBox.js +0 -16
  167. package/dist/cjs/components/Chopin/TradeSelector/ListBox/ListBox.js.map +0 -1
  168. package/dist/cjs/components/Chopin/TradeSelector/ListBox/ListBoxSection.d.ts +0 -8
  169. package/dist/cjs/components/Chopin/TradeSelector/ListBox/ListBoxSection.js +0 -15
  170. package/dist/cjs/components/Chopin/TradeSelector/ListBox/ListBoxSection.js.map +0 -1
  171. package/dist/cjs/components/Chopin/TradeSelector/ListBox/Option.d.ts +0 -9
  172. package/dist/cjs/components/Chopin/TradeSelector/ListBox/Option.js +0 -22
  173. package/dist/cjs/components/Chopin/TradeSelector/ListBox/Option.js.map +0 -1
  174. package/dist/cjs/components/Chopin/TradeSelector/ListBox/index.d.ts +0 -1
  175. package/dist/cjs/components/Chopin/TradeSelector/ListBox/index.js.map +0 -1
  176. package/dist/cjs/components/Chopin/TradeSelector/Popover/Popover.d.ts +0 -10
  177. package/dist/cjs/components/Chopin/TradeSelector/Popover/Popover.js +0 -24
  178. package/dist/cjs/components/Chopin/TradeSelector/Popover/Popover.js.map +0 -1
  179. package/dist/cjs/components/Chopin/TradeSelector/Popover/Popover.test.js +0 -18
  180. package/dist/cjs/components/Chopin/TradeSelector/Popover/Popover.test.js.map +0 -1
  181. package/dist/cjs/components/Chopin/TradeSelector/Popover/index.d.ts +0 -1
  182. package/dist/cjs/components/Chopin/TradeSelector/Popover/index.js.map +0 -1
  183. package/dist/cjs/components/Chopin/TradeSelector/SelectedTrade/SelectedTrade.d.ts +0 -5
  184. package/dist/cjs/components/Chopin/TradeSelector/SelectedTrade/SelectedTrade.js +0 -8
  185. package/dist/cjs/components/Chopin/TradeSelector/SelectedTrade/SelectedTrade.js.map +0 -1
  186. package/dist/cjs/components/Chopin/TradeSelector/SelectedTrade/SelectedTrade.test.js +0 -18
  187. package/dist/cjs/components/Chopin/TradeSelector/SelectedTrade/SelectedTrade.test.js.map +0 -1
  188. package/dist/cjs/components/Chopin/TradeSelector/SelectedTrade/index.d.ts +0 -1
  189. package/dist/cjs/components/Chopin/TradeSelector/SelectedTrade/index.js.map +0 -1
  190. package/dist/cjs/components/Chopin/TradeSelector/getItemsToDisplay/getItemsToDisplay.d.ts +0 -7
  191. package/dist/cjs/components/Chopin/TradeSelector/getItemsToDisplay/getItemsToDisplay.js +0 -27
  192. package/dist/cjs/components/Chopin/TradeSelector/getItemsToDisplay/getItemsToDisplay.js.map +0 -1
  193. package/dist/cjs/components/Chopin/TradeSelector/getItemsToDisplay/getItemsToDisplay.test.js +0 -76
  194. package/dist/cjs/components/Chopin/TradeSelector/getItemsToDisplay/getItemsToDisplay.test.js.map +0 -1
  195. package/dist/cjs/components/Chopin/TradeSelector/getItemsToDisplay/index.d.ts +0 -1
  196. package/dist/cjs/components/Chopin/TradeSelector/getItemsToDisplay/index.js +0 -18
  197. package/dist/cjs/components/Chopin/TradeSelector/getItemsToDisplay/index.js.map +0 -1
  198. package/dist/cjs/components/Chopin/TradeSelector/getTradesGroupedByType/getTradesGroupedByType.d.ts +0 -2
  199. package/dist/cjs/components/Chopin/TradeSelector/getTradesGroupedByType/getTradesGroupedByType.js +0 -17
  200. package/dist/cjs/components/Chopin/TradeSelector/getTradesGroupedByType/getTradesGroupedByType.js.map +0 -1
  201. package/dist/cjs/components/Chopin/TradeSelector/getTradesGroupedByType/getTradesGroupedByType.test.d.ts +0 -1
  202. package/dist/cjs/components/Chopin/TradeSelector/getTradesGroupedByType/getTradesGroupedByType.test.js +0 -42
  203. package/dist/cjs/components/Chopin/TradeSelector/getTradesGroupedByType/getTradesGroupedByType.test.js.map +0 -1
  204. package/dist/cjs/components/Chopin/TradeSelector/getTradesGroupedByType/index.d.ts +0 -1
  205. package/dist/cjs/components/Chopin/TradeSelector/getTradesGroupedByType/index.js +0 -18
  206. package/dist/cjs/components/Chopin/TradeSelector/getTradesGroupedByType/index.js.map +0 -1
  207. package/dist/cjs/components/Chopin/TradeSelector/useTradeSelector/index.d.ts +0 -1
  208. package/dist/cjs/components/Chopin/TradeSelector/useTradeSelector/index.js +0 -18
  209. package/dist/cjs/components/Chopin/TradeSelector/useTradeSelector/useTradeSelector.d.ts +0 -17
  210. package/dist/cjs/components/Chopin/TradeSelector/useTradeSelector/useTradeSelector.js +0 -68
  211. package/dist/cjs/components/Chopin/TradeSelector/useTradeSelector/useTradeSelector.js.map +0 -1
  212. package/dist/cjs/components/Chopin/TradeSelector/useTradeSelector/useTradeSelector.test.d.ts +0 -1
  213. package/dist/cjs/components/Chopin/TradeSelector/useTradeSelector/useTradeSelector.test.js +0 -86
  214. package/dist/cjs/components/Chopin/TradeSelector/useTradeSelector/useTradeSelector.test.js.map +0 -1
  215. package/dist/esm/components/Chopin/TradeSelector/ComboBox/ComboBox.js +0 -31
  216. package/dist/esm/components/Chopin/TradeSelector/ComboBox/ComboBox.js.map +0 -1
  217. package/dist/esm/components/Chopin/TradeSelector/ComboBox/ComboBox.test.js +0 -54
  218. package/dist/esm/components/Chopin/TradeSelector/ComboBox/ComboBox.test.js.map +0 -1
  219. package/dist/esm/components/Chopin/TradeSelector/ComboBox/index.js +0 -2
  220. package/dist/esm/components/Chopin/TradeSelector/ComboBox/index.js.map +0 -1
  221. package/dist/esm/components/Chopin/TradeSelector/ListBox/ListBox.js +0 -13
  222. package/dist/esm/components/Chopin/TradeSelector/ListBox/ListBox.js.map +0 -1
  223. package/dist/esm/components/Chopin/TradeSelector/ListBox/ListBoxSection.js +0 -12
  224. package/dist/esm/components/Chopin/TradeSelector/ListBox/ListBoxSection.js.map +0 -1
  225. package/dist/esm/components/Chopin/TradeSelector/ListBox/Option.js +0 -16
  226. package/dist/esm/components/Chopin/TradeSelector/ListBox/Option.js.map +0 -1
  227. package/dist/esm/components/Chopin/TradeSelector/ListBox/index.js +0 -2
  228. package/dist/esm/components/Chopin/TradeSelector/ListBox/index.js.map +0 -1
  229. package/dist/esm/components/Chopin/TradeSelector/Popover/Popover.js +0 -21
  230. package/dist/esm/components/Chopin/TradeSelector/Popover/Popover.js.map +0 -1
  231. package/dist/esm/components/Chopin/TradeSelector/Popover/Popover.test.js +0 -16
  232. package/dist/esm/components/Chopin/TradeSelector/Popover/Popover.test.js.map +0 -1
  233. package/dist/esm/components/Chopin/TradeSelector/Popover/index.js +0 -2
  234. package/dist/esm/components/Chopin/TradeSelector/Popover/index.js.map +0 -1
  235. package/dist/esm/components/Chopin/TradeSelector/SelectedTrade/SelectedTrade.js +0 -4
  236. package/dist/esm/components/Chopin/TradeSelector/SelectedTrade/SelectedTrade.js.map +0 -1
  237. package/dist/esm/components/Chopin/TradeSelector/SelectedTrade/SelectedTrade.test.js +0 -16
  238. package/dist/esm/components/Chopin/TradeSelector/SelectedTrade/SelectedTrade.test.js.map +0 -1
  239. package/dist/esm/components/Chopin/TradeSelector/SelectedTrade/index.js +0 -2
  240. package/dist/esm/components/Chopin/TradeSelector/SelectedTrade/index.js.map +0 -1
  241. package/dist/esm/components/Chopin/TradeSelector/getItemsToDisplay/getItemsToDisplay.js +0 -23
  242. package/dist/esm/components/Chopin/TradeSelector/getItemsToDisplay/getItemsToDisplay.js.map +0 -1
  243. package/dist/esm/components/Chopin/TradeSelector/getItemsToDisplay/getItemsToDisplay.test.js +0 -74
  244. package/dist/esm/components/Chopin/TradeSelector/getItemsToDisplay/getItemsToDisplay.test.js.map +0 -1
  245. package/dist/esm/components/Chopin/TradeSelector/getItemsToDisplay/index.js +0 -2
  246. package/dist/esm/components/Chopin/TradeSelector/getItemsToDisplay/index.js.map +0 -1
  247. package/dist/esm/components/Chopin/TradeSelector/getTradesGroupedByType/getTradesGroupedByType.js +0 -13
  248. package/dist/esm/components/Chopin/TradeSelector/getTradesGroupedByType/getTradesGroupedByType.js.map +0 -1
  249. package/dist/esm/components/Chopin/TradeSelector/getTradesGroupedByType/getTradesGroupedByType.test.js +0 -40
  250. package/dist/esm/components/Chopin/TradeSelector/getTradesGroupedByType/getTradesGroupedByType.test.js.map +0 -1
  251. package/dist/esm/components/Chopin/TradeSelector/getTradesGroupedByType/index.js +0 -2
  252. package/dist/esm/components/Chopin/TradeSelector/getTradesGroupedByType/index.js.map +0 -1
  253. package/dist/esm/components/Chopin/TradeSelector/useTradeSelector/index.js +0 -2
  254. package/dist/esm/components/Chopin/TradeSelector/useTradeSelector/useTradeSelector.js +0 -65
  255. package/dist/esm/components/Chopin/TradeSelector/useTradeSelector/useTradeSelector.js.map +0 -1
  256. package/dist/esm/components/Chopin/TradeSelector/useTradeSelector/useTradeSelector.test.js +0 -84
  257. package/dist/esm/components/Chopin/TradeSelector/useTradeSelector/useTradeSelector.test.js.map +0 -1
  258. package/src/components/Chopin/TradeSelector/ComboBox/ComboBox.test.tsx +0 -85
  259. package/src/components/Chopin/TradeSelector/ComboBox/ComboBox.tsx +0 -74
  260. package/src/components/Chopin/TradeSelector/ComboBox/index.tsx +0 -1
  261. package/src/components/Chopin/TradeSelector/ListBox/ListBox.tsx +0 -36
  262. package/src/components/Chopin/TradeSelector/ListBox/ListBoxSection.tsx +0 -34
  263. package/src/components/Chopin/TradeSelector/ListBox/Option.tsx +0 -35
  264. package/src/components/Chopin/TradeSelector/ListBox/index.tsx +0 -1
  265. package/src/components/Chopin/TradeSelector/Popover/Popover.test.tsx +0 -28
  266. package/src/components/Chopin/TradeSelector/Popover/Popover.tsx +0 -42
  267. package/src/components/Chopin/TradeSelector/Popover/index.tsx +0 -1
  268. package/src/components/Chopin/TradeSelector/SelectedTrade/SelectedTrade.test.tsx +0 -24
  269. package/src/components/Chopin/TradeSelector/SelectedTrade/SelectedTrade.tsx +0 -20
  270. package/src/components/Chopin/TradeSelector/SelectedTrade/index.tsx +0 -1
  271. package/src/components/Chopin/TradeSelector/getItemsToDisplay/getItemsToDisplay.test.ts +0 -97
  272. package/src/components/Chopin/TradeSelector/getItemsToDisplay/getItemsToDisplay.ts +0 -36
  273. package/src/components/Chopin/TradeSelector/getItemsToDisplay/index.ts +0 -1
  274. package/src/components/Chopin/TradeSelector/getTradesGroupedByType/getTradesGroupedByType.test.ts +0 -49
  275. package/src/components/Chopin/TradeSelector/getTradesGroupedByType/getTradesGroupedByType.ts +0 -19
  276. package/src/components/Chopin/TradeSelector/getTradesGroupedByType/index.ts +0 -1
  277. package/src/components/Chopin/TradeSelector/useTradeSelector/index.ts +0 -1
  278. package/src/components/Chopin/TradeSelector/useTradeSelector/useTradeSelector.test.ts +0 -107
  279. package/src/components/Chopin/TradeSelector/useTradeSelector/useTradeSelector.ts +0 -82
  280. /package/dist/cjs/components/Chopin/TradeSelector/{ComboBox/ComboBox.test.d.ts → Listing/Listing.test.d.ts} +0 -0
  281. /package/dist/cjs/components/Chopin/TradeSelector/{Popover/Popover.test.d.ts → Listing/ListingItem.test.d.ts} +0 -0
  282. /package/dist/cjs/components/Chopin/TradeSelector/{SelectedTrade/SelectedTrade.test.d.ts → TradeInput/TradeInput.test.d.ts} +0 -0
  283. /package/dist/cjs/components/Chopin/TradeSelector/{getItemsToDisplay/getItemsToDisplay.test.d.ts → useTradeSelectorUrl/useTradeSelectorUrl.test.d.ts} +0 -0
@@ -1,40 +0,0 @@
1
- import { getTradesGroupedByType } from ".";
2
- import { exactResults, suggestedResults } from "../mockApiResults";
3
- describe("getTradesGroupedByType", () => {
4
- describe("given a list of API results", () => {
5
- it("should return a list of grouped results with labels", () => {
6
- const labels = {
7
- exact: "Exact matches for your search",
8
- suggested: "Suggested matches for your search",
9
- };
10
- const mockedApiResults = [...exactResults, ...suggestedResults];
11
- const input = getTradesGroupedByType(mockedApiResults, labels);
12
- const expected = [
13
- {
14
- name: "exact",
15
- title: "Exact matches for your search",
16
- children: [...exactResults],
17
- },
18
- {
19
- name: "suggested",
20
- title: "Suggested matches for your search",
21
- children: [...suggestedResults],
22
- },
23
- ];
24
- expect(input).toEqual(expected);
25
- });
26
- });
27
- describe("given no API results", () => {
28
- it("should return an empty array ", () => {
29
- const labels = {
30
- exact: "Exact matches",
31
- suggested: "Suggested matches",
32
- };
33
- const apiResults = [];
34
- const input = getTradesGroupedByType(apiResults, labels);
35
- const expected = [];
36
- expect(input).toEqual(expected);
37
- });
38
- });
39
- });
40
- //# sourceMappingURL=getTradesGroupedByType.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getTradesGroupedByType.test.js","sourceRoot":"","sources":["../../../../../../src/components/Chopin/TradeSelector/getTradesGroupedByType/getTradesGroupedByType.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,GAAG,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAEnE,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;QAC3C,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;YAC7D,MAAM,MAAM,GAAG;gBACb,KAAK,EAAE,+BAA+B;gBACtC,SAAS,EAAE,mCAAmC;aAC/C,CAAC;YAEF,MAAM,gBAAgB,GAAG,CAAC,GAAG,YAAY,EAAE,GAAG,gBAAgB,CAAC,CAAC;YAEhE,MAAM,KAAK,GAAG,sBAAsB,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;YAE/D,MAAM,QAAQ,GAAG;gBACf;oBACE,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,+BAA+B;oBACtC,QAAQ,EAAE,CAAC,GAAG,YAAY,CAAC;iBAC5B;gBACD;oBACE,IAAI,EAAE,WAAW;oBACjB,KAAK,EAAE,mCAAmC;oBAC1C,QAAQ,EAAE,CAAC,GAAG,gBAAgB,CAAC;iBAChC;aACF,CAAC;YAEF,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;QACpC,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;YACvC,MAAM,MAAM,GAAG;gBACb,KAAK,EAAE,eAAe;gBACtB,SAAS,EAAE,mBAAmB;aAC/B,CAAC;YAEF,MAAM,UAAU,GAAG,EAAQ,CAAC;YAE5B,MAAM,KAAK,GAAG,sBAAsB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YAEzD,MAAM,QAAQ,GAAG,EAAQ,CAAC;YAE1B,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export * from "./getTradesGroupedByType";
2
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/components/Chopin/TradeSelector/getTradesGroupedByType/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC"}
@@ -1,2 +0,0 @@
1
- export * from "./useTradeSelector";
2
- //# sourceMappingURL=index.js.map
@@ -1,65 +0,0 @@
1
- import { useState, useEffect } from "react";
2
- import { useAsyncList } from "@react-stately/data";
3
- const formattedTrades = (trades = []) => ({
4
- items: Array.isArray(trades) ? trades : [trades],
5
- });
6
- const useTradeSelector = ({ minInput, urls, onTradeSelected, initialTrade, }) => {
7
- const [userInput, setUserInput] = useState("");
8
- const [selectedTrade, setSelectedTrade] = useState(initialTrade);
9
- const [hasUserChangedMind, setHasUserChangedMind] = useState(false);
10
- const endpoint = `${urls.tradeApi}?q=${encodeURIComponent(userInput)}&site=${urls.quoteRedirect}`;
11
- const list = useAsyncList({
12
- async load({ signal }) {
13
- if (userInput.length === 0)
14
- return formattedTrades();
15
- if (initialTrade && userInput.length === 0)
16
- formattedTrades(initialTrade);
17
- const response = await fetch(endpoint, {
18
- signal,
19
- });
20
- const json = await response.json();
21
- return formattedTrades(json.results);
22
- },
23
- });
24
- const handleSelectionChange = (value) => {
25
- const items = list.items;
26
- const trade = items.find(entry => entry.value === value);
27
- setSelectedTrade(trade === null || trade === void 0 ? void 0 : trade.value);
28
- setUserInput(value.toString());
29
- setHasUserChangedMind(false);
30
- if (trade && onTradeSelected) {
31
- try {
32
- onTradeSelected(trade);
33
- }
34
- catch (err) {
35
- // eslint-disable-next-line no-console
36
- console.error("onTradeSelected returned the following error", err);
37
- }
38
- }
39
- };
40
- const handleUserChangedMind = () => {
41
- if (initialTrade) {
42
- setUserInput(initialTrade);
43
- }
44
- setHasUserChangedMind(true);
45
- };
46
- useEffect(() => {
47
- if (userInput.length >= minInput)
48
- list.reload();
49
- // eslint-disable-next-line react-hooks/exhaustive-deps
50
- }, [userInput, minInput]);
51
- return {
52
- inputValue: userInput,
53
- isLoading: list.isLoading,
54
- trades: list.items,
55
- error: list.error,
56
- onInputChange: setUserInput,
57
- onSelectionChange: handleSelectionChange,
58
- selectedTrade,
59
- hasUserChangedMind,
60
- onUserChangedMind: handleUserChangedMind,
61
- };
62
- };
63
- useTradeSelector.displayName = "useTradeSelector";
64
- export { useTradeSelector };
65
- //# sourceMappingURL=useTradeSelector.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useTradeSelector.js","sourceRoot":"","sources":["../../../../../../src/components/Chopin/TradeSelector/useTradeSelector/useTradeSelector.ts"],"names":[],"mappings":"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"}
@@ -1,84 +0,0 @@
1
- import { renderHook, waitFor } from "@testing-library/react";
2
- import { useTradeSelector } from "./useTradeSelector";
3
- const trade = {
4
- value: "Builder",
5
- vertical: "business",
6
- supported_verticals: ["contractors_combined"],
7
- label: "<strong>Builder</strong>",
8
- type: "exact",
9
- trade_detail: null,
10
- trade_type: null,
11
- blocked: false,
12
- };
13
- let fetchMock;
14
- global.fetch = jest.fn(() => Promise.resolve({
15
- json: () => Promise.resolve({
16
- items: [],
17
- }),
18
- }));
19
- describe("useTradeSelector", () => {
20
- beforeEach(() => {
21
- fetchMock = jest.spyOn(global, "fetch");
22
- });
23
- afterEach(() => {
24
- jest.restoreAllMocks();
25
- });
26
- describe("with no initial trade provided", () => {
27
- it("should not call the API on initial render", async () => {
28
- const { result } = renderHook(() => useTradeSelector({
29
- minInput: 3,
30
- apiRequestDebounceInMs: 250,
31
- urls: {
32
- quoteRedirect: "redirect-link",
33
- tradeApi: "trade-api-link",
34
- allOccupations: "https://quote.simplybusiness.co.uk/trades?vertical=business",
35
- },
36
- }));
37
- await waitFor(() => {
38
- expect(result.current.isLoading).toBeFalsy();
39
- expect(fetchMock).not.toHaveBeenCalled();
40
- });
41
- });
42
- });
43
- describe("with initial trade provided", () => {
44
- it("should not call the API on initial render", async () => {
45
- const { result } = renderHook(() => useTradeSelector({
46
- minInput: 3,
47
- apiRequestDebounceInMs: 250,
48
- urls: {
49
- quoteRedirect: "redirect-link",
50
- tradeApi: "trade-api-link",
51
- allOccupations: "https://quote.simplybusiness.co.uk/trades?vertical=business",
52
- },
53
- initialTrade: trade.value,
54
- }));
55
- await waitFor(() => {
56
- expect(result.current.isLoading).toBeFalsy();
57
- expect(fetchMock).not.toHaveBeenCalled();
58
- });
59
- });
60
- });
61
- describe("with user input set above minimum length", () => {
62
- it("should call the API", async () => {
63
- const quoteRedirect = "redirect-link";
64
- const tradeApi = "trade-api-link";
65
- const userInput = "Cleaner";
66
- const link = `${tradeApi}?q=${userInput}&site=${quoteRedirect}`;
67
- const AbortSignalMock = expect.anything();
68
- const { result } = renderHook(() => useTradeSelector({
69
- minInput: 3,
70
- apiRequestDebounceInMs: 250,
71
- urls: {
72
- quoteRedirect: "redirect-link",
73
- tradeApi: "trade-api-link",
74
- allOccupations: "https://quote.simplybusiness.co.uk/trades?vertical=business",
75
- },
76
- }));
77
- await waitFor(() => {
78
- result.current.onInputChange(userInput);
79
- expect(fetchMock).toHaveBeenCalledWith(link, AbortSignalMock);
80
- });
81
- });
82
- });
83
- });
84
- //# sourceMappingURL=useTradeSelector.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useTradeSelector.test.js","sourceRoot":"","sources":["../../../../../../src/components/Chopin/TradeSelector/useTradeSelector/useTradeSelector.test.ts"],"names":[],"mappings":"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"}
@@ -1,85 +0,0 @@
1
- import { render, screen } from "@testing-library/react";
2
- import userEvent from "@testing-library/user-event";
3
- import { Section, Item } from "@react-stately/collections";
4
- import { ComboBox } from ".";
5
-
6
- const CONTAINER_CLASS_NAME = "chopin/ComboBoxInputContainer";
7
- const INPUT_CLASS_NAME = "chopin/ComboBoxInput";
8
-
9
- const LISTBOX_CLASS_NAME = "chopin/ListBoxSection";
10
- const LISTBOX_HEADING_CLASS_NAME = "chopin/ListBoxSectionHeading";
11
- const LISTBOX_LIST_CLASS_NAME = "chopin/ListBoxSectionList";
12
- const LISTBOX_OPTION_CLASS_NAME = "chopin/TradeSelectorOption";
13
-
14
- describe("ComboBox", () => {
15
- it("should render without errors", async () => {
16
- const sampleContent = "Sample text";
17
-
18
- render(
19
- <ComboBox label="Test">
20
- <Item>{sampleContent}</Item>
21
- </ComboBox>,
22
- );
23
-
24
- await userEvent.tab();
25
-
26
- await userEvent.keyboard("[Alt][ArrowDown]");
27
-
28
- expect(screen.getByText(sampleContent)).toBeInTheDocument();
29
- });
30
-
31
- it("should render with class names", () => {
32
- render(
33
- <ComboBox label="Test">
34
- <Item>Sample text</Item>
35
- </ComboBox>,
36
- );
37
-
38
- const input = screen.getByRole("combobox");
39
-
40
- expect(input.parentElement).toHaveClass(CONTAINER_CLASS_NAME);
41
- expect(input).toHaveClass(INPUT_CLASS_NAME);
42
- });
43
-
44
- // NOTE: testing ListBox in isolation, requires complicated state mocking.
45
- // ComboBox uses ListBox and provides it with a generated state object.
46
- describe("nested ListBox", () => {
47
- it("should render with class names", async () => {
48
- const firstSection = "First section";
49
- const firstItem = "First item";
50
- const secondSection = "Second section";
51
- const secondItem = "Second item";
52
- const EXPECTED_NUMBER_OF_SECTIONS = 2;
53
- const EXPECTED_NUMBER_OF_GROUPS = 2;
54
- const EXPECTED_NUMBER_OF_ITEMS = 2;
55
-
56
- render(
57
- <ComboBox label="Test">
58
- <Section title={firstSection}>
59
- <Item>{firstItem}</Item>
60
- </Section>
61
- <Section title={secondSection}>
62
- <Item>{secondItem}</Item>
63
- </Section>
64
- </ComboBox>,
65
- );
66
-
67
- await userEvent.tab();
68
-
69
- await userEvent.keyboard("[Alt][ArrowDown]");
70
-
71
- const sections = screen.queryAllByRole("presentation");
72
- const groups = screen.queryAllByRole("group");
73
- const items = screen.queryAllByRole("option");
74
- const heading = sections[0].firstChild;
75
-
76
- expect(sections.length).toBe(EXPECTED_NUMBER_OF_SECTIONS);
77
- expect(groups.length).toBe(EXPECTED_NUMBER_OF_GROUPS);
78
- expect(items.length).toBe(EXPECTED_NUMBER_OF_ITEMS);
79
- expect(sections[0]).toHaveClass(LISTBOX_CLASS_NAME);
80
- expect(groups[0]).toHaveClass(LISTBOX_LIST_CLASS_NAME);
81
- expect(items[0]).toHaveClass(LISTBOX_OPTION_CLASS_NAME);
82
- expect(heading).toHaveClass(LISTBOX_HEADING_CLASS_NAME);
83
- });
84
- });
85
- });
@@ -1,74 +0,0 @@
1
- import { useRef } from "react";
2
- import type { ComboBoxProps } from "@react-types/combobox";
3
- import { AriaLabelingProps, DOMProps } from "@react-types/shared";
4
- import { useComboBoxState } from "@react-stately/combobox";
5
- import { useComboBox } from "@react-aria/combobox";
6
- import { useHover } from "@react-aria/interactions";
7
- import { useFocusRing } from "@react-aria/focus";
8
- import clsx from "clsx";
9
- import { ListBox } from "../ListBox";
10
- import { Popover } from "../Popover";
11
-
12
- export interface AllComboBoxProps<T extends object> extends ComboBoxProps<T> {
13
- className?: string;
14
- fieldProps?: AriaLabelingProps & DOMProps;
15
- label?: string;
16
- }
17
-
18
- const ComboBox = <T extends object>(props: AllComboBoxProps<T>) => {
19
- const { className, fieldProps, label } = props;
20
- const state = useComboBoxState({ ...props });
21
- const inputRef = useRef(null);
22
- const listBoxRef = useRef(null);
23
- const popoverRef = useRef(null);
24
-
25
- const { inputProps, listBoxProps } = useComboBox(
26
- {
27
- ...props,
28
- ...fieldProps,
29
- inputRef,
30
- listBoxRef,
31
- popoverRef,
32
- },
33
- state,
34
- );
35
-
36
- const { close } = state;
37
-
38
- const { isFocusVisible, focusProps } = useFocusRing({
39
- within: true,
40
- });
41
- const { hoverProps, isHovered } = useHover({
42
- ...props,
43
- });
44
-
45
- const classes = clsx(
46
- "chopin",
47
- "chopin/ComboBoxInput",
48
- {
49
- "--is-focused": isFocusVisible,
50
- "--is-hovered": isHovered,
51
- },
52
- className,
53
- );
54
-
55
- return (
56
- <div className="chopin/ComboBoxInputContainer" {...focusProps}>
57
- <input
58
- {...hoverProps}
59
- {...inputProps}
60
- {...fieldProps}
61
- ref={inputRef}
62
- className={classes}
63
- aria-label={label}
64
- />
65
- {state.isOpen && (
66
- <Popover popoverRef={popoverRef} isOpen={state.isOpen} onClose={close}>
67
- <ListBox {...listBoxProps} listBoxRef={listBoxRef} state={state} />
68
- </Popover>
69
- )}
70
- </div>
71
- );
72
- };
73
-
74
- export { ComboBox };
@@ -1 +0,0 @@
1
- export * from "./ComboBox";
@@ -1,36 +0,0 @@
1
- import { useRef, RefObject } from "react";
2
- import type { AriaListBoxOptions } from "@react-aria/listbox";
3
- import type { LoadingState } from "@react-types/shared";
4
- import type { ListState } from "@react-stately/list";
5
- import { useListBox } from "@react-aria/listbox";
6
- import { ListBoxSection } from "./ListBoxSection";
7
- import { Option } from "./Option";
8
-
9
- export interface ListBoxProps extends AriaListBoxOptions<unknown> {
10
- listBoxRef?: RefObject<HTMLUListElement>;
11
- state: ListState<unknown>;
12
- loadingState?: LoadingState;
13
- onLoadMore?: () => void;
14
- }
15
-
16
- export type ListBoxElementType = HTMLUListElement;
17
-
18
- const ListBox = (props: ListBoxProps) => {
19
- const ref = useRef<ListBoxElementType>(null);
20
- const { listBoxRef = ref, state } = props;
21
- const { listBoxProps } = useListBox(props, state, listBoxRef);
22
-
23
- return (
24
- <ul {...listBoxProps} ref={listBoxRef} className="chopin/ListBox">
25
- {[...state.collection].map(item =>
26
- item.type === "section" ? (
27
- <ListBoxSection key={item.key} section={item} state={state} />
28
- ) : (
29
- <Option key={item.key} item={item} state={state} />
30
- ),
31
- )}
32
- </ul>
33
- );
34
- };
35
-
36
- export { ListBox };
@@ -1,34 +0,0 @@
1
- import { useListBoxSection } from "@react-aria/listbox";
2
- import type { ListState } from "@react-stately/list";
3
- import type { Node } from "@react-types/shared";
4
-
5
- import { Option } from "./Option";
6
-
7
- export interface SectionProps {
8
- section: Node<unknown>;
9
- state: ListState<unknown>;
10
- }
11
-
12
- const ListBoxSection = ({ section, state }: SectionProps) => {
13
- const { itemProps, headingProps, groupProps } = useListBoxSection({
14
- heading: section.rendered,
15
- "aria-label": section["aria-label"],
16
- });
17
-
18
- return (
19
- <li {...itemProps} className="chopin/ListBoxSection">
20
- {section.rendered && (
21
- <span {...headingProps} className="chopin/ListBoxSectionHeading">
22
- {section.rendered}
23
- </span>
24
- )}
25
- <ul {...groupProps} className="chopin/ListBoxSectionList">
26
- {[...section.childNodes].map(node => (
27
- <Option key={node.key} item={node} state={state} />
28
- ))}
29
- </ul>
30
- </li>
31
- );
32
- };
33
-
34
- export { ListBoxSection };
@@ -1,35 +0,0 @@
1
- import { useRef } from "react";
2
- import { Node } from "@react-types/shared";
3
- import { useOption } from "@react-aria/listbox";
4
- import clsx from "clsx";
5
- import type { ListState } from "@react-stately/list";
6
-
7
- export type OptionElementType = HTMLLIElement;
8
-
9
- export interface OptionProps {
10
- item: Node<unknown>;
11
- state: ListState<unknown>;
12
- }
13
-
14
- const Option = ({ item, state }: OptionProps) => {
15
- const ref = useRef<OptionElementType>(null);
16
- const { optionProps, isSelected, isFocused, isDisabled } = useOption(
17
- { key: item.key },
18
- state,
19
- ref,
20
- );
21
-
22
- const classes = clsx("chopin/TradeSelectorOption", {
23
- "--is-selected": isSelected,
24
- "--is-focused": isFocused,
25
- "--is-disabled": isDisabled,
26
- });
27
-
28
- return (
29
- <li {...optionProps} ref={ref} className={classes}>
30
- {item.rendered}
31
- </li>
32
- );
33
- };
34
-
35
- export { Option };
@@ -1 +0,0 @@
1
- export * from "./ListBox";
@@ -1,28 +0,0 @@
1
- import { render, screen } from "@testing-library/react";
2
- import { Popover } from ".";
3
-
4
- const POPOVER_CLASS_NAME = "chopin/Popover";
5
-
6
- describe("Popover", () => {
7
- it("should render without errors", () => {
8
- render(
9
- <Popover>
10
- <li>Item</li>
11
- </Popover>,
12
- );
13
-
14
- expect(screen.getByText("Item")).toBeInTheDocument();
15
- });
16
-
17
- it("should render with class names", () => {
18
- render(
19
- <Popover>
20
- <li>Item</li>
21
- </Popover>,
22
- );
23
-
24
- const innerContainer = screen.getByText("Item").parentElement;
25
-
26
- expect(innerContainer).toHaveClass(POPOVER_CLASS_NAME);
27
- });
28
- });
@@ -1,42 +0,0 @@
1
- import { useRef, RefObject, ReactNode } from "react";
2
- import { useOverlay, DismissButton } from "@react-aria/overlays";
3
- import { FocusScope } from "@react-aria/focus";
4
-
5
- export interface PopoverProps {
6
- popoverRef?: RefObject<HTMLDivElement>;
7
- children: ReactNode;
8
- isOpen?: boolean;
9
- onClose?: () => void;
10
- }
11
-
12
- export type PopoverElementType = HTMLDivElement;
13
-
14
- const Popover = (props: PopoverProps) => {
15
- const ref = useRef<PopoverElementType>(null);
16
- const { popoverRef = ref, isOpen, onClose, children } = props;
17
-
18
- // Handle events that should cause the popup to close,
19
- // e.g. blur, clicking outside, or pressing the escape key.
20
- const { overlayProps } = useOverlay(
21
- {
22
- isOpen,
23
- onClose,
24
- shouldCloseOnBlur: true,
25
- isDismissable: true,
26
- },
27
- popoverRef,
28
- );
29
-
30
- // Add a hidden <DismissButton> component at the end of the popover
31
- // to allow screen reader users to dismiss the popup easily.
32
- return (
33
- <FocusScope restoreFocus>
34
- <div {...overlayProps} ref={popoverRef} className="chopin/Popover">
35
- {children}
36
- <DismissButton onDismiss={onClose} />
37
- </div>
38
- </FocusScope>
39
- );
40
- };
41
-
42
- export { Popover };
@@ -1 +0,0 @@
1
- export * from "./Popover";
@@ -1,24 +0,0 @@
1
- import { render, screen, fireEvent } from "@testing-library/react";
2
- import { SelectedTrade } from ".";
3
-
4
- describe("SelectedTrade", () => {
5
- it("renders without errors", () => {
6
- const trade = "Plumber";
7
- const clickHandler = jest.fn();
8
-
9
- const { container } = render(
10
- <SelectedTrade trade={trade} onClick={clickHandler} />,
11
- );
12
-
13
- const textElement = container.querySelector("p");
14
- const button = screen.getByText("Change");
15
-
16
- expect(textElement).toHaveTextContent(
17
- `You have selected ‘${trade}’ as your trade/profession.`,
18
- );
19
-
20
- fireEvent.click(button);
21
-
22
- expect(clickHandler).toHaveBeenCalled();
23
- });
24
- });
@@ -1,20 +0,0 @@
1
- import { Text } from "../../../Text";
2
-
3
- export type SelectedTradeProps = {
4
- trade: string | undefined;
5
- onClick: () => void;
6
- };
7
-
8
- export const SelectedTrade = ({ trade, onClick }: SelectedTradeProps) => (
9
- <Text>
10
- You have selected ‘<strong>{trade}</strong>’ as your trade/profession.{" "}
11
- <button
12
- type="button"
13
- className="mobius/Link chopin/TradeSelectorButton"
14
- aria-label="Change your selected profession"
15
- onClick={onClick}
16
- >
17
- Change
18
- </button>
19
- </Text>
20
- );
@@ -1 +0,0 @@
1
- export * from "./SelectedTrade";