@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.
- package/CHANGELOG.md +23 -0
- package/dist/cjs/components/Chopin/QuestionHelp/QuestionHelp.js +5 -10
- package/dist/cjs/components/Chopin/QuestionHelp/QuestionHelp.js.map +1 -1
- package/dist/cjs/components/Chopin/TradeSelector/Header/Header.d.ts +9 -0
- package/dist/cjs/components/Chopin/TradeSelector/Header/Header.js +14 -0
- package/dist/cjs/components/Chopin/TradeSelector/Header/Header.js.map +1 -0
- package/dist/cjs/components/Chopin/TradeSelector/Header/index.d.ts +1 -0
- package/dist/cjs/components/Chopin/TradeSelector/{Popover → Header}/index.js +1 -1
- package/dist/cjs/components/Chopin/TradeSelector/Header/index.js.map +1 -0
- package/dist/cjs/components/Chopin/TradeSelector/Listing/Listing.d.ts +12 -0
- package/dist/cjs/components/Chopin/TradeSelector/Listing/Listing.js +24 -0
- package/dist/cjs/components/Chopin/TradeSelector/Listing/Listing.js.map +1 -0
- package/dist/cjs/components/Chopin/TradeSelector/Listing/Listing.test.js +51 -0
- package/dist/cjs/components/Chopin/TradeSelector/Listing/Listing.test.js.map +1 -0
- package/dist/cjs/components/Chopin/TradeSelector/Listing/ListingItem.d.ts +10 -0
- package/dist/cjs/components/Chopin/TradeSelector/Listing/ListingItem.js +27 -0
- package/dist/cjs/components/Chopin/TradeSelector/Listing/ListingItem.js.map +1 -0
- package/dist/cjs/components/Chopin/TradeSelector/Listing/ListingItem.test.js +42 -0
- package/dist/cjs/components/Chopin/TradeSelector/Listing/ListingItem.test.js.map +1 -0
- package/dist/cjs/components/Chopin/TradeSelector/Listing/index.d.ts +1 -0
- package/dist/cjs/components/Chopin/TradeSelector/{ListBox → Listing}/index.js +1 -1
- package/dist/cjs/components/Chopin/TradeSelector/Listing/index.js.map +1 -0
- package/dist/cjs/components/Chopin/TradeSelector/SearchResults/SearchResults.d.ts +11 -11
- package/dist/cjs/components/Chopin/TradeSelector/SearchResults/SearchResults.js +92 -15
- package/dist/cjs/components/Chopin/TradeSelector/SearchResults/SearchResults.js.map +1 -1
- package/dist/cjs/components/Chopin/TradeSelector/SearchResults/SearchResults.test.js +96 -104
- package/dist/cjs/components/Chopin/TradeSelector/SearchResults/SearchResults.test.js.map +1 -1
- package/dist/cjs/components/Chopin/TradeSelector/TradeInput/TradeInput.d.ts +15 -0
- package/dist/cjs/components/Chopin/TradeSelector/TradeInput/TradeInput.js +37 -0
- package/dist/cjs/components/Chopin/TradeSelector/TradeInput/TradeInput.js.map +1 -0
- package/dist/cjs/components/Chopin/TradeSelector/TradeInput/TradeInput.test.js +57 -0
- package/dist/cjs/components/Chopin/TradeSelector/TradeInput/TradeInput.test.js.map +1 -0
- package/dist/cjs/components/Chopin/TradeSelector/TradeInput/index.d.ts +1 -0
- package/dist/cjs/components/Chopin/TradeSelector/{ComboBox → TradeInput}/index.js +1 -1
- package/dist/cjs/components/Chopin/TradeSelector/TradeInput/index.js.map +1 -0
- package/dist/cjs/components/Chopin/TradeSelector/TradeSelector.d.ts +2 -2
- package/dist/cjs/components/Chopin/TradeSelector/TradeSelector.js +62 -31
- package/dist/cjs/components/Chopin/TradeSelector/TradeSelector.js.map +1 -1
- package/dist/cjs/components/Chopin/TradeSelector/TradeSelector.test.js +152 -240
- package/dist/cjs/components/Chopin/TradeSelector/TradeSelector.test.js.map +1 -1
- package/dist/cjs/components/Chopin/TradeSelector/config/index.d.ts +9 -0
- package/dist/cjs/components/Chopin/TradeSelector/config/shared.d.ts +9 -0
- package/dist/cjs/components/Chopin/TradeSelector/config/shared.js +9 -0
- package/dist/cjs/components/Chopin/TradeSelector/config/shared.js.map +1 -1
- package/dist/cjs/components/Chopin/TradeSelector/jestHTMLDialogPolyfill.d.ts +1 -0
- package/dist/cjs/components/Chopin/TradeSelector/jestHTMLDialogPolyfill.js +17 -0
- package/dist/cjs/components/Chopin/TradeSelector/jestHTMLDialogPolyfill.js.map +1 -0
- package/dist/cjs/components/Chopin/TradeSelector/mockApiResults.d.ts +10 -0
- package/dist/cjs/components/Chopin/TradeSelector/mockApiResults.js +11 -1
- package/dist/cjs/components/Chopin/TradeSelector/mockApiResults.js.map +1 -1
- package/dist/cjs/components/Chopin/TradeSelector/types.d.ts +7 -5
- package/dist/cjs/components/Chopin/TradeSelector/useFetchTrades/index.d.ts +1 -0
- package/dist/cjs/components/Chopin/TradeSelector/{SelectedTrade → useFetchTrades}/index.js +1 -1
- package/dist/cjs/components/Chopin/TradeSelector/useFetchTrades/index.js.map +1 -0
- package/dist/cjs/components/Chopin/TradeSelector/useFetchTrades/useFetchTrades.d.ts +8 -0
- package/dist/cjs/components/Chopin/TradeSelector/useFetchTrades/useFetchTrades.js +62 -0
- package/dist/cjs/components/Chopin/TradeSelector/useFetchTrades/useFetchTrades.js.map +1 -0
- package/dist/cjs/components/Chopin/TradeSelector/useTradeSelectorUrl/index.d.ts +1 -0
- package/dist/cjs/components/Chopin/TradeSelector/useTradeSelectorUrl/index.js +18 -0
- package/dist/cjs/components/Chopin/TradeSelector/{useTradeSelector → useTradeSelectorUrl}/index.js.map +1 -1
- package/dist/cjs/components/Chopin/TradeSelector/useTradeSelectorUrl/useTradeSelectorUrl.d.ts +6 -0
- package/dist/cjs/components/Chopin/TradeSelector/useTradeSelectorUrl/useTradeSelectorUrl.js +20 -0
- package/dist/cjs/components/Chopin/TradeSelector/useTradeSelectorUrl/useTradeSelectorUrl.js.map +1 -0
- package/dist/cjs/components/Chopin/TradeSelector/useTradeSelectorUrl/useTradeSelectorUrl.test.js +29 -0
- package/dist/cjs/components/Chopin/TradeSelector/useTradeSelectorUrl/useTradeSelectorUrl.test.js.map +1 -0
- package/dist/cjs/components/Chopin/index.d.ts +5 -5
- package/dist/cjs/components/Chopin/index.js +5 -5
- package/dist/cjs/components/Chopin/index.js.map +1 -1
- package/dist/cjs/hooks/useOnClickOutside/index.d.ts +1 -0
- package/dist/cjs/hooks/useOnClickOutside/index.js +18 -0
- package/dist/cjs/hooks/useOnClickOutside/index.js.map +1 -0
- package/dist/cjs/hooks/useOnClickOutside/useOnClickOutside.d.ts +2 -0
- package/dist/cjs/hooks/useOnClickOutside/useOnClickOutside.js +23 -0
- package/dist/cjs/hooks/useOnClickOutside/useOnClickOutside.js.map +1 -0
- package/dist/esm/components/Chopin/QuestionHelp/QuestionHelp.js +6 -11
- package/dist/esm/components/Chopin/QuestionHelp/QuestionHelp.js.map +1 -1
- package/dist/esm/components/Chopin/TradeSelector/Header/Header.js +10 -0
- package/dist/esm/components/Chopin/TradeSelector/Header/Header.js.map +1 -0
- package/dist/esm/components/Chopin/TradeSelector/Header/index.js +2 -0
- package/dist/esm/components/Chopin/TradeSelector/Header/index.js.map +1 -0
- package/dist/esm/components/Chopin/TradeSelector/Listing/Listing.js +17 -0
- package/dist/esm/components/Chopin/TradeSelector/Listing/Listing.js.map +1 -0
- package/dist/esm/components/Chopin/TradeSelector/Listing/Listing.test.js +26 -0
- package/dist/esm/components/Chopin/TradeSelector/Listing/Listing.test.js.map +1 -0
- package/dist/esm/components/Chopin/TradeSelector/Listing/ListingItem.js +21 -0
- package/dist/esm/components/Chopin/TradeSelector/Listing/ListingItem.js.map +1 -0
- package/dist/esm/components/Chopin/TradeSelector/Listing/ListingItem.test.js +37 -0
- package/dist/esm/components/Chopin/TradeSelector/Listing/ListingItem.test.js.map +1 -0
- package/dist/esm/components/Chopin/TradeSelector/Listing/index.js +2 -0
- package/dist/esm/components/Chopin/TradeSelector/Listing/index.js.map +1 -0
- package/dist/esm/components/Chopin/TradeSelector/SearchResults/SearchResults.js +90 -16
- package/dist/esm/components/Chopin/TradeSelector/SearchResults/SearchResults.js.map +1 -1
- package/dist/esm/components/Chopin/TradeSelector/SearchResults/SearchResults.test.js +75 -103
- package/dist/esm/components/Chopin/TradeSelector/SearchResults/SearchResults.test.js.map +1 -1
- package/dist/esm/components/Chopin/TradeSelector/TradeInput/TradeInput.js +30 -0
- package/dist/esm/components/Chopin/TradeSelector/TradeInput/TradeInput.js.map +1 -0
- package/dist/esm/components/Chopin/TradeSelector/TradeInput/TradeInput.test.js +52 -0
- package/dist/esm/components/Chopin/TradeSelector/TradeInput/TradeInput.test.js.map +1 -0
- package/dist/esm/components/Chopin/TradeSelector/TradeInput/index.js +2 -0
- package/dist/esm/components/Chopin/TradeSelector/TradeInput/index.js.map +1 -0
- package/dist/esm/components/Chopin/TradeSelector/TradeSelector.js +63 -32
- package/dist/esm/components/Chopin/TradeSelector/TradeSelector.js.map +1 -1
- package/dist/esm/components/Chopin/TradeSelector/TradeSelector.test.js +154 -242
- package/dist/esm/components/Chopin/TradeSelector/TradeSelector.test.js.map +1 -1
- package/dist/esm/components/Chopin/TradeSelector/config/shared.js +9 -0
- package/dist/esm/components/Chopin/TradeSelector/config/shared.js.map +1 -1
- package/dist/esm/components/Chopin/TradeSelector/jestHTMLDialogPolyfill.js +13 -0
- package/dist/esm/components/Chopin/TradeSelector/jestHTMLDialogPolyfill.js.map +1 -0
- package/dist/esm/components/Chopin/TradeSelector/mockApiResults.js +10 -0
- package/dist/esm/components/Chopin/TradeSelector/mockApiResults.js.map +1 -1
- package/dist/esm/components/Chopin/TradeSelector/useFetchTrades/index.js +2 -0
- package/dist/esm/components/Chopin/TradeSelector/useFetchTrades/index.js.map +1 -0
- package/dist/esm/components/Chopin/TradeSelector/useFetchTrades/useFetchTrades.js +55 -0
- package/dist/esm/components/Chopin/TradeSelector/useFetchTrades/useFetchTrades.js.map +1 -0
- package/dist/esm/components/Chopin/TradeSelector/useTradeSelectorUrl/index.js +2 -0
- package/dist/esm/components/Chopin/TradeSelector/{useTradeSelector → useTradeSelectorUrl}/index.js.map +1 -1
- package/dist/esm/components/Chopin/TradeSelector/useTradeSelectorUrl/useTradeSelectorUrl.js +16 -0
- package/dist/esm/components/Chopin/TradeSelector/useTradeSelectorUrl/useTradeSelectorUrl.js.map +1 -0
- package/dist/esm/components/Chopin/TradeSelector/useTradeSelectorUrl/useTradeSelectorUrl.test.js +27 -0
- package/dist/esm/components/Chopin/TradeSelector/useTradeSelectorUrl/useTradeSelectorUrl.test.js.map +1 -0
- package/dist/esm/components/Chopin/index.js +5 -5
- package/dist/esm/components/Chopin/index.js.map +1 -1
- package/dist/esm/hooks/useOnClickOutside/index.js +2 -0
- package/dist/esm/hooks/useOnClickOutside/index.js.map +1 -0
- package/dist/esm/hooks/useOnClickOutside/useOnClickOutside.js +19 -0
- package/dist/esm/hooks/useOnClickOutside/useOnClickOutside.js.map +1 -0
- package/dist/mobius.d.ts +38 -30
- package/package.json +5 -7
- package/src/components/Chopin/QuestionHelp/QuestionHelp.tsx +8 -20
- package/src/components/Chopin/TradeSelector/Header/Header.tsx +33 -0
- package/src/components/Chopin/TradeSelector/Header/index.tsx +1 -0
- package/src/components/Chopin/TradeSelector/Listing/Listing.test.tsx +42 -0
- package/src/components/Chopin/TradeSelector/Listing/Listing.tsx +51 -0
- package/src/components/Chopin/TradeSelector/Listing/ListingItem.test.tsx +54 -0
- package/src/components/Chopin/TradeSelector/Listing/ListingItem.tsx +50 -0
- package/src/components/Chopin/TradeSelector/Listing/index.tsx +1 -0
- package/src/components/Chopin/TradeSelector/SearchResults/SearchResults.test.tsx +90 -130
- package/src/components/Chopin/TradeSelector/SearchResults/SearchResults.tsx +169 -66
- package/src/components/Chopin/TradeSelector/TradeInput/TradeInput.test.tsx +74 -0
- package/src/components/Chopin/TradeSelector/TradeInput/TradeInput.tsx +94 -0
- package/src/components/Chopin/TradeSelector/TradeInput/index.tsx +1 -0
- package/src/components/Chopin/TradeSelector/TradeSelector.story.mdx +75 -49
- package/src/components/Chopin/TradeSelector/TradeSelector.test.tsx +228 -300
- package/src/components/Chopin/TradeSelector/TradeSelector.tsx +124 -93
- package/src/components/Chopin/TradeSelector/config/shared.ts +9 -0
- package/src/components/Chopin/TradeSelector/jestHTMLDialogPolyfill.ts +17 -0
- package/src/components/Chopin/TradeSelector/mockApiResults.ts +11 -0
- package/src/components/Chopin/TradeSelector/types.ts +24 -6
- package/src/components/Chopin/TradeSelector/useFetchTrades/index.ts +1 -0
- package/src/components/Chopin/TradeSelector/useFetchTrades/useFetchTrades.ts +67 -0
- package/src/components/Chopin/TradeSelector/useTradeSelectorUrl/index.ts +1 -0
- package/src/components/Chopin/TradeSelector/useTradeSelectorUrl/useTradeSelectorUrl.test.ts +37 -0
- package/src/components/Chopin/TradeSelector/useTradeSelectorUrl/useTradeSelectorUrl.ts +26 -0
- package/src/components/Chopin/index.tsx +5 -5
- package/src/components/Link/Link.story.mdx +14 -0
- package/src/hooks/useOnClickOutside/index.ts +1 -0
- package/src/hooks/useOnClickOutside/useOnClickOutside.ts +23 -0
- package/dist/cjs/components/Chopin/TradeSelector/ComboBox/ComboBox.d.ts +0 -9
- package/dist/cjs/components/Chopin/TradeSelector/ComboBox/ComboBox.js +0 -37
- package/dist/cjs/components/Chopin/TradeSelector/ComboBox/ComboBox.js.map +0 -1
- package/dist/cjs/components/Chopin/TradeSelector/ComboBox/ComboBox.test.js +0 -59
- package/dist/cjs/components/Chopin/TradeSelector/ComboBox/ComboBox.test.js.map +0 -1
- package/dist/cjs/components/Chopin/TradeSelector/ComboBox/index.d.ts +0 -1
- package/dist/cjs/components/Chopin/TradeSelector/ComboBox/index.js.map +0 -1
- package/dist/cjs/components/Chopin/TradeSelector/ListBox/ListBox.d.ts +0 -13
- package/dist/cjs/components/Chopin/TradeSelector/ListBox/ListBox.js +0 -16
- package/dist/cjs/components/Chopin/TradeSelector/ListBox/ListBox.js.map +0 -1
- package/dist/cjs/components/Chopin/TradeSelector/ListBox/ListBoxSection.d.ts +0 -8
- package/dist/cjs/components/Chopin/TradeSelector/ListBox/ListBoxSection.js +0 -15
- package/dist/cjs/components/Chopin/TradeSelector/ListBox/ListBoxSection.js.map +0 -1
- package/dist/cjs/components/Chopin/TradeSelector/ListBox/Option.d.ts +0 -9
- package/dist/cjs/components/Chopin/TradeSelector/ListBox/Option.js +0 -22
- package/dist/cjs/components/Chopin/TradeSelector/ListBox/Option.js.map +0 -1
- package/dist/cjs/components/Chopin/TradeSelector/ListBox/index.d.ts +0 -1
- package/dist/cjs/components/Chopin/TradeSelector/ListBox/index.js.map +0 -1
- package/dist/cjs/components/Chopin/TradeSelector/Popover/Popover.d.ts +0 -10
- package/dist/cjs/components/Chopin/TradeSelector/Popover/Popover.js +0 -24
- package/dist/cjs/components/Chopin/TradeSelector/Popover/Popover.js.map +0 -1
- package/dist/cjs/components/Chopin/TradeSelector/Popover/Popover.test.js +0 -18
- package/dist/cjs/components/Chopin/TradeSelector/Popover/Popover.test.js.map +0 -1
- package/dist/cjs/components/Chopin/TradeSelector/Popover/index.d.ts +0 -1
- package/dist/cjs/components/Chopin/TradeSelector/Popover/index.js.map +0 -1
- package/dist/cjs/components/Chopin/TradeSelector/SelectedTrade/SelectedTrade.d.ts +0 -5
- package/dist/cjs/components/Chopin/TradeSelector/SelectedTrade/SelectedTrade.js +0 -8
- package/dist/cjs/components/Chopin/TradeSelector/SelectedTrade/SelectedTrade.js.map +0 -1
- package/dist/cjs/components/Chopin/TradeSelector/SelectedTrade/SelectedTrade.test.js +0 -18
- package/dist/cjs/components/Chopin/TradeSelector/SelectedTrade/SelectedTrade.test.js.map +0 -1
- package/dist/cjs/components/Chopin/TradeSelector/SelectedTrade/index.d.ts +0 -1
- package/dist/cjs/components/Chopin/TradeSelector/SelectedTrade/index.js.map +0 -1
- package/dist/cjs/components/Chopin/TradeSelector/getItemsToDisplay/getItemsToDisplay.d.ts +0 -7
- package/dist/cjs/components/Chopin/TradeSelector/getItemsToDisplay/getItemsToDisplay.js +0 -27
- package/dist/cjs/components/Chopin/TradeSelector/getItemsToDisplay/getItemsToDisplay.js.map +0 -1
- package/dist/cjs/components/Chopin/TradeSelector/getItemsToDisplay/getItemsToDisplay.test.js +0 -76
- package/dist/cjs/components/Chopin/TradeSelector/getItemsToDisplay/getItemsToDisplay.test.js.map +0 -1
- package/dist/cjs/components/Chopin/TradeSelector/getItemsToDisplay/index.d.ts +0 -1
- package/dist/cjs/components/Chopin/TradeSelector/getItemsToDisplay/index.js +0 -18
- package/dist/cjs/components/Chopin/TradeSelector/getItemsToDisplay/index.js.map +0 -1
- package/dist/cjs/components/Chopin/TradeSelector/getTradesGroupedByType/getTradesGroupedByType.d.ts +0 -2
- package/dist/cjs/components/Chopin/TradeSelector/getTradesGroupedByType/getTradesGroupedByType.js +0 -17
- package/dist/cjs/components/Chopin/TradeSelector/getTradesGroupedByType/getTradesGroupedByType.js.map +0 -1
- package/dist/cjs/components/Chopin/TradeSelector/getTradesGroupedByType/getTradesGroupedByType.test.d.ts +0 -1
- package/dist/cjs/components/Chopin/TradeSelector/getTradesGroupedByType/getTradesGroupedByType.test.js +0 -42
- package/dist/cjs/components/Chopin/TradeSelector/getTradesGroupedByType/getTradesGroupedByType.test.js.map +0 -1
- package/dist/cjs/components/Chopin/TradeSelector/getTradesGroupedByType/index.d.ts +0 -1
- package/dist/cjs/components/Chopin/TradeSelector/getTradesGroupedByType/index.js +0 -18
- package/dist/cjs/components/Chopin/TradeSelector/getTradesGroupedByType/index.js.map +0 -1
- package/dist/cjs/components/Chopin/TradeSelector/useTradeSelector/index.d.ts +0 -1
- package/dist/cjs/components/Chopin/TradeSelector/useTradeSelector/index.js +0 -18
- package/dist/cjs/components/Chopin/TradeSelector/useTradeSelector/useTradeSelector.d.ts +0 -17
- package/dist/cjs/components/Chopin/TradeSelector/useTradeSelector/useTradeSelector.js +0 -68
- package/dist/cjs/components/Chopin/TradeSelector/useTradeSelector/useTradeSelector.js.map +0 -1
- package/dist/cjs/components/Chopin/TradeSelector/useTradeSelector/useTradeSelector.test.d.ts +0 -1
- package/dist/cjs/components/Chopin/TradeSelector/useTradeSelector/useTradeSelector.test.js +0 -86
- package/dist/cjs/components/Chopin/TradeSelector/useTradeSelector/useTradeSelector.test.js.map +0 -1
- package/dist/esm/components/Chopin/TradeSelector/ComboBox/ComboBox.js +0 -31
- package/dist/esm/components/Chopin/TradeSelector/ComboBox/ComboBox.js.map +0 -1
- package/dist/esm/components/Chopin/TradeSelector/ComboBox/ComboBox.test.js +0 -54
- package/dist/esm/components/Chopin/TradeSelector/ComboBox/ComboBox.test.js.map +0 -1
- package/dist/esm/components/Chopin/TradeSelector/ComboBox/index.js +0 -2
- package/dist/esm/components/Chopin/TradeSelector/ComboBox/index.js.map +0 -1
- package/dist/esm/components/Chopin/TradeSelector/ListBox/ListBox.js +0 -13
- package/dist/esm/components/Chopin/TradeSelector/ListBox/ListBox.js.map +0 -1
- package/dist/esm/components/Chopin/TradeSelector/ListBox/ListBoxSection.js +0 -12
- package/dist/esm/components/Chopin/TradeSelector/ListBox/ListBoxSection.js.map +0 -1
- package/dist/esm/components/Chopin/TradeSelector/ListBox/Option.js +0 -16
- package/dist/esm/components/Chopin/TradeSelector/ListBox/Option.js.map +0 -1
- package/dist/esm/components/Chopin/TradeSelector/ListBox/index.js +0 -2
- package/dist/esm/components/Chopin/TradeSelector/ListBox/index.js.map +0 -1
- package/dist/esm/components/Chopin/TradeSelector/Popover/Popover.js +0 -21
- package/dist/esm/components/Chopin/TradeSelector/Popover/Popover.js.map +0 -1
- package/dist/esm/components/Chopin/TradeSelector/Popover/Popover.test.js +0 -16
- package/dist/esm/components/Chopin/TradeSelector/Popover/Popover.test.js.map +0 -1
- package/dist/esm/components/Chopin/TradeSelector/Popover/index.js +0 -2
- package/dist/esm/components/Chopin/TradeSelector/Popover/index.js.map +0 -1
- package/dist/esm/components/Chopin/TradeSelector/SelectedTrade/SelectedTrade.js +0 -4
- package/dist/esm/components/Chopin/TradeSelector/SelectedTrade/SelectedTrade.js.map +0 -1
- package/dist/esm/components/Chopin/TradeSelector/SelectedTrade/SelectedTrade.test.js +0 -16
- package/dist/esm/components/Chopin/TradeSelector/SelectedTrade/SelectedTrade.test.js.map +0 -1
- package/dist/esm/components/Chopin/TradeSelector/SelectedTrade/index.js +0 -2
- package/dist/esm/components/Chopin/TradeSelector/SelectedTrade/index.js.map +0 -1
- package/dist/esm/components/Chopin/TradeSelector/getItemsToDisplay/getItemsToDisplay.js +0 -23
- package/dist/esm/components/Chopin/TradeSelector/getItemsToDisplay/getItemsToDisplay.js.map +0 -1
- package/dist/esm/components/Chopin/TradeSelector/getItemsToDisplay/getItemsToDisplay.test.js +0 -74
- package/dist/esm/components/Chopin/TradeSelector/getItemsToDisplay/getItemsToDisplay.test.js.map +0 -1
- package/dist/esm/components/Chopin/TradeSelector/getItemsToDisplay/index.js +0 -2
- package/dist/esm/components/Chopin/TradeSelector/getItemsToDisplay/index.js.map +0 -1
- package/dist/esm/components/Chopin/TradeSelector/getTradesGroupedByType/getTradesGroupedByType.js +0 -13
- package/dist/esm/components/Chopin/TradeSelector/getTradesGroupedByType/getTradesGroupedByType.js.map +0 -1
- package/dist/esm/components/Chopin/TradeSelector/getTradesGroupedByType/getTradesGroupedByType.test.js +0 -40
- package/dist/esm/components/Chopin/TradeSelector/getTradesGroupedByType/getTradesGroupedByType.test.js.map +0 -1
- package/dist/esm/components/Chopin/TradeSelector/getTradesGroupedByType/index.js +0 -2
- package/dist/esm/components/Chopin/TradeSelector/getTradesGroupedByType/index.js.map +0 -1
- package/dist/esm/components/Chopin/TradeSelector/useTradeSelector/index.js +0 -2
- package/dist/esm/components/Chopin/TradeSelector/useTradeSelector/useTradeSelector.js +0 -65
- package/dist/esm/components/Chopin/TradeSelector/useTradeSelector/useTradeSelector.js.map +0 -1
- package/dist/esm/components/Chopin/TradeSelector/useTradeSelector/useTradeSelector.test.js +0 -84
- package/dist/esm/components/Chopin/TradeSelector/useTradeSelector/useTradeSelector.test.js.map +0 -1
- package/src/components/Chopin/TradeSelector/ComboBox/ComboBox.test.tsx +0 -85
- package/src/components/Chopin/TradeSelector/ComboBox/ComboBox.tsx +0 -74
- package/src/components/Chopin/TradeSelector/ComboBox/index.tsx +0 -1
- package/src/components/Chopin/TradeSelector/ListBox/ListBox.tsx +0 -36
- package/src/components/Chopin/TradeSelector/ListBox/ListBoxSection.tsx +0 -34
- package/src/components/Chopin/TradeSelector/ListBox/Option.tsx +0 -35
- package/src/components/Chopin/TradeSelector/ListBox/index.tsx +0 -1
- package/src/components/Chopin/TradeSelector/Popover/Popover.test.tsx +0 -28
- package/src/components/Chopin/TradeSelector/Popover/Popover.tsx +0 -42
- package/src/components/Chopin/TradeSelector/Popover/index.tsx +0 -1
- package/src/components/Chopin/TradeSelector/SelectedTrade/SelectedTrade.test.tsx +0 -24
- package/src/components/Chopin/TradeSelector/SelectedTrade/SelectedTrade.tsx +0 -20
- package/src/components/Chopin/TradeSelector/SelectedTrade/index.tsx +0 -1
- package/src/components/Chopin/TradeSelector/getItemsToDisplay/getItemsToDisplay.test.ts +0 -97
- package/src/components/Chopin/TradeSelector/getItemsToDisplay/getItemsToDisplay.ts +0 -36
- package/src/components/Chopin/TradeSelector/getItemsToDisplay/index.ts +0 -1
- package/src/components/Chopin/TradeSelector/getTradesGroupedByType/getTradesGroupedByType.test.ts +0 -49
- package/src/components/Chopin/TradeSelector/getTradesGroupedByType/getTradesGroupedByType.ts +0 -19
- package/src/components/Chopin/TradeSelector/getTradesGroupedByType/index.ts +0 -1
- package/src/components/Chopin/TradeSelector/useTradeSelector/index.ts +0 -1
- package/src/components/Chopin/TradeSelector/useTradeSelector/useTradeSelector.test.ts +0 -107
- package/src/components/Chopin/TradeSelector/useTradeSelector/useTradeSelector.ts +0 -82
- /package/dist/cjs/components/Chopin/TradeSelector/{ComboBox/ComboBox.test.d.ts → Listing/Listing.test.d.ts} +0 -0
- /package/dist/cjs/components/Chopin/TradeSelector/{Popover/Popover.test.d.ts → Listing/ListingItem.test.d.ts} +0 -0
- /package/dist/cjs/components/Chopin/TradeSelector/{SelectedTrade/SelectedTrade.test.d.ts → TradeInput/TradeInput.test.d.ts} +0 -0
- /package/dist/cjs/components/Chopin/TradeSelector/{getItemsToDisplay/getItemsToDisplay.test.d.ts → useTradeSelectorUrl/useTradeSelectorUrl.test.d.ts} +0 -0
|
@@ -1,17 +1,91 @@
|
|
|
1
|
-
import { jsx as _jsx } from "@emotion/react/jsx-runtime";
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "@emotion/react/jsx-runtime";
|
|
2
|
+
import { useCallback, useEffect, useRef, useState } from "react";
|
|
3
|
+
import clsx from "clsx";
|
|
4
|
+
import { Listing } from "../Listing";
|
|
5
|
+
import { useOnClickOutside } from "../../../../hooks/useOnClickOutside";
|
|
6
|
+
export const SearchResults = (props) => {
|
|
7
|
+
const { isOpen, labels, className, results, isLoading, fallbackUrl, describedBy, inputRef, onClick, onClose, } = props;
|
|
8
|
+
const dialogRef = useRef(null);
|
|
9
|
+
const resultRefs = useRef([]);
|
|
10
|
+
const [focusId, setFocusId] = useState(0);
|
|
11
|
+
const classes = clsx("chopin/TradeSelectorResults", {
|
|
12
|
+
"--is-open": isOpen,
|
|
13
|
+
}, className);
|
|
14
|
+
const closeSearchResults = useCallback(() => {
|
|
15
|
+
setFocusId(0);
|
|
16
|
+
onClose();
|
|
17
|
+
if (dialogRef.current) {
|
|
18
|
+
dialogRef.current.close();
|
|
19
|
+
}
|
|
20
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
21
|
+
}, []);
|
|
22
|
+
useOnClickOutside(dialogRef, () => {
|
|
23
|
+
if (dialogRef.current && dialogRef.current.open) {
|
|
24
|
+
closeSearchResults();
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
const handleTradeClick = useCallback((trade) => {
|
|
28
|
+
closeSearchResults();
|
|
29
|
+
onClick(trade);
|
|
30
|
+
}, [closeSearchResults, onClick]);
|
|
31
|
+
const handleKeyDown = useCallback((event) => {
|
|
32
|
+
var _a;
|
|
33
|
+
if (!((_a = dialogRef.current) === null || _a === void 0 ? void 0 : _a.open) || !results)
|
|
34
|
+
return;
|
|
35
|
+
if (event.code === "ArrowDown") {
|
|
36
|
+
if (focusId === results.length - 1) {
|
|
37
|
+
setFocusId(0);
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
setFocusId(focusId + 1);
|
|
41
|
+
}
|
|
42
|
+
if (event.code === "ArrowUp") {
|
|
43
|
+
if (focusId === 0) {
|
|
44
|
+
setFocusId(results.length - 1);
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
setFocusId(focusId - 1);
|
|
48
|
+
}
|
|
49
|
+
if (event.code === "Escape") {
|
|
50
|
+
closeSearchResults();
|
|
51
|
+
}
|
|
52
|
+
if (event.code === "Enter") {
|
|
53
|
+
if (focusId === 0 && results) {
|
|
54
|
+
const [firstTrade] = results;
|
|
55
|
+
handleTradeClick(firstTrade);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}, [focusId, closeSearchResults, results, handleTradeClick]);
|
|
59
|
+
useEffect(() => {
|
|
60
|
+
var _a;
|
|
61
|
+
if (((_a = dialogRef.current) === null || _a === void 0 ? void 0 : _a.open) && resultRefs.current[focusId]) {
|
|
62
|
+
resultRefs.current[focusId].focus();
|
|
63
|
+
}
|
|
64
|
+
}, [focusId]);
|
|
65
|
+
useEffect(() => {
|
|
66
|
+
window.addEventListener("keydown", handleKeyDown);
|
|
67
|
+
return () => {
|
|
68
|
+
window.removeEventListener("keydown", handleKeyDown);
|
|
69
|
+
};
|
|
70
|
+
}, [handleKeyDown]);
|
|
71
|
+
useEffect(() => {
|
|
72
|
+
if (dialogRef.current && isOpen) {
|
|
73
|
+
if (!dialogRef.current.open && inputRef.current) {
|
|
74
|
+
dialogRef.current.show();
|
|
75
|
+
// Return focus from <dialog> back to <input>
|
|
76
|
+
inputRef.current.focus();
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}, [isOpen, inputRef]);
|
|
80
|
+
if (!isOpen)
|
|
81
|
+
return null;
|
|
82
|
+
const searchResponseExact = results
|
|
83
|
+
? results.filter((result) => result.type === "exact")
|
|
84
|
+
: [];
|
|
85
|
+
const searchResponseSuggested = results
|
|
86
|
+
? results.filter((result) => result.type === "suggested")
|
|
87
|
+
: [];
|
|
88
|
+
const noResults = (results === null || results === void 0 ? void 0 : results.length) === 0;
|
|
89
|
+
return (_jsx("dialog", Object.assign({ className: classes, ref: dialogRef, "aria-describedby": describedBy }, { children: isLoading ? (_jsx("header", Object.assign({ className: "chopin/TradeSelectorListTitle" }, { children: labels.loading }))) : noResults ? (_jsx("header", Object.assign({ className: "chopin/TradeSelectorListTitle" }, { children: _jsx("a", Object.assign({ href: fallbackUrl, className: "chopin/TradeSelectorListTitleLink" }, { children: labels.noResults })) }))) : (_jsxs(_Fragment, { children: [searchResponseExact.length > 0 && (_jsx(Listing, { title: labels.exact, trades: searchResponseExact, resultRefs: resultRefs, onClick: handleTradeClick, selectedId: focusId })), searchResponseSuggested.length > 0 && (_jsx(Listing, { title: labels.suggested, trades: searchResponseSuggested, resultRefs: resultRefs, refCountStart: searchResponseExact.length, onClick: handleTradeClick, selectedId: focusId }))] })) })));
|
|
90
|
+
};
|
|
17
91
|
//# sourceMappingURL=SearchResults.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchResults.js","sourceRoot":"","sources":["../../../../../../src/components/Chopin/TradeSelector/SearchResults/SearchResults.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"SearchResults.js","sourceRoot":"","sources":["../../../../../../src/components/Chopin/TradeSelector/SearchResults/SearchResults.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAa,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5E,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAexE,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAyB,EAAE,EAAE;IACzD,MAAM,EACJ,MAAM,EACN,MAAM,EACN,SAAS,EACT,OAAO,EACP,SAAS,EACT,WAAW,EACX,WAAW,EACX,QAAQ,EACR,OAAO,EACP,OAAO,GACR,GAAG,KAAK,CAAC;IACV,MAAM,SAAS,GAAG,MAAM,CAAY,IAAI,CAAC,CAAC;IAC1C,MAAM,UAAU,GAAG,MAAM,CAAsB,EAAE,CAAC,CAAC;IACnD,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAS,CAAC,CAAC,CAAC;IAClD,MAAM,OAAO,GAAG,IAAI,CAClB,6BAA6B,EAC7B;QACE,WAAW,EAAE,MAAM;KACpB,EACD,SAAS,CACV,CAAC;IAEF,MAAM,kBAAkB,GAAG,WAAW,CAAC,GAAG,EAAE;QAC1C,UAAU,CAAC,CAAC,CAAC,CAAC;QACd,OAAO,EAAE,CAAC;QAEV,IAAI,SAAS,CAAC,OAAO,EAAE;YACrB,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;SAC3B;QACD,uDAAuD;IACzD,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,iBAAiB,CAAC,SAAS,EAAE,GAAG,EAAE;QAChC,IAAI,SAAS,CAAC,OAAO,IAAI,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE;YAC/C,kBAAkB,EAAE,CAAC;SACtB;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,gBAAgB,GAAG,WAAW,CAClC,CAAC,KAAiB,EAAE,EAAE;QACpB,kBAAkB,EAAE,CAAC;QACrB,OAAO,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC,EACD,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAC9B,CAAC;IAEF,MAAM,aAAa,GAAG,WAAW,CAC/B,CAAC,KAAoB,EAAE,EAAE;;QACvB,IAAI,CAAC,CAAA,MAAA,SAAS,CAAC,OAAO,0CAAE,IAAI,CAAA,IAAI,CAAC,OAAO;YAAE,OAAO;QAEjD,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE;YAC9B,IAAI,OAAO,KAAK,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;gBAClC,UAAU,CAAC,CAAC,CAAC,CAAC;gBACd,OAAO;aACR;YAED,UAAU,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;SACzB;QAED,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE;YAC5B,IAAI,OAAO,KAAK,CAAC,EAAE;gBACjB,UAAU,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBAC/B,OAAO;aACR;YAED,UAAU,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;SACzB;QAED,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE;YAC3B,kBAAkB,EAAE,CAAC;SACtB;QAED,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;YAC1B,IAAI,OAAO,KAAK,CAAC,IAAI,OAAO,EAAE;gBAC5B,MAAM,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC;gBAC7B,gBAAgB,CAAC,UAAU,CAAC,CAAC;aAC9B;SACF;IACH,CAAC,EACD,CAAC,OAAO,EAAE,kBAAkB,EAAE,OAAO,EAAE,gBAAgB,CAAC,CACzD,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;;QACb,IAAI,CAAA,MAAA,SAAS,CAAC,OAAO,0CAAE,IAAI,KAAI,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YAC1D,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC;SACrC;IACH,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QAElD,OAAO,GAAG,EAAE;YACV,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QACvD,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;IAEpB,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,SAAS,CAAC,OAAO,IAAI,MAAM,EAAE;YAC/B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,IAAI,QAAQ,CAAC,OAAO,EAAE;gBAC/C,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBACzB,6CAA6C;gBAC7C,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;aAC1B;SACF;IACH,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IAEvB,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAEzB,MAAM,mBAAmB,GAAG,OAAO;QACjC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAkB,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC;QACjE,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,uBAAuB,GAAG,OAAO;QACrC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAkB,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,WAAW,CAAC;QACrE,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,SAAS,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,MAAK,CAAC,CAAC;IAExC,OAAO,CACL,+BAAQ,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,sBAAoB,WAAW,gBACtE,SAAS,CAAC,CAAC,CAAC,CACX,+BAAQ,SAAS,EAAC,+BAA+B,gBAC9C,MAAM,CAAC,OAAO,IACR,CACV,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CACd,+BAAQ,SAAS,EAAC,+BAA+B,gBAC/C,0BAAG,IAAI,EAAE,WAAW,EAAE,SAAS,EAAC,mCAAmC,gBAChE,MAAM,CAAC,SAAS,IACf,IACG,CACV,CAAC,CAAC,CAAC,CACF,8BACG,mBAAmB,CAAC,MAAM,GAAG,CAAC,IAAI,CACjC,KAAC,OAAO,IACN,KAAK,EAAE,MAAM,CAAC,KAAK,EACnB,MAAM,EAAE,mBAAmB,EAC3B,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,gBAAgB,EACzB,UAAU,EAAE,OAAO,GACnB,CACH,EACA,uBAAuB,CAAC,MAAM,GAAG,CAAC,IAAI,CACrC,KAAC,OAAO,IACN,KAAK,EAAE,MAAM,CAAC,SAAS,EACvB,MAAM,EAAE,uBAAuB,EAC/B,UAAU,EAAE,UAAU,EACtB,aAAa,EAAE,mBAAmB,CAAC,MAAM,EACzC,OAAO,EAAE,gBAAgB,EACzB,UAAU,EAAE,OAAO,GACnB,CACH,IACA,CACJ,IACM,CACV,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -1,113 +1,85 @@
|
|
|
1
1
|
import { jsx as _jsx } from "@emotion/react/jsx-runtime";
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
2
|
+
import React, { useRef } from "react";
|
|
3
|
+
import { fireEvent, render, screen } from "@testing-library/react";
|
|
4
|
+
import { jestHTMLDialogPolyfill } from "../jestHTMLDialogPolyfill";
|
|
5
|
+
import { SearchResults } from "./SearchResults";
|
|
6
|
+
import { mockTrade } from "../mockApiResults";
|
|
7
|
+
import { getConfig } from "../config";
|
|
8
|
+
jestHTMLDialogPolyfill();
|
|
9
|
+
jest.mock("react", () => (Object.assign(Object.assign({}, jest.requireActual("react")), { useRef: jest.fn() })));
|
|
10
|
+
jest.mock("@react-aria/focus", () => ({
|
|
11
|
+
useFocusRing: () => ({
|
|
12
|
+
isFocusVisible: () => { },
|
|
13
|
+
focusProps: () => { },
|
|
14
|
+
}),
|
|
15
|
+
}));
|
|
16
|
+
jest.mock("@react-aria/interactions", () => ({
|
|
17
|
+
useHover: () => ({
|
|
18
|
+
hoverProps: () => { },
|
|
19
|
+
isHovered: () => { },
|
|
20
|
+
}),
|
|
21
|
+
}));
|
|
22
|
+
const SearchResultsComponent = (props) => {
|
|
23
|
+
const { defaultLabels } = getConfig();
|
|
24
|
+
const defaultProps = {
|
|
25
|
+
isOpen: true,
|
|
26
|
+
inputRef: useRef(null),
|
|
27
|
+
results: [mockTrade],
|
|
28
|
+
fallbackUrl: "https://www.example.com",
|
|
29
|
+
labels: Object.assign({}, defaultLabels),
|
|
30
|
+
isLoading: false,
|
|
31
|
+
onClick: jest.fn(),
|
|
32
|
+
onClose: jest.fn(),
|
|
33
|
+
};
|
|
34
|
+
return _jsx(SearchResults, Object.assign({}, defaultProps, props));
|
|
14
35
|
};
|
|
15
|
-
const mockedTrades = [
|
|
16
|
-
{
|
|
17
|
-
name: "exact",
|
|
18
|
-
title: defaultLabels.exact,
|
|
19
|
-
children: [...exactResults],
|
|
20
|
-
},
|
|
21
|
-
{
|
|
22
|
-
name: "suggested",
|
|
23
|
-
title: defaultLabels.suggested,
|
|
24
|
-
children: [...suggestedResults],
|
|
25
|
-
},
|
|
26
|
-
];
|
|
27
|
-
const fallbackUrl = "https://www.example.com/";
|
|
28
36
|
describe("SearchResults", () => {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
jest.spyOn(console, "warn").mockImplementation(jest.fn());
|
|
33
|
-
});
|
|
34
|
-
describe("given items list contain no results item", () => {
|
|
35
|
-
it("displays no results label with fallback url", async () => {
|
|
36
|
-
const props = {
|
|
37
|
-
inputValue: "",
|
|
38
|
-
items: [
|
|
39
|
-
{
|
|
40
|
-
name: defaultLabels.noResults,
|
|
41
|
-
title: defaultLabels.noResults,
|
|
42
|
-
children: [],
|
|
43
|
-
},
|
|
44
|
-
],
|
|
45
|
-
labels: Object.assign(Object.assign({}, defaultLabels), { noResults: defaultLabels.noResults }),
|
|
46
|
-
fallbackUrl,
|
|
47
|
-
onInputChange: () => { },
|
|
48
|
-
onSelectionChange: () => { },
|
|
49
|
-
};
|
|
50
|
-
render(_jsx(SearchResults, Object.assign({}, props)));
|
|
51
|
-
await userEvent.tab();
|
|
52
|
-
await userEvent.keyboard("[Alt][ArrowDown]");
|
|
53
|
-
expect(screen.getByText(defaultLabels.noResults)).toHaveAttribute("href", fallbackUrl);
|
|
37
|
+
beforeEach(() => {
|
|
38
|
+
jest.spyOn(React, "useRef").mockReturnValue({
|
|
39
|
+
current: [],
|
|
54
40
|
});
|
|
55
41
|
});
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
const suggestedResultTrade = "Fitness instructor";
|
|
68
|
-
const { container } = render(_jsx(SearchResults, Object.assign({}, props)));
|
|
69
|
-
await userEvent.tab();
|
|
70
|
-
await userEvent.keyboard("[Alt][ArrowDown]");
|
|
71
|
-
expect(screen.getByText(defaultLabels.exact)).toBeInTheDocument();
|
|
72
|
-
expect(container.querySelector(`[data-key='${exactResultTrade}']`)).toBeInTheDocument();
|
|
73
|
-
expect(screen.getByText(defaultLabels.suggested)).toBeInTheDocument();
|
|
74
|
-
expect(container.querySelector(`[data-key='${suggestedResultTrade}']`)).toBeInTheDocument();
|
|
75
|
-
});
|
|
42
|
+
const loadingText = "Loading...";
|
|
43
|
+
const tradeText = "Landlord";
|
|
44
|
+
const noResultsText = "View all trades";
|
|
45
|
+
it("renders loading state", () => {
|
|
46
|
+
render(_jsx(SearchResultsComponent, { isLoading: true }));
|
|
47
|
+
const loading = screen.queryByText(loadingText);
|
|
48
|
+
const trade = screen.queryByText(tradeText);
|
|
49
|
+
const noResultsLink = screen.queryByText(noResultsText);
|
|
50
|
+
expect(loading).toBeInTheDocument();
|
|
51
|
+
expect(noResultsLink).not.toBeInTheDocument();
|
|
52
|
+
expect(trade).not.toBeInTheDocument();
|
|
76
53
|
});
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
54
|
+
it("renders no results state", () => {
|
|
55
|
+
render(_jsx(SearchResultsComponent, { results: [] }));
|
|
56
|
+
const loading = screen.queryByText(loadingText);
|
|
57
|
+
const trade = screen.queryByText(tradeText);
|
|
58
|
+
const noResultsLink = screen.queryByText(noResultsText);
|
|
59
|
+
expect(loading).not.toBeInTheDocument();
|
|
60
|
+
expect(noResultsLink).toBeInTheDocument();
|
|
61
|
+
expect(trade).not.toBeInTheDocument();
|
|
62
|
+
});
|
|
63
|
+
it("renders trades list", () => {
|
|
64
|
+
render(_jsx(SearchResultsComponent, {}));
|
|
65
|
+
const loading = screen.queryByText(loadingText);
|
|
66
|
+
const trade = screen.queryByText(tradeText);
|
|
67
|
+
const noResultsLink = screen.queryByText(noResultsText);
|
|
68
|
+
expect(loading).not.toBeInTheDocument();
|
|
69
|
+
expect(noResultsLink).not.toBeInTheDocument();
|
|
70
|
+
expect(trade).toBeInTheDocument();
|
|
93
71
|
});
|
|
94
|
-
describe("
|
|
95
|
-
it("
|
|
96
|
-
const
|
|
97
|
-
const
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
const { container } = render(_jsx(SearchResults, Object.assign({}, props)));
|
|
106
|
-
await userEvent.tab();
|
|
107
|
-
await userEvent.keyboard("[Alt][ArrowDown]");
|
|
108
|
-
const option = container.querySelector(`[data-key='Swimming pool installers']`);
|
|
109
|
-
fireEvent.click(option);
|
|
110
|
-
expect(onSelectionChangeHandler).toHaveBeenCalled();
|
|
72
|
+
describe("pressing Enter key", () => {
|
|
73
|
+
it("selects the first trade from the list", () => {
|
|
74
|
+
const onClick = jest.fn();
|
|
75
|
+
const { container } = render(_jsx(SearchResultsComponent, { onClick: onClick }));
|
|
76
|
+
const button = container.querySelector("button");
|
|
77
|
+
expect(button).toHaveClass("--is-focused");
|
|
78
|
+
fireEvent.keyDown(container, {
|
|
79
|
+
key: "Enter",
|
|
80
|
+
code: "Enter",
|
|
81
|
+
});
|
|
82
|
+
expect(onClick).toHaveBeenCalled();
|
|
111
83
|
});
|
|
112
84
|
});
|
|
113
85
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchResults.test.js","sourceRoot":"","sources":["../../../../../../src/components/Chopin/TradeSelector/SearchResults/SearchResults.test.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"SearchResults.test.js","sourceRoot":"","sources":["../../../../../../src/components/Chopin/TradeSelector/SearchResults/SearchResults.test.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
2
|
+
var t = {};
|
|
3
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
4
|
+
t[p] = s[p];
|
|
5
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
6
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
7
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
8
|
+
t[p[i]] = s[p[i]];
|
|
9
|
+
}
|
|
10
|
+
return t;
|
|
11
|
+
};
|
|
12
|
+
import { jsx as _jsx, jsxs as _jsxs } from "@emotion/react/jsx-runtime";
|
|
13
|
+
import clsx from "clsx";
|
|
14
|
+
import { useFocusRing } from "@react-aria/focus";
|
|
15
|
+
import { useHover } from "@react-aria/interactions";
|
|
16
|
+
import { Text } from "../../../Text";
|
|
17
|
+
export const TradeInput = (props) => {
|
|
18
|
+
const { onChange, onEdit, inputRef, inputProps, value, className, label, placeholder, initialTrade, isEditable } = props, otherProps = __rest(props, ["onChange", "onEdit", "inputRef", "inputProps", "value", "className", "label", "placeholder", "initialTrade", "isEditable"]);
|
|
19
|
+
const selectedTrade = initialTrade && !isEditable;
|
|
20
|
+
const { isFocusVisible, focusProps } = useFocusRing({
|
|
21
|
+
within: true,
|
|
22
|
+
});
|
|
23
|
+
const { hoverProps, isHovered } = useHover(Object.assign({}, otherProps));
|
|
24
|
+
const classes = clsx("chopin", "chopin/TradeSelectorInput", {
|
|
25
|
+
"--is-focused": isFocusVisible,
|
|
26
|
+
"--is-hovered": isHovered,
|
|
27
|
+
}, className);
|
|
28
|
+
return (_jsx("div", Object.assign({}, focusProps, { children: selectedTrade ? (_jsxs(Text, { children: ["You have selected \u2018", _jsx("strong", { children: initialTrade }), "\u2019 as your trade/profession.", " ", _jsx("button", Object.assign({ type: "button", className: "mobius/Link chopin/TradeSelectorButton", "aria-label": "Change your selected profession", onClick: onEdit }, { children: "Change" }))] })) : (_jsxs("div", Object.assign({ className: "chopin/TradeSelectorInputContainer" }, { children: [_jsx("input", Object.assign({}, hoverProps, inputProps, { type: "text", placeholder: placeholder, "aria-label": label, className: classes, onChange: onChange, ref: inputRef, value: value })), isEditable && (_jsx("button", Object.assign({ type: "button", className: "mobius/Link chopin/TradeSelectorButton", "aria-label": "Cancel changes", onClick: onEdit }, { children: "Cancel" })))] }))) })));
|
|
29
|
+
};
|
|
30
|
+
//# sourceMappingURL=TradeInput.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TradeInput.js","sourceRoot":"","sources":["../../../../../../src/components/Chopin/TradeSelector/TradeInput/TradeInput.tsx"],"names":[],"mappings":";;;;;;;;;;;;AAEA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAerC,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,KAAsB,EAAE,EAAE;IACnD,MAAM,EACJ,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,UAAU,EACV,KAAK,EACL,SAAS,EACT,KAAK,EACL,WAAW,EACX,YAAY,EACZ,UAAU,KAER,KAAK,EADJ,UAAU,UACX,KAAK,EAZH,4HAYL,CAAQ,CAAC;IACV,MAAM,aAAa,GAAG,YAAY,IAAI,CAAC,UAAU,CAAC;IAClD,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,GAAG,YAAY,CAAC;QAClD,MAAM,EAAE,IAAI;KACb,CAAC,CAAC;IACH,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,QAAQ,mBACrC,UAAU,EACb,CAAC;IACH,MAAM,OAAO,GAAG,IAAI,CAClB,QAAQ,EACR,2BAA2B,EAC3B;QACE,cAAc,EAAE,cAAc;QAC9B,cAAc,EAAE,SAAS;KAC1B,EACD,SAAS,CACV,CAAC;IAEF,OAAO,CACL,8BAAS,UAAU,cAChB,aAAa,CAAC,CAAC,CAAC,CACf,MAAC,IAAI,2CACgB,2BAAS,YAAY,GAAU,sCAChC,GAAG,EACrB,+BACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,wCAAwC,gBACvC,iCAAiC,EAC5C,OAAO,EAAE,MAAM,4BAGR,IACJ,CACR,CAAC,CAAC,CAAC,CACF,6BAAK,SAAS,EAAC,oCAAoC,iBACjD,gCACM,UAAU,EACV,UAAU,IACd,IAAI,EAAC,MAAM,EACX,WAAW,EAAE,WAAW,gBACZ,KAAK,EACjB,SAAS,EAAE,OAAO,EAClB,QAAQ,EAAE,QAAQ,EAClB,GAAG,EAAE,QAAQ,EACb,KAAK,EAAE,KAAK,IACZ,EACD,UAAU,IAAI,CACb,+BACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,wCAAwC,gBACvC,gBAAgB,EAC3B,OAAO,EAAE,MAAM,4BAGR,CACV,KACG,CACP,IACG,CACP,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { jsx as _jsx } from "@emotion/react/jsx-runtime";
|
|
2
|
+
import { render, fireEvent, screen } from "@testing-library/react";
|
|
3
|
+
import userEvent from "@testing-library/user-event";
|
|
4
|
+
import { useRef } from "react";
|
|
5
|
+
import { TradeInput } from "./TradeInput";
|
|
6
|
+
const TradeInputComponent = (props) => {
|
|
7
|
+
const defaultProps = {
|
|
8
|
+
onChange: jest.fn(),
|
|
9
|
+
inputRef: useRef(null),
|
|
10
|
+
value: "",
|
|
11
|
+
placeholder: "e.g. Cleaner, builder, consultant",
|
|
12
|
+
onEdit: jest.fn(),
|
|
13
|
+
isEditable: false,
|
|
14
|
+
};
|
|
15
|
+
return _jsx(TradeInput, Object.assign({}, defaultProps, props));
|
|
16
|
+
};
|
|
17
|
+
describe("TradeInput", () => {
|
|
18
|
+
it("renders selected trade", () => {
|
|
19
|
+
var _a;
|
|
20
|
+
const initialTrade = "Landlord";
|
|
21
|
+
const onEdit = jest.fn();
|
|
22
|
+
render(_jsx(TradeInputComponent, { initialTrade: initialTrade, onEdit: onEdit }));
|
|
23
|
+
const initialTradeText = screen.queryByText(initialTrade);
|
|
24
|
+
const changeButton = screen.queryByRole("button");
|
|
25
|
+
expect((_a = initialTradeText === null || initialTradeText === void 0 ? void 0 : initialTradeText.parentNode) === null || _a === void 0 ? void 0 : _a.textContent).toEqual(`You have selected ‘${initialTrade}’ as your trade/profession. Change`);
|
|
26
|
+
fireEvent.click(changeButton);
|
|
27
|
+
expect(onEdit).toHaveBeenCalled();
|
|
28
|
+
});
|
|
29
|
+
it("renders input field", async () => {
|
|
30
|
+
const onChange = jest.fn();
|
|
31
|
+
render(_jsx(TradeInputComponent, { onChange: onChange }));
|
|
32
|
+
const inputField = screen.queryByRole("textbox");
|
|
33
|
+
expect(inputField).toBeInTheDocument();
|
|
34
|
+
await userEvent.tab();
|
|
35
|
+
await userEvent.keyboard("[Space]");
|
|
36
|
+
expect(onChange).toHaveBeenCalled();
|
|
37
|
+
});
|
|
38
|
+
it("sets classes for interaction states", async () => {
|
|
39
|
+
render(_jsx(TradeInputComponent, {}));
|
|
40
|
+
const inputField = screen.queryByRole("textbox");
|
|
41
|
+
await userEvent.tab();
|
|
42
|
+
expect(inputField).toHaveClass("--is-focused");
|
|
43
|
+
fireEvent.mouseEnter(inputField);
|
|
44
|
+
expect(inputField).toHaveClass("--is-hovered");
|
|
45
|
+
});
|
|
46
|
+
it("allows user to edit trade", () => {
|
|
47
|
+
render(_jsx(TradeInputComponent, { isEditable: true }));
|
|
48
|
+
const cancelText = screen.queryByText("Cancel");
|
|
49
|
+
expect(cancelText).toBeInTheDocument();
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
//# sourceMappingURL=TradeInput.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TradeInput.test.js","sourceRoot":"","sources":["../../../../../../src/components/Chopin/TradeSelector/TradeInput/TradeInput.test.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/components/Chopin/TradeSelector/TradeInput/index.tsx"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC"}
|
|
@@ -1,53 +1,84 @@
|
|
|
1
|
-
import { jsx as _jsx,
|
|
2
|
-
import { forwardRef, useMemo } from "react";
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "@emotion/react/jsx-runtime";
|
|
2
|
+
import { forwardRef, useState, useRef, useEffect, useMemo, } from "react";
|
|
3
3
|
import clsx from "clsx";
|
|
4
|
-
import { useSlotId } from "@react-aria/utils";
|
|
5
4
|
import { useLabel } from "@react-aria/label";
|
|
5
|
+
import { useSlotId } from "@react-aria/utils";
|
|
6
6
|
import { getConfig } from "./config";
|
|
7
|
-
import {
|
|
7
|
+
import { TradeInput } from "./TradeInput";
|
|
8
8
|
import { SearchResults } from "./SearchResults";
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
9
|
+
import { useFetchTrades } from "./useFetchTrades";
|
|
10
|
+
import { useTradeSelectorUrl } from "./useTradeSelectorUrl";
|
|
11
|
+
import { Header } from "./Header";
|
|
11
12
|
import { ErrorMessage } from "../../ErrorMessage";
|
|
12
13
|
import { spaceDelimitedList } from "../../../utils/spaceDelimitedList";
|
|
13
|
-
|
|
14
|
-
import { Text } from "../../Text";
|
|
15
|
-
export const ERROR_MESSAGE_SERVICE_UNAVAIALBLE = "The service is currently unavailable. Please try again later";
|
|
14
|
+
export const ERROR_MESSAGE_SERVICE_UNAVAILABLE = "The service is currently unavailable. Please try again later";
|
|
16
15
|
const TradeSelector = forwardRef((props, ref) => {
|
|
17
|
-
const {
|
|
18
|
-
const
|
|
19
|
-
const
|
|
16
|
+
const { minInput = 3, apiRequestDebounceInMs = 250, urls, labels, className, onTradeSelected, hideLabel, initialTrade = "", vertical, searchScope, } = props;
|
|
17
|
+
const { site, baseUrl, defaultLabels } = getConfig();
|
|
18
|
+
const fieldLabels = Object.assign(Object.assign({}, defaultLabels), labels);
|
|
20
19
|
const links = useMemo(() => (Object.assign({ quoteRedirect: site, tradeApi: baseUrl, allOccupations: "https://quote.simplybusiness.co.uk/trades?vertical=business" }, urls)), [site, baseUrl, urls]);
|
|
21
|
-
const { inputValue, trades, onInputChange, onSelectionChange, error, isLoading, selectedTrade, hasUserChangedMind, onUserChangedMind, } = useTradeSelector({
|
|
22
|
-
minInput,
|
|
23
|
-
apiRequestDebounceInMs,
|
|
24
|
-
urls: links,
|
|
25
|
-
onTradeSelected,
|
|
26
|
-
initialTrade,
|
|
27
|
-
});
|
|
28
20
|
const classes = clsx("chopin", "chopin/TradeSelector", className);
|
|
21
|
+
const [userInput, setUserInput] = useState("");
|
|
22
|
+
const [selectedTrade, setSelectedTrade] = useState(null);
|
|
23
|
+
const [editMode, setEditMode] = useState(false);
|
|
24
|
+
const [isOverlayVisible, setIsOverlayVisible] = useState(false);
|
|
25
|
+
const inputRef = useRef(null);
|
|
26
|
+
const currentTrade = selectedTrade ? selectedTrade.value : initialTrade;
|
|
27
|
+
const endpoint = useTradeSelectorUrl(links.tradeApi, userInput, {
|
|
28
|
+
site: links.quoteRedirect,
|
|
29
|
+
vertical,
|
|
30
|
+
searchScope,
|
|
31
|
+
});
|
|
32
|
+
const { trades, isLoading, error, fetchTrades } = useFetchTrades(endpoint, apiRequestDebounceInMs);
|
|
29
33
|
const errorMessage = error === null || error === void 0 ? void 0 : error.message;
|
|
30
34
|
const errorMessageId = useSlotId([Boolean(errorMessage)]);
|
|
31
35
|
const { labelProps, fieldProps } = useLabel({
|
|
32
36
|
label: fieldLabels.input,
|
|
33
37
|
});
|
|
38
|
+
const ariaLabel = hideLabel ? fieldLabels.input : undefined;
|
|
39
|
+
const inputProps = hideLabel ? undefined : fieldProps;
|
|
34
40
|
const describedBy = spaceDelimitedList([
|
|
35
41
|
errorMessageId,
|
|
36
42
|
props["aria-describedby"],
|
|
37
43
|
]);
|
|
38
|
-
const
|
|
39
|
-
const
|
|
40
|
-
const
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
44
|
+
const handleChange = (event) => setUserInput(event.target.value);
|
|
45
|
+
const toggleEditMode = () => setEditMode(!editMode);
|
|
46
|
+
const handleOverlayClose = () => {
|
|
47
|
+
setIsOverlayVisible(false);
|
|
48
|
+
};
|
|
49
|
+
const handleTradeSelect = (trade) => {
|
|
50
|
+
setSelectedTrade(trade);
|
|
51
|
+
if (editMode) {
|
|
52
|
+
toggleEditMode();
|
|
53
|
+
}
|
|
54
|
+
if (trade && onTradeSelected) {
|
|
55
|
+
try {
|
|
56
|
+
onTradeSelected(trade);
|
|
57
|
+
}
|
|
58
|
+
catch (err) {
|
|
59
|
+
// eslint-disable-next-line no-console
|
|
60
|
+
console.error("onTradeSelected returned the following error", err);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
useEffect(() => {
|
|
65
|
+
if (editMode && currentTrade) {
|
|
66
|
+
setUserInput(currentTrade);
|
|
67
|
+
}
|
|
68
|
+
if (!editMode) {
|
|
69
|
+
setUserInput("");
|
|
70
|
+
}
|
|
71
|
+
}, [editMode, currentTrade]);
|
|
72
|
+
useEffect(() => {
|
|
73
|
+
if (userInput.length >= minInput) {
|
|
74
|
+
setIsOverlayVisible(true);
|
|
75
|
+
fetchTrades(true);
|
|
76
|
+
}
|
|
77
|
+
if (userInput.length < minInput) {
|
|
78
|
+
setIsOverlayVisible(false);
|
|
79
|
+
}
|
|
80
|
+
}, [minInput, fetchTrades, userInput.length]);
|
|
81
|
+
return (_jsxs("div", Object.assign({ ref: ref, className: classes }, { children: [_jsx(Header, { isOpen: !hideLabel, labelProps: labelProps, labels: fieldLabels }), _jsx(TradeInput, { inputRef: inputRef, inputProps: inputProps, value: userInput, onChange: handleChange, label: ariaLabel, placeholder: fieldLabels.placeholder, initialTrade: currentTrade, onEdit: toggleEditMode, isEditable: editMode }), error ? (_jsx(ErrorMessage, { id: errorMessageId, errorMessage: ERROR_MESSAGE_SERVICE_UNAVAILABLE })) : (_jsx(SearchResults, { isOpen: isOverlayVisible, labels: fieldLabels, onClick: handleTradeSelect, onClose: handleOverlayClose, results: trades, isLoading: isLoading, fallbackUrl: links.allOccupations, describedBy: describedBy, inputRef: inputRef }))] })));
|
|
51
82
|
});
|
|
52
83
|
TradeSelector.displayName = "TradeSelector";
|
|
53
84
|
export { TradeSelector };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TradeSelector.js","sourceRoot":"","sources":["../../../../../src/components/Chopin/TradeSelector/TradeSelector.tsx"],"names":[],"mappings":";AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"TradeSelector.js","sourceRoot":"","sources":["../../../../../src/components/Chopin/TradeSelector/TradeSelector.tsx"],"names":[],"mappings":"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"}
|