@jetshop/ui 7.0.0-alpha-3 → 7.0.0-alpha-5
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/Accordion/Accordion.d.ts +33 -0
- package/Accordion/Accordion.js +59 -0
- package/Accordion/Accordion.js.map +1 -0
- package/Auth/FormFields/CountriesInput.d.ts +16 -0
- package/Auth/FormFields/CountriesInput.js +28 -0
- package/Auth/FormFields/CountriesInput.js.map +1 -0
- package/Auth/LogInBehavior.d.ts +22 -0
- package/Auth/LogInBehavior.js +24 -0
- package/Auth/LogInBehavior.js.map +1 -0
- package/Auth/LogInFormProvider.d.ts +7 -0
- package/Auth/LogInFormProvider.js +70 -0
- package/Auth/LogInFormProvider.js.map +1 -0
- package/Auth/LogOut.d.ts +10 -0
- package/Auth/LogOut.js +24 -0
- package/Auth/LogOut.js.map +1 -0
- package/Auth/logInValidator.d.ts +10 -0
- package/Auth/logInValidator.js +16 -0
- package/Auth/logInValidator.js.map +1 -0
- package/Breadcrumbs/Breadcrumbs.d.ts +14 -0
- package/Breadcrumbs/Breadcrumbs.js +84 -0
- package/Breadcrumbs/Breadcrumbs.js.map +1 -0
- package/Breadcrumbs/getParentsOrCanonicalRoute.d.ts +3 -0
- package/Breadcrumbs/getParentsOrCanonicalRoute.js +14 -0
- package/Breadcrumbs/getParentsOrCanonicalRoute.js.map +1 -0
- package/Breadcrumbs/index.d.ts +1 -0
- package/Breadcrumbs/index.js +2 -0
- package/Breadcrumbs/index.js.map +1 -0
- package/Breakpoints.d.ts +12 -0
- package/Breakpoints.js +36 -0
- package/Breakpoints.js.map +1 -0
- package/Button/Button.d.ts +14 -0
- package/Button/Button.js +60 -0
- package/Button/Button.js.map +1 -0
- package/Button/SecondaryButton.d.ts +2 -0
- package/Button/SecondaryButton.js +9 -0
- package/Button/SecondaryButton.js.map +1 -0
- package/Button/TrendButton.d.ts +2 -0
- package/Button/TrendButton.js +8 -0
- package/Button/TrendButton.js.map +1 -0
- package/Button/index.d.ts +4 -0
- package/Button/index.js +5 -0
- package/Button/index.js.map +1 -0
- package/CategoryLink.d.ts +11 -0
- package/CategoryLink.js +49 -0
- package/CategoryLink.js.map +1 -0
- package/ChannelSelector/ChannelListItem.d.ts +10 -0
- package/ChannelSelector/ChannelListItem.js +51 -0
- package/ChannelSelector/ChannelListItem.js.map +1 -0
- package/ChannelSelector/ChannelSelector.d.ts +63 -0
- package/ChannelSelector/ChannelSelector.js +80 -0
- package/ChannelSelector/ChannelSelector.js.map +1 -0
- package/ChannelSelector/ChannelSelectorButtons.d.ts +2 -0
- package/ChannelSelector/ChannelSelectorButtons.js +20 -0
- package/ChannelSelector/ChannelSelectorButtons.js.map +1 -0
- package/ChannelSelector/Channels.d.ts +17 -0
- package/ChannelSelector/Channels.js +12 -0
- package/ChannelSelector/Channels.js.map +1 -0
- package/ChannelSelector/LargeSelector.d.ts +3 -0
- package/ChannelSelector/LargeSelector.js +67 -0
- package/ChannelSelector/LargeSelector.js.map +1 -0
- package/ChannelSelector/MiniSelector.d.ts +4 -0
- package/ChannelSelector/MiniSelector.js +58 -0
- package/ChannelSelector/MiniSelector.js.map +1 -0
- package/ChannelSelector/Region.d.ts +28 -0
- package/ChannelSelector/Region.js +21 -0
- package/ChannelSelector/Region.js.map +1 -0
- package/ChannelSelector/groupBy.d.ts +7 -0
- package/ChannelSelector/groupBy.js +16 -0
- package/ChannelSelector/groupBy.js.map +1 -0
- package/Checkbox/Checkbox.d.ts +14 -0
- package/Checkbox/Checkbox.js +70 -0
- package/Checkbox/Checkbox.js.map +1 -0
- package/Checkbox/CheckboxGroup.d.ts +27 -0
- package/Checkbox/CheckboxGroup.js +22 -0
- package/Checkbox/CheckboxGroup.js.map +1 -0
- package/Checkbox/index.d.ts +2 -0
- package/Checkbox/index.js +3 -0
- package/Checkbox/index.js.map +1 -0
- package/ContentPageLink.d.ts +11 -0
- package/ContentPageLink.js +46 -0
- package/ContentPageLink.js.map +1 -0
- package/ContentRenderer.d.ts +9 -0
- package/ContentRenderer.js +36 -0
- package/ContentRenderer.js.map +1 -0
- package/DropdownMenu/Button.d.ts +7 -0
- package/DropdownMenu/Button.js +33 -0
- package/DropdownMenu/Button.js.map +1 -0
- package/DropdownMenu/DropdownMenu.d.ts +21 -0
- package/DropdownMenu/DropdownMenu.js +72 -0
- package/DropdownMenu/DropdownMenu.js.map +1 -0
- package/DropdownMenu/Item.d.ts +13 -0
- package/DropdownMenu/Item.js +48 -0
- package/DropdownMenu/Item.js.map +1 -0
- package/DropdownMenu/Items.d.ts +16 -0
- package/DropdownMenu/Items.js +53 -0
- package/DropdownMenu/Items.js.map +1 -0
- package/DropdownMenu/index.d.ts +4 -0
- package/DropdownMenu/index.js +5 -0
- package/DropdownMenu/index.js.map +1 -0
- package/ErrorBoundary/Generic.d.ts +18 -0
- package/ErrorBoundary/Generic.js +65 -0
- package/ErrorBoundary/Generic.js.map +1 -0
- package/ErrorBoundary/PassThrough.d.ts +3 -0
- package/ErrorBoundary/PassThrough.js +7 -0
- package/ErrorBoundary/PassThrough.js.map +1 -0
- package/Gallery/Gallery.d.ts +39 -0
- package/Gallery/Gallery.js +121 -0
- package/Gallery/Gallery.js.map +1 -0
- package/Gallery/constructGallery.d.ts +15 -0
- package/Gallery/constructGallery.js +40 -0
- package/Gallery/constructGallery.js.map +1 -0
- package/Image/BaseImage.d.ts +39 -0
- package/Image/BaseImage.js +192 -0
- package/Image/BaseImage.js.map +1 -0
- package/Image/Fallback.d.ts +5 -0
- package/Image/Fallback.js +4 -0
- package/Image/Fallback.js.map +1 -0
- package/Image/FlightImage.d.ts +51 -0
- package/Image/FlightImage.js +59 -0
- package/Image/FlightImage.js.map +1 -0
- package/Image/Image.d.ts +2 -0
- package/Image/Image.js +3 -0
- package/Image/Image.js.map +1 -0
- package/Image/index.d.ts +1 -0
- package/Image/index.js +2 -0
- package/Image/index.js.map +1 -0
- package/Image/useConstructImage.d.ts +49 -0
- package/Image/useConstructImage.js +122 -0
- package/Image/useConstructImage.js.map +1 -0
- package/Image/utils/aspectRatioToFraction.d.ts +2 -0
- package/Image/utils/aspectRatioToFraction.js +11 -0
- package/Image/utils/aspectRatioToFraction.js.map +1 -0
- package/Image/utils/getFullUrl.d.ts +6 -0
- package/Image/utils/getFullUrl.js +18 -0
- package/Image/utils/getFullUrl.js.map +1 -0
- package/Image/utils/getImageWidth.d.ts +1 -0
- package/Image/utils/getImageWidth.js +12 -0
- package/Image/utils/getImageWidth.js.map +1 -0
- package/Image/utils/getImageWidths.d.ts +2 -0
- package/Image/utils/getImageWidths.js +21 -0
- package/Image/utils/getImageWidths.js.map +1 -0
- package/Image/utils/getLQIP.d.ts +8 -0
- package/Image/utils/getLQIP.js +20 -0
- package/Image/utils/getLQIP.js.map +1 -0
- package/Image/utils/getLargestSize.d.ts +7 -0
- package/Image/utils/getLargestSize.js +17 -0
- package/Image/utils/getLargestSize.js.map +1 -0
- package/Image/utils/getSizeForBreakpoint.d.ts +2 -0
- package/Image/utils/getSizeForBreakpoint.js +16 -0
- package/Image/utils/getSizeForBreakpoint.js.map +1 -0
- package/Image/utils/getSizesMap.d.ts +2 -0
- package/Image/utils/getSizesMap.js +35 -0
- package/Image/utils/getSizesMap.js.map +1 -0
- package/Image/utils/getSmallestSize.d.ts +2 -0
- package/Image/utils/getSmallestSize.js +12 -0
- package/Image/utils/getSmallestSize.js.map +1 -0
- package/Image/utils/getSrcSetFromWidths.d.ts +10 -0
- package/Image/utils/getSrcSetFromWidths.js +9 -0
- package/Image/utils/getSrcSetFromWidths.js.map +1 -0
- package/Image/utils/getSrcWithParams.d.ts +3 -0
- package/Image/utils/getSrcWithParams.js +29 -0
- package/Image/utils/getSrcWithParams.js.map +1 -0
- package/Image/utils/paddingForAspectRatio.d.ts +1 -0
- package/Image/utils/paddingForAspectRatio.js +6 -0
- package/Image/utils/paddingForAspectRatio.js.map +1 -0
- package/Image/utils/remToPx.d.ts +1 -0
- package/Image/utils/remToPx.js +2 -0
- package/Image/utils/remToPx.js.map +1 -0
- package/Image/utils/sizeToNumber.d.ts +2 -0
- package/Image/utils/sizeToNumber.js +27 -0
- package/Image/utils/sizeToNumber.js.map +1 -0
- package/Input/Input.d.ts +6 -0
- package/Input/Input.js +45 -0
- package/Input/Input.js.map +1 -0
- package/Input/index.d.ts +3 -0
- package/Input/index.js +4 -0
- package/Input/index.js.map +1 -0
- package/JetshopText.d.ts +3 -0
- package/JetshopText.js +13 -0
- package/JetshopText.js.map +1 -0
- package/Loading/LoadingBar.d.ts +8 -0
- package/Loading/LoadingBar.js +58 -0
- package/Loading/LoadingBar.js.map +1 -0
- package/Loading/LoadingLine.d.ts +31 -0
- package/Loading/LoadingLine.js +26 -0
- package/Loading/LoadingLine.js.map +1 -0
- package/Loading/NetworkStatusNotifier.d.ts +6 -0
- package/Loading/NetworkStatusNotifier.js +8 -0
- package/Loading/NetworkStatusNotifier.js.map +1 -0
- package/Menu/MenuContainer.d.ts +28 -0
- package/Menu/MenuContainer.js +46 -0
- package/Menu/MenuContainer.js.map +1 -0
- package/Menu/RecursiveTree.d.ts +28 -0
- package/Menu/RecursiveTree.js +91 -0
- package/Menu/RecursiveTree.js.map +1 -0
- package/Modal/Drawer/Drawer.d.ts +12 -0
- package/Modal/Drawer/Drawer.js +31 -0
- package/Modal/Drawer/Drawer.js.map +1 -0
- package/Modal/Drawer/DrawerTarget.d.ts +6 -0
- package/Modal/Drawer/DrawerTarget.js +12 -0
- package/Modal/Drawer/DrawerTarget.js.map +1 -0
- package/Modal/Drawer/DrawerTrigger.d.ts +11 -0
- package/Modal/Drawer/DrawerTrigger.js +16 -0
- package/Modal/Drawer/DrawerTrigger.js.map +1 -0
- package/Modal/Drawer/index.d.ts +3 -0
- package/Modal/Drawer/index.js +4 -0
- package/Modal/Drawer/index.js.map +1 -0
- package/Modal/Flyout/FlyoutTarget.d.ts +10 -0
- package/Modal/Flyout/FlyoutTarget.js +15 -0
- package/Modal/Flyout/FlyoutTarget.js.map +1 -0
- package/Modal/Flyout/FlyoutTrigger.d.ts +15 -0
- package/Modal/Flyout/FlyoutTrigger.js +18 -0
- package/Modal/Flyout/FlyoutTrigger.js.map +1 -0
- package/Modal/Flyout/index.d.ts +2 -0
- package/Modal/Flyout/index.js +3 -0
- package/Modal/Flyout/index.js.map +1 -0
- package/Modal/ModalContext.d.ts +26 -0
- package/Modal/ModalContext.js +9 -0
- package/Modal/ModalContext.js.map +1 -0
- package/Modal/ModalProvider.d.ts +5 -0
- package/Modal/ModalProvider.js +83 -0
- package/Modal/ModalProvider.js.map +1 -0
- package/Modal/ModalRoot.d.ts +3 -0
- package/Modal/ModalRoot.js +44 -0
- package/Modal/ModalRoot.js.map +1 -0
- package/Modal/ModalTrigger.d.ts +9 -0
- package/Modal/ModalTrigger.js +9 -0
- package/Modal/ModalTrigger.js.map +1 -0
- package/Pagination/Pagination.d.ts +7 -0
- package/Pagination/Pagination.js +23 -0
- package/Pagination/Pagination.js.map +1 -0
- package/Pagination/PaginationBehaviour.d.ts +52 -0
- package/Pagination/PaginationBehaviour.js +68 -0
- package/Pagination/PaginationBehaviour.js.map +1 -0
- package/Pagination/index.d.ts +2 -0
- package/Pagination/index.js +3 -0
- package/Pagination/index.js.map +1 -0
- package/Pagination/usePagination.d.ts +15 -0
- package/Pagination/usePagination.js +46 -0
- package/Pagination/usePagination.js.map +1 -0
- package/PreOrderDateSelector/PreOrderDateSelector.d.ts +23 -0
- package/PreOrderDateSelector/PreOrderDateSelector.js +74 -0
- package/PreOrderDateSelector/PreOrderDateSelector.js.map +1 -0
- package/PreOrderDateSelector/index.d.ts +2 -0
- package/PreOrderDateSelector/index.js +3 -0
- package/PreOrderDateSelector/index.js.map +1 -0
- package/Price/Currency.d.ts +9 -0
- package/Price/Currency.js +11 -0
- package/Price/Currency.js.map +1 -0
- package/Price/Price.d.ts +44 -0
- package/Price/Price.js +74 -0
- package/Price/Price.js.map +1 -0
- package/Price/index.d.ts +1 -0
- package/Price/index.js +2 -0
- package/Price/index.js.map +1 -0
- package/ProductLink.d.ts +23 -0
- package/ProductLink.js +88 -0
- package/ProductLink.js.map +1 -0
- package/ProductList/Badges.d.ts +6 -0
- package/ProductList/Badges.js +56 -0
- package/ProductList/Badges.js.map +1 -0
- package/ProductList/GridProduct.d.ts +24 -0
- package/ProductList/GridProduct.js +58 -0
- package/ProductList/GridProduct.js.map +1 -0
- package/ProductList/ProductGrid.d.ts +16 -0
- package/ProductList/ProductGrid.js +30 -0
- package/ProductList/ProductGrid.js.map +1 -0
- package/ProductList/ProductImage.d.ts +12 -0
- package/ProductList/ProductImage.js +21 -0
- package/ProductList/ProductImage.js.map +1 -0
- package/ProductSpecifications/ProductSpecifications.d.ts +8 -0
- package/ProductSpecifications/ProductSpecifications.js +78 -0
- package/ProductSpecifications/ProductSpecifications.js.map +1 -0
- package/ScrollRestorationHandler/ScrollRestorationHandler.d.ts +8 -0
- package/ScrollRestorationHandler/ScrollRestorationHandler.js +17 -0
- package/ScrollRestorationHandler/ScrollRestorationHandler.js.map +1 -0
- package/ScrollRestorationHandler/index.d.ts +1 -0
- package/ScrollRestorationHandler/index.js +2 -0
- package/ScrollRestorationHandler/index.js.map +1 -0
- package/ScrollRestorationHandler/isInIgnoredRouteTypes.d.ts +8 -0
- package/ScrollRestorationHandler/isInIgnoredRouteTypes.js +8 -0
- package/ScrollRestorationHandler/isInIgnoredRouteTypes.js.map +1 -0
- package/ScrollRestorationHandler/useScrollRestore.d.ts +9 -0
- package/ScrollRestorationHandler/useScrollRestore.js +20 -0
- package/ScrollRestorationHandler/useScrollRestore.js.map +1 -0
- package/Search/SearchAutoCompleteContainer.d.ts +45 -0
- package/Search/SearchAutoCompleteContainer.js +172 -0
- package/Search/SearchAutoCompleteContainer.js.map +1 -0
- package/Search/SearchField.d.ts +26 -0
- package/Search/SearchField.js +98 -0
- package/Search/SearchField.js.map +1 -0
- package/Search/SearchPage/PageOf.d.ts +5 -0
- package/Search/SearchPage/PageOf.js +7 -0
- package/Search/SearchPage/PageOf.js.map +1 -0
- package/Search/SearchPage/SearchMeta.d.ts +16 -0
- package/Search/SearchPage/SearchMeta.js +20 -0
- package/Search/SearchPage/SearchMeta.js.map +1 -0
- package/Search/SearchPage/SearchPageBehaviour.d.ts +19 -0
- package/Search/SearchPage/SearchPageBehaviour.js +75 -0
- package/Search/SearchPage/SearchPageBehaviour.js.map +1 -0
- package/Search/SuggestedTerm.d.ts +16 -0
- package/Search/SuggestedTerm.js +35 -0
- package/Search/SuggestedTerm.js.map +1 -0
- package/Search/index.d.ts +1 -0
- package/Search/index.js +2 -0
- package/Search/index.js.map +1 -0
- package/Select/Components.d.ts +28 -0
- package/Select/Components.js +91 -0
- package/Select/Components.js.map +1 -0
- package/Select/SelectComponents/Quantity.d.ts +5 -0
- package/Select/SelectComponents/Quantity.js +8 -0
- package/Select/SelectComponents/Quantity.js.map +1 -0
- package/Select/index.d.ts +5 -0
- package/Select/index.js +2 -0
- package/Select/index.js.map +1 -0
- package/SortOrder/SortOrder.d.ts +16 -0
- package/SortOrder/SortOrder.js +33 -0
- package/SortOrder/SortOrder.js.map +1 -0
- package/SortOrder/SortOrderDropdown.d.ts +9 -0
- package/SortOrder/SortOrderDropdown.js +25 -0
- package/SortOrder/SortOrderDropdown.js.map +1 -0
- package/SortOrder/SortOrderList.d.ts +7 -0
- package/SortOrder/SortOrderList.js +17 -0
- package/SortOrder/SortOrderList.js.map +1 -0
- package/StartPageRenderer/StartPageRenderer.d.ts +17 -0
- package/StartPageRenderer/StartPageRenderer.js +52 -0
- package/StartPageRenderer/StartPageRenderer.js.map +1 -0
- package/StartPageRenderer/index.d.ts +1 -0
- package/StartPageRenderer/index.js +2 -0
- package/StartPageRenderer/index.js.map +1 -0
- package/Stock/StockStatusContainer.d.ts +21 -0
- package/Stock/StockStatusContainer.js +45 -0
- package/Stock/StockStatusContainer.js.map +1 -0
- package/Text/Text.d.ts +11 -0
- package/Text/Text.js +22 -0
- package/Text/Text.js.map +1 -0
- package/Text/index.d.ts +3 -0
- package/Text/index.js +4 -0
- package/Text/index.js.map +1 -0
- package/Theme/createTheme.d.ts +16 -0
- package/Theme/createTheme.js +5 -0
- package/Theme/createTheme.js.map +1 -0
- package/Theme/cssReset.d.ts +1 -0
- package/Theme/cssReset.js +160 -0
- package/Theme/cssReset.js.map +1 -0
- package/Theme/normalizeCss.d.ts +1 -0
- package/Theme/normalizeCss.js +357 -0
- package/Theme/normalizeCss.js.map +1 -0
- package/Theme/sanitizeCss.d.ts +1 -0
- package/Theme/sanitizeCss.js +572 -0
- package/Theme/sanitizeCss.js.map +1 -0
- package/WindowGrid/WindowGrid.d.ts +11 -0
- package/WindowGrid/WindowGrid.js +58 -0
- package/WindowGrid/WindowGrid.js.map +1 -0
- package/WindowGrid/index.d.ts +1 -0
- package/WindowGrid/index.js +2 -0
- package/WindowGrid/index.js.map +1 -0
- package/WindowGrid/useResizeObserver.d.ts +3 -0
- package/WindowGrid/useResizeObserver.js +14 -0
- package/WindowGrid/useResizeObserver.js.map +1 -0
- package/WindowGrid/useScrollWithWindow.d.ts +12 -0
- package/WindowGrid/useScrollWithWindow.js +39 -0
- package/WindowGrid/useScrollWithWindow.js.map +1 -0
- package/fuzzySearch/fuzzySearch.d.ts +8 -0
- package/fuzzySearch/fuzzySearch.js +43 -0
- package/fuzzySearch/fuzzySearch.js.map +1 -0
- package/fuzzySearch/index.d.ts +1 -0
- package/fuzzySearch/index.js +2 -0
- package/fuzzySearch/index.js.map +1 -0
- package/hooks/index.d.ts +2 -0
- package/hooks/index.js +3 -0
- package/hooks/index.js.map +1 -0
- package/hooks/useOnClickOutside.d.ts +6 -0
- package/hooks/useOnClickOutside.js +17 -0
- package/hooks/useOnClickOutside.js.map +1 -0
- package/hooks/useOnEsc.d.ts +4 -0
- package/hooks/useOnEsc.js +17 -0
- package/hooks/useOnEsc.js.map +1 -0
- package/package.json +1 -1
- package/utils/breakpoints.d.ts +23 -0
- package/utils/breakpoints.js +94 -0
- package/utils/breakpoints.js.map +1 -0
- package/utils/callAllEventHandlers.d.ts +5 -0
- package/utils/callAllEventHandlers.js +9 -0
- package/utils/callAllEventHandlers.js.map +1 -0
- package/utils/text.d.ts +1 -0
- package/utils/text.js +23 -0
- package/utils/text.js.map +1 -0
- package/utils/theme.d.ts +3 -0
- package/utils/theme.js +5 -0
- package/utils/theme.js.map +1 -0
- package/utils/useHoverIntent.d.ts +10 -0
- package/utils/useHoverIntent.js +78 -0
- package/utils/useHoverIntent.js.map +1 -0
- package/utils/usePropsOfType.d.ts +11 -0
- package/utils/usePropsOfType.js +18 -0
- package/utils/usePropsOfType.js.map +1 -0
- package/withFlightUI.d.ts +17 -0
- package/withFlightUI.js +20 -0
- package/withFlightUI.js.map +1 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { ApolloError } from '@apollo/client';
|
|
2
|
+
import { DocumentNode } from 'graphql';
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
export interface SearchPageRenderProps {
|
|
5
|
+
result: object;
|
|
6
|
+
filters: object;
|
|
7
|
+
total: number;
|
|
8
|
+
term: string;
|
|
9
|
+
loading: boolean;
|
|
10
|
+
error: ApolloError;
|
|
11
|
+
}
|
|
12
|
+
export interface SearchPageProps {
|
|
13
|
+
children(props: SearchPageRenderProps): React.ReactElement;
|
|
14
|
+
/** Query to perform the search */
|
|
15
|
+
searchQuery: DocumentNode;
|
|
16
|
+
location: Location;
|
|
17
|
+
}
|
|
18
|
+
declare const SearchPageBehaviour: React.FC<SearchPageProps>;
|
|
19
|
+
export default SearchPageBehaviour;
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import ActiveFiltersQuery from '@jetshop/core/components/DynamicRoute/ActiveFiltersQuery.gql';
|
|
2
|
+
import PaginationContext from '@jetshop/core/components/Pagination/PaginationContext';
|
|
3
|
+
import PaginationProvider, { usePagination } from '@jetshop/core/components/Pagination/PaginationProvider';
|
|
4
|
+
import throwErrorInDev from '@jetshop/core/helpers/throwErrorInDev';
|
|
5
|
+
import { useFilters } from '@jetshop/core/hooks/Filters/useFilters';
|
|
6
|
+
import qs from 'qs';
|
|
7
|
+
import * as React from 'react';
|
|
8
|
+
import { Query } from '@apollo/client/react/components';
|
|
9
|
+
import { useQuery } from '@apollo/client';
|
|
10
|
+
const SearchPageBehaviour = (props) => {
|
|
11
|
+
var _a, _b;
|
|
12
|
+
const pagination = usePagination();
|
|
13
|
+
const { location, searchQuery, children } = props;
|
|
14
|
+
const { offset, perPage } = React.useContext(PaginationContext);
|
|
15
|
+
const activeSearchTerm = React.useRef();
|
|
16
|
+
// Track the previous offset. If it has changed, we're paginating. If it
|
|
17
|
+
// hasn't, we're just applying filters.
|
|
18
|
+
const activeOffset = React.useRef(0);
|
|
19
|
+
const { clearAllFilters } = useFilters();
|
|
20
|
+
throwErrorInDev(!searchQuery, `You did not pass 'searchQuery' to SearchPageBehaviour`);
|
|
21
|
+
const activeFilterQuery = useQuery(ActiveFiltersQuery, {
|
|
22
|
+
fetchPolicy: 'cache-only'
|
|
23
|
+
});
|
|
24
|
+
const searchTerm = React.useMemo(() => qs.parse(location.search, { ignoreQueryPrefix: true }).term, [location]);
|
|
25
|
+
React.useEffect(() => {
|
|
26
|
+
if (activeSearchTerm.current && activeSearchTerm.current !== searchTerm) {
|
|
27
|
+
clearAllFilters();
|
|
28
|
+
}
|
|
29
|
+
activeSearchTerm.current = searchTerm;
|
|
30
|
+
}, [clearAllFilters, searchTerm]);
|
|
31
|
+
React.useEffect(() => {
|
|
32
|
+
activeOffset.current = offset;
|
|
33
|
+
}, [offset]);
|
|
34
|
+
if (pagination === undefined) {
|
|
35
|
+
return (React.createElement(PaginationProvider, null,
|
|
36
|
+
React.createElement(SearchPageBehaviour, Object.assign({}, props))));
|
|
37
|
+
}
|
|
38
|
+
const filters = ((_a = activeFilterQuery.data) === null || _a === void 0 ? void 0 : _a.activeFilters)
|
|
39
|
+
? Object.assign({}, (_b = activeFilterQuery.data) === null || _b === void 0 ? void 0 : _b.activeFilters) : null;
|
|
40
|
+
filters && delete filters.__typename;
|
|
41
|
+
// Ideally this component would use the data from usePagination, but due to
|
|
42
|
+
// how the shouldComponentUpdate method in FilterContainer works it prevents
|
|
43
|
+
// rendering if we don't do it this way.
|
|
44
|
+
return searchTerm ? (React.createElement(Query, { variables: {
|
|
45
|
+
term: searchTerm,
|
|
46
|
+
first: perPage,
|
|
47
|
+
limit: perPage,
|
|
48
|
+
filters,
|
|
49
|
+
offset: activeOffset.current === offset ? 0 : offset,
|
|
50
|
+
client: !__IN_SERVER__
|
|
51
|
+
}, query: searchQuery, fetchPolicy: "cache-and-network" }, (result) => {
|
|
52
|
+
var _a, _b, _c, _d, _e, _f;
|
|
53
|
+
const totalResults = (_c = (_b = (_a = ((result === null || result === void 0 ? void 0 : result.data) || (result === null || result === void 0 ? void 0 : result.previousData))) === null || _a === void 0 ? void 0 : _a.search) === null || _b === void 0 ? void 0 : _b.products) === null || _c === void 0 ? void 0 : _c.totalResults;
|
|
54
|
+
const filters = (_f = (_e = (_d = ((result === null || result === void 0 ? void 0 : result.data) || (result === null || result === void 0 ? void 0 : result.previousData))) === null || _d === void 0 ? void 0 : _d.search) === null || _e === void 0 ? void 0 : _e.products) === null || _f === void 0 ? void 0 : _f.filters;
|
|
55
|
+
return (React.createElement(React.Fragment, null, children({
|
|
56
|
+
result: Object.assign(Object.assign({}, result), {
|
|
57
|
+
// We want to show the previous data to avoid unnecessary loading states
|
|
58
|
+
data: result.data || result.previousData }),
|
|
59
|
+
total: totalResults,
|
|
60
|
+
filters,
|
|
61
|
+
term: searchTerm,
|
|
62
|
+
loading: result.loading,
|
|
63
|
+
error: result.error
|
|
64
|
+
})));
|
|
65
|
+
})) : (children({
|
|
66
|
+
term: searchTerm,
|
|
67
|
+
loading: false,
|
|
68
|
+
error: null,
|
|
69
|
+
total: 0,
|
|
70
|
+
result: {},
|
|
71
|
+
filters: {}
|
|
72
|
+
}));
|
|
73
|
+
};
|
|
74
|
+
export default SearchPageBehaviour;
|
|
75
|
+
//# sourceMappingURL=SearchPageBehaviour.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SearchPageBehaviour.js","sourceRoot":"","sources":["SearchPageBehaviour.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Product, Category } from '@jetshop/core/types';
|
|
3
|
+
export interface SuggestedTermProps {
|
|
4
|
+
className?: string;
|
|
5
|
+
term: string;
|
|
6
|
+
/** Function to call when a search term is clicked */
|
|
7
|
+
onClick?: () => void;
|
|
8
|
+
}
|
|
9
|
+
interface SuggestedProduct extends SuggestedTermProps {
|
|
10
|
+
item: Product;
|
|
11
|
+
}
|
|
12
|
+
interface SuggestedCategory extends SuggestedTermProps {
|
|
13
|
+
item: Category;
|
|
14
|
+
}
|
|
15
|
+
declare const SuggestedTerm: (props: SuggestedProduct | SuggestedCategory) => React.JSX.Element;
|
|
16
|
+
export default SuggestedTerm;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import ProductLink from '@jetshop/ui/ProductLink';
|
|
3
|
+
import CategoryLink from '@jetshop/ui/CategoryLink';
|
|
4
|
+
const SuggestedTerm = (props) => {
|
|
5
|
+
const { term = '', className = '', onClick = () => null } = props;
|
|
6
|
+
if (isProduct(props)) {
|
|
7
|
+
const { item } = props;
|
|
8
|
+
return (React.createElement("li", { className: className, onClick: onClick, "data-flight-search-autocomplete-result": "product" }, item.primaryRoute ? (React.createElement(ProductLink, { product: item }, getHighlightedText(item.name, term))) : (item.name)));
|
|
9
|
+
}
|
|
10
|
+
else {
|
|
11
|
+
const { item } = props;
|
|
12
|
+
const displayText = item.primaryRoute.breadcrumbs.join(' > ');
|
|
13
|
+
return (React.createElement("li", { className: className, onClick: onClick, "data-flight-search-autocomplete-result": "category" }, item.primaryRoute ? (React.createElement(CategoryLink, { category: item }, getHighlightedText(displayText, term))) : (item.name)));
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
function isProduct(props) {
|
|
17
|
+
return props.item.__typename === 'Product';
|
|
18
|
+
}
|
|
19
|
+
function getHighlightedText(text, highlight) {
|
|
20
|
+
// Split on higlight term and include term into parts, ignore case
|
|
21
|
+
const parts = text.split(new RegExp(`(${escapeRegExp(highlight).split(' ').join('|')})`, 'gi'));
|
|
22
|
+
const highlightArray = highlight.split(' ');
|
|
23
|
+
const toHighlightLower = highlightArray.map((word) => word.toLowerCase());
|
|
24
|
+
return parts.reduce((prev, curr, index) => {
|
|
25
|
+
return [
|
|
26
|
+
...prev,
|
|
27
|
+
toHighlightLower.includes(curr.toLowerCase()) ? (React.createElement("strong", { style: { fontWeight: 600 }, key: index }, curr)) : (curr)
|
|
28
|
+
];
|
|
29
|
+
}, []);
|
|
30
|
+
}
|
|
31
|
+
function escapeRegExp(string) {
|
|
32
|
+
return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
33
|
+
}
|
|
34
|
+
export default SuggestedTerm;
|
|
35
|
+
//# sourceMappingURL=SuggestedTerm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SuggestedTerm.js","sourceRoot":"","sources":["SuggestedTerm.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,WAAW,MAAM,yBAAyB,CAAC;AAElD,OAAO,YAAY,MAAM,0BAA0B,CAAC;AAiBpD,MAAM,aAAa,GAAG,CAAC,KAA2C,EAAE,EAAE;IACpE,MAAM,EAAE,IAAI,GAAG,EAAE,EAAE,SAAS,GAAG,EAAE,EAAE,OAAO,GAAG,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,CAAC;IAElE,IAAI,SAAS,CAAC,KAAK,CAAC,EAAE;QACpB,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;QACvB,OAAO,CACL,4BACE,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,OAAO,4CACuB,SAAS,IAE/C,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CACnB,oBAAC,WAAW,IAAC,OAAO,EAAE,IAAI,IACvB,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CACxB,CACf,CAAC,CAAC,CAAC,CACF,IAAI,CAAC,IAAI,CACV,CACE,CACN,CAAC;KACH;SAAM;QACL,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;QAEvB,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAE9D,OAAO,CACL,4BACE,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,OAAO,4CACuB,UAAU,IAEhD,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CACnB,oBAAC,YAAY,IAAC,QAAQ,EAAE,IAAI,IACzB,kBAAkB,CAAC,WAAW,EAAE,IAAI,CAAC,CACzB,CAChB,CAAC,CAAC,CAAC,CACF,IAAI,CAAC,IAAI,CACV,CACE,CACN,CAAC;KACH;AACH,CAAC,CAAC;AAEF,SAAS,SAAS,CAChB,KAA2C;IAE3C,OAAQ,KAA0B,CAAC,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC;AACnE,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAY,EAAE,SAAiB;IACzD,kEAAkE;IAClE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CACtB,IAAI,MAAM,CAAC,IAAI,YAAY,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CACtE,CAAC;IACF,MAAM,cAAc,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC5C,MAAM,gBAAgB,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IAE1E,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;QACxC,OAAO;YACL,GAAG,IAAI;YACP,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAC9C,gCAAQ,KAAK,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,KAAK,IAC3C,IAAI,CACE,CACV,CAAC,CAAC,CAAC,CACF,IAAI,CACL;SACF,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;AACT,CAAC;AAED,SAAS,YAAY,CAAC,MAAc;IAClC,OAAO,MAAM,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AACvD,CAAC;AAED,eAAe,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as SearchField } from './SearchField';
|
package/Search/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export declare const SelectContainer: import("linaria/lib/StyledMeta").StyledMeta & React.FunctionComponent<React.ClassAttributes<HTMLDivElement> & React.HTMLAttributes<HTMLDivElement> & {
|
|
3
|
+
as?: React.ElementType<any>;
|
|
4
|
+
}>;
|
|
5
|
+
export declare const ListItem: import("linaria/lib/StyledMeta").StyledMeta & React.FunctionComponent<React.ClassAttributes<HTMLButtonElement> & React.ButtonHTMLAttributes<HTMLButtonElement> & {
|
|
6
|
+
as?: React.ElementType<any>;
|
|
7
|
+
}>;
|
|
8
|
+
export declare const SelectableListItem: import("linaria/lib/StyledMeta").StyledMeta & React.FunctionComponent<React.ClassAttributes<HTMLButtonElement> & React.ButtonHTMLAttributes<HTMLButtonElement> & {
|
|
9
|
+
as?: React.ElementType<any>;
|
|
10
|
+
}>;
|
|
11
|
+
export declare const ListTitle: import("linaria/lib/StyledMeta").StyledMeta & React.FunctionComponent<React.ClassAttributes<HTMLHeadingElement> & React.HTMLAttributes<HTMLHeadingElement> & {
|
|
12
|
+
as?: React.ElementType<any>;
|
|
13
|
+
}>;
|
|
14
|
+
export declare const SelectItem: import("linaria/lib/StyledMeta").StyledMeta & React.FunctionComponent<React.ClassAttributes<HTMLSpanElement> & React.HTMLAttributes<HTMLSpanElement> & {
|
|
15
|
+
as?: React.ElementType<any>;
|
|
16
|
+
}>;
|
|
17
|
+
export declare const SelectItemWrapper: import("linaria/lib/StyledMeta").StyledMeta & React.FunctionComponent<React.ClassAttributes<HTMLSpanElement> & React.HTMLAttributes<HTMLSpanElement> & {
|
|
18
|
+
as?: React.ElementType<any>;
|
|
19
|
+
}>;
|
|
20
|
+
export interface DropdownWrapperProps {
|
|
21
|
+
isOpen: boolean;
|
|
22
|
+
}
|
|
23
|
+
export declare const Wrapper: import("linaria/lib/StyledMeta").StyledMeta & React.FunctionComponent<React.ClassAttributes<HTMLDivElement> & React.HTMLAttributes<HTMLDivElement> & {
|
|
24
|
+
as?: React.ElementType<any>;
|
|
25
|
+
}>;
|
|
26
|
+
export declare const DropdownWrapper: React.SFC<DropdownWrapperProps>;
|
|
27
|
+
export declare const StyledCarrot: import("linaria/lib/StyledMeta").StyledMeta & React.SFC<React.SVGProps<SVGSVGElement>>;
|
|
28
|
+
export declare const StyledCheck: import("linaria/lib/StyledMeta").StyledMeta & React.SFC<React.SVGProps<SVGSVGElement>>;
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { styled } from 'linaria/react';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { ReactComponent as Carrot } from '../svg/Carrot.svg';
|
|
4
|
+
import { ReactComponent as Check } from '../svg/Check.svg';
|
|
5
|
+
export const SelectContainer = styled('div') `
|
|
6
|
+
width: 100%;
|
|
7
|
+
position: relative;
|
|
8
|
+
background-color: #ffffff;
|
|
9
|
+
margin-bottom: 16px;
|
|
10
|
+
`;
|
|
11
|
+
export const ListItem = styled('button') `
|
|
12
|
+
display: flex;
|
|
13
|
+
justify-content: space-between;
|
|
14
|
+
width: 100%;
|
|
15
|
+
height: 54px;
|
|
16
|
+
display: flex;
|
|
17
|
+
align-items: center;
|
|
18
|
+
background-color: #ffffff;
|
|
19
|
+
border: 1px solid #dedede;
|
|
20
|
+
position: relative;
|
|
21
|
+
cursor: pointer;
|
|
22
|
+
&.disabled {
|
|
23
|
+
color: #c2c2c2;
|
|
24
|
+
cursor: not-allowed;
|
|
25
|
+
:hover {
|
|
26
|
+
background-color: #ffffff;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
`;
|
|
30
|
+
export const SelectableListItem = styled(ListItem) `
|
|
31
|
+
cursor: pointer;
|
|
32
|
+
border-width: 1px 0 0 0;
|
|
33
|
+
:last-of-type {
|
|
34
|
+
border-bottom: none;
|
|
35
|
+
}
|
|
36
|
+
:hover {
|
|
37
|
+
background-color: #f2f2f2;
|
|
38
|
+
}
|
|
39
|
+
&.selected,
|
|
40
|
+
&.highlighted {
|
|
41
|
+
background-color: #f2f2f2;
|
|
42
|
+
}
|
|
43
|
+
&.disabled {
|
|
44
|
+
color: #c2c2c2;
|
|
45
|
+
cursor: not-allowed;
|
|
46
|
+
:hover {
|
|
47
|
+
background-color: #ffffff;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
`;
|
|
51
|
+
export const ListTitle = styled('h4') ``;
|
|
52
|
+
export const SelectItem = styled('span') `
|
|
53
|
+
display: block;
|
|
54
|
+
`;
|
|
55
|
+
export const SelectItemWrapper = styled('span') `
|
|
56
|
+
display: flex;
|
|
57
|
+
flex-direction: row;
|
|
58
|
+
`;
|
|
59
|
+
// TODO: animate height to auto
|
|
60
|
+
export const Wrapper = styled('div') `
|
|
61
|
+
position: absolute;
|
|
62
|
+
height: 0px;
|
|
63
|
+
z-index: 40;
|
|
64
|
+
width: 100%;
|
|
65
|
+
overflow: hidden;
|
|
66
|
+
&.open {
|
|
67
|
+
height: auto;
|
|
68
|
+
}
|
|
69
|
+
`;
|
|
70
|
+
const InnerWrapper = styled('div') `
|
|
71
|
+
border: 1px solid #dedede;
|
|
72
|
+
border-top: 0;
|
|
73
|
+
overflow-y: auto;
|
|
74
|
+
max-height: 470px;
|
|
75
|
+
@media (--below-sm) {
|
|
76
|
+
max-height: 100vh;
|
|
77
|
+
}
|
|
78
|
+
> button:first-child {
|
|
79
|
+
border-top: 0;
|
|
80
|
+
}
|
|
81
|
+
`;
|
|
82
|
+
export const DropdownWrapper = ({ isOpen, children }) => (React.createElement(Wrapper, { className: isOpen ? 'open' : 'closed' },
|
|
83
|
+
React.createElement(InnerWrapper, null, children)));
|
|
84
|
+
export const StyledCarrot = styled(Carrot) `
|
|
85
|
+
transition: transform 200ms;
|
|
86
|
+
&.open {
|
|
87
|
+
transform: rotate(-180deg);
|
|
88
|
+
}
|
|
89
|
+
`;
|
|
90
|
+
export const StyledCheck = styled(Check) ``;
|
|
91
|
+
//# sourceMappingURL=Components.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Components.js","sourceRoot":"","sources":["Components.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,cAAc,IAAI,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,cAAc,IAAI,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAE3D,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;;;;;CAK3C,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAA;;;;;;;;;;;;;;;;;;CAkBvC,CAAC;AACF,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAA;;;;;;;;;;;;;;;;;;;;CAoBjD,CAAC;AACF,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA,EAAE,CAAC;AACxC,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA;;CAEvC,CAAC;AACF,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA;;;CAG9C,CAAC;AAMF,+BAA+B;AAC/B,MAAM,CAAC,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;;;;;;;;;CASnC,CAAC;AACF,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;;;;;;;;;;;CAWjC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAoC,CAAC,EAC/D,MAAM,EACN,QAAQ,EACT,EAAE,EAAE,CAAC,CACJ,oBAAC,OAAO,IAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ;IAC5C,oBAAC,YAAY,QAAE,QAAQ,CAAgB,CAC/B,CACX,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA;;;;;CAKzC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA,EAAE,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
declare const Quantity: import("linaria/lib/StyledMeta").StyledMeta & import("react").FunctionComponent<import("react").ClassAttributes<HTMLParagraphElement> & import("react").HTMLAttributes<HTMLParagraphElement> & {
|
|
3
|
+
as?: import("react").ElementType<any>;
|
|
4
|
+
}>;
|
|
5
|
+
export default Quantity;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Quantity.js","sourceRoot":"","sources":["Quantity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,CAAA;;;;CAI3B,CAAC;AAEF,eAAe,QAAQ,CAAC"}
|
package/Select/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ISortOrderContext } from '@jetshop/core/components/SortOrder/SortOrderContext';
|
|
2
|
+
import { ProductSortOrder } from '@jetshop/core/types';
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
export interface MappedSortOrder {
|
|
5
|
+
direction: 'ASCENDING' | 'DESCENDING';
|
|
6
|
+
value: string;
|
|
7
|
+
text: string;
|
|
8
|
+
}
|
|
9
|
+
export interface SortOrderProps {
|
|
10
|
+
sortOrders: ProductSortOrder[];
|
|
11
|
+
children(sortOrderContext: ISortOrderContext & {
|
|
12
|
+
mappedSortOrder: MappedSortOrder[];
|
|
13
|
+
}): React.ReactNode;
|
|
14
|
+
}
|
|
15
|
+
declare const _default: React.ComponentClass<SortOrderProps, any>;
|
|
16
|
+
export default _default;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { sortTypes, sortValues } from '@jetshop/core/components/SortOrder/SortOrderContainer';
|
|
2
|
+
import SortOrderContext from '@jetshop/core/components/SortOrder/SortOrderContext';
|
|
3
|
+
import ErrorBoundary from '@jetshop/ui/ErrorBoundary/Generic';
|
|
4
|
+
import PassThrough from '@jetshop/ui/ErrorBoundary/PassThrough';
|
|
5
|
+
import * as React from 'react';
|
|
6
|
+
import { withRouter } from 'react-router-dom';
|
|
7
|
+
class SortOrder extends React.PureComponent {
|
|
8
|
+
render() {
|
|
9
|
+
// Mutate sort order obj to include asc/desc & appropriate text
|
|
10
|
+
// eg { text: 'Price low to high', direction: 'ASCENDING' }
|
|
11
|
+
const mappedSortOrder = this.props.sortOrders.reduce((sorts, curr) => {
|
|
12
|
+
const mutatedSorts = sortValues[sortTypes[curr.value]].map((type) => {
|
|
13
|
+
return Object.assign(Object.assign({}, curr), { text: (React.createElement("div", null,
|
|
14
|
+
React.createElement(React.Fragment, null,
|
|
15
|
+
curr['text'],
|
|
16
|
+
" ",
|
|
17
|
+
type.text))), direction: type.direction });
|
|
18
|
+
});
|
|
19
|
+
return [...sorts, ...mutatedSorts];
|
|
20
|
+
}, []);
|
|
21
|
+
return (React.createElement(ErrorBoundary, { component: PassThrough },
|
|
22
|
+
React.createElement(SortOrderContext.Consumer, null, ({ changeSortOrder, direction, sortOrder }) => {
|
|
23
|
+
return this.props.children({
|
|
24
|
+
changeSortOrder,
|
|
25
|
+
direction,
|
|
26
|
+
sortOrder,
|
|
27
|
+
mappedSortOrder
|
|
28
|
+
});
|
|
29
|
+
})));
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
export default withRouter(SortOrder);
|
|
33
|
+
//# sourceMappingURL=SortOrder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SortOrder.js","sourceRoot":"","sources":["SortOrder.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,UAAU,EACX,MAAM,uDAAuD,CAAC;AAC/D,OAAO,gBAEN,MAAM,qDAAqD,CAAC;AAE7D,OAAO,aAAa,MAAM,mCAAmC,CAAC;AAC9D,OAAO,WAAW,MAAM,uCAAuC,CAAC;AAChE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAuB,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAiBnE,MAAM,SAAU,SAAQ,KAAK,CAAC,aAG7B;IACQ,MAAM;QACX,+DAA+D;QAC/D,2DAA2D;QAC3D,MAAM,eAAe,GAAsB,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CACrE,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;YACd,MAAM,YAAY,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;gBAClE,uCACK,IAAI,KACP,IAAI,EAAE,CACJ;wBACE;4BACG,IAAI,CAAC,MAAM,CAAC;;4BAAG,IAAI,CAAC,IAAI,CACxB,CACC,CACP,EACD,SAAS,EAAE,IAAI,CAAC,SAAS,IACzB;YACJ,CAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,KAAK,EAAE,GAAG,YAAY,CAAC,CAAC;QACrC,CAAC,EACD,EAAE,CACH,CAAC;QAEF,OAAO,CACL,oBAAC,aAAa,IAAC,SAAS,EAAE,WAAW;YACnC,oBAAC,gBAAgB,CAAC,QAAQ,QACvB,CAAC,EAAE,eAAe,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE;gBAC7C,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;oBACzB,eAAe;oBACf,SAAS;oBACT,SAAS;oBACT,eAAe;iBAChB,CAAC,CAAC;YACL,CAAC,CACyB,CACd,CACjB,CAAC;IACJ,CAAC;CACF;AAED,eAAe,UAAU,CAAC,SAAS,CAAmC,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ProductSortOrder } from '@jetshop/core/types';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
export interface SortOrderDropdownProps {
|
|
4
|
+
sortOrders: ProductSortOrder[];
|
|
5
|
+
}
|
|
6
|
+
declare function SortOrderDropdown({ sortOrders }: {
|
|
7
|
+
sortOrders: ProductSortOrder[];
|
|
8
|
+
}): React.JSX.Element;
|
|
9
|
+
export default SortOrderDropdown;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import t from '@jetshop/intl';
|
|
2
|
+
import { DropdownMenu, DropdownMenuButton, DropdownMenuItem, DropdownMenuItems } from '@jetshop/ui/DropdownMenu';
|
|
3
|
+
import { StyledCheck } from '@jetshop/ui/Select/Components';
|
|
4
|
+
import SortOrder from '@jetshop/ui/SortOrder/SortOrder';
|
|
5
|
+
import * as React from 'react';
|
|
6
|
+
import logWarningInDev from '../../core/helpers/logWarningInDev';
|
|
7
|
+
// TODO: replace this with a useSortOrder hook (as per useListFilter etc)
|
|
8
|
+
function SortOrderDropdown({ sortOrders }) {
|
|
9
|
+
logWarningInDev(true, 'This implementation will be removed in flight 6.0. See the example in trend on how to migrate.');
|
|
10
|
+
return (React.createElement(SortOrder, { sortOrders: sortOrders }, props => (React.createElement(SortMenu, { changeSortOrder: props.changeSortOrder, direction: props.direction, sortOrder: props.sortOrder, mappedSortOrder: props.mappedSortOrder }))));
|
|
11
|
+
}
|
|
12
|
+
// TODO: Move this to the shop
|
|
13
|
+
function SortMenu(props) {
|
|
14
|
+
const { mappedSortOrder, changeSortOrder, sortOrder, direction } = props;
|
|
15
|
+
const activeItem = mappedSortOrder.find(item => item.direction === direction && item.value === sortOrder);
|
|
16
|
+
return (React.createElement(DropdownMenu, null,
|
|
17
|
+
React.createElement(DropdownMenuButton, null, activeItem ? activeItem.text : t('Sort By')),
|
|
18
|
+
React.createElement(DropdownMenuItems, null, mappedSortOrder.map(sortItem => {
|
|
19
|
+
return (React.createElement(DropdownMenuItem, { onSelect: () => changeSortOrder(sortItem.value, sortItem.direction), key: sortItem.value },
|
|
20
|
+
sortItem.text,
|
|
21
|
+
activeItem === sortItem && React.createElement(StyledCheck, null)));
|
|
22
|
+
}))));
|
|
23
|
+
}
|
|
24
|
+
export default SortOrderDropdown;
|
|
25
|
+
//# sourceMappingURL=SortOrderDropdown.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SortOrderDropdown.js","sourceRoot":"","sources":["SortOrderDropdown.tsx"],"names":[],"mappings":"AAEA,OAAO,CAAC,MAAM,eAAe,CAAC;AAC9B,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,SAA8B,MAAM,iCAAiC,CAAC;AAC7E,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,eAAe,MAAM,oCAAoC,CAAC;AAMjE,yEAAyE;AACzE,SAAS,iBAAiB,CAAC,EAAE,UAAU,EAAsC;IAC3E,eAAe,CACb,IAAI,EACJ,gGAAgG,CACjG,CAAC;IAEF,OAAO,CACL,oBAAC,SAAS,IAAC,UAAU,EAAE,UAAU,IAC9B,KAAK,CAAC,EAAE,CAAC,CACR,oBAAC,QAAQ,IACP,eAAe,EAAE,KAAK,CAAC,eAAe,EACtC,SAAS,EAAE,KAAK,CAAC,SAAS,EAC1B,SAAS,EAAE,KAAK,CAAC,SAAS,EAC1B,eAAe,EAAE,KAAK,CAAC,eAAe,GACtC,CACH,CACS,CACb,CAAC;AACJ,CAAC;AAED,8BAA8B;AAC9B,SAAS,QAAQ,CACf,KAAiE;IAEjE,MAAM,EAAE,eAAe,EAAE,eAAe,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IAEzE,MAAM,UAAU,GAAG,eAAe,CAAC,IAAI,CACrC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,CACjE,CAAC;IAEF,OAAO,CACL,oBAAC,YAAY;QACX,oBAAC,kBAAkB,QAChB,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CACzB;QACrB,oBAAC,iBAAiB,QACf,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;YAC9B,OAAO,CACL,oBAAC,gBAAgB,IACf,QAAQ,EAAE,GAAG,EAAE,CACb,eAAe,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,SAAS,CAAC,EAErD,GAAG,EAAE,QAAQ,CAAC,KAAK;gBAElB,QAAQ,CAAC,IAAI;gBACb,UAAU,KAAK,QAAQ,IAAI,oBAAC,WAAW,OAAG,CAC1B,CACpB,CAAC;QACJ,CAAC,CAAC,CACgB,CACP,CAChB,CAAC;AACJ,CAAC;AAED,eAAe,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { styled } from 'linaria/react';
|
|
3
|
+
import SortOrder from './SortOrder';
|
|
4
|
+
import { ListItem } from '@jetshop/ui/Select/Components';
|
|
5
|
+
import { ReactComponent as Check } from '@jetshop/ui/svg/Check.svg';
|
|
6
|
+
const StyledListItem = styled(ListItem) `
|
|
7
|
+
padding: 0 1rem;
|
|
8
|
+
`;
|
|
9
|
+
const SortOrderList = ({ sortOrders }) => {
|
|
10
|
+
return (React.createElement(SortOrder, { sortOrders: sortOrders }, ({ changeSortOrder, direction, sortOrder, mappedSortOrder }) => mappedSortOrder.map(order => (React.createElement(StyledListItem, { type: "button", key: `${order.value}-${order.direction}`, onClick: () => {
|
|
11
|
+
changeSortOrder(order.value, order.direction);
|
|
12
|
+
} },
|
|
13
|
+
order.text,
|
|
14
|
+
direction === order.direction && sortOrder === order.value && (React.createElement(Check, null)))))));
|
|
15
|
+
};
|
|
16
|
+
export default SortOrderList;
|
|
17
|
+
//# sourceMappingURL=SortOrderList.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SortOrderList.js","sourceRoot":"","sources":["SortOrderList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC,OAAO,SAAS,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACzD,OAAO,EAAE,cAAc,IAAI,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAMpE,MAAM,cAAc,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAA;;CAEtC,CAAC;AAEF,MAAM,aAAa,GAAkC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE;IACtE,OAAO,CACL,oBAAC,SAAS,IAAC,UAAU,EAAE,UAAU,IAC9B,CAAC,EAAE,eAAe,EAAE,SAAS,EAAE,SAAS,EAAE,eAAe,EAAE,EAAE,EAAE,CAC9D,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAC3B,oBAAC,cAAc,IACb,IAAI,EAAC,QAAQ,EACb,GAAG,EAAE,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,SAAS,EAAE,EACxC,OAAO,EAAE,GAAG,EAAE;YACZ,eAAe,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QAChD,CAAC;QAEA,KAAK,CAAC,IAAI;QACV,SAAS,KAAK,KAAK,CAAC,SAAS,IAAI,SAAS,KAAK,KAAK,CAAC,KAAK,IAAI,CAC7D,oBAAC,KAAK,OAAG,CACV,CACc,CAClB,CAAC,CAEM,CACb,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,aAAa,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Product, StartPage } from '@jetshop/core/types';
|
|
2
|
+
import { Components } from '../ContentRenderer';
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import { QueryResult } from '@apollo/client';
|
|
5
|
+
type ProductGrid = React.FC<{
|
|
6
|
+
products: Product[];
|
|
7
|
+
}>;
|
|
8
|
+
export interface StartPageProviderProps {
|
|
9
|
+
result: QueryResult<{
|
|
10
|
+
startPage: StartPage;
|
|
11
|
+
}, any>;
|
|
12
|
+
LoadingPage?: React.FC<any>;
|
|
13
|
+
ProductGrid?: ProductGrid;
|
|
14
|
+
startPageComponents: Components;
|
|
15
|
+
}
|
|
16
|
+
declare const StartPageRenderer: ({ result, ProductGrid, startPageComponents: components, LoadingPage }: StartPageProviderProps) => JSX.Element;
|
|
17
|
+
export default StartPageRenderer;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import Head from '@jetshop/core/components/Head';
|
|
2
|
+
import { ContentRenderer } from '../ContentRenderer';
|
|
3
|
+
import React from 'react';
|
|
4
|
+
function LegacyStartPage({ items, components, ProductGrid }) {
|
|
5
|
+
if (!items || items.length < 1)
|
|
6
|
+
return null;
|
|
7
|
+
const numberOfRows = items[items.length - 1].row;
|
|
8
|
+
return (React.createElement(React.Fragment, null, [...Array(numberOfRows)].map((_, index) => {
|
|
9
|
+
const rowNumber = index + 1;
|
|
10
|
+
const rowItems = items.filter((item) => item.row === rowNumber);
|
|
11
|
+
if (rowItems[0]) {
|
|
12
|
+
const firstItem = rowItems[0].item;
|
|
13
|
+
if (rowItems.length > 0 && firstItem.content) {
|
|
14
|
+
return rowItems.map(({ item }, itemIndex) => {
|
|
15
|
+
if (item.content) {
|
|
16
|
+
let content = null;
|
|
17
|
+
try {
|
|
18
|
+
content = JSON.parse(item.content);
|
|
19
|
+
}
|
|
20
|
+
catch (error) {
|
|
21
|
+
console.warn(`Unable to parse JSON content for ${item.name}`);
|
|
22
|
+
}
|
|
23
|
+
if (content) {
|
|
24
|
+
const Component = components[(content.componentName || item.name).toUpperCase()];
|
|
25
|
+
return Component ? (React.createElement(Component, Object.assign({ key: itemIndex }, content, { imageSrc: item.image &&
|
|
26
|
+
item.image.url }))) : null;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
else if (firstItem.articleNumber) {
|
|
32
|
+
const products = rowItems.map(({ item }) => item);
|
|
33
|
+
return React.createElement(ProductGrid, { key: index, products: products });
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
else
|
|
37
|
+
return null;
|
|
38
|
+
})));
|
|
39
|
+
}
|
|
40
|
+
const StartPageRenderer = ({ result, ProductGrid, startPageComponents: components, LoadingPage }) => {
|
|
41
|
+
var _a, _b, _c;
|
|
42
|
+
const data = result === null || result === void 0 ? void 0 : result.data;
|
|
43
|
+
if (!(data === null || data === void 0 ? void 0 : data.startPage)) {
|
|
44
|
+
return LoadingPage ? React.createElement(LoadingPage, null) : null;
|
|
45
|
+
}
|
|
46
|
+
const items = (_a = data.startPage.data) === null || _a === void 0 ? void 0 : _a.items;
|
|
47
|
+
return (React.createElement(React.Fragment, null,
|
|
48
|
+
React.createElement(Head, { data: data.startPage, route: (_b = data === null || data === void 0 ? void 0 : data.startPage) === null || _b === void 0 ? void 0 : _b.primaryRoute }),
|
|
49
|
+
items && (items === null || items === void 0 ? void 0 : items.length) > 0 ? (React.createElement(ContentRenderer, { items: items, components: components })) : (React.createElement(LegacyStartPage, { items: (_c = data.startPage) === null || _c === void 0 ? void 0 : _c.items, components: components, ProductGrid: ProductGrid }))));
|
|
50
|
+
};
|
|
51
|
+
export default StartPageRenderer;
|
|
52
|
+
//# sourceMappingURL=StartPageRenderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StartPageRenderer.js","sourceRoot":"","sources":["StartPageRenderer.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from './StartPageRenderer';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Maybe, Product, ProductVariant, Scalars } from '@jetshop/core/types';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
export interface StockStatusContainerRender {
|
|
4
|
+
status: Maybe<'inStock' | 'outOfStock' | 'notifyWhenBack'>;
|
|
5
|
+
text: Maybe<string>;
|
|
6
|
+
maxOrderQuantity?: number | null;
|
|
7
|
+
stockDate?: Scalars['DateTime'];
|
|
8
|
+
}
|
|
9
|
+
export interface StockStatusContainerProps {
|
|
10
|
+
children(args: StockStatusContainerRender): React.ReactNode;
|
|
11
|
+
product: Product;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* deprectaed
|
|
15
|
+
* @deprecated deprecated in favor of jetshop/core/hooks/useStockStatus
|
|
16
|
+
* @returns StockStatusContainerRender
|
|
17
|
+
*/
|
|
18
|
+
declare function StockStatusContainer({ product, children }: StockStatusContainerProps): React.ReactNode;
|
|
19
|
+
declare function useStockStatus(product: Product | ProductVariant): StockStatusContainerRender;
|
|
20
|
+
export default StockStatusContainer;
|
|
21
|
+
export { useStockStatus };
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
function getStatus(statusObject) {
|
|
2
|
+
return statusObject.buyable
|
|
3
|
+
? 'inStock'
|
|
4
|
+
: statusObject.stockNotificationEnabled
|
|
5
|
+
? 'notifyWhenBack'
|
|
6
|
+
: 'outOfStock';
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* deprectaed
|
|
10
|
+
* @deprecated deprecated in favor of jetshop/core/hooks/useStockStatus
|
|
11
|
+
* @returns StockStatusContainerRender
|
|
12
|
+
*/
|
|
13
|
+
function StockStatusContainer({ product, children }) {
|
|
14
|
+
const { status, text, maxOrderQuantity, stockDate } = useStockStatus(product);
|
|
15
|
+
if (!status)
|
|
16
|
+
return null;
|
|
17
|
+
// Mimic fn-as-child pattern
|
|
18
|
+
return children({
|
|
19
|
+
status,
|
|
20
|
+
text,
|
|
21
|
+
maxOrderQuantity,
|
|
22
|
+
stockDate
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
function useStockStatus(product) {
|
|
26
|
+
const stockStatus = product === null || product === void 0 ? void 0 : product.stockStatus;
|
|
27
|
+
if (!stockStatus) {
|
|
28
|
+
console.warn('The provided product does not have a stockStatus');
|
|
29
|
+
return {
|
|
30
|
+
status: null,
|
|
31
|
+
text: null,
|
|
32
|
+
maxOrderQuantity: null,
|
|
33
|
+
stockDate: null
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
return {
|
|
37
|
+
status: getStatus(stockStatus),
|
|
38
|
+
text: stockStatus.text || null,
|
|
39
|
+
maxOrderQuantity: stockStatus.maxOrderQuantity,
|
|
40
|
+
stockDate: stockStatus.stockDate
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
export default StockStatusContainer;
|
|
44
|
+
export { useStockStatus };
|
|
45
|
+
//# sourceMappingURL=StockStatusContainer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StockStatusContainer.js","sourceRoot":"","sources":["StockStatusContainer.tsx"],"names":[],"mappings":"AAoBA,SAAS,SAAS,CAChB,YAAyB;IAEzB,OAAO,YAAY,CAAC,OAAO;QACzB,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,YAAY,CAAC,wBAAwB;YACvC,CAAC,CAAC,gBAAgB;YAClB,CAAC,CAAC,YAAY,CAAC;AACnB,CAAC;AAED;;;;GAIG;AACH,SAAS,oBAAoB,CAAC,EAC5B,OAAO,EACP,QAAQ,EACkB;IAC1B,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IAE9E,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAEzB,4BAA4B;IAC5B,OAAO,QAAQ,CAAC;QACd,MAAM;QACN,IAAI;QACJ,gBAAgB;QAChB,SAAS;KACV,CAAC,CAAC;AACL,CAAC;AAED,SAAS,cAAc,CACrB,OAAiC;IAEjC,MAAM,WAAW,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,CAAC;IAEzC,IAAI,CAAC,WAAW,EAAE;QAChB,OAAO,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;QACjE,OAAO;YACL,MAAM,EAAE,IAAI;YACZ,IAAI,EAAE,IAAI;YACV,gBAAgB,EAAE,IAAI;YACtB,SAAS,EAAE,IAAI;SAChB,CAAC;KACH;IAED,OAAO;QACL,MAAM,EAAE,SAAS,CAAC,WAAW,CAAC;QAC9B,IAAI,EAAE,WAAW,CAAC,IAAI,IAAI,IAAI;QAC9B,gBAAgB,EAAE,WAAW,CAAC,gBAAgB;QAC9C,SAAS,EAAE,WAAW,CAAC,SAAS;KACjC,CAAC;AACJ,CAAC;AAED,eAAe,oBAAoB,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,CAAC"}
|