@simplybusiness/mobius 3.3.2 → 3.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +31 -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,40 +0,0 @@
|
|
|
1
|
-
import { getTradesGroupedByType } from ".";
|
|
2
|
-
import { exactResults, suggestedResults } from "../mockApiResults";
|
|
3
|
-
describe("getTradesGroupedByType", () => {
|
|
4
|
-
describe("given a list of API results", () => {
|
|
5
|
-
it("should return a list of grouped results with labels", () => {
|
|
6
|
-
const labels = {
|
|
7
|
-
exact: "Exact matches for your search",
|
|
8
|
-
suggested: "Suggested matches for your search",
|
|
9
|
-
};
|
|
10
|
-
const mockedApiResults = [...exactResults, ...suggestedResults];
|
|
11
|
-
const input = getTradesGroupedByType(mockedApiResults, labels);
|
|
12
|
-
const expected = [
|
|
13
|
-
{
|
|
14
|
-
name: "exact",
|
|
15
|
-
title: "Exact matches for your search",
|
|
16
|
-
children: [...exactResults],
|
|
17
|
-
},
|
|
18
|
-
{
|
|
19
|
-
name: "suggested",
|
|
20
|
-
title: "Suggested matches for your search",
|
|
21
|
-
children: [...suggestedResults],
|
|
22
|
-
},
|
|
23
|
-
];
|
|
24
|
-
expect(input).toEqual(expected);
|
|
25
|
-
});
|
|
26
|
-
});
|
|
27
|
-
describe("given no API results", () => {
|
|
28
|
-
it("should return an empty array ", () => {
|
|
29
|
-
const labels = {
|
|
30
|
-
exact: "Exact matches",
|
|
31
|
-
suggested: "Suggested matches",
|
|
32
|
-
};
|
|
33
|
-
const apiResults = [];
|
|
34
|
-
const input = getTradesGroupedByType(apiResults, labels);
|
|
35
|
-
const expected = [];
|
|
36
|
-
expect(input).toEqual(expected);
|
|
37
|
-
});
|
|
38
|
-
});
|
|
39
|
-
});
|
|
40
|
-
//# sourceMappingURL=getTradesGroupedByType.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getTradesGroupedByType.test.js","sourceRoot":"","sources":["../../../../../../src/components/Chopin/TradeSelector/getTradesGroupedByType/getTradesGroupedByType.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,GAAG,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAEnE,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;QAC3C,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;YAC7D,MAAM,MAAM,GAAG;gBACb,KAAK,EAAE,+BAA+B;gBACtC,SAAS,EAAE,mCAAmC;aAC/C,CAAC;YAEF,MAAM,gBAAgB,GAAG,CAAC,GAAG,YAAY,EAAE,GAAG,gBAAgB,CAAC,CAAC;YAEhE,MAAM,KAAK,GAAG,sBAAsB,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;YAE/D,MAAM,QAAQ,GAAG;gBACf;oBACE,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,+BAA+B;oBACtC,QAAQ,EAAE,CAAC,GAAG,YAAY,CAAC;iBAC5B;gBACD;oBACE,IAAI,EAAE,WAAW;oBACjB,KAAK,EAAE,mCAAmC;oBAC1C,QAAQ,EAAE,CAAC,GAAG,gBAAgB,CAAC;iBAChC;aACF,CAAC;YAEF,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;QACpC,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;YACvC,MAAM,MAAM,GAAG;gBACb,KAAK,EAAE,eAAe;gBACtB,SAAS,EAAE,mBAAmB;aAC/B,CAAC;YAEF,MAAM,UAAU,GAAG,EAAQ,CAAC;YAE5B,MAAM,KAAK,GAAG,sBAAsB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YAEzD,MAAM,QAAQ,GAAG,EAAQ,CAAC;YAE1B,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/components/Chopin/TradeSelector/getTradesGroupedByType/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC"}
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
import { useState, useEffect } from "react";
|
|
2
|
-
import { useAsyncList } from "@react-stately/data";
|
|
3
|
-
const formattedTrades = (trades = []) => ({
|
|
4
|
-
items: Array.isArray(trades) ? trades : [trades],
|
|
5
|
-
});
|
|
6
|
-
const useTradeSelector = ({ minInput, urls, onTradeSelected, initialTrade, }) => {
|
|
7
|
-
const [userInput, setUserInput] = useState("");
|
|
8
|
-
const [selectedTrade, setSelectedTrade] = useState(initialTrade);
|
|
9
|
-
const [hasUserChangedMind, setHasUserChangedMind] = useState(false);
|
|
10
|
-
const endpoint = `${urls.tradeApi}?q=${encodeURIComponent(userInput)}&site=${urls.quoteRedirect}`;
|
|
11
|
-
const list = useAsyncList({
|
|
12
|
-
async load({ signal }) {
|
|
13
|
-
if (userInput.length === 0)
|
|
14
|
-
return formattedTrades();
|
|
15
|
-
if (initialTrade && userInput.length === 0)
|
|
16
|
-
formattedTrades(initialTrade);
|
|
17
|
-
const response = await fetch(endpoint, {
|
|
18
|
-
signal,
|
|
19
|
-
});
|
|
20
|
-
const json = await response.json();
|
|
21
|
-
return formattedTrades(json.results);
|
|
22
|
-
},
|
|
23
|
-
});
|
|
24
|
-
const handleSelectionChange = (value) => {
|
|
25
|
-
const items = list.items;
|
|
26
|
-
const trade = items.find(entry => entry.value === value);
|
|
27
|
-
setSelectedTrade(trade === null || trade === void 0 ? void 0 : trade.value);
|
|
28
|
-
setUserInput(value.toString());
|
|
29
|
-
setHasUserChangedMind(false);
|
|
30
|
-
if (trade && onTradeSelected) {
|
|
31
|
-
try {
|
|
32
|
-
onTradeSelected(trade);
|
|
33
|
-
}
|
|
34
|
-
catch (err) {
|
|
35
|
-
// eslint-disable-next-line no-console
|
|
36
|
-
console.error("onTradeSelected returned the following error", err);
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
};
|
|
40
|
-
const handleUserChangedMind = () => {
|
|
41
|
-
if (initialTrade) {
|
|
42
|
-
setUserInput(initialTrade);
|
|
43
|
-
}
|
|
44
|
-
setHasUserChangedMind(true);
|
|
45
|
-
};
|
|
46
|
-
useEffect(() => {
|
|
47
|
-
if (userInput.length >= minInput)
|
|
48
|
-
list.reload();
|
|
49
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
50
|
-
}, [userInput, minInput]);
|
|
51
|
-
return {
|
|
52
|
-
inputValue: userInput,
|
|
53
|
-
isLoading: list.isLoading,
|
|
54
|
-
trades: list.items,
|
|
55
|
-
error: list.error,
|
|
56
|
-
onInputChange: setUserInput,
|
|
57
|
-
onSelectionChange: handleSelectionChange,
|
|
58
|
-
selectedTrade,
|
|
59
|
-
hasUserChangedMind,
|
|
60
|
-
onUserChangedMind: handleUserChangedMind,
|
|
61
|
-
};
|
|
62
|
-
};
|
|
63
|
-
useTradeSelector.displayName = "useTradeSelector";
|
|
64
|
-
export { useTradeSelector };
|
|
65
|
-
//# sourceMappingURL=useTradeSelector.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useTradeSelector.js","sourceRoot":"","sources":["../../../../../../src/components/Chopin/TradeSelector/useTradeSelector/useTradeSelector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAO,MAAM,OAAO,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGnD,MAAM,eAAe,GAAG,CAAC,SAAgC,EAAE,EAAE,EAAE,CAAC,CAAC;IAC/D,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;CACjD,CAAC,CAAC;AAEH,MAAM,gBAAgB,GAAG,CAAC,EACxB,QAAQ,EACR,IAAI,EACJ,eAAe,EACf,YAAY,GACa,EAAE,EAAE;IAC7B,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAS,EAAE,CAAC,CAAC;IACvD,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAChD,YAAY,CACb,CAAC;IACF,MAAM,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,GAAG,QAAQ,CAAU,KAAK,CAAC,CAAC;IAC7E,MAAM,QAAQ,GAAG,GAAG,IAAI,CAAC,QAAQ,MAAM,kBAAkB,CAAC,SAAS,CAAC,SAClE,IAAI,CAAC,aACP,EAAE,CAAC;IACH,MAAM,IAAI,GAAG,YAAY,CAAC;QACxB,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE;YACnB,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,eAAe,EAAE,CAAC;YAErD,IAAI,YAAY,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;gBAAE,eAAe,CAAC,YAAY,CAAC,CAAC;YAE1E,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,QAAQ,EAAE;gBACrC,MAAM;aACP,CAAC,CAAC;YAEH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YAEnC,OAAO,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvC,CAAC;KACF,CAAC,CAAC;IAEH,MAAM,qBAAqB,GAAG,CAAC,KAAU,EAAE,EAAE;QAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAqB,CAAC;QACzC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;QACzD,gBAAgB,CAAC,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,CAAC,CAAC;QAC/B,YAAY,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC/B,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,KAAK,IAAI,eAAe,EAAE;YAC5B,IAAI;gBACF,eAAe,CAAC,KAAK,CAAC,CAAC;aACxB;YAAC,OAAO,GAAG,EAAE;gBACZ,sCAAsC;gBACtC,OAAO,CAAC,KAAK,CAAC,8CAA8C,EAAE,GAAG,CAAC,CAAC;aACpE;SACF;IACH,CAAC,CAAC;IAEF,MAAM,qBAAqB,GAAG,GAAG,EAAE;QACjC,IAAI,YAAY,EAAE;YAChB,YAAY,CAAC,YAAY,CAAC,CAAC;SAC5B;QACD,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,SAAS,CAAC,MAAM,IAAI,QAAQ;YAAE,IAAI,CAAC,MAAM,EAAE,CAAC;QAChD,uDAAuD;IACzD,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;IAE1B,OAAO;QACL,UAAU,EAAE,SAAS;QACrB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,MAAM,EAAE,IAAI,CAAC,KAAqB;QAClC,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,aAAa,EAAE,YAAY;QAC3B,iBAAiB,EAAE,qBAAqB;QACxC,aAAa;QACb,kBAAkB;QAClB,iBAAiB,EAAE,qBAAqB;KACzC,CAAC;AACJ,CAAC,CAAC;AAEF,gBAAgB,CAAC,WAAW,GAAG,kBAAkB,CAAC;AAElD,OAAO,EAAE,gBAAgB,EAAE,CAAC"}
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
import { renderHook, waitFor } from "@testing-library/react";
|
|
2
|
-
import { useTradeSelector } from "./useTradeSelector";
|
|
3
|
-
const trade = {
|
|
4
|
-
value: "Builder",
|
|
5
|
-
vertical: "business",
|
|
6
|
-
supported_verticals: ["contractors_combined"],
|
|
7
|
-
label: "<strong>Builder</strong>",
|
|
8
|
-
type: "exact",
|
|
9
|
-
trade_detail: null,
|
|
10
|
-
trade_type: null,
|
|
11
|
-
blocked: false,
|
|
12
|
-
};
|
|
13
|
-
let fetchMock;
|
|
14
|
-
global.fetch = jest.fn(() => Promise.resolve({
|
|
15
|
-
json: () => Promise.resolve({
|
|
16
|
-
items: [],
|
|
17
|
-
}),
|
|
18
|
-
}));
|
|
19
|
-
describe("useTradeSelector", () => {
|
|
20
|
-
beforeEach(() => {
|
|
21
|
-
fetchMock = jest.spyOn(global, "fetch");
|
|
22
|
-
});
|
|
23
|
-
afterEach(() => {
|
|
24
|
-
jest.restoreAllMocks();
|
|
25
|
-
});
|
|
26
|
-
describe("with no initial trade provided", () => {
|
|
27
|
-
it("should not call the API on initial render", async () => {
|
|
28
|
-
const { result } = renderHook(() => useTradeSelector({
|
|
29
|
-
minInput: 3,
|
|
30
|
-
apiRequestDebounceInMs: 250,
|
|
31
|
-
urls: {
|
|
32
|
-
quoteRedirect: "redirect-link",
|
|
33
|
-
tradeApi: "trade-api-link",
|
|
34
|
-
allOccupations: "https://quote.simplybusiness.co.uk/trades?vertical=business",
|
|
35
|
-
},
|
|
36
|
-
}));
|
|
37
|
-
await waitFor(() => {
|
|
38
|
-
expect(result.current.isLoading).toBeFalsy();
|
|
39
|
-
expect(fetchMock).not.toHaveBeenCalled();
|
|
40
|
-
});
|
|
41
|
-
});
|
|
42
|
-
});
|
|
43
|
-
describe("with initial trade provided", () => {
|
|
44
|
-
it("should not call the API on initial render", async () => {
|
|
45
|
-
const { result } = renderHook(() => useTradeSelector({
|
|
46
|
-
minInput: 3,
|
|
47
|
-
apiRequestDebounceInMs: 250,
|
|
48
|
-
urls: {
|
|
49
|
-
quoteRedirect: "redirect-link",
|
|
50
|
-
tradeApi: "trade-api-link",
|
|
51
|
-
allOccupations: "https://quote.simplybusiness.co.uk/trades?vertical=business",
|
|
52
|
-
},
|
|
53
|
-
initialTrade: trade.value,
|
|
54
|
-
}));
|
|
55
|
-
await waitFor(() => {
|
|
56
|
-
expect(result.current.isLoading).toBeFalsy();
|
|
57
|
-
expect(fetchMock).not.toHaveBeenCalled();
|
|
58
|
-
});
|
|
59
|
-
});
|
|
60
|
-
});
|
|
61
|
-
describe("with user input set above minimum length", () => {
|
|
62
|
-
it("should call the API", async () => {
|
|
63
|
-
const quoteRedirect = "redirect-link";
|
|
64
|
-
const tradeApi = "trade-api-link";
|
|
65
|
-
const userInput = "Cleaner";
|
|
66
|
-
const link = `${tradeApi}?q=${userInput}&site=${quoteRedirect}`;
|
|
67
|
-
const AbortSignalMock = expect.anything();
|
|
68
|
-
const { result } = renderHook(() => useTradeSelector({
|
|
69
|
-
minInput: 3,
|
|
70
|
-
apiRequestDebounceInMs: 250,
|
|
71
|
-
urls: {
|
|
72
|
-
quoteRedirect: "redirect-link",
|
|
73
|
-
tradeApi: "trade-api-link",
|
|
74
|
-
allOccupations: "https://quote.simplybusiness.co.uk/trades?vertical=business",
|
|
75
|
-
},
|
|
76
|
-
}));
|
|
77
|
-
await waitFor(() => {
|
|
78
|
-
result.current.onInputChange(userInput);
|
|
79
|
-
expect(fetchMock).toHaveBeenCalledWith(link, AbortSignalMock);
|
|
80
|
-
});
|
|
81
|
-
});
|
|
82
|
-
});
|
|
83
|
-
});
|
|
84
|
-
//# sourceMappingURL=useTradeSelector.test.js.map
|
package/dist/esm/components/Chopin/TradeSelector/useTradeSelector/useTradeSelector.test.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useTradeSelector.test.js","sourceRoot":"","sources":["../../../../../../src/components/Chopin/TradeSelector/useTradeSelector/useTradeSelector.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,MAAM,KAAK,GAAG;IACZ,KAAK,EAAE,SAAS;IAChB,QAAQ,EAAE,UAAU;IACpB,mBAAmB,EAAE,CAAC,sBAAsB,CAAC;IAC7C,KAAK,EAAE,0BAA0B;IACjC,IAAI,EAAE,OAAO;IACb,YAAY,EAAE,IAAI;IAClB,UAAU,EAAE,IAAI;IAChB,OAAO,EAAE,KAAK;CACf,CAAC;AAEF,IAAI,SAAc,CAAC;AAEnB,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAC1B,OAAO,CAAC,OAAO,CAAC;IACd,IAAI,EAAE,GAAG,EAAE,CACT,OAAO,CAAC,OAAO,CAAC;QACd,KAAK,EAAE,EAAE;KACV,CAAC;CACL,CAAC,CACU,CAAC;AAEf,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,UAAU,CAAC,GAAG,EAAE;QACd,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,gCAAgC,EAAE,GAAG,EAAE;QAC9C,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;YACzD,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CACjC,gBAAgB,CAAC;gBACf,QAAQ,EAAE,CAAC;gBACX,sBAAsB,EAAE,GAAG;gBAC3B,IAAI,EAAE;oBACJ,aAAa,EAAE,eAAe;oBAC9B,QAAQ,EAAE,gBAAgB;oBAC1B,cAAc,EACZ,6DAA6D;iBAChE;aACF,CAAC,CACH,CAAC;YAEF,MAAM,OAAO,CAAC,GAAG,EAAE;gBACjB,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,SAAS,EAAE,CAAC;gBAC7C,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YAC3C,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;QAC3C,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;YACzD,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CACjC,gBAAgB,CAAC;gBACf,QAAQ,EAAE,CAAC;gBACX,sBAAsB,EAAE,GAAG;gBAC3B,IAAI,EAAE;oBACJ,aAAa,EAAE,eAAe;oBAC9B,QAAQ,EAAE,gBAAgB;oBAC1B,cAAc,EACZ,6DAA6D;iBAChE;gBACD,YAAY,EAAE,KAAK,CAAC,KAAK;aAC1B,CAAC,CACH,CAAC;YAEF,MAAM,OAAO,CAAC,GAAG,EAAE;gBACjB,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,SAAS,EAAE,CAAC;gBAC7C,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YAC3C,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,0CAA0C,EAAE,GAAG,EAAE;QACxD,EAAE,CAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE;YACnC,MAAM,aAAa,GAAG,eAAe,CAAC;YACtC,MAAM,QAAQ,GAAG,gBAAgB,CAAC;YAClC,MAAM,SAAS,GAAG,SAAS,CAAC;YAC5B,MAAM,IAAI,GAAG,GAAG,QAAQ,MAAM,SAAS,SAAS,aAAa,EAAE,CAAC;YAChE,MAAM,eAAe,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;YAE1C,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CACjC,gBAAgB,CAAC;gBACf,QAAQ,EAAE,CAAC;gBACX,sBAAsB,EAAE,GAAG;gBAC3B,IAAI,EAAE;oBACJ,aAAa,EAAE,eAAe;oBAC9B,QAAQ,EAAE,gBAAgB;oBAC1B,cAAc,EACZ,6DAA6D;iBAChE;aACF,CAAC,CACH,CAAC;YAEF,MAAM,OAAO,CAAC,GAAG,EAAE;gBACjB,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;gBACxC,MAAM,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;YAChE,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
import { render, screen } from "@testing-library/react";
|
|
2
|
-
import userEvent from "@testing-library/user-event";
|
|
3
|
-
import { Section, Item } from "@react-stately/collections";
|
|
4
|
-
import { ComboBox } from ".";
|
|
5
|
-
|
|
6
|
-
const CONTAINER_CLASS_NAME = "chopin/ComboBoxInputContainer";
|
|
7
|
-
const INPUT_CLASS_NAME = "chopin/ComboBoxInput";
|
|
8
|
-
|
|
9
|
-
const LISTBOX_CLASS_NAME = "chopin/ListBoxSection";
|
|
10
|
-
const LISTBOX_HEADING_CLASS_NAME = "chopin/ListBoxSectionHeading";
|
|
11
|
-
const LISTBOX_LIST_CLASS_NAME = "chopin/ListBoxSectionList";
|
|
12
|
-
const LISTBOX_OPTION_CLASS_NAME = "chopin/TradeSelectorOption";
|
|
13
|
-
|
|
14
|
-
describe("ComboBox", () => {
|
|
15
|
-
it("should render without errors", async () => {
|
|
16
|
-
const sampleContent = "Sample text";
|
|
17
|
-
|
|
18
|
-
render(
|
|
19
|
-
<ComboBox label="Test">
|
|
20
|
-
<Item>{sampleContent}</Item>
|
|
21
|
-
</ComboBox>,
|
|
22
|
-
);
|
|
23
|
-
|
|
24
|
-
await userEvent.tab();
|
|
25
|
-
|
|
26
|
-
await userEvent.keyboard("[Alt][ArrowDown]");
|
|
27
|
-
|
|
28
|
-
expect(screen.getByText(sampleContent)).toBeInTheDocument();
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
it("should render with class names", () => {
|
|
32
|
-
render(
|
|
33
|
-
<ComboBox label="Test">
|
|
34
|
-
<Item>Sample text</Item>
|
|
35
|
-
</ComboBox>,
|
|
36
|
-
);
|
|
37
|
-
|
|
38
|
-
const input = screen.getByRole("combobox");
|
|
39
|
-
|
|
40
|
-
expect(input.parentElement).toHaveClass(CONTAINER_CLASS_NAME);
|
|
41
|
-
expect(input).toHaveClass(INPUT_CLASS_NAME);
|
|
42
|
-
});
|
|
43
|
-
|
|
44
|
-
// NOTE: testing ListBox in isolation, requires complicated state mocking.
|
|
45
|
-
// ComboBox uses ListBox and provides it with a generated state object.
|
|
46
|
-
describe("nested ListBox", () => {
|
|
47
|
-
it("should render with class names", async () => {
|
|
48
|
-
const firstSection = "First section";
|
|
49
|
-
const firstItem = "First item";
|
|
50
|
-
const secondSection = "Second section";
|
|
51
|
-
const secondItem = "Second item";
|
|
52
|
-
const EXPECTED_NUMBER_OF_SECTIONS = 2;
|
|
53
|
-
const EXPECTED_NUMBER_OF_GROUPS = 2;
|
|
54
|
-
const EXPECTED_NUMBER_OF_ITEMS = 2;
|
|
55
|
-
|
|
56
|
-
render(
|
|
57
|
-
<ComboBox label="Test">
|
|
58
|
-
<Section title={firstSection}>
|
|
59
|
-
<Item>{firstItem}</Item>
|
|
60
|
-
</Section>
|
|
61
|
-
<Section title={secondSection}>
|
|
62
|
-
<Item>{secondItem}</Item>
|
|
63
|
-
</Section>
|
|
64
|
-
</ComboBox>,
|
|
65
|
-
);
|
|
66
|
-
|
|
67
|
-
await userEvent.tab();
|
|
68
|
-
|
|
69
|
-
await userEvent.keyboard("[Alt][ArrowDown]");
|
|
70
|
-
|
|
71
|
-
const sections = screen.queryAllByRole("presentation");
|
|
72
|
-
const groups = screen.queryAllByRole("group");
|
|
73
|
-
const items = screen.queryAllByRole("option");
|
|
74
|
-
const heading = sections[0].firstChild;
|
|
75
|
-
|
|
76
|
-
expect(sections.length).toBe(EXPECTED_NUMBER_OF_SECTIONS);
|
|
77
|
-
expect(groups.length).toBe(EXPECTED_NUMBER_OF_GROUPS);
|
|
78
|
-
expect(items.length).toBe(EXPECTED_NUMBER_OF_ITEMS);
|
|
79
|
-
expect(sections[0]).toHaveClass(LISTBOX_CLASS_NAME);
|
|
80
|
-
expect(groups[0]).toHaveClass(LISTBOX_LIST_CLASS_NAME);
|
|
81
|
-
expect(items[0]).toHaveClass(LISTBOX_OPTION_CLASS_NAME);
|
|
82
|
-
expect(heading).toHaveClass(LISTBOX_HEADING_CLASS_NAME);
|
|
83
|
-
});
|
|
84
|
-
});
|
|
85
|
-
});
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
import { useRef } from "react";
|
|
2
|
-
import type { ComboBoxProps } from "@react-types/combobox";
|
|
3
|
-
import { AriaLabelingProps, DOMProps } from "@react-types/shared";
|
|
4
|
-
import { useComboBoxState } from "@react-stately/combobox";
|
|
5
|
-
import { useComboBox } from "@react-aria/combobox";
|
|
6
|
-
import { useHover } from "@react-aria/interactions";
|
|
7
|
-
import { useFocusRing } from "@react-aria/focus";
|
|
8
|
-
import clsx from "clsx";
|
|
9
|
-
import { ListBox } from "../ListBox";
|
|
10
|
-
import { Popover } from "../Popover";
|
|
11
|
-
|
|
12
|
-
export interface AllComboBoxProps<T extends object> extends ComboBoxProps<T> {
|
|
13
|
-
className?: string;
|
|
14
|
-
fieldProps?: AriaLabelingProps & DOMProps;
|
|
15
|
-
label?: string;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
const ComboBox = <T extends object>(props: AllComboBoxProps<T>) => {
|
|
19
|
-
const { className, fieldProps, label } = props;
|
|
20
|
-
const state = useComboBoxState({ ...props });
|
|
21
|
-
const inputRef = useRef(null);
|
|
22
|
-
const listBoxRef = useRef(null);
|
|
23
|
-
const popoverRef = useRef(null);
|
|
24
|
-
|
|
25
|
-
const { inputProps, listBoxProps } = useComboBox(
|
|
26
|
-
{
|
|
27
|
-
...props,
|
|
28
|
-
...fieldProps,
|
|
29
|
-
inputRef,
|
|
30
|
-
listBoxRef,
|
|
31
|
-
popoverRef,
|
|
32
|
-
},
|
|
33
|
-
state,
|
|
34
|
-
);
|
|
35
|
-
|
|
36
|
-
const { close } = state;
|
|
37
|
-
|
|
38
|
-
const { isFocusVisible, focusProps } = useFocusRing({
|
|
39
|
-
within: true,
|
|
40
|
-
});
|
|
41
|
-
const { hoverProps, isHovered } = useHover({
|
|
42
|
-
...props,
|
|
43
|
-
});
|
|
44
|
-
|
|
45
|
-
const classes = clsx(
|
|
46
|
-
"chopin",
|
|
47
|
-
"chopin/ComboBoxInput",
|
|
48
|
-
{
|
|
49
|
-
"--is-focused": isFocusVisible,
|
|
50
|
-
"--is-hovered": isHovered,
|
|
51
|
-
},
|
|
52
|
-
className,
|
|
53
|
-
);
|
|
54
|
-
|
|
55
|
-
return (
|
|
56
|
-
<div className="chopin/ComboBoxInputContainer" {...focusProps}>
|
|
57
|
-
<input
|
|
58
|
-
{...hoverProps}
|
|
59
|
-
{...inputProps}
|
|
60
|
-
{...fieldProps}
|
|
61
|
-
ref={inputRef}
|
|
62
|
-
className={classes}
|
|
63
|
-
aria-label={label}
|
|
64
|
-
/>
|
|
65
|
-
{state.isOpen && (
|
|
66
|
-
<Popover popoverRef={popoverRef} isOpen={state.isOpen} onClose={close}>
|
|
67
|
-
<ListBox {...listBoxProps} listBoxRef={listBoxRef} state={state} />
|
|
68
|
-
</Popover>
|
|
69
|
-
)}
|
|
70
|
-
</div>
|
|
71
|
-
);
|
|
72
|
-
};
|
|
73
|
-
|
|
74
|
-
export { ComboBox };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from "./ComboBox";
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { useRef, RefObject } from "react";
|
|
2
|
-
import type { AriaListBoxOptions } from "@react-aria/listbox";
|
|
3
|
-
import type { LoadingState } from "@react-types/shared";
|
|
4
|
-
import type { ListState } from "@react-stately/list";
|
|
5
|
-
import { useListBox } from "@react-aria/listbox";
|
|
6
|
-
import { ListBoxSection } from "./ListBoxSection";
|
|
7
|
-
import { Option } from "./Option";
|
|
8
|
-
|
|
9
|
-
export interface ListBoxProps extends AriaListBoxOptions<unknown> {
|
|
10
|
-
listBoxRef?: RefObject<HTMLUListElement>;
|
|
11
|
-
state: ListState<unknown>;
|
|
12
|
-
loadingState?: LoadingState;
|
|
13
|
-
onLoadMore?: () => void;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
export type ListBoxElementType = HTMLUListElement;
|
|
17
|
-
|
|
18
|
-
const ListBox = (props: ListBoxProps) => {
|
|
19
|
-
const ref = useRef<ListBoxElementType>(null);
|
|
20
|
-
const { listBoxRef = ref, state } = props;
|
|
21
|
-
const { listBoxProps } = useListBox(props, state, listBoxRef);
|
|
22
|
-
|
|
23
|
-
return (
|
|
24
|
-
<ul {...listBoxProps} ref={listBoxRef} className="chopin/ListBox">
|
|
25
|
-
{[...state.collection].map(item =>
|
|
26
|
-
item.type === "section" ? (
|
|
27
|
-
<ListBoxSection key={item.key} section={item} state={state} />
|
|
28
|
-
) : (
|
|
29
|
-
<Option key={item.key} item={item} state={state} />
|
|
30
|
-
),
|
|
31
|
-
)}
|
|
32
|
-
</ul>
|
|
33
|
-
);
|
|
34
|
-
};
|
|
35
|
-
|
|
36
|
-
export { ListBox };
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { useListBoxSection } from "@react-aria/listbox";
|
|
2
|
-
import type { ListState } from "@react-stately/list";
|
|
3
|
-
import type { Node } from "@react-types/shared";
|
|
4
|
-
|
|
5
|
-
import { Option } from "./Option";
|
|
6
|
-
|
|
7
|
-
export interface SectionProps {
|
|
8
|
-
section: Node<unknown>;
|
|
9
|
-
state: ListState<unknown>;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
const ListBoxSection = ({ section, state }: SectionProps) => {
|
|
13
|
-
const { itemProps, headingProps, groupProps } = useListBoxSection({
|
|
14
|
-
heading: section.rendered,
|
|
15
|
-
"aria-label": section["aria-label"],
|
|
16
|
-
});
|
|
17
|
-
|
|
18
|
-
return (
|
|
19
|
-
<li {...itemProps} className="chopin/ListBoxSection">
|
|
20
|
-
{section.rendered && (
|
|
21
|
-
<span {...headingProps} className="chopin/ListBoxSectionHeading">
|
|
22
|
-
{section.rendered}
|
|
23
|
-
</span>
|
|
24
|
-
)}
|
|
25
|
-
<ul {...groupProps} className="chopin/ListBoxSectionList">
|
|
26
|
-
{[...section.childNodes].map(node => (
|
|
27
|
-
<Option key={node.key} item={node} state={state} />
|
|
28
|
-
))}
|
|
29
|
-
</ul>
|
|
30
|
-
</li>
|
|
31
|
-
);
|
|
32
|
-
};
|
|
33
|
-
|
|
34
|
-
export { ListBoxSection };
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { useRef } from "react";
|
|
2
|
-
import { Node } from "@react-types/shared";
|
|
3
|
-
import { useOption } from "@react-aria/listbox";
|
|
4
|
-
import clsx from "clsx";
|
|
5
|
-
import type { ListState } from "@react-stately/list";
|
|
6
|
-
|
|
7
|
-
export type OptionElementType = HTMLLIElement;
|
|
8
|
-
|
|
9
|
-
export interface OptionProps {
|
|
10
|
-
item: Node<unknown>;
|
|
11
|
-
state: ListState<unknown>;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
const Option = ({ item, state }: OptionProps) => {
|
|
15
|
-
const ref = useRef<OptionElementType>(null);
|
|
16
|
-
const { optionProps, isSelected, isFocused, isDisabled } = useOption(
|
|
17
|
-
{ key: item.key },
|
|
18
|
-
state,
|
|
19
|
-
ref,
|
|
20
|
-
);
|
|
21
|
-
|
|
22
|
-
const classes = clsx("chopin/TradeSelectorOption", {
|
|
23
|
-
"--is-selected": isSelected,
|
|
24
|
-
"--is-focused": isFocused,
|
|
25
|
-
"--is-disabled": isDisabled,
|
|
26
|
-
});
|
|
27
|
-
|
|
28
|
-
return (
|
|
29
|
-
<li {...optionProps} ref={ref} className={classes}>
|
|
30
|
-
{item.rendered}
|
|
31
|
-
</li>
|
|
32
|
-
);
|
|
33
|
-
};
|
|
34
|
-
|
|
35
|
-
export { Option };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from "./ListBox";
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { render, screen } from "@testing-library/react";
|
|
2
|
-
import { Popover } from ".";
|
|
3
|
-
|
|
4
|
-
const POPOVER_CLASS_NAME = "chopin/Popover";
|
|
5
|
-
|
|
6
|
-
describe("Popover", () => {
|
|
7
|
-
it("should render without errors", () => {
|
|
8
|
-
render(
|
|
9
|
-
<Popover>
|
|
10
|
-
<li>Item</li>
|
|
11
|
-
</Popover>,
|
|
12
|
-
);
|
|
13
|
-
|
|
14
|
-
expect(screen.getByText("Item")).toBeInTheDocument();
|
|
15
|
-
});
|
|
16
|
-
|
|
17
|
-
it("should render with class names", () => {
|
|
18
|
-
render(
|
|
19
|
-
<Popover>
|
|
20
|
-
<li>Item</li>
|
|
21
|
-
</Popover>,
|
|
22
|
-
);
|
|
23
|
-
|
|
24
|
-
const innerContainer = screen.getByText("Item").parentElement;
|
|
25
|
-
|
|
26
|
-
expect(innerContainer).toHaveClass(POPOVER_CLASS_NAME);
|
|
27
|
-
});
|
|
28
|
-
});
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { useRef, RefObject, ReactNode } from "react";
|
|
2
|
-
import { useOverlay, DismissButton } from "@react-aria/overlays";
|
|
3
|
-
import { FocusScope } from "@react-aria/focus";
|
|
4
|
-
|
|
5
|
-
export interface PopoverProps {
|
|
6
|
-
popoverRef?: RefObject<HTMLDivElement>;
|
|
7
|
-
children: ReactNode;
|
|
8
|
-
isOpen?: boolean;
|
|
9
|
-
onClose?: () => void;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
export type PopoverElementType = HTMLDivElement;
|
|
13
|
-
|
|
14
|
-
const Popover = (props: PopoverProps) => {
|
|
15
|
-
const ref = useRef<PopoverElementType>(null);
|
|
16
|
-
const { popoverRef = ref, isOpen, onClose, children } = props;
|
|
17
|
-
|
|
18
|
-
// Handle events that should cause the popup to close,
|
|
19
|
-
// e.g. blur, clicking outside, or pressing the escape key.
|
|
20
|
-
const { overlayProps } = useOverlay(
|
|
21
|
-
{
|
|
22
|
-
isOpen,
|
|
23
|
-
onClose,
|
|
24
|
-
shouldCloseOnBlur: true,
|
|
25
|
-
isDismissable: true,
|
|
26
|
-
},
|
|
27
|
-
popoverRef,
|
|
28
|
-
);
|
|
29
|
-
|
|
30
|
-
// Add a hidden <DismissButton> component at the end of the popover
|
|
31
|
-
// to allow screen reader users to dismiss the popup easily.
|
|
32
|
-
return (
|
|
33
|
-
<FocusScope restoreFocus>
|
|
34
|
-
<div {...overlayProps} ref={popoverRef} className="chopin/Popover">
|
|
35
|
-
{children}
|
|
36
|
-
<DismissButton onDismiss={onClose} />
|
|
37
|
-
</div>
|
|
38
|
-
</FocusScope>
|
|
39
|
-
);
|
|
40
|
-
};
|
|
41
|
-
|
|
42
|
-
export { Popover };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from "./Popover";
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { render, screen, fireEvent } from "@testing-library/react";
|
|
2
|
-
import { SelectedTrade } from ".";
|
|
3
|
-
|
|
4
|
-
describe("SelectedTrade", () => {
|
|
5
|
-
it("renders without errors", () => {
|
|
6
|
-
const trade = "Plumber";
|
|
7
|
-
const clickHandler = jest.fn();
|
|
8
|
-
|
|
9
|
-
const { container } = render(
|
|
10
|
-
<SelectedTrade trade={trade} onClick={clickHandler} />,
|
|
11
|
-
);
|
|
12
|
-
|
|
13
|
-
const textElement = container.querySelector("p");
|
|
14
|
-
const button = screen.getByText("Change");
|
|
15
|
-
|
|
16
|
-
expect(textElement).toHaveTextContent(
|
|
17
|
-
`You have selected ‘${trade}’ as your trade/profession.`,
|
|
18
|
-
);
|
|
19
|
-
|
|
20
|
-
fireEvent.click(button);
|
|
21
|
-
|
|
22
|
-
expect(clickHandler).toHaveBeenCalled();
|
|
23
|
-
});
|
|
24
|
-
});
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { Text } from "../../../Text";
|
|
2
|
-
|
|
3
|
-
export type SelectedTradeProps = {
|
|
4
|
-
trade: string | undefined;
|
|
5
|
-
onClick: () => void;
|
|
6
|
-
};
|
|
7
|
-
|
|
8
|
-
export const SelectedTrade = ({ trade, onClick }: SelectedTradeProps) => (
|
|
9
|
-
<Text>
|
|
10
|
-
You have selected ‘<strong>{trade}</strong>’ as your trade/profession.{" "}
|
|
11
|
-
<button
|
|
12
|
-
type="button"
|
|
13
|
-
className="mobius/Link chopin/TradeSelectorButton"
|
|
14
|
-
aria-label="Change your selected profession"
|
|
15
|
-
onClick={onClick}
|
|
16
|
-
>
|
|
17
|
-
Change
|
|
18
|
-
</button>
|
|
19
|
-
</Text>
|
|
20
|
-
);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from "./SelectedTrade";
|