@simplybusiness/mobius 3.3.1 → 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 (288) hide show
  1. package/CHANGELOG.md +30 -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/components/PasswordField/PasswordField.js +2 -2
  70. package/dist/cjs/components/PasswordField/PasswordField.js.map +1 -1
  71. package/dist/cjs/hooks/useOnClickOutside/index.d.ts +1 -0
  72. package/dist/cjs/hooks/useOnClickOutside/index.js +18 -0
  73. package/dist/cjs/hooks/useOnClickOutside/index.js.map +1 -0
  74. package/dist/cjs/hooks/useOnClickOutside/useOnClickOutside.d.ts +2 -0
  75. package/dist/cjs/hooks/useOnClickOutside/useOnClickOutside.js +23 -0
  76. package/dist/cjs/hooks/useOnClickOutside/useOnClickOutside.js.map +1 -0
  77. package/dist/esm/components/Chopin/QuestionHelp/QuestionHelp.js +6 -11
  78. package/dist/esm/components/Chopin/QuestionHelp/QuestionHelp.js.map +1 -1
  79. package/dist/esm/components/Chopin/TradeSelector/Header/Header.js +10 -0
  80. package/dist/esm/components/Chopin/TradeSelector/Header/Header.js.map +1 -0
  81. package/dist/esm/components/Chopin/TradeSelector/Header/index.js +2 -0
  82. package/dist/esm/components/Chopin/TradeSelector/Header/index.js.map +1 -0
  83. package/dist/esm/components/Chopin/TradeSelector/Listing/Listing.js +17 -0
  84. package/dist/esm/components/Chopin/TradeSelector/Listing/Listing.js.map +1 -0
  85. package/dist/esm/components/Chopin/TradeSelector/Listing/Listing.test.js +26 -0
  86. package/dist/esm/components/Chopin/TradeSelector/Listing/Listing.test.js.map +1 -0
  87. package/dist/esm/components/Chopin/TradeSelector/Listing/ListingItem.js +21 -0
  88. package/dist/esm/components/Chopin/TradeSelector/Listing/ListingItem.js.map +1 -0
  89. package/dist/esm/components/Chopin/TradeSelector/Listing/ListingItem.test.js +37 -0
  90. package/dist/esm/components/Chopin/TradeSelector/Listing/ListingItem.test.js.map +1 -0
  91. package/dist/esm/components/Chopin/TradeSelector/Listing/index.js +2 -0
  92. package/dist/esm/components/Chopin/TradeSelector/Listing/index.js.map +1 -0
  93. package/dist/esm/components/Chopin/TradeSelector/SearchResults/SearchResults.js +90 -16
  94. package/dist/esm/components/Chopin/TradeSelector/SearchResults/SearchResults.js.map +1 -1
  95. package/dist/esm/components/Chopin/TradeSelector/SearchResults/SearchResults.test.js +75 -103
  96. package/dist/esm/components/Chopin/TradeSelector/SearchResults/SearchResults.test.js.map +1 -1
  97. package/dist/esm/components/Chopin/TradeSelector/TradeInput/TradeInput.js +30 -0
  98. package/dist/esm/components/Chopin/TradeSelector/TradeInput/TradeInput.js.map +1 -0
  99. package/dist/esm/components/Chopin/TradeSelector/TradeInput/TradeInput.test.js +52 -0
  100. package/dist/esm/components/Chopin/TradeSelector/TradeInput/TradeInput.test.js.map +1 -0
  101. package/dist/esm/components/Chopin/TradeSelector/TradeInput/index.js +2 -0
  102. package/dist/esm/components/Chopin/TradeSelector/TradeInput/index.js.map +1 -0
  103. package/dist/esm/components/Chopin/TradeSelector/TradeSelector.js +63 -32
  104. package/dist/esm/components/Chopin/TradeSelector/TradeSelector.js.map +1 -1
  105. package/dist/esm/components/Chopin/TradeSelector/TradeSelector.test.js +154 -242
  106. package/dist/esm/components/Chopin/TradeSelector/TradeSelector.test.js.map +1 -1
  107. package/dist/esm/components/Chopin/TradeSelector/config/shared.js +9 -0
  108. package/dist/esm/components/Chopin/TradeSelector/config/shared.js.map +1 -1
  109. package/dist/esm/components/Chopin/TradeSelector/jestHTMLDialogPolyfill.js +13 -0
  110. package/dist/esm/components/Chopin/TradeSelector/jestHTMLDialogPolyfill.js.map +1 -0
  111. package/dist/esm/components/Chopin/TradeSelector/mockApiResults.js +10 -0
  112. package/dist/esm/components/Chopin/TradeSelector/mockApiResults.js.map +1 -1
  113. package/dist/esm/components/Chopin/TradeSelector/useFetchTrades/index.js +2 -0
  114. package/dist/esm/components/Chopin/TradeSelector/useFetchTrades/index.js.map +1 -0
  115. package/dist/esm/components/Chopin/TradeSelector/useFetchTrades/useFetchTrades.js +55 -0
  116. package/dist/esm/components/Chopin/TradeSelector/useFetchTrades/useFetchTrades.js.map +1 -0
  117. package/dist/esm/components/Chopin/TradeSelector/useTradeSelectorUrl/index.js +2 -0
  118. package/dist/esm/components/Chopin/TradeSelector/{useTradeSelector → useTradeSelectorUrl}/index.js.map +1 -1
  119. package/dist/esm/components/Chopin/TradeSelector/useTradeSelectorUrl/useTradeSelectorUrl.js +16 -0
  120. package/dist/esm/components/Chopin/TradeSelector/useTradeSelectorUrl/useTradeSelectorUrl.js.map +1 -0
  121. package/dist/esm/components/Chopin/TradeSelector/useTradeSelectorUrl/useTradeSelectorUrl.test.js +27 -0
  122. package/dist/esm/components/Chopin/TradeSelector/useTradeSelectorUrl/useTradeSelectorUrl.test.js.map +1 -0
  123. package/dist/esm/components/Chopin/index.js +5 -5
  124. package/dist/esm/components/Chopin/index.js.map +1 -1
  125. package/dist/esm/components/PasswordField/PasswordField.js +2 -2
  126. package/dist/esm/components/PasswordField/PasswordField.js.map +1 -1
  127. package/dist/esm/hooks/useOnClickOutside/index.js +2 -0
  128. package/dist/esm/hooks/useOnClickOutside/index.js.map +1 -0
  129. package/dist/esm/hooks/useOnClickOutside/useOnClickOutside.js +19 -0
  130. package/dist/esm/hooks/useOnClickOutside/useOnClickOutside.js.map +1 -0
  131. package/dist/mobius.d.ts +38 -30
  132. package/package.json +5 -7
  133. package/src/components/Chopin/QuestionHelp/QuestionHelp.tsx +8 -20
  134. package/src/components/Chopin/TradeSelector/Header/Header.tsx +33 -0
  135. package/src/components/Chopin/TradeSelector/Header/index.tsx +1 -0
  136. package/src/components/Chopin/TradeSelector/Listing/Listing.test.tsx +42 -0
  137. package/src/components/Chopin/TradeSelector/Listing/Listing.tsx +51 -0
  138. package/src/components/Chopin/TradeSelector/Listing/ListingItem.test.tsx +54 -0
  139. package/src/components/Chopin/TradeSelector/Listing/ListingItem.tsx +50 -0
  140. package/src/components/Chopin/TradeSelector/Listing/index.tsx +1 -0
  141. package/src/components/Chopin/TradeSelector/SearchResults/SearchResults.test.tsx +90 -130
  142. package/src/components/Chopin/TradeSelector/SearchResults/SearchResults.tsx +169 -66
  143. package/src/components/Chopin/TradeSelector/TradeInput/TradeInput.test.tsx +74 -0
  144. package/src/components/Chopin/TradeSelector/TradeInput/TradeInput.tsx +94 -0
  145. package/src/components/Chopin/TradeSelector/TradeInput/index.tsx +1 -0
  146. package/src/components/Chopin/TradeSelector/TradeSelector.story.mdx +75 -49
  147. package/src/components/Chopin/TradeSelector/TradeSelector.test.tsx +228 -300
  148. package/src/components/Chopin/TradeSelector/TradeSelector.tsx +124 -93
  149. package/src/components/Chopin/TradeSelector/config/shared.ts +9 -0
  150. package/src/components/Chopin/TradeSelector/jestHTMLDialogPolyfill.ts +17 -0
  151. package/src/components/Chopin/TradeSelector/mockApiResults.ts +11 -0
  152. package/src/components/Chopin/TradeSelector/types.ts +24 -6
  153. package/src/components/Chopin/TradeSelector/useFetchTrades/index.ts +1 -0
  154. package/src/components/Chopin/TradeSelector/useFetchTrades/useFetchTrades.ts +67 -0
  155. package/src/components/Chopin/TradeSelector/useTradeSelectorUrl/index.ts +1 -0
  156. package/src/components/Chopin/TradeSelector/useTradeSelectorUrl/useTradeSelectorUrl.test.ts +37 -0
  157. package/src/components/Chopin/TradeSelector/useTradeSelectorUrl/useTradeSelectorUrl.ts +26 -0
  158. package/src/components/Chopin/index.tsx +5 -5
  159. package/src/components/Link/Link.story.mdx +14 -0
  160. package/src/components/PasswordField/PasswordField.tsx +2 -2
  161. package/src/hooks/useOnClickOutside/index.ts +1 -0
  162. package/src/hooks/useOnClickOutside/useOnClickOutside.ts +23 -0
  163. package/dist/cjs/components/Chopin/TradeSelector/ComboBox/ComboBox.d.ts +0 -9
  164. package/dist/cjs/components/Chopin/TradeSelector/ComboBox/ComboBox.js +0 -37
  165. package/dist/cjs/components/Chopin/TradeSelector/ComboBox/ComboBox.js.map +0 -1
  166. package/dist/cjs/components/Chopin/TradeSelector/ComboBox/ComboBox.test.js +0 -59
  167. package/dist/cjs/components/Chopin/TradeSelector/ComboBox/ComboBox.test.js.map +0 -1
  168. package/dist/cjs/components/Chopin/TradeSelector/ComboBox/index.d.ts +0 -1
  169. package/dist/cjs/components/Chopin/TradeSelector/ComboBox/index.js.map +0 -1
  170. package/dist/cjs/components/Chopin/TradeSelector/ListBox/ListBox.d.ts +0 -13
  171. package/dist/cjs/components/Chopin/TradeSelector/ListBox/ListBox.js +0 -16
  172. package/dist/cjs/components/Chopin/TradeSelector/ListBox/ListBox.js.map +0 -1
  173. package/dist/cjs/components/Chopin/TradeSelector/ListBox/ListBoxSection.d.ts +0 -8
  174. package/dist/cjs/components/Chopin/TradeSelector/ListBox/ListBoxSection.js +0 -15
  175. package/dist/cjs/components/Chopin/TradeSelector/ListBox/ListBoxSection.js.map +0 -1
  176. package/dist/cjs/components/Chopin/TradeSelector/ListBox/Option.d.ts +0 -9
  177. package/dist/cjs/components/Chopin/TradeSelector/ListBox/Option.js +0 -22
  178. package/dist/cjs/components/Chopin/TradeSelector/ListBox/Option.js.map +0 -1
  179. package/dist/cjs/components/Chopin/TradeSelector/ListBox/index.d.ts +0 -1
  180. package/dist/cjs/components/Chopin/TradeSelector/ListBox/index.js.map +0 -1
  181. package/dist/cjs/components/Chopin/TradeSelector/Popover/Popover.d.ts +0 -10
  182. package/dist/cjs/components/Chopin/TradeSelector/Popover/Popover.js +0 -24
  183. package/dist/cjs/components/Chopin/TradeSelector/Popover/Popover.js.map +0 -1
  184. package/dist/cjs/components/Chopin/TradeSelector/Popover/Popover.test.js +0 -18
  185. package/dist/cjs/components/Chopin/TradeSelector/Popover/Popover.test.js.map +0 -1
  186. package/dist/cjs/components/Chopin/TradeSelector/Popover/index.d.ts +0 -1
  187. package/dist/cjs/components/Chopin/TradeSelector/Popover/index.js.map +0 -1
  188. package/dist/cjs/components/Chopin/TradeSelector/SelectedTrade/SelectedTrade.d.ts +0 -5
  189. package/dist/cjs/components/Chopin/TradeSelector/SelectedTrade/SelectedTrade.js +0 -8
  190. package/dist/cjs/components/Chopin/TradeSelector/SelectedTrade/SelectedTrade.js.map +0 -1
  191. package/dist/cjs/components/Chopin/TradeSelector/SelectedTrade/SelectedTrade.test.js +0 -18
  192. package/dist/cjs/components/Chopin/TradeSelector/SelectedTrade/SelectedTrade.test.js.map +0 -1
  193. package/dist/cjs/components/Chopin/TradeSelector/SelectedTrade/index.d.ts +0 -1
  194. package/dist/cjs/components/Chopin/TradeSelector/SelectedTrade/index.js.map +0 -1
  195. package/dist/cjs/components/Chopin/TradeSelector/getItemsToDisplay/getItemsToDisplay.d.ts +0 -7
  196. package/dist/cjs/components/Chopin/TradeSelector/getItemsToDisplay/getItemsToDisplay.js +0 -27
  197. package/dist/cjs/components/Chopin/TradeSelector/getItemsToDisplay/getItemsToDisplay.js.map +0 -1
  198. package/dist/cjs/components/Chopin/TradeSelector/getItemsToDisplay/getItemsToDisplay.test.js +0 -76
  199. package/dist/cjs/components/Chopin/TradeSelector/getItemsToDisplay/getItemsToDisplay.test.js.map +0 -1
  200. package/dist/cjs/components/Chopin/TradeSelector/getItemsToDisplay/index.d.ts +0 -1
  201. package/dist/cjs/components/Chopin/TradeSelector/getItemsToDisplay/index.js +0 -18
  202. package/dist/cjs/components/Chopin/TradeSelector/getItemsToDisplay/index.js.map +0 -1
  203. package/dist/cjs/components/Chopin/TradeSelector/getTradesGroupedByType/getTradesGroupedByType.d.ts +0 -2
  204. package/dist/cjs/components/Chopin/TradeSelector/getTradesGroupedByType/getTradesGroupedByType.js +0 -17
  205. package/dist/cjs/components/Chopin/TradeSelector/getTradesGroupedByType/getTradesGroupedByType.js.map +0 -1
  206. package/dist/cjs/components/Chopin/TradeSelector/getTradesGroupedByType/getTradesGroupedByType.test.d.ts +0 -1
  207. package/dist/cjs/components/Chopin/TradeSelector/getTradesGroupedByType/getTradesGroupedByType.test.js +0 -42
  208. package/dist/cjs/components/Chopin/TradeSelector/getTradesGroupedByType/getTradesGroupedByType.test.js.map +0 -1
  209. package/dist/cjs/components/Chopin/TradeSelector/getTradesGroupedByType/index.d.ts +0 -1
  210. package/dist/cjs/components/Chopin/TradeSelector/getTradesGroupedByType/index.js +0 -18
  211. package/dist/cjs/components/Chopin/TradeSelector/getTradesGroupedByType/index.js.map +0 -1
  212. package/dist/cjs/components/Chopin/TradeSelector/useTradeSelector/index.d.ts +0 -1
  213. package/dist/cjs/components/Chopin/TradeSelector/useTradeSelector/index.js +0 -18
  214. package/dist/cjs/components/Chopin/TradeSelector/useTradeSelector/useTradeSelector.d.ts +0 -17
  215. package/dist/cjs/components/Chopin/TradeSelector/useTradeSelector/useTradeSelector.js +0 -68
  216. package/dist/cjs/components/Chopin/TradeSelector/useTradeSelector/useTradeSelector.js.map +0 -1
  217. package/dist/cjs/components/Chopin/TradeSelector/useTradeSelector/useTradeSelector.test.d.ts +0 -1
  218. package/dist/cjs/components/Chopin/TradeSelector/useTradeSelector/useTradeSelector.test.js +0 -86
  219. package/dist/cjs/components/Chopin/TradeSelector/useTradeSelector/useTradeSelector.test.js.map +0 -1
  220. package/dist/esm/components/Chopin/TradeSelector/ComboBox/ComboBox.js +0 -31
  221. package/dist/esm/components/Chopin/TradeSelector/ComboBox/ComboBox.js.map +0 -1
  222. package/dist/esm/components/Chopin/TradeSelector/ComboBox/ComboBox.test.js +0 -54
  223. package/dist/esm/components/Chopin/TradeSelector/ComboBox/ComboBox.test.js.map +0 -1
  224. package/dist/esm/components/Chopin/TradeSelector/ComboBox/index.js +0 -2
  225. package/dist/esm/components/Chopin/TradeSelector/ComboBox/index.js.map +0 -1
  226. package/dist/esm/components/Chopin/TradeSelector/ListBox/ListBox.js +0 -13
  227. package/dist/esm/components/Chopin/TradeSelector/ListBox/ListBox.js.map +0 -1
  228. package/dist/esm/components/Chopin/TradeSelector/ListBox/ListBoxSection.js +0 -12
  229. package/dist/esm/components/Chopin/TradeSelector/ListBox/ListBoxSection.js.map +0 -1
  230. package/dist/esm/components/Chopin/TradeSelector/ListBox/Option.js +0 -16
  231. package/dist/esm/components/Chopin/TradeSelector/ListBox/Option.js.map +0 -1
  232. package/dist/esm/components/Chopin/TradeSelector/ListBox/index.js +0 -2
  233. package/dist/esm/components/Chopin/TradeSelector/ListBox/index.js.map +0 -1
  234. package/dist/esm/components/Chopin/TradeSelector/Popover/Popover.js +0 -21
  235. package/dist/esm/components/Chopin/TradeSelector/Popover/Popover.js.map +0 -1
  236. package/dist/esm/components/Chopin/TradeSelector/Popover/Popover.test.js +0 -16
  237. package/dist/esm/components/Chopin/TradeSelector/Popover/Popover.test.js.map +0 -1
  238. package/dist/esm/components/Chopin/TradeSelector/Popover/index.js +0 -2
  239. package/dist/esm/components/Chopin/TradeSelector/Popover/index.js.map +0 -1
  240. package/dist/esm/components/Chopin/TradeSelector/SelectedTrade/SelectedTrade.js +0 -4
  241. package/dist/esm/components/Chopin/TradeSelector/SelectedTrade/SelectedTrade.js.map +0 -1
  242. package/dist/esm/components/Chopin/TradeSelector/SelectedTrade/SelectedTrade.test.js +0 -16
  243. package/dist/esm/components/Chopin/TradeSelector/SelectedTrade/SelectedTrade.test.js.map +0 -1
  244. package/dist/esm/components/Chopin/TradeSelector/SelectedTrade/index.js +0 -2
  245. package/dist/esm/components/Chopin/TradeSelector/SelectedTrade/index.js.map +0 -1
  246. package/dist/esm/components/Chopin/TradeSelector/getItemsToDisplay/getItemsToDisplay.js +0 -23
  247. package/dist/esm/components/Chopin/TradeSelector/getItemsToDisplay/getItemsToDisplay.js.map +0 -1
  248. package/dist/esm/components/Chopin/TradeSelector/getItemsToDisplay/getItemsToDisplay.test.js +0 -74
  249. package/dist/esm/components/Chopin/TradeSelector/getItemsToDisplay/getItemsToDisplay.test.js.map +0 -1
  250. package/dist/esm/components/Chopin/TradeSelector/getItemsToDisplay/index.js +0 -2
  251. package/dist/esm/components/Chopin/TradeSelector/getItemsToDisplay/index.js.map +0 -1
  252. package/dist/esm/components/Chopin/TradeSelector/getTradesGroupedByType/getTradesGroupedByType.js +0 -13
  253. package/dist/esm/components/Chopin/TradeSelector/getTradesGroupedByType/getTradesGroupedByType.js.map +0 -1
  254. package/dist/esm/components/Chopin/TradeSelector/getTradesGroupedByType/getTradesGroupedByType.test.js +0 -40
  255. package/dist/esm/components/Chopin/TradeSelector/getTradesGroupedByType/getTradesGroupedByType.test.js.map +0 -1
  256. package/dist/esm/components/Chopin/TradeSelector/getTradesGroupedByType/index.js +0 -2
  257. package/dist/esm/components/Chopin/TradeSelector/getTradesGroupedByType/index.js.map +0 -1
  258. package/dist/esm/components/Chopin/TradeSelector/useTradeSelector/index.js +0 -2
  259. package/dist/esm/components/Chopin/TradeSelector/useTradeSelector/useTradeSelector.js +0 -65
  260. package/dist/esm/components/Chopin/TradeSelector/useTradeSelector/useTradeSelector.js.map +0 -1
  261. package/dist/esm/components/Chopin/TradeSelector/useTradeSelector/useTradeSelector.test.js +0 -84
  262. package/dist/esm/components/Chopin/TradeSelector/useTradeSelector/useTradeSelector.test.js.map +0 -1
  263. package/src/components/Chopin/TradeSelector/ComboBox/ComboBox.test.tsx +0 -85
  264. package/src/components/Chopin/TradeSelector/ComboBox/ComboBox.tsx +0 -74
  265. package/src/components/Chopin/TradeSelector/ComboBox/index.tsx +0 -1
  266. package/src/components/Chopin/TradeSelector/ListBox/ListBox.tsx +0 -36
  267. package/src/components/Chopin/TradeSelector/ListBox/ListBoxSection.tsx +0 -34
  268. package/src/components/Chopin/TradeSelector/ListBox/Option.tsx +0 -35
  269. package/src/components/Chopin/TradeSelector/ListBox/index.tsx +0 -1
  270. package/src/components/Chopin/TradeSelector/Popover/Popover.test.tsx +0 -28
  271. package/src/components/Chopin/TradeSelector/Popover/Popover.tsx +0 -42
  272. package/src/components/Chopin/TradeSelector/Popover/index.tsx +0 -1
  273. package/src/components/Chopin/TradeSelector/SelectedTrade/SelectedTrade.test.tsx +0 -24
  274. package/src/components/Chopin/TradeSelector/SelectedTrade/SelectedTrade.tsx +0 -20
  275. package/src/components/Chopin/TradeSelector/SelectedTrade/index.tsx +0 -1
  276. package/src/components/Chopin/TradeSelector/getItemsToDisplay/getItemsToDisplay.test.ts +0 -97
  277. package/src/components/Chopin/TradeSelector/getItemsToDisplay/getItemsToDisplay.ts +0 -36
  278. package/src/components/Chopin/TradeSelector/getItemsToDisplay/index.ts +0 -1
  279. package/src/components/Chopin/TradeSelector/getTradesGroupedByType/getTradesGroupedByType.test.ts +0 -49
  280. package/src/components/Chopin/TradeSelector/getTradesGroupedByType/getTradesGroupedByType.ts +0 -19
  281. package/src/components/Chopin/TradeSelector/getTradesGroupedByType/index.ts +0 -1
  282. package/src/components/Chopin/TradeSelector/useTradeSelector/index.ts +0 -1
  283. package/src/components/Chopin/TradeSelector/useTradeSelector/useTradeSelector.test.ts +0 -107
  284. package/src/components/Chopin/TradeSelector/useTradeSelector/useTradeSelector.ts +0 -82
  285. /package/dist/cjs/components/Chopin/TradeSelector/{ComboBox/ComboBox.test.d.ts → Listing/Listing.test.d.ts} +0 -0
  286. /package/dist/cjs/components/Chopin/TradeSelector/{Popover/Popover.test.d.ts → Listing/ListingItem.test.d.ts} +0 -0
  287. /package/dist/cjs/components/Chopin/TradeSelector/{SelectedTrade/SelectedTrade.test.d.ts → TradeInput/TradeInput.test.d.ts} +0 -0
  288. /package/dist/cjs/components/Chopin/TradeSelector/{getItemsToDisplay/getItemsToDisplay.test.d.ts → useTradeSelectorUrl/useTradeSelectorUrl.test.d.ts} +0 -0
package/CHANGELOG.md CHANGED
@@ -5,6 +5,34 @@ All notable changes to this project will be documented in this file, or link in
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [3.4.0] - 2023-03-06
9
+
10
+ ### Added
11
+
12
+ - Add support for `vertical` and `searchScope` properties on `TradeSelector`.
13
+ - Add basic implementation of Trade Selector 2, which does not depend on heavy libraries
14
+ - Update README with suggestion for testing Mobius impact in project
15
+ - Add Trade Selector 2 CSS styles
16
+ - Enable selecting and editing a trade in Trade Selector 2
17
+ - Add missing features to Trade Selector 2: call real API, show loading/error/empty state, add aria labels, onTradeSelected prop
18
+ - Add unit tests for Trade Selector 2
19
+ - Trade Selector: on Enter, select first trade from the list
20
+
21
+ ### Changed
22
+
23
+ - To improve code readability and maintainability in Trade Selector 2: split component state between parent component and Search Results component; extract trade fetching into its own hook; extract header into its own component; move labels into the config helper in order to colocate configuration related parameters
24
+ - Remove Trade Selector; rename Trade Selector 2 to Trade Selector
25
+
26
+ ### Fixed
27
+
28
+ - Fixed an issue in Trade Selector 2 where 'View all trades' link may appear when minimum input threshold is met
29
+
30
+ ## [3.3.2] - 2023-02-07
31
+
32
+ ### Fixed
33
+
34
+ - PasswordField did not reveal text after clicking 'show'
35
+
8
36
  ## [3.3.1] - 2023-01-24
9
37
 
10
38
  ### Changed
@@ -160,6 +188,8 @@ Additionally, mobius and themes are available on the public NPM registry and can
160
188
 
161
189
  ## Github Links
162
190
 
191
+ [3.4.0]: https://github.com/simplybusiness/mobius/releases/tag/v3.4.0
192
+ [3.3.2]: https://github.com/simplybusiness/mobius/releases/tag/v3.3.2
163
193
  [3.3.1]: https://github.com/simplybusiness/mobius/releases/tag/v3.3.1
164
194
  [3.3.0]: https://github.com/simplybusiness/mobius/releases/tag/v3.3.0
165
195
  [3.2.3]: https://github.com/simplybusiness/mobius/releases/tag/v3.2.3
@@ -8,6 +8,7 @@ const jsx_runtime_1 = require("@emotion/react/jsx-runtime");
8
8
  const focus_1 = require("@react-aria/focus");
9
9
  const clsx_1 = __importDefault(require("clsx"));
10
10
  const react_1 = require("react");
11
+ const useOnClickOutside_1 = require("../../../hooks/useOnClickOutside");
11
12
  const useWindowEvent_1 = require("../../../hooks/useWindowEvent");
12
13
  function QuestionHelp({ openedLabel = "Close Help", closedLabel = "Open Help", children, onChange = () => { }, isDesktop, closeHelpOnOutsideClick = false, }) {
13
14
  const [isOpen, setIsOpen] = (0, react_1.useState)(false);
@@ -18,20 +19,14 @@ function QuestionHelp({ openedLabel = "Close Help", closedLabel = "Open Help", c
18
19
  setIsOpen(false);
19
20
  }
20
21
  });
21
- const handleClickOutside = (0, react_1.useCallback)((event) => {
22
- if (ref.current &&
23
- !ref.current.contains(event.target) &&
24
- closeHelpOnOutsideClick) {
22
+ (0, useOnClickOutside_1.useOnClickOutside)(ref, () => {
23
+ if (closeHelpOnOutsideClick) {
25
24
  setIsOpen(false);
26
25
  }
27
- }, [setIsOpen, closeHelpOnOutsideClick]);
26
+ });
28
27
  (0, react_1.useEffect)(() => {
29
28
  onChange(isOpen);
30
- window.addEventListener("click", handleClickOutside, {
31
- passive: true,
32
- });
33
- return () => window.removeEventListener("click", handleClickOutside);
34
- }, [onChange, isOpen, handleClickOutside]);
29
+ }, [onChange, isOpen]);
35
30
  const className = (0, clsx_1.default)("chopin/QuestionHelp", {
36
31
  "--is-open": isOpen,
37
32
  "--is-closed": !isOpen,
@@ -1 +1 @@
1
- {"version":3,"file":"QuestionHelp.js","sourceRoot":"","sources":["../../../../../src/components/Chopin/QuestionHelp/QuestionHelp.tsx"],"names":[],"mappings":";;;;;;;AAAA,6CAAiD;AACjD,gDAAwB;AACxB,iCAA4E;AAC5E,kEAA+D;AAW/D,SAAgB,YAAY,CAAC,EAC3B,WAAW,GAAG,YAAY,EAC1B,WAAW,GAAG,WAAW,EACzB,QAAQ,EACR,QAAQ,GAAG,GAAG,EAAE,GAAE,CAAC,EACnB,SAAS,EACT,uBAAuB,GAAG,KAAK,GACb;IAClB,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,GAAG,GAAG,IAAA,cAAM,EAAiB,IAAI,CAAC,CAAC;IACzC,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,GAAG,IAAA,oBAAY,EAAC,EAAE,CAAC,CAAC;IAExD,IAAA,+BAAc,EAAC,SAAS,EAAE,CAAC,CAAC,EAAE;QAC5B,IAAI,MAAM,IAAI,CAAC,CAAC,GAAG,KAAK,QAAQ,EAAE;YAChC,SAAS,CAAC,KAAK,CAAC,CAAC;SAClB;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,kBAAkB,GAAG,IAAA,mBAAW,EACpC,CAAC,KAAiB,EAAE,EAAE;QACpB,IACE,GAAG,CAAC,OAAO;YACX,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAwB,CAAC;YACrD,uBAAuB,EACvB;YACA,SAAS,CAAC,KAAK,CAAC,CAAC;SAClB;IACH,CAAC,EACD,CAAC,SAAS,EAAE,uBAAuB,CAAC,CACrC,CAAC;IAEF,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,QAAQ,CAAC,MAAM,CAAC,CAAC;QAEjB,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,kBAAkB,EAAE;YACnD,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;QAEH,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;IACvE,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAE3C,MAAM,SAAS,GAAG,IAAA,cAAI,EACpB,qBAAqB,EACrB;QACE,WAAW,EAAE,MAAM;QACnB,aAAa,EAAE,CAAC,MAAM;KACvB,EACD,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAChC,CAAC;IAEF,MAAM,gBAAgB,GAAG,IAAA,cAAI,EAAC,4BAA4B,EAAE;QAC1D,cAAc,EAAE,cAAc;KAC/B,CAAC,CAAC;IAEH,OAAO,CACL,+CAAK,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,iBACjC,iDACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,EACjC,SAAS,EAAE,gBAAgB,IACvB,UAAU,cAEd,2CAAO,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,GAAQ,IAC1C,EACT,8CACE,SAAS,EAAC,4BAA4B,iBAC1B,MAAM,eACR,QAAQ,EAClB,IAAI,EAAC,SAAS,iBACD,CAAC,MAAM,gBAEnB,QAAQ,IACL,KACF,CACP,CAAC;AACJ,CAAC;AA3ED,oCA2EC"}
1
+ {"version":3,"file":"QuestionHelp.js","sourceRoot":"","sources":["../../../../../src/components/Chopin/QuestionHelp/QuestionHelp.tsx"],"names":[],"mappings":";;;;;;;AAAA,6CAAiD;AACjD,gDAAwB;AACxB,iCAA+D;AAC/D,wEAAqE;AACrE,kEAA+D;AAW/D,SAAgB,YAAY,CAAC,EAC3B,WAAW,GAAG,YAAY,EAC1B,WAAW,GAAG,WAAW,EACzB,QAAQ,EACR,QAAQ,GAAG,GAAG,EAAE,GAAE,CAAC,EACnB,SAAS,EACT,uBAAuB,GAAG,KAAK,GACb;IAClB,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,GAAG,GAAG,IAAA,cAAM,EAAiB,IAAI,CAAC,CAAC;IACzC,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,GAAG,IAAA,oBAAY,EAAC,EAAE,CAAC,CAAC;IAExD,IAAA,+BAAc,EAAC,SAAS,EAAE,CAAC,CAAC,EAAE;QAC5B,IAAI,MAAM,IAAI,CAAC,CAAC,GAAG,KAAK,QAAQ,EAAE;YAChC,SAAS,CAAC,KAAK,CAAC,CAAC;SAClB;IACH,CAAC,CAAC,CAAC;IAEH,IAAA,qCAAiB,EAAC,GAAG,EAAE,GAAG,EAAE;QAC1B,IAAI,uBAAuB,EAAE;YAC3B,SAAS,CAAC,KAAK,CAAC,CAAC;SAClB;IACH,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,QAAQ,CAAC,MAAM,CAAC,CAAC;IACnB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;IAEvB,MAAM,SAAS,GAAG,IAAA,cAAI,EACpB,qBAAqB,EACrB;QACE,WAAW,EAAE,MAAM;QACnB,aAAa,EAAE,CAAC,MAAM;KACvB,EACD,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAChC,CAAC;IAEF,MAAM,gBAAgB,GAAG,IAAA,cAAI,EAAC,4BAA4B,EAAE;QAC1D,cAAc,EAAE,cAAc;KAC/B,CAAC,CAAC;IAEH,OAAO,CACL,+CAAK,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,iBACjC,iDACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,EACjC,SAAS,EAAE,gBAAgB,IACvB,UAAU,cAEd,2CAAO,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,GAAQ,IAC1C,EACT,8CACE,SAAS,EAAC,4BAA4B,iBAC1B,MAAM,eACR,QAAQ,EAClB,IAAI,EAAC,SAAS,iBACD,CAAC,MAAM,gBAEnB,QAAQ,IACL,KACF,CACP,CAAC;AACJ,CAAC;AA9DD,oCA8DC"}
@@ -0,0 +1,9 @@
1
+ import { FocusableElement } from "@react-types/shared";
2
+ import { DOMAttributes } from "react";
3
+ import type { LabelProps } from "../types";
4
+ export type HeaderProps = {
5
+ isOpen: boolean;
6
+ labelProps: DOMAttributes<FocusableElement> | React.LabelHTMLAttributes<HTMLLabelElement>;
7
+ labels: LabelProps;
8
+ };
9
+ export declare const Header: (props: HeaderProps) => import("@emotion/react/jsx-runtime").JSX.Element | null;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Header = void 0;
4
+ const jsx_runtime_1 = require("@emotion/react/jsx-runtime");
5
+ const Label_1 = require("../../../Label");
6
+ const Text_1 = require("../../../Text");
7
+ const Header = (props) => {
8
+ const { isOpen, labelProps, labels } = props;
9
+ if (!isOpen)
10
+ return null;
11
+ return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(Label_1.Label, Object.assign({}, labelProps, { className: "chopin/TradeSelectorLabel", "aria-hidden": true }, { children: labels.input })), labels.description && ((0, jsx_runtime_1.jsx)(Text_1.Text, Object.assign({ className: "chopin/TradeSelectorDescription", variant: "caption" }, { children: labels.description })))] }));
12
+ };
13
+ exports.Header = Header;
14
+ //# sourceMappingURL=Header.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Header.js","sourceRoot":"","sources":["../../../../../../src/components/Chopin/TradeSelector/Header/Header.tsx"],"names":[],"mappings":";;;;AAGA,0CAAuC;AACvC,wCAAqC;AAW9B,MAAM,MAAM,GAAG,CAAC,KAAkB,EAAE,EAAE;IAC3C,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IAE7C,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAEzB,OAAO,CACL,6DACE,uBAAC,aAAK,oBAAK,UAAU,IAAE,SAAS,EAAC,2BAA2B,qCACzD,MAAM,CAAC,KAAK,IACP,EACP,MAAM,CAAC,WAAW,IAAI,CACrB,uBAAC,WAAI,kBAAC,SAAS,EAAC,iCAAiC,EAAC,OAAO,EAAC,SAAS,gBAChE,MAAM,CAAC,WAAW,IACd,CACR,IACA,CACJ,CAAC;AACJ,CAAC,CAAC;AAjBW,QAAA,MAAM,UAiBjB"}
@@ -0,0 +1 @@
1
+ export * from "./Header";
@@ -14,5 +14,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./Popover"), exports);
17
+ __exportStar(require("./Header"), exports);
18
18
  //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/components/Chopin/TradeSelector/Header/index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB"}
@@ -0,0 +1,12 @@
1
+ import { MutableRefObject } from "react";
2
+ import { TradeProps } from "../types";
3
+ export type ListingProps = {
4
+ title: string;
5
+ trades: TradeProps[];
6
+ resultRefs?: MutableRefObject<HTMLButtonElement[]>;
7
+ refCountStart?: number;
8
+ className?: string;
9
+ onClick: (trade: TradeProps) => void;
10
+ selectedId: number;
11
+ };
12
+ export declare const Listing: (props: ListingProps) => import("@emotion/react/jsx-runtime").JSX.Element;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Listing = void 0;
7
+ const jsx_runtime_1 = require("@emotion/react/jsx-runtime");
8
+ const clsx_1 = __importDefault(require("clsx"));
9
+ const ListingItem_1 = require("./ListingItem");
10
+ const Listing = (props) => {
11
+ const { title, trades, resultRefs, refCountStart = 0, selectedId, className, onClick, } = props;
12
+ const listClasses = (0, clsx_1.default)("chopin/TradeSelectorList", className);
13
+ return ((0, jsx_runtime_1.jsxs)("nav", Object.assign({ "aria-label": title }, { children: [(0, jsx_runtime_1.jsx)("header", Object.assign({ className: "chopin/TradeSelectorListTitle" }, { children: title })), (0, jsx_runtime_1.jsx)("ul", Object.assign({ className: listClasses }, { children: trades.map((trade, i) => {
14
+ const id = refCountStart + i;
15
+ const selected = selectedId === id;
16
+ return ((0, jsx_runtime_1.jsx)(ListingItem_1.ListingItem, { trade: trade, ref: el => {
17
+ if (!el || !resultRefs)
18
+ return;
19
+ resultRefs.current[id] = el;
20
+ }, onClick: onClick, selected: selected }, trade.value));
21
+ }) }))] })));
22
+ };
23
+ exports.Listing = Listing;
24
+ //# sourceMappingURL=Listing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Listing.js","sourceRoot":"","sources":["../../../../../../src/components/Chopin/TradeSelector/Listing/Listing.tsx"],"names":[],"mappings":";;;;;;;AAAA,gDAAwB;AAGxB,+CAA4C;AAYrC,MAAM,OAAO,GAAG,CAAC,KAAmB,EAAE,EAAE;IAC7C,MAAM,EACJ,KAAK,EACL,MAAM,EACN,UAAU,EACV,aAAa,GAAG,CAAC,EACjB,UAAU,EACV,SAAS,EACT,OAAO,GACR,GAAG,KAAK,CAAC;IACV,MAAM,WAAW,GAAG,IAAA,cAAI,EAAC,0BAA0B,EAAE,SAAS,CAAC,CAAC;IAEhE,OAAO,CACL,6DAAiB,KAAK,iBACpB,iDAAQ,SAAS,EAAC,+BAA+B,gBAAE,KAAK,IAAU,EAClE,6CAAI,SAAS,EAAE,WAAW,gBACvB,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;oBACvB,MAAM,EAAE,GAAG,aAAa,GAAG,CAAC,CAAC;oBAC7B,MAAM,QAAQ,GAAG,UAAU,KAAK,EAAE,CAAC;oBACnC,OAAO,CACL,uBAAC,yBAAW,IAEV,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,EAAE,CAAC,EAAE;4BACR,IAAI,CAAC,EAAE,IAAI,CAAC,UAAU;gCAAE,OAAO;4BAC/B,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;wBAC9B,CAAC,EACD,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,IAPb,KAAK,CAAC,KAAK,CAQhB,CACH,CAAC;gBACJ,CAAC,CAAC,IACC,KACD,CACP,CAAC;AACJ,CAAC,CAAC;AAnCW,QAAA,OAAO,WAmClB"}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ const jsx_runtime_1 = require("@emotion/react/jsx-runtime");
27
+ const react_1 = __importStar(require("react"));
28
+ const react_2 = require("@testing-library/react");
29
+ const mockApiResults_1 = require("../mockApiResults");
30
+ const Listing_1 = require("./Listing");
31
+ jest.mock("react", () => (Object.assign(Object.assign({}, jest.requireActual("react")), { useRef: jest.fn() })));
32
+ describe("Listing", () => {
33
+ it("renders a list of trades", () => {
34
+ jest.spyOn(react_1.default, "useRef").mockReturnValue({
35
+ current: {},
36
+ });
37
+ const title = "Exact matches for your search";
38
+ const trades = [mockApiResults_1.mockTrade];
39
+ const resultRefs = (0, react_1.useRef)([]);
40
+ const onClick = jest.fn();
41
+ const selectedId = 0;
42
+ (0, react_2.render)((0, jsx_runtime_1.jsx)(Listing_1.Listing, { title: title, trades: trades, resultRefs: resultRefs, onClick: onClick, selectedId: selectedId }));
43
+ const header = react_2.screen.getByText(title);
44
+ const trade = react_2.screen.getByText("Landlord");
45
+ expect(header).toBeInTheDocument();
46
+ expect(trade).toBeInTheDocument();
47
+ react_2.fireEvent.click(trade);
48
+ expect(onClick).toHaveBeenCalled();
49
+ });
50
+ });
51
+ //# sourceMappingURL=Listing.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Listing.test.js","sourceRoot":"","sources":["../../../../../../src/components/Chopin/TradeSelector/Listing/Listing.test.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAsC;AACtC,kDAAmE;AACnE,sDAA8C;AAC9C,uCAAoC;AAEpC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,iCACpB,IAAI,CAAC,aAAa,CAAe,OAAO,CAAC,KAC5C,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,IACjB,CAAC,CAAC;AAEJ,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;IACvB,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAClC,IAAI,CAAC,KAAK,CAAC,eAAK,EAAE,QAAQ,CAAC,CAAC,eAAe,CAAC;YAC1C,OAAO,EAAE,EAAE;SACZ,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,+BAA+B,CAAC;QAC9C,MAAM,MAAM,GAAG,CAAC,0BAAS,CAAC,CAAC;QAC3B,MAAM,UAAU,GAAG,IAAA,cAAM,EAAC,EAAE,CAAC,CAAC;QAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAC1B,MAAM,UAAU,GAAG,CAAC,CAAC;QAErB,IAAA,cAAM,EACJ,uBAAC,iBAAO,IACN,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,UAAU,GACtB,CACH,CAAC;QAEF,MAAM,MAAM,GAAG,cAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACvC,MAAM,KAAK,GAAG,cAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAE3C,MAAM,CAAC,MAAM,CAAC,CAAC,iBAAiB,EAAE,CAAC;QACnC,MAAM,CAAC,KAAK,CAAC,CAAC,iBAAiB,EAAE,CAAC;QAElC,iBAAS,CAAC,KAAK,CAAC,KAAM,CAAC,CAAC;QACxB,MAAM,CAAC,OAAO,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACrC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { Key } from "react";
2
+ import { TradeProps } from "../types";
3
+ export type ListingItemElementType = HTMLButtonElement;
4
+ export type ListingItemProps = {
5
+ key?: Key;
6
+ trade: TradeProps;
7
+ onClick: (trade: TradeProps) => void;
8
+ selected: boolean;
9
+ };
10
+ export declare const ListingItem: import("react").ForwardRefExoticComponent<ListingItemProps & import("react").RefAttributes<HTMLButtonElement>>;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ListingItem = void 0;
7
+ const jsx_runtime_1 = require("@emotion/react/jsx-runtime");
8
+ const focus_1 = require("@react-aria/focus");
9
+ const interactions_1 = require("@react-aria/interactions");
10
+ const clsx_1 = __importDefault(require("clsx"));
11
+ const react_1 = require("react");
12
+ exports.ListingItem = (0, react_1.forwardRef)((props, ref) => {
13
+ const { trade, selected, onClick } = props;
14
+ const { isFocusVisible, focusProps } = (0, focus_1.useFocusRing)({
15
+ within: false,
16
+ });
17
+ const { hoverProps, isHovered } = (0, interactions_1.useHover)({});
18
+ const classes = (0, clsx_1.default)("chopin/TradeSelectorButton", "chopin/TradeSelectorOption", {
19
+ "--is-focused": isFocusVisible || selected,
20
+ "--is-hovered": isHovered,
21
+ });
22
+ const handleClick = () => onClick(trade);
23
+ return ((0, jsx_runtime_1.jsx)("li", Object.assign({ className: "chopin/TradeSelectorListItem" }, { children: (0, jsx_runtime_1.jsx)("button", Object.assign({ ref: ref, type: "button", onClick: handleClick,
24
+ // eslint-disable-next-line react/no-danger
25
+ dangerouslySetInnerHTML: { __html: trade.label }, className: classes, "data-key": trade.value }, hoverProps, focusProps)) })));
26
+ });
27
+ //# sourceMappingURL=ListingItem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ListingItem.js","sourceRoot":"","sources":["../../../../../../src/components/Chopin/TradeSelector/Listing/ListingItem.tsx"],"names":[],"mappings":";;;;;;;AAAA,6CAAiD;AACjD,2DAAoD;AACpD,gDAAwB;AACxB,iCAA6C;AAYhC,QAAA,WAAW,GAAG,IAAA,kBAAU,EACnC,CAAC,KAAuB,EAAE,GAAgC,EAAE,EAAE;IAC5D,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IAC3C,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,GAAG,IAAA,oBAAY,EAAC;QAClD,MAAM,EAAE,KAAK;KACd,CAAC,CAAC;IACH,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,IAAA,uBAAQ,EAAC,EAAE,CAAC,CAAC;IAC/C,MAAM,OAAO,GAAG,IAAA,cAAI,EAClB,4BAA4B,EAC5B,4BAA4B,EAC5B;QACE,cAAc,EAAE,cAAc,IAAI,QAAQ;QAC1C,cAAc,EAAE,SAAS;KAC1B,CACF,CAAC;IAEF,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAEzC,OAAO,CACL,6CAAI,SAAS,EAAC,8BAA8B,gBAC1C,iDACE,GAAG,EAAE,GAAG,EACR,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,WAAW;YACpB,2CAA2C;YAC3C,uBAAuB,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,EAChD,SAAS,EAAE,OAAO,cACR,KAAK,CAAC,KAAK,IACjB,UAAU,EACV,UAAU,EACd,IACC,CACN,CAAC;AACJ,CAAC,CACF,CAAC"}
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const jsx_runtime_1 = require("@emotion/react/jsx-runtime");
7
+ const react_1 = require("@testing-library/react");
8
+ const user_event_1 = __importDefault(require("@testing-library/user-event"));
9
+ const mockApiResults_1 = require("../mockApiResults");
10
+ const ListingItem_1 = require("./ListingItem");
11
+ describe("ListingItem", () => {
12
+ it("renders trade", () => {
13
+ const onClick = jest.fn();
14
+ const { container } = (0, react_1.render)((0, jsx_runtime_1.jsx)(ListingItem_1.ListingItem, { trade: mockApiResults_1.mockTrade, onClick: onClick, selected: false }));
15
+ const button = container.querySelector("button");
16
+ expect(button).toHaveAttribute("data-key", "Landlord");
17
+ expect(button).toHaveTextContent("Landlord");
18
+ });
19
+ it("sets classes for interaction states", async () => {
20
+ const onClick = jest.fn();
21
+ const { container } = (0, react_1.render)((0, jsx_runtime_1.jsx)(ListingItem_1.ListingItem, { trade: mockApiResults_1.mockTrade, onClick: onClick, selected: false }));
22
+ const button = container.querySelector("button");
23
+ react_1.fireEvent.mouseEnter(button);
24
+ expect(button).toHaveClass("--is-hovered");
25
+ await user_event_1.default.tab();
26
+ expect(button).toHaveClass("--is-focused");
27
+ });
28
+ it("sets interaction class when selected prop is true", () => {
29
+ const onClick = jest.fn();
30
+ const { container } = (0, react_1.render)((0, jsx_runtime_1.jsx)(ListingItem_1.ListingItem, { trade: mockApiResults_1.mockTrade, onClick: onClick, selected: true }));
31
+ const button = container.querySelector("button");
32
+ expect(button).toHaveClass("--is-focused");
33
+ });
34
+ it("calls onClick", () => {
35
+ const onClick = jest.fn();
36
+ const { container } = (0, react_1.render)((0, jsx_runtime_1.jsx)(ListingItem_1.ListingItem, { trade: mockApiResults_1.mockTrade, onClick: onClick, selected: false }));
37
+ const button = container.querySelector("button");
38
+ react_1.fireEvent.click(button);
39
+ expect(onClick).toHaveBeenCalled();
40
+ });
41
+ });
42
+ //# sourceMappingURL=ListingItem.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ListingItem.test.js","sourceRoot":"","sources":["../../../../../../src/components/Chopin/TradeSelector/Listing/ListingItem.test.tsx"],"names":[],"mappings":";;;;;;AAAA,kDAA2D;AAC3D,6EAAoD;AACpD,sDAA8C;AAC9C,+CAA4C;AAE5C,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,EAAE,CAAC,eAAe,EAAE,GAAG,EAAE;QACvB,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAC1B,MAAM,EAAE,SAAS,EAAE,GAAG,IAAA,cAAM,EAC1B,uBAAC,yBAAW,IAAC,KAAK,EAAE,0BAAS,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,GAAI,CACrE,CAAC;QAEF,MAAM,MAAM,GAAG,SAAS,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAEjD,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QACvD,MAAM,CAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;QACnD,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAC1B,MAAM,EAAE,SAAS,EAAE,GAAG,IAAA,cAAM,EAC1B,uBAAC,yBAAW,IAAC,KAAK,EAAE,0BAAS,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,GAAI,CACrE,CAAC;QAEF,MAAM,MAAM,GAAG,SAAS,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAEjD,iBAAS,CAAC,UAAU,CAAC,MAAO,CAAC,CAAC;QAC9B,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QAE3C,MAAM,oBAAS,CAAC,GAAG,EAAE,CAAC;QACtB,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAC1B,MAAM,EAAE,SAAS,EAAE,GAAG,IAAA,cAAM,EAC1B,uBAAC,yBAAW,IAAC,KAAK,EAAE,0BAAS,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,SAAG,CAC7D,CAAC;QAEF,MAAM,MAAM,GAAG,SAAS,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QACjD,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,eAAe,EAAE,GAAG,EAAE;QACvB,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAC1B,MAAM,EAAE,SAAS,EAAE,GAAG,IAAA,cAAM,EAC1B,uBAAC,yBAAW,IAAC,KAAK,EAAE,0BAAS,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,GAAI,CACrE,CAAC;QAEF,MAAM,MAAM,GAAG,SAAS,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QACjD,iBAAS,CAAC,KAAK,CAAC,MAAO,CAAC,CAAC;QACzB,MAAM,CAAC,OAAO,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACrC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export * from "./Listing";
@@ -14,5 +14,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./ListBox"), exports);
17
+ __exportStar(require("./Listing"), exports);
18
18
  //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/components/Chopin/TradeSelector/Listing/index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAA0B"}
@@ -1,15 +1,15 @@
1
- import { SetStateAction, Dispatch, Key } from "react";
2
- import { AriaLabelingProps, DOMProps } from "@react-types/shared";
3
- import type { LabelProps, GroupedTradeProps } from "..";
1
+ import { RefObject } from "react";
2
+ import type { LabelProps, TradeProps } from "../types";
4
3
  export type SearchResultsProps = {
5
- inputValue: string;
6
- items: GroupedTradeProps[];
4
+ isOpen: boolean;
5
+ inputRef: RefObject<HTMLInputElement>;
6
+ results: TradeProps[] | null;
7
+ fallbackUrl: string;
7
8
  labels: LabelProps;
9
+ className?: string;
10
+ isLoading: boolean;
8
11
  describedBy?: string;
9
- fallbackUrl: string;
10
- onInputChange: Dispatch<SetStateAction<string>>;
11
- onSelectionChange: (value: Key) => void;
12
- fieldProps?: AriaLabelingProps & DOMProps;
13
- label?: string;
12
+ onClick: (trade: TradeProps) => void;
13
+ onClose: () => void;
14
14
  };
15
- export declare const SearchResults: ({ inputValue, items, labels, fieldProps, describedBy, fallbackUrl, onInputChange, onSelectionChange, label, }: SearchResultsProps) => import("@emotion/react/jsx-runtime").JSX.Element;
15
+ export declare const SearchResults: (props: SearchResultsProps) => import("@emotion/react/jsx-runtime").JSX.Element | null;
@@ -1,21 +1,98 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.SearchResults = void 0;
4
7
  const jsx_runtime_1 = require("@emotion/react/jsx-runtime");
5
- const collections_1 = require("@react-stately/collections");
6
- const ComboBox_1 = require("../ComboBox");
7
- const SearchResults = ({ inputValue, items, labels, fieldProps, describedBy, fallbackUrl, onInputChange, onSelectionChange, label, }) => ((0, jsx_runtime_1.jsx)(ComboBox_1.ComboBox, Object.assign({ inputValue: inputValue, onInputChange: onInputChange, disabledKeys: [labels.noResults], items: items, onSelectionChange: onSelectionChange, "aria-describedby": describedBy, fieldProps: fieldProps, label: label, placeholder: labels.placeholder }, { children: section => {
8
- const { name, title, children: sectionChildren } = section;
9
- const noResults = items.find(item => item.name === labels.noResults);
10
- if (noResults) {
11
- return ((0, jsx_runtime_1.jsx)(collections_1.Item, Object.assign({ textValue: labels.noResults }, { children: (0, jsx_runtime_1.jsx)("a", Object.assign({ href: fallbackUrl, className: "chopin/ListBoxSectionHeadingLink" }, { children: labels.noResults })) }), labels.noResults));
12
- }
13
- return ((0, jsx_runtime_1.jsx)(collections_1.Section, Object.assign({ items: sectionChildren, title: title }, { children: item => {
14
- const { value, label: itemLabel } = item;
15
- return ((0, jsx_runtime_1.jsx)(collections_1.Item, Object.assign({ textValue: value }, { children: (0, jsx_runtime_1.jsx)("span", { className: "chopin/TradeSelectorOptionContent",
16
- // eslint-disable-next-line react/no-danger
17
- dangerouslySetInnerHTML: { __html: itemLabel } }) }), value));
18
- } }), name));
19
- } })));
8
+ const react_1 = require("react");
9
+ const clsx_1 = __importDefault(require("clsx"));
10
+ const Listing_1 = require("../Listing");
11
+ const useOnClickOutside_1 = require("../../../../hooks/useOnClickOutside");
12
+ const SearchResults = (props) => {
13
+ const { isOpen, labels, className, results, isLoading, fallbackUrl, describedBy, inputRef, onClick, onClose, } = props;
14
+ const dialogRef = (0, react_1.useRef)(null);
15
+ const resultRefs = (0, react_1.useRef)([]);
16
+ const [focusId, setFocusId] = (0, react_1.useState)(0);
17
+ const classes = (0, clsx_1.default)("chopin/TradeSelectorResults", {
18
+ "--is-open": isOpen,
19
+ }, className);
20
+ const closeSearchResults = (0, react_1.useCallback)(() => {
21
+ setFocusId(0);
22
+ onClose();
23
+ if (dialogRef.current) {
24
+ dialogRef.current.close();
25
+ }
26
+ // eslint-disable-next-line react-hooks/exhaustive-deps
27
+ }, []);
28
+ (0, useOnClickOutside_1.useOnClickOutside)(dialogRef, () => {
29
+ if (dialogRef.current && dialogRef.current.open) {
30
+ closeSearchResults();
31
+ }
32
+ });
33
+ const handleTradeClick = (0, react_1.useCallback)((trade) => {
34
+ closeSearchResults();
35
+ onClick(trade);
36
+ }, [closeSearchResults, onClick]);
37
+ const handleKeyDown = (0, react_1.useCallback)((event) => {
38
+ var _a;
39
+ if (!((_a = dialogRef.current) === null || _a === void 0 ? void 0 : _a.open) || !results)
40
+ return;
41
+ if (event.code === "ArrowDown") {
42
+ if (focusId === results.length - 1) {
43
+ setFocusId(0);
44
+ return;
45
+ }
46
+ setFocusId(focusId + 1);
47
+ }
48
+ if (event.code === "ArrowUp") {
49
+ if (focusId === 0) {
50
+ setFocusId(results.length - 1);
51
+ return;
52
+ }
53
+ setFocusId(focusId - 1);
54
+ }
55
+ if (event.code === "Escape") {
56
+ closeSearchResults();
57
+ }
58
+ if (event.code === "Enter") {
59
+ if (focusId === 0 && results) {
60
+ const [firstTrade] = results;
61
+ handleTradeClick(firstTrade);
62
+ }
63
+ }
64
+ }, [focusId, closeSearchResults, results, handleTradeClick]);
65
+ (0, react_1.useEffect)(() => {
66
+ var _a;
67
+ if (((_a = dialogRef.current) === null || _a === void 0 ? void 0 : _a.open) && resultRefs.current[focusId]) {
68
+ resultRefs.current[focusId].focus();
69
+ }
70
+ }, [focusId]);
71
+ (0, react_1.useEffect)(() => {
72
+ window.addEventListener("keydown", handleKeyDown);
73
+ return () => {
74
+ window.removeEventListener("keydown", handleKeyDown);
75
+ };
76
+ }, [handleKeyDown]);
77
+ (0, react_1.useEffect)(() => {
78
+ if (dialogRef.current && isOpen) {
79
+ if (!dialogRef.current.open && inputRef.current) {
80
+ dialogRef.current.show();
81
+ // Return focus from <dialog> back to <input>
82
+ inputRef.current.focus();
83
+ }
84
+ }
85
+ }, [isOpen, inputRef]);
86
+ if (!isOpen)
87
+ return null;
88
+ const searchResponseExact = results
89
+ ? results.filter((result) => result.type === "exact")
90
+ : [];
91
+ const searchResponseSuggested = results
92
+ ? results.filter((result) => result.type === "suggested")
93
+ : [];
94
+ const noResults = (results === null || results === void 0 ? void 0 : results.length) === 0;
95
+ return ((0, jsx_runtime_1.jsx)("dialog", Object.assign({ className: classes, ref: dialogRef, "aria-describedby": describedBy }, { children: isLoading ? ((0, jsx_runtime_1.jsx)("header", Object.assign({ className: "chopin/TradeSelectorListTitle" }, { children: labels.loading }))) : noResults ? ((0, jsx_runtime_1.jsx)("header", Object.assign({ className: "chopin/TradeSelectorListTitle" }, { children: (0, jsx_runtime_1.jsx)("a", Object.assign({ href: fallbackUrl, className: "chopin/TradeSelectorListTitleLink" }, { children: labels.noResults })) }))) : ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [searchResponseExact.length > 0 && ((0, jsx_runtime_1.jsx)(Listing_1.Listing, { title: labels.exact, trades: searchResponseExact, resultRefs: resultRefs, onClick: handleTradeClick, selectedId: focusId })), searchResponseSuggested.length > 0 && ((0, jsx_runtime_1.jsx)(Listing_1.Listing, { title: labels.suggested, trades: searchResponseSuggested, resultRefs: resultRefs, refCountStart: searchResponseExact.length, onClick: handleTradeClick, selectedId: focusId }))] })) })));
96
+ };
20
97
  exports.SearchResults = SearchResults;
21
98
  //# sourceMappingURL=SearchResults.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SearchResults.js","sourceRoot":"","sources":["../../../../../../src/components/Chopin/TradeSelector/SearchResults/SearchResults.tsx"],"names":[],"mappings":";;;;AAEA,4DAA2D;AAC3D,0CAAuC;AAehC,MAAM,aAAa,GAAG,CAAC,EAC5B,UAAU,EACV,KAAK,EACL,MAAM,EACN,UAAU,EACV,WAAW,EACX,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,KAAK,GACc,EAAE,EAAE,CAAC,CACxB,uBAAC,mBAAQ,kBACP,UAAU,EAAE,UAAU,EACtB,aAAa,EAAE,aAAa,EAC5B,YAAY,EAAE,CAAC,MAAM,CAAC,SAAmB,CAAC,EAC1C,KAAK,EAAE,KAAK,EACZ,iBAAiB,EAAE,iBAAiB,sBAClB,WAAW,EAC7B,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,MAAM,CAAC,WAAW,gBAE9B,OAAO,CAAC,EAAE;QACT,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC;QAC3D,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,SAAS,CAAC,CAAC;QAErE,IAAI,SAAS,EAAE;YACb,OAAO,CACL,uBAAC,kBAAI,kBAAwB,SAAS,EAAE,MAAM,CAAC,SAAS,gBACtD,4CAAG,IAAI,EAAE,WAAW,EAAE,SAAS,EAAC,kCAAkC,gBAC/D,MAAM,CAAC,SAAS,IACf,KAHK,MAAM,CAAC,SAAS,CAIpB,CACR,CAAC;SACH;QAED,OAAO,CACL,uBAAC,qBAAO,kBAAY,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,KAAK,gBACrD,IAAI,CAAC,EAAE;gBACN,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,IAAkB,CAAC;gBAEvD,OAAO,CACL,uBAAC,kBAAI,kBAAa,SAAS,EAAE,KAAK,gBAChC,iCACE,SAAS,EAAC,mCAAmC;wBAC7C,2CAA2C;wBAC3C,uBAAuB,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,GAC9C,KALO,KAAK,CAMT,CACR,CAAC;YACJ,CAAC,KAbW,IAAI,CAcR,CACX,CAAC;IACJ,CAAC,IACQ,CACZ,CAAC;AAvDW,QAAA,aAAa,iBAuDxB"}
1
+ {"version":3,"file":"SearchResults.js","sourceRoot":"","sources":["../../../../../../src/components/Chopin/TradeSelector/SearchResults/SearchResults.tsx"],"names":[],"mappings":"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"}