@simplybusiness/mobius 3.3.2 → 3.4.0

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 +23 -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
@@ -0,0 +1,55 @@
1
+ import { useCallback, useEffect, useState } from "react";
2
+ import debounce from "lodash.debounce";
3
+ export const useFetchTrades = (endpoint, debounceInMs) => {
4
+ const [isLoading, setIsLoading] = useState(false);
5
+ const [error, setError] = useState(null);
6
+ const [trades, setTrades] = useState(null);
7
+ const [fetchTrades, setFetchTrades] = useState(false);
8
+ const getTrades = useCallback(
9
+ // eslint-disable-next-line consistent-return
10
+ async (signal) => {
11
+ try {
12
+ const response = await fetch(endpoint, {
13
+ signal,
14
+ });
15
+ const json = await response.json();
16
+ setIsLoading(false);
17
+ if (!response.ok) {
18
+ throw new Error(json.message || json.statusText);
19
+ }
20
+ setError(null);
21
+ return setTrades(json.results);
22
+ }
23
+ catch (err) {
24
+ if (err instanceof Error && err.name !== "AbortError") {
25
+ // eslint-disable-next-line no-console
26
+ console.error(err);
27
+ setError(err);
28
+ }
29
+ }
30
+ }, [endpoint]);
31
+ useEffect(() => {
32
+ const controller = new AbortController();
33
+ if (fetchTrades) {
34
+ setIsLoading(true);
35
+ const fetchData = debounce(async () => {
36
+ const { signal } = controller;
37
+ await getTrades(signal);
38
+ }, debounceInMs);
39
+ fetchData();
40
+ }
41
+ return () => controller.abort();
42
+ }, [getTrades, debounceInMs, fetchTrades]);
43
+ useEffect(() => {
44
+ if (!isLoading) {
45
+ setFetchTrades(false);
46
+ }
47
+ }, [isLoading]);
48
+ return {
49
+ isLoading,
50
+ error,
51
+ trades,
52
+ fetchTrades: setFetchTrades,
53
+ };
54
+ };
55
+ //# sourceMappingURL=useFetchTrades.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFetchTrades.js","sourceRoot":"","sources":["../../../../../../src/components/Chopin/TradeSelector/useFetchTrades/useFetchTrades.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACzD,OAAO,QAAQ,MAAM,iBAAiB,CAAC;AAGvC,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,QAAa,EAAE,YAAoB,EAAE,EAAE;IACpE,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAU,KAAK,CAAC,CAAC;IAC3D,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAe,IAAI,CAAC,CAAC;IACvD,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAsB,IAAI,CAAC,CAAC;IAChE,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAU,KAAK,CAAC,CAAC;IAE/D,MAAM,SAAS,GAAG,WAAW;IAC3B,6CAA6C;IAC7C,KAAK,EAAE,MAAmB,EAAE,EAAE;QAC5B,IAAI;YACF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,QAAQ,EAAE;gBACrC,MAAM;aACP,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,YAAY,CAAC,KAAK,CAAC,CAAC;YAEpB,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;gBAChB,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC;aAClD;YAED,QAAQ,CAAC,IAAI,CAAC,CAAC;YACf,OAAO,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SAChC;QAAC,OAAO,GAAG,EAAE;YACZ,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE;gBACrD,sCAAsC;gBACtC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACnB,QAAQ,CAAC,GAAG,CAAC,CAAC;aACf;SACF;IACH,CAAC,EACD,CAAC,QAAQ,CAAC,CACX,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QAEzC,IAAI,WAAW,EAAE;YACf,YAAY,CAAC,IAAI,CAAC,CAAC;YAEnB,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,IAAI,EAAE;gBACpC,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC;gBAC9B,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC;YAC1B,CAAC,EAAE,YAAY,CAAC,CAAC;YAEjB,SAAS,EAAE,CAAC;SACb;QAED,OAAO,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IAClC,CAAC,EAAE,CAAC,SAAS,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC,CAAC;IAE3C,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,SAAS,EAAE;YACd,cAAc,CAAC,KAAK,CAAC,CAAC;SACvB;IACH,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhB,OAAO;QACL,SAAS;QACT,KAAK;QACL,MAAM;QACN,WAAW,EAAE,cAAc;KAC5B,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "./useTradeSelectorUrl";
2
+ //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/components/Chopin/TradeSelector/useTradeSelector/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/components/Chopin/TradeSelector/useTradeSelectorUrl/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { useMemo } from "react";
2
+ function addQueryParam(url, key, value) {
3
+ if (value)
4
+ url.searchParams.set(key, value);
5
+ }
6
+ export function useTradeSelectorUrl(tradeApi, userInput, { vertical, searchScope, site } = {}) {
7
+ return useMemo(() => {
8
+ const url = new URL(tradeApi);
9
+ addQueryParam(url, "q", userInput);
10
+ addQueryParam(url, "vertical", vertical);
11
+ addQueryParam(url, "search_scope", searchScope);
12
+ addQueryParam(url, "site", site);
13
+ return url;
14
+ }, [tradeApi, userInput, vertical, searchScope, site]);
15
+ }
16
+ //# sourceMappingURL=useTradeSelectorUrl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTradeSelectorUrl.js","sourceRoot":"","sources":["../../../../../../src/components/Chopin/TradeSelector/useTradeSelectorUrl/useTradeSelectorUrl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAQhC,SAAS,aAAa,CAAC,GAAQ,EAAE,GAAW,EAAE,KAAc;IAC1D,IAAI,KAAK;QAAE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,QAAgB,EAChB,SAAiB,EACjB,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,KAA8B,EAAE;IAE7D,OAAO,OAAO,CAAC,GAAG,EAAE;QAClB,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC9B,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;QACnC,aAAa,CAAC,GAAG,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;QACzC,aAAa,CAAC,GAAG,EAAE,cAAc,EAAE,WAAW,CAAC,CAAC;QAChD,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QACjC,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC;AACzD,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { renderHook } from "@testing-library/react";
2
+ import { useTradeSelectorUrl } from "./useTradeSelectorUrl";
3
+ describe("useTradeSelectorUrl", () => {
4
+ it("should return a url", () => {
5
+ const { result } = renderHook(() => useTradeSelectorUrl("https://trade-api.example.com/search", "foo"));
6
+ expect(result.current).toBeInstanceOf(URL);
7
+ });
8
+ it("should return a url with the correct query params", () => {
9
+ const { result } = renderHook(() => useTradeSelectorUrl("https://trade-api.example.com/search", "foo", {
10
+ vertical: "bar",
11
+ searchScope: "baz",
12
+ }));
13
+ expect(result.current.searchParams.get("q")).toEqual("foo");
14
+ expect(result.current.searchParams.get("vertical")).toEqual("bar");
15
+ expect(result.current.searchParams.get("search_scope")).toEqual("baz");
16
+ });
17
+ it("should return a new url when the input changes", () => {
18
+ const { result, rerender } = renderHook(({ userInput }) => useTradeSelectorUrl("https://trade-api.example.com/search", userInput), {
19
+ initialProps: { userInput: "foo" },
20
+ });
21
+ const firstUrl = result.current;
22
+ rerender({ userInput: "bar" });
23
+ const secondUrl = result.current;
24
+ expect(firstUrl).not.toEqual(secondUrl);
25
+ });
26
+ });
27
+ //# sourceMappingURL=useTradeSelectorUrl.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTradeSelectorUrl.test.js","sourceRoot":"","sources":["../../../../../../src/components/Chopin/TradeSelector/useTradeSelectorUrl/useTradeSelectorUrl.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,EAAE,CAAC,qBAAqB,EAAE,GAAG,EAAE;QAC7B,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CACjC,mBAAmB,CAAC,sCAAsC,EAAE,KAAK,CAAC,CACnE,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CACjC,mBAAmB,CAAC,sCAAsC,EAAE,KAAK,EAAE;YACjE,QAAQ,EAAE,KAAK;YACf,WAAW,EAAE,KAAK;SACnB,CAAC,CACH,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC5D,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACnE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,UAAU,CACrC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAChB,mBAAmB,CAAC,sCAAsC,EAAE,SAAS,CAAC,EACxE;YACE,YAAY,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE;SACnC,CACF,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC;QAChC,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;QAC/B,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC;QACjC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,11 +1,11 @@
1
+ export * from "./Actions";
2
+ export * from "./Footer";
3
+ export * from "./Header";
1
4
  export * from "./PercentageTotalsQuestion";
2
5
  export * from "./Question";
3
6
  export * from "./QuestionGroup";
4
- export * from "./Steps";
5
7
  export * from "./Section";
6
- export * from "./TradeSelector";
7
- export * from "./Footer";
8
- export * from "./Header";
9
- export * from "./Actions";
8
+ export * from "./Steps";
10
9
  export * from "./Testimonial";
10
+ export * from "./TradeSelector";
11
11
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/Chopin/index.tsx"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/Chopin/index.tsx"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,4BAA4B,CAAC;AAC3C,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "./useOnClickOutside";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/hooks/useOnClickOutside/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { useEffect } from "react";
2
+ export const useOnClickOutside = (ref, handler) => {
3
+ useEffect(() => {
4
+ const listener = (event) => {
5
+ // Do nothing if clicking ref's element or descendent elements
6
+ if (!ref.current || ref.current.contains(event.target)) {
7
+ return;
8
+ }
9
+ handler(event);
10
+ };
11
+ document.addEventListener("mousedown", listener);
12
+ document.addEventListener("touchstart", listener);
13
+ return () => {
14
+ document.removeEventListener("mousedown", listener);
15
+ document.removeEventListener("touchstart", listener);
16
+ };
17
+ }, [ref, handler]);
18
+ };
19
+ //# sourceMappingURL=useOnClickOutside.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useOnClickOutside.js","sourceRoot":"","sources":["../../../../src/hooks/useOnClickOutside/useOnClickOutside.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAa,MAAM,OAAO,CAAC;AAE7C,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,GAA2B,EAC3B,OAAiD,EACjD,EAAE;IACF,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,QAAQ,GAAG,CAAC,KAA8B,EAAE,EAAE;YAClD,8DAA8D;YAC9D,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAqB,CAAC,EAAE;gBACrE,OAAO;aACR;YACD,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC,CAAC;QACF,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QACjD,QAAQ,CAAC,gBAAgB,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QAElD,OAAO,GAAG,EAAE;YACV,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;YACpD,QAAQ,CAAC,mBAAmB,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QACvD,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;AACrB,CAAC,CAAC"}
package/dist/mobius.d.ts CHANGED
@@ -218,6 +218,18 @@ export declare type CheckboxRef = Ref<CheckboxElementType>;
218
218
 
219
219
  declare namespace Chopin {
220
220
  export {
221
+ ActionsElementType,
222
+ ActionsProps,
223
+ ActionsRef,
224
+ Actions,
225
+ FooterProps,
226
+ Footer,
227
+ LinkType,
228
+ HeaderProps,
229
+ LOGO_LINK,
230
+ Header,
231
+ OpeningHoursType,
232
+ OPENING_HOURS,
221
233
  PercentageTotalsQuestionProps,
222
234
  PercentageTotalsQuestion,
223
235
  Question,
@@ -226,6 +238,10 @@ declare namespace Chopin {
226
238
  QuestionGroupProps,
227
239
  QuestionGroupRef,
228
240
  QuestionGroup,
241
+ SectionElementType,
242
+ SectionProps,
243
+ SectionRef,
244
+ Section,
229
245
  StepsElementType,
230
246
  StepsProps,
231
247
  StepsRef,
@@ -234,36 +250,23 @@ declare namespace Chopin {
234
250
  StepItemProps,
235
251
  StepItemRef,
236
252
  StepItem,
237
- SectionElementType,
238
- SectionProps,
239
- SectionRef,
240
- Section,
241
- ERROR_MESSAGE_SERVICE_UNAVAIALBLE,
253
+ TestimonialElementType,
254
+ TestimonialProps,
255
+ TestimonialRef,
256
+ Testimonial,
257
+ ERROR_MESSAGE_SERVICE_UNAVAILABLE,
242
258
  TradeSelector,
259
+ DialogRef,
260
+ InputRef,
261
+ TradeSelectorSearchScope,
262
+ TradeSelectorVertical,
243
263
  TradeProps,
244
- GroupedTradeProps,
245
264
  LabelProps_2 as LabelProps,
246
265
  UrlProps,
247
266
  TradeSelectorCommonProps,
248
267
  TradeSelectorElementType,
249
268
  TradeSelectorProps,
250
- TradeSelectorRef,
251
- FooterProps,
252
- Footer,
253
- LinkType,
254
- HeaderProps,
255
- LOGO_LINK,
256
- Header,
257
- OpeningHoursType,
258
- OPENING_HOURS,
259
- ActionsElementType,
260
- ActionsProps,
261
- ActionsRef,
262
- Actions,
263
- TestimonialElementType,
264
- TestimonialProps,
265
- TestimonialRef,
266
- Testimonial
269
+ TradeSelectorRef
267
270
  }
268
271
  }
269
272
  export { Chopin }
@@ -323,6 +326,8 @@ export declare interface DatePickerProps extends AriaDatePickerProps<DateValue>,
323
326
 
324
327
  export declare const DEFAULT_BREAKPOINT: Breakpoint;
325
328
 
329
+ declare type DialogRef = HTMLDialogElement;
330
+
326
331
  export declare const Divider: {
327
332
  (props: DividerProps): JSX_2.Element;
328
333
  displayName: string;
@@ -366,7 +371,7 @@ export declare type DropdownMenuRef = Ref<DropdownMenuElementType>;
366
371
 
367
372
  export declare type ElementType = "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "p" | "span";
368
373
 
369
- declare const ERROR_MESSAGE_SERVICE_UNAVAIALBLE = "The service is currently unavailable. Please try again later";
374
+ declare const ERROR_MESSAGE_SERVICE_UNAVAILABLE = "The service is currently unavailable. Please try again later";
370
375
 
371
376
  export declare const ErrorMessage: {
372
377
  ({ id, errorMessage, className, }: ErrorMessageProps): JSX_2.Element | null;
@@ -490,12 +495,6 @@ export declare interface GridProps extends RefAttributes<GridElementType>, DOMPr
490
495
  justifyItems?: "start" | "end" | "center" | "stretch";
491
496
  }
492
497
 
493
- declare type GroupedTradeProps = {
494
- name: string;
495
- title: string;
496
- children: TradeProps[];
497
- };
498
-
499
498
  declare const Header: FC<HeaderProps>;
500
499
 
501
500
  declare interface HeaderProps extends DOMProps {
@@ -553,6 +552,8 @@ export declare interface ImageProps extends DOMProps, IntrinsicImage {
553
552
 
554
553
  export declare type ImageRef = Ref<HTMLImageElement>;
555
554
 
555
+ declare type InputRef = HTMLInputElement;
556
+
556
557
  export declare interface InteractionStateProps {
557
558
  isFocusVisible?: boolean;
558
559
  isSelected?: boolean;
@@ -1181,6 +1182,8 @@ declare type TradeSelectorCommonProps = {
1181
1182
  urls: UrlProps;
1182
1183
  onTradeSelected?: (trade: TradeProps | string) => void;
1183
1184
  initialTrade?: string;
1185
+ vertical?: TradeSelectorVertical;
1186
+ searchScope?: TradeSelectorSearchScope;
1184
1187
  };
1185
1188
 
1186
1189
  declare type TradeSelectorElementType = HTMLDivElement;
@@ -1189,12 +1192,17 @@ declare interface TradeSelectorProps extends Partial<TradeSelectorCommonProps>,
1189
1192
  /** Custom class name for setting specific CSS */
1190
1193
  className?: string;
1191
1194
  elementType?: string | React.ElementType;
1195
+ onTradeSelected?: (trade: TradeProps | string) => void;
1192
1196
  labels?: LabelProps_2;
1193
1197
  hideLabel?: boolean;
1194
1198
  }
1195
1199
 
1196
1200
  declare type TradeSelectorRef = Ref<TradeSelectorElementType>;
1197
1201
 
1202
+ declare type TradeSelectorSearchScope = "all_verticals" | "current_and_supported_verticals" | "current_vertical" | "except_current_vertical" | "usa_contractors" | "commercial_landlord_business_types" | "contractors_combined" | "supported_for_current_vertical" | "commercial_combined_manufacturer" | "commercial_combined_wholesaler" | "commercial_combined_all";
1203
+
1204
+ declare type TradeSelectorVertical = string;
1205
+
1198
1206
  declare type UrlProps = {
1199
1207
  quoteRedirect: string;
1200
1208
  tradeApi: string;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@simplybusiness/mobius",
3
3
  "license": "UNLICENSED",
4
- "version": "3.3.2",
4
+ "version": "3.4.0",
5
5
  "description": "Core library of Mobius react components",
6
6
  "repository": {
7
7
  "type": "git",
@@ -45,6 +45,7 @@
45
45
  "@react-types/breadcrumbs": "^3.4.4",
46
46
  "@react-types/button": "^3.6.2",
47
47
  "@react-types/checkbox": "^3.4.0",
48
+ "@react-types/dialog": "^3.4.5",
48
49
  "@react-types/link": "^3.3.4",
49
50
  "@react-types/progress": "^3.2.4",
50
51
  "@react-types/radio": "^3.3.0",
@@ -59,6 +60,7 @@
59
60
  "@testing-library/user-event": "^14.4.3",
60
61
  "@types/jest": "^29.1.2",
61
62
  "@types/lodash.debounce": "^4.0.7",
63
+ "@types/node": "^18.13.0",
62
64
  "@types/react": "*",
63
65
  "@types/react-dom": "*",
64
66
  "@types/react-modal": "^3.13.1",
@@ -66,6 +68,7 @@
66
68
  "@typescript-eslint/eslint-plugin": "^5.40.0",
67
69
  "@typescript-eslint/parser": "^5.40.0",
68
70
  "color": "^4.2.3",
71
+ "csstype": "^3.1.1",
69
72
  "eslint": "^8.25.0",
70
73
  "eslint-config-airbnb": "^19.0.4",
71
74
  "eslint-config-prettier": "^8.5.0",
@@ -83,7 +86,7 @@
83
86
  "react-router-dom": "^6.4.2",
84
87
  "ts-jest": "^29.0.3",
85
88
  "tslib": "^2.4.0",
86
- "typescript": "^4.8.4"
89
+ "typescript": "^4.9.5"
87
90
  },
88
91
  "peerDependencies": {
89
92
  "react": "^16.13.1 || ^17.0.1 || ^18.0.0",
@@ -97,7 +100,6 @@
97
100
  "@react-aria/button": "^3.6.2",
98
101
  "@react-aria/calendar": "^3.0.3",
99
102
  "@react-aria/checkbox": "^3.6.0",
100
- "@react-aria/combobox": "^3.4.2",
101
103
  "@react-aria/datepicker": "^3.1.2",
102
104
  "@react-aria/dialog": "^3.4.0",
103
105
  "@react-aria/focus": "^3.9.0",
@@ -105,7 +107,6 @@
105
107
  "@react-aria/interactions": "^3.12.0",
106
108
  "@react-aria/label": "^3.4.2",
107
109
  "@react-aria/link": "^3.3.4",
108
- "@react-aria/listbox": "^3.7.0",
109
110
  "@react-aria/numberfield": "^3.3.0",
110
111
  "@react-aria/overlays": "^3.11.0",
111
112
  "@react-aria/progress": "^3.3.2",
@@ -119,9 +120,6 @@
119
120
  "@react-aria/visually-hidden": "^3.5.0",
120
121
  "@react-stately/calendar": "^3.0.3",
121
122
  "@react-stately/checkbox": "^3.3.0",
122
- "@react-stately/collections": "^3.4.4",
123
- "@react-stately/combobox": "^3.2.2",
124
- "@react-stately/data": "^3.7.0",
125
123
  "@react-stately/datepicker": "^3.1.0",
126
124
  "@react-stately/numberfield": "^3.2.2",
127
125
  "@react-stately/radio": "^3.6.0",
@@ -1,6 +1,7 @@
1
1
  import { useFocusRing } from "@react-aria/focus";
2
2
  import clsx from "clsx";
3
- import { ReactNode, useEffect, useState, useRef, useCallback } from "react";
3
+ import { ReactNode, useEffect, useState, useRef } from "react";
4
+ import { useOnClickOutside } from "../../../hooks/useOnClickOutside";
4
5
  import { useWindowEvent } from "../../../hooks/useWindowEvent";
5
6
 
6
7
  export interface QuestionHelpProps {
@@ -30,28 +31,15 @@ export function QuestionHelp({
30
31
  }
31
32
  });
32
33
 
33
- const handleClickOutside = useCallback(
34
- (event: MouseEvent) => {
35
- if (
36
- ref.current &&
37
- !ref.current.contains(event.target as HTMLDivElement) &&
38
- closeHelpOnOutsideClick
39
- ) {
40
- setIsOpen(false);
41
- }
42
- },
43
- [setIsOpen, closeHelpOnOutsideClick],
44
- );
34
+ useOnClickOutside(ref, () => {
35
+ if (closeHelpOnOutsideClick) {
36
+ setIsOpen(false);
37
+ }
38
+ });
45
39
 
46
40
  useEffect(() => {
47
41
  onChange(isOpen);
48
-
49
- window.addEventListener("click", handleClickOutside, {
50
- passive: true,
51
- });
52
-
53
- return () => window.removeEventListener("click", handleClickOutside);
54
- }, [onChange, isOpen, handleClickOutside]);
42
+ }, [onChange, isOpen]);
55
43
 
56
44
  const className = clsx(
57
45
  "chopin/QuestionHelp",
@@ -0,0 +1,33 @@
1
+ import { FocusableElement } from "@react-types/shared";
2
+ import { DOMAttributes } from "react";
3
+
4
+ import { Label } from "../../../Label";
5
+ import { Text } from "../../../Text";
6
+ import type { LabelProps } from "../types";
7
+
8
+ export type HeaderProps = {
9
+ isOpen: boolean;
10
+ labelProps:
11
+ | DOMAttributes<FocusableElement>
12
+ | React.LabelHTMLAttributes<HTMLLabelElement>;
13
+ labels: LabelProps;
14
+ };
15
+
16
+ export const Header = (props: HeaderProps) => {
17
+ const { isOpen, labelProps, labels } = props;
18
+
19
+ if (!isOpen) return null;
20
+
21
+ return (
22
+ <>
23
+ <Label {...labelProps} className="chopin/TradeSelectorLabel" aria-hidden>
24
+ {labels.input}
25
+ </Label>
26
+ {labels.description && (
27
+ <Text className="chopin/TradeSelectorDescription" variant="caption">
28
+ {labels.description}
29
+ </Text>
30
+ )}
31
+ </>
32
+ );
33
+ };
@@ -0,0 +1 @@
1
+ export * from "./Header";
@@ -0,0 +1,42 @@
1
+ import React, { useRef } from "react";
2
+ import { fireEvent, render, screen } from "@testing-library/react";
3
+ import { mockTrade } from "../mockApiResults";
4
+ import { Listing } from "./Listing";
5
+
6
+ jest.mock("react", () => ({
7
+ ...jest.requireActual<typeof React>("react"),
8
+ useRef: jest.fn(),
9
+ }));
10
+
11
+ describe("Listing", () => {
12
+ it("renders a list of trades", () => {
13
+ jest.spyOn(React, "useRef").mockReturnValue({
14
+ current: {},
15
+ });
16
+
17
+ const title = "Exact matches for your search";
18
+ const trades = [mockTrade];
19
+ const resultRefs = useRef([]);
20
+ const onClick = jest.fn();
21
+ const selectedId = 0;
22
+
23
+ render(
24
+ <Listing
25
+ title={title}
26
+ trades={trades}
27
+ resultRefs={resultRefs}
28
+ onClick={onClick}
29
+ selectedId={selectedId}
30
+ />,
31
+ );
32
+
33
+ const header = screen.getByText(title);
34
+ const trade = screen.getByText("Landlord");
35
+
36
+ expect(header).toBeInTheDocument();
37
+ expect(trade).toBeInTheDocument();
38
+
39
+ fireEvent.click(trade!);
40
+ expect(onClick).toHaveBeenCalled();
41
+ });
42
+ });
@@ -0,0 +1,51 @@
1
+ import clsx from "clsx";
2
+ import { MutableRefObject } from "react";
3
+ import { TradeProps } from "../types";
4
+ import { ListingItem } from "./ListingItem";
5
+
6
+ export type ListingProps = {
7
+ title: string;
8
+ trades: TradeProps[];
9
+ resultRefs?: MutableRefObject<HTMLButtonElement[]>;
10
+ refCountStart?: number;
11
+ className?: string;
12
+ onClick: (trade: TradeProps) => void;
13
+ selectedId: number;
14
+ };
15
+
16
+ export const Listing = (props: ListingProps) => {
17
+ const {
18
+ title,
19
+ trades,
20
+ resultRefs,
21
+ refCountStart = 0,
22
+ selectedId,
23
+ className,
24
+ onClick,
25
+ } = props;
26
+ const listClasses = clsx("chopin/TradeSelectorList", className);
27
+
28
+ return (
29
+ <nav aria-label={title}>
30
+ <header className="chopin/TradeSelectorListTitle">{title}</header>
31
+ <ul className={listClasses}>
32
+ {trades.map((trade, i) => {
33
+ const id = refCountStart + i;
34
+ const selected = selectedId === id;
35
+ return (
36
+ <ListingItem
37
+ key={trade.value}
38
+ trade={trade}
39
+ ref={el => {
40
+ if (!el || !resultRefs) return;
41
+ resultRefs.current[id] = el;
42
+ }}
43
+ onClick={onClick}
44
+ selected={selected}
45
+ />
46
+ );
47
+ })}
48
+ </ul>
49
+ </nav>
50
+ );
51
+ };
@@ -0,0 +1,54 @@
1
+ import { fireEvent, render } from "@testing-library/react";
2
+ import userEvent from "@testing-library/user-event";
3
+ import { mockTrade } from "../mockApiResults";
4
+ import { ListingItem } from "./ListingItem";
5
+
6
+ describe("ListingItem", () => {
7
+ it("renders trade", () => {
8
+ const onClick = jest.fn();
9
+ const { container } = render(
10
+ <ListingItem trade={mockTrade} onClick={onClick} selected={false} />,
11
+ );
12
+
13
+ const button = container.querySelector("button");
14
+
15
+ expect(button).toHaveAttribute("data-key", "Landlord");
16
+ expect(button).toHaveTextContent("Landlord");
17
+ });
18
+
19
+ it("sets classes for interaction states", async () => {
20
+ const onClick = jest.fn();
21
+ const { container } = render(
22
+ <ListingItem trade={mockTrade} onClick={onClick} selected={false} />,
23
+ );
24
+
25
+ const button = container.querySelector("button");
26
+
27
+ fireEvent.mouseEnter(button!);
28
+ expect(button).toHaveClass("--is-hovered");
29
+
30
+ await userEvent.tab();
31
+ expect(button).toHaveClass("--is-focused");
32
+ });
33
+
34
+ it("sets interaction class when selected prop is true", () => {
35
+ const onClick = jest.fn();
36
+ const { container } = render(
37
+ <ListingItem trade={mockTrade} onClick={onClick} selected />,
38
+ );
39
+
40
+ const button = container.querySelector("button");
41
+ expect(button).toHaveClass("--is-focused");
42
+ });
43
+
44
+ it("calls onClick", () => {
45
+ const onClick = jest.fn();
46
+ const { container } = render(
47
+ <ListingItem trade={mockTrade} onClick={onClick} selected={false} />,
48
+ );
49
+
50
+ const button = container.querySelector("button");
51
+ fireEvent.click(button!);
52
+ expect(onClick).toHaveBeenCalled();
53
+ });
54
+ });