@riosst100/pwa-marketplace 1.2.7 → 1.2.9
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/package.json +1 -1
- package/src/Utilities/graphQL.js +76 -76
- package/src/componentOverrideMapping.js +17 -17
- package/src/components/BecomeSeller/becomeSeller.js +335 -335
- package/src/components/BecomeSeller/becomeSeller.module.css +46 -46
- package/src/components/BecomeSellerLink/becomeSellerLink.js +52 -52
- package/src/components/BecomeSellerLink/becomeSellerLink.module.css +12 -12
- package/src/components/BecomeSellerPage/becomeSellerPage.js +45 -45
- package/src/components/BecomeSellerPage/becomeSellerPage.module.css +21 -21
- package/src/components/Filter/index.js +53 -53
- package/src/components/Header/becomeSellerLink.js +28 -28
- package/src/components/Header/becomeSellerLink.module.css +12 -12
- package/src/components/Header/websiteSwitcher.js +109 -109
- package/src/components/OperatingHours/index.js +1 -0
- package/src/components/OperatingHours/operatingHours.js +35 -0
- package/src/components/Pagination/index.js +49 -49
- package/src/components/PhoneTextInput/phoneTextInput.module.css +21 -21
- package/src/components/ProductItem/index.js +50 -50
- package/src/components/Search/index.js +16 -16
- package/src/components/Seller/index.js +1 -1
- package/src/components/Seller/seller.js +42 -249
- package/src/components/Seller/sellerAddressCard.js +48 -0
- package/src/components/SellerAccountPage/sellerAccountPage.js +110 -110
- package/src/components/SellerAccountPage/sellerAccountPage.module.css +55 -55
- package/src/components/SellerCountry/sellerCountry.gql.js +11 -11
- package/src/components/SellerDetail/index.js +1 -0
- package/src/components/SellerDetail/sellerDetail.js +166 -0
- package/src/components/SellerInformation/index.js +1 -1
- package/src/components/SellerInformation/sellerInformation.js +86 -90
- package/src/components/SellerLocation/index.js +1 -1
- package/src/components/SellerLocation/sellerLocation.js +19 -19
- package/src/components/SellerLocation/sellerLocationItem.js +27 -27
- package/src/components/SellerPage/sellerPage.js +9 -9
- package/src/components/SellerProducts/sellerProducts.js +46 -46
- package/src/components/SellerReview/index.js +1 -1
- package/src/components/SellerReview/sellerReview.js +143 -143
- package/src/components/SellerReviewItem/sellerReviewItem.js +60 -60
- package/src/components/SellerVerification/sellerVerification.js +198 -198
- package/src/components/SellerVerification/sellerVerification.module.css +47 -47
- package/src/components/SellerVerificationPage/sellerVerificationPage.js +43 -43
- package/src/components/SellerVerificationPage/sellerVerificationPage.module.css +21 -21
- package/src/components/SortBy/index.js +24 -24
- package/src/components/WebsiteSwitcher/websiteSwitcher.js +109 -109
- package/src/components/commons/Slider/index.js +13 -13
- package/src/components/commons/Tabs/index.js +64 -64
- package/src/index.js +6 -6
- package/src/intercept.js +113 -113
- package/src/moduleOverrideWebpackPlugin.js +70 -70
- package/src/overwrites/peregrine/lib/store/actions/user/asyncActions.js +96 -96
- package/src/overwrites/peregrine/lib/talons/AccountMenu/useAccountMenuItems.js +74 -74
- package/src/overwrites/peregrine/lib/talons/Adapter/useAdapter.js +208 -208
- package/src/overwrites/peregrine/lib/talons/Header/storeSwitcher.gql.js +45 -45
- package/src/overwrites/peregrine/lib/talons/Header/useStoreSwitcher.js +204 -204
- package/src/overwrites/peregrine/lib/talons/Region/useRegion.js +102 -102
- package/src/overwrites/peregrine/lib/talons/SignIn/signIn.gql.js +56 -56
- package/src/overwrites/peregrine/lib/talons/SignIn/useSignIn.js +226 -226
- package/src/overwrites/peregrine/lib/util/deriveErrorMessage.js +34 -34
- package/src/overwrites/pwa-buildpack/lib/queries/getAvailableStoresConfigData.graphql +11 -11
- package/src/overwrites/venia-ui/lib/components/Adapter/adapter.js +112 -112
- package/src/overwrites/venia-ui/lib/components/Header/header.js +130 -130
- package/src/overwrites/venia-ui/lib/components/Header/storeSwitcher.js +105 -105
- package/src/overwrites/venia-ui/lib/components/Header/switcherItem.js +47 -47
- package/src/overwrites/venia-ui/lib/components/MegaMenu/__tests__/MegaMenu.spec.js +91 -91
- package/src/overwrites/venia-ui/lib/components/MegaMenu/__tests__/MegaMenuItem.spec.js +123 -123
- package/src/overwrites/venia-ui/lib/components/MegaMenu/__tests__/Submenu.spec.js +61 -61
- package/src/overwrites/venia-ui/lib/components/MegaMenu/__tests__/SubmenuColumn.spec.js +50 -50
- package/src/overwrites/venia-ui/lib/components/MegaMenu/__tests__/__snapshots__/MegaMenu.spec.js.snap +114 -114
- package/src/overwrites/venia-ui/lib/components/MegaMenu/__tests__/__snapshots__/MegaMenuItem.spec.js.snap +71 -71
- package/src/overwrites/venia-ui/lib/components/MegaMenu/__tests__/__snapshots__/Submenu.spec.js.snap +59 -59
- package/src/overwrites/venia-ui/lib/components/MegaMenu/__tests__/__snapshots__/SubmenuColumn.spec.js.snap +34 -34
- package/src/overwrites/venia-ui/lib/components/MegaMenu/index.js +1 -1
- package/src/overwrites/venia-ui/lib/components/MegaMenu/megaMenu.js +90 -90
- package/src/overwrites/venia-ui/lib/components/MegaMenu/megaMenu.module.css +12 -12
- package/src/overwrites/venia-ui/lib/components/MegaMenu/megaMenuItem.js +156 -156
- package/src/overwrites/venia-ui/lib/components/MegaMenu/megaMenuItem.module.css +30 -30
- package/src/overwrites/venia-ui/lib/components/MegaMenu/submenu.js +89 -89
- package/src/overwrites/venia-ui/lib/components/MegaMenu/submenu.module.css +42 -42
- package/src/overwrites/venia-ui/lib/components/MegaMenu/submenuColumn.js +99 -99
- package/src/overwrites/venia-ui/lib/components/MegaMenu/submenuColumn.module.css +28 -28
- package/src/overwrites/venia-ui/lib/components/SearchBar/__stories__/searchBar.js +11 -11
- package/src/overwrites/venia-ui/lib/components/SearchBar/__tests__/__snapshots__/searchField.spec.js.snap +72 -72
- package/src/overwrites/venia-ui/lib/components/SearchBar/__tests__/__snapshots__/suggestedCategories.spec.js.snap +30 -30
- package/src/overwrites/venia-ui/lib/components/SearchBar/__tests__/__snapshots__/suggestedProduct.spec.js.snap +69 -69
- package/src/overwrites/venia-ui/lib/components/SearchBar/__tests__/__snapshots__/suggestedProducts.spec.js.snap +7 -7
- package/src/overwrites/venia-ui/lib/components/SearchBar/__tests__/__snapshots__/suggestions.spec.js.snap +12 -12
- package/src/overwrites/venia-ui/lib/components/SearchBar/__tests__/autocomplete.spec.js +52 -52
- package/src/overwrites/venia-ui/lib/components/SearchBar/__tests__/searchBar.spec.js +82 -82
- package/src/overwrites/venia-ui/lib/components/SearchBar/__tests__/searchField.spec.js +87 -87
- package/src/overwrites/venia-ui/lib/components/SearchBar/__tests__/suggestedCategories.spec.js +45 -45
- package/src/overwrites/venia-ui/lib/components/SearchBar/__tests__/suggestedProduct.spec.js +43 -43
- package/src/overwrites/venia-ui/lib/components/SearchBar/__tests__/suggestedProducts.spec.js +45 -45
- package/src/overwrites/venia-ui/lib/components/SearchBar/__tests__/suggestions.spec.js +110 -110
- package/src/overwrites/venia-ui/lib/components/SearchBar/autocomplete.js +172 -172
- package/src/overwrites/venia-ui/lib/components/SearchBar/autocomplete.module.css +62 -62
- package/src/overwrites/venia-ui/lib/components/SearchBar/index.js +1 -1
- package/src/overwrites/venia-ui/lib/components/SearchBar/searchBar.js +74 -74
- package/src/overwrites/venia-ui/lib/components/SearchBar/searchBar.module.css +49 -49
- package/src/overwrites/venia-ui/lib/components/SearchBar/searchField.js +40 -40
- package/src/overwrites/venia-ui/lib/components/SearchBar/suggestedCategories.js +48 -48
- package/src/overwrites/venia-ui/lib/components/SearchBar/suggestedCategories.module.css +13 -13
- package/src/overwrites/venia-ui/lib/components/SearchBar/suggestedCategory.js +49 -49
- package/src/overwrites/venia-ui/lib/components/SearchBar/suggestedProduct.js +97 -97
- package/src/overwrites/venia-ui/lib/components/SearchBar/suggestedProduct.module.css +24 -24
- package/src/overwrites/venia-ui/lib/components/SearchBar/suggestedProducts.js +43 -43
- package/src/overwrites/venia-ui/lib/components/SearchBar/suggestedProducts.module.css +13 -13
- package/src/overwrites/venia-ui/lib/components/SearchBar/suggestions.js +75 -75
- package/src/overwrites/venia-ui/lib/components/SearchBar/suggestions.module.css +6 -6
- package/src/overwrites/venia-ui/lib/components/StoreCodeRoute/storeCodeRoute.js +75 -75
- package/src/overwrites/venia-ui/lib/targets/venia-ui-intercept.js +70 -70
- package/src/queries/getAvailableWebsitesConfigData.graphql +14 -14
- package/src/queries/index.js +30 -30
- package/src/talons/BecomeSeller/becomeSeller.gql.js +45 -45
- package/src/talons/BecomeSeller/useBecomeSeller.js +145 -145
- package/src/talons/BecomeSellerLink/useBecomeSellerLink.js +11 -11
- package/src/talons/BecomeSellerPage/useBecomeSellerPage.js +76 -76
- package/src/talons/Header/useBecomeSellerLink.js +13 -13
- package/src/talons/Header/useWebsiteSwitcher.js +218 -218
- package/src/talons/Seller/seller.gql.js +204 -139
- package/src/talons/Seller/useSeller.js +71 -66
- package/src/talons/SellerAccountPage/useSellerAccountPage.js +174 -174
- package/src/talons/SellerCountry/useSellerCountry.js +25 -25
- package/src/talons/WebsiteByIp/getWebsiteByIp.gql.js +13 -13
- package/src/talons/WebsiteByIp/useWebsiteByIp.js +34 -34
- package/src/talons/WebsiteSwitcher/useWebsiteSwitcher.js +218 -218
- package/src/theme/vars.js +6 -6
- package/src/util/mapSeller.js +7 -7
|
@@ -1,89 +1,89 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import PropTypes from 'prop-types';
|
|
3
|
-
|
|
4
|
-
import { useSubMenu } from '@magento/peregrine/lib/talons/MegaMenu/useSubMenu';
|
|
5
|
-
|
|
6
|
-
import { useStyle } from '@magento/venia-ui/lib/classify';
|
|
7
|
-
import defaultClasses from './submenu.module.css';
|
|
8
|
-
import SubmenuColumn from './submenuColumn';
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* The Submenu component displays submenu in mega menu
|
|
12
|
-
*
|
|
13
|
-
* @param {array} props.items - categories to display
|
|
14
|
-
* @param {int} props.mainNavWidth - width of the main nav. It's used for setting min-width of the submenu
|
|
15
|
-
* @param {function} props.onNavigate - function called when clicking on Link
|
|
16
|
-
*/
|
|
17
|
-
const Submenu = props => {
|
|
18
|
-
const {
|
|
19
|
-
items,
|
|
20
|
-
mainNavWidth,
|
|
21
|
-
isFocused,
|
|
22
|
-
subMenuState,
|
|
23
|
-
handleCloseSubMenu,
|
|
24
|
-
categoryUrlSuffix,
|
|
25
|
-
onNavigate
|
|
26
|
-
} = props;
|
|
27
|
-
const PADDING_OFFSET = 20;
|
|
28
|
-
const classes = useStyle(defaultClasses, props.classes);
|
|
29
|
-
|
|
30
|
-
const talonProps = useSubMenu({
|
|
31
|
-
isFocused,
|
|
32
|
-
subMenuState,
|
|
33
|
-
handleCloseSubMenu
|
|
34
|
-
});
|
|
35
|
-
|
|
36
|
-
const { isSubMenuActive } = talonProps;
|
|
37
|
-
|
|
38
|
-
const subMenuClassname = isSubMenuActive
|
|
39
|
-
? classes.submenu_active
|
|
40
|
-
: classes.submenu_inactive;
|
|
41
|
-
|
|
42
|
-
const subMenus = items.map((category, index) => {
|
|
43
|
-
const keyboardProps =
|
|
44
|
-
index === items.length - 1 ? talonProps.keyboardProps : {};
|
|
45
|
-
return (
|
|
46
|
-
<SubmenuColumn
|
|
47
|
-
index={index}
|
|
48
|
-
keyboardProps={keyboardProps}
|
|
49
|
-
key={category.uid}
|
|
50
|
-
category={category}
|
|
51
|
-
categoryUrlSuffix={categoryUrlSuffix}
|
|
52
|
-
onNavigate={onNavigate}
|
|
53
|
-
handleCloseSubMenu={handleCloseSubMenu}
|
|
54
|
-
/>
|
|
55
|
-
);
|
|
56
|
-
});
|
|
57
|
-
|
|
58
|
-
return (
|
|
59
|
-
<div className={subMenuClassname}>
|
|
60
|
-
<div
|
|
61
|
-
className={classes.submenuItems}
|
|
62
|
-
style={{ minWidth: mainNavWidth + PADDING_OFFSET }}
|
|
63
|
-
>
|
|
64
|
-
{subMenus}
|
|
65
|
-
</div>
|
|
66
|
-
</div>
|
|
67
|
-
);
|
|
68
|
-
};
|
|
69
|
-
|
|
70
|
-
export default Submenu;
|
|
71
|
-
|
|
72
|
-
Submenu.propTypes = {
|
|
73
|
-
items: PropTypes.arrayOf(
|
|
74
|
-
PropTypes.shape({
|
|
75
|
-
children: PropTypes.array.isRequired,
|
|
76
|
-
uid: PropTypes.string.isRequired,
|
|
77
|
-
include_in_menu: PropTypes.number.isRequired,
|
|
78
|
-
isActive: PropTypes.bool.isRequired,
|
|
79
|
-
name: PropTypes.string.isRequired,
|
|
80
|
-
path: PropTypes.array.isRequired,
|
|
81
|
-
position: PropTypes.number.isRequired,
|
|
82
|
-
url_path: PropTypes.string.isRequired
|
|
83
|
-
})
|
|
84
|
-
).isRequired,
|
|
85
|
-
mainNavWidth: PropTypes.number.isRequired,
|
|
86
|
-
categoryUrlSuffix: PropTypes.string,
|
|
87
|
-
onNavigate: PropTypes.func.isRequired,
|
|
88
|
-
handleCloseSubMenu: PropTypes.func.isRequired
|
|
89
|
-
};
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import PropTypes from 'prop-types';
|
|
3
|
+
|
|
4
|
+
import { useSubMenu } from '@magento/peregrine/lib/talons/MegaMenu/useSubMenu';
|
|
5
|
+
|
|
6
|
+
import { useStyle } from '@magento/venia-ui/lib/classify';
|
|
7
|
+
import defaultClasses from './submenu.module.css';
|
|
8
|
+
import SubmenuColumn from './submenuColumn';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* The Submenu component displays submenu in mega menu
|
|
12
|
+
*
|
|
13
|
+
* @param {array} props.items - categories to display
|
|
14
|
+
* @param {int} props.mainNavWidth - width of the main nav. It's used for setting min-width of the submenu
|
|
15
|
+
* @param {function} props.onNavigate - function called when clicking on Link
|
|
16
|
+
*/
|
|
17
|
+
const Submenu = props => {
|
|
18
|
+
const {
|
|
19
|
+
items,
|
|
20
|
+
mainNavWidth,
|
|
21
|
+
isFocused,
|
|
22
|
+
subMenuState,
|
|
23
|
+
handleCloseSubMenu,
|
|
24
|
+
categoryUrlSuffix,
|
|
25
|
+
onNavigate
|
|
26
|
+
} = props;
|
|
27
|
+
const PADDING_OFFSET = 20;
|
|
28
|
+
const classes = useStyle(defaultClasses, props.classes);
|
|
29
|
+
|
|
30
|
+
const talonProps = useSubMenu({
|
|
31
|
+
isFocused,
|
|
32
|
+
subMenuState,
|
|
33
|
+
handleCloseSubMenu
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
const { isSubMenuActive } = talonProps;
|
|
37
|
+
|
|
38
|
+
const subMenuClassname = isSubMenuActive
|
|
39
|
+
? classes.submenu_active
|
|
40
|
+
: classes.submenu_inactive;
|
|
41
|
+
|
|
42
|
+
const subMenus = items.map((category, index) => {
|
|
43
|
+
const keyboardProps =
|
|
44
|
+
index === items.length - 1 ? talonProps.keyboardProps : {};
|
|
45
|
+
return (
|
|
46
|
+
<SubmenuColumn
|
|
47
|
+
index={index}
|
|
48
|
+
keyboardProps={keyboardProps}
|
|
49
|
+
key={category.uid}
|
|
50
|
+
category={category}
|
|
51
|
+
categoryUrlSuffix={categoryUrlSuffix}
|
|
52
|
+
onNavigate={onNavigate}
|
|
53
|
+
handleCloseSubMenu={handleCloseSubMenu}
|
|
54
|
+
/>
|
|
55
|
+
);
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
return (
|
|
59
|
+
<div className={subMenuClassname}>
|
|
60
|
+
<div
|
|
61
|
+
className={classes.submenuItems}
|
|
62
|
+
style={{ minWidth: mainNavWidth + PADDING_OFFSET }}
|
|
63
|
+
>
|
|
64
|
+
{subMenus}
|
|
65
|
+
</div>
|
|
66
|
+
</div>
|
|
67
|
+
);
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
export default Submenu;
|
|
71
|
+
|
|
72
|
+
Submenu.propTypes = {
|
|
73
|
+
items: PropTypes.arrayOf(
|
|
74
|
+
PropTypes.shape({
|
|
75
|
+
children: PropTypes.array.isRequired,
|
|
76
|
+
uid: PropTypes.string.isRequired,
|
|
77
|
+
include_in_menu: PropTypes.number.isRequired,
|
|
78
|
+
isActive: PropTypes.bool.isRequired,
|
|
79
|
+
name: PropTypes.string.isRequired,
|
|
80
|
+
path: PropTypes.array.isRequired,
|
|
81
|
+
position: PropTypes.number.isRequired,
|
|
82
|
+
url_path: PropTypes.string.isRequired
|
|
83
|
+
})
|
|
84
|
+
).isRequired,
|
|
85
|
+
mainNavWidth: PropTypes.number.isRequired,
|
|
86
|
+
categoryUrlSuffix: PropTypes.string,
|
|
87
|
+
onNavigate: PropTypes.func.isRequired,
|
|
88
|
+
handleCloseSubMenu: PropTypes.func.isRequired
|
|
89
|
+
};
|
|
@@ -1,43 +1,43 @@
|
|
|
1
|
-
.submenu {
|
|
2
|
-
composes: absolute from global;
|
|
3
|
-
composes: bg-white from global;
|
|
4
|
-
composes: flex-wrap from global;
|
|
5
|
-
composes: justify-between from global;
|
|
6
|
-
composes: left-0 from global;
|
|
7
|
-
composes: px-3 from global;
|
|
8
|
-
composes: py-5 from global;
|
|
9
|
-
composes: right-0 from global;
|
|
10
|
-
top: 139px;
|
|
11
|
-
box-shadow: 0 3px rgb(var(--venia-global-color-gray-100));
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
/* TODO @TW: cannot compose */
|
|
15
|
-
.submenu::before {
|
|
16
|
-
box-shadow: inset 0 2px rgb(var(--venia-global-color-gray-100));
|
|
17
|
-
content: '';
|
|
18
|
-
height: 1px;
|
|
19
|
-
left: 0;
|
|
20
|
-
pointer-events: none;
|
|
21
|
-
position: absolute;
|
|
22
|
-
right: 0;
|
|
23
|
-
top: 0;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
.submenu_inactive {
|
|
27
|
-
composes: submenu;
|
|
28
|
-
composes: hidden from global;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
.submenu_active {
|
|
32
|
-
composes: submenu;
|
|
33
|
-
composes: flex from global;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
.submenuItems {
|
|
37
|
-
composes: flex from global;
|
|
38
|
-
composes: flex-wrap from global;
|
|
39
|
-
composes: justify-between from global;
|
|
40
|
-
composes: max-w-site from global;
|
|
41
|
-
composes: ml-auto from global;
|
|
42
|
-
composes: mr-auto from global;
|
|
1
|
+
.submenu {
|
|
2
|
+
composes: absolute from global;
|
|
3
|
+
composes: bg-white from global;
|
|
4
|
+
composes: flex-wrap from global;
|
|
5
|
+
composes: justify-between from global;
|
|
6
|
+
composes: left-0 from global;
|
|
7
|
+
composes: px-3 from global;
|
|
8
|
+
composes: py-5 from global;
|
|
9
|
+
composes: right-0 from global;
|
|
10
|
+
top: 139px;
|
|
11
|
+
box-shadow: 0 3px rgb(var(--venia-global-color-gray-100));
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
/* TODO @TW: cannot compose */
|
|
15
|
+
.submenu::before {
|
|
16
|
+
box-shadow: inset 0 2px rgb(var(--venia-global-color-gray-100));
|
|
17
|
+
content: '';
|
|
18
|
+
height: 1px;
|
|
19
|
+
left: 0;
|
|
20
|
+
pointer-events: none;
|
|
21
|
+
position: absolute;
|
|
22
|
+
right: 0;
|
|
23
|
+
top: 0;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.submenu_inactive {
|
|
27
|
+
composes: submenu;
|
|
28
|
+
composes: hidden from global;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.submenu_active {
|
|
32
|
+
composes: submenu;
|
|
33
|
+
composes: flex from global;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
.submenuItems {
|
|
37
|
+
composes: flex from global;
|
|
38
|
+
composes: flex-wrap from global;
|
|
39
|
+
composes: justify-between from global;
|
|
40
|
+
composes: max-w-site from global;
|
|
41
|
+
composes: ml-auto from global;
|
|
42
|
+
composes: mr-auto from global;
|
|
43
43
|
}
|
|
@@ -1,99 +1,99 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { Link } from 'react-router-dom';
|
|
3
|
-
|
|
4
|
-
import resourceUrl from '@magento/peregrine/lib/util/makeUrl';
|
|
5
|
-
|
|
6
|
-
import { useStyle } from '@magento/venia-ui/lib/classify';
|
|
7
|
-
import defaultClasses from './submenuColumn.module.css';
|
|
8
|
-
import PropTypes from 'prop-types';
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* The SubmenuColumn component displays columns with categories in submenu
|
|
12
|
-
*
|
|
13
|
-
* @param {MegaMenuCategory} props.category
|
|
14
|
-
* @param {function} props.onNavigate - function called when clicking on Link
|
|
15
|
-
*/
|
|
16
|
-
const SubmenuColumn = props => {
|
|
17
|
-
const {
|
|
18
|
-
category,
|
|
19
|
-
categoryUrlSuffix,
|
|
20
|
-
onNavigate,
|
|
21
|
-
handleCloseSubMenu
|
|
22
|
-
} = props;
|
|
23
|
-
const classes = useStyle(defaultClasses, props.classes);
|
|
24
|
-
|
|
25
|
-
const categoryUrl = resourceUrl(
|
|
26
|
-
`/${category.url_path}${categoryUrlSuffix || ''}`
|
|
27
|
-
);
|
|
28
|
-
let children = null;
|
|
29
|
-
|
|
30
|
-
if (category.children.length) {
|
|
31
|
-
const childrenItems = category.children.map((subCategory, index) => {
|
|
32
|
-
const { url_path, isActive, name } = subCategory;
|
|
33
|
-
const categoryUrl = resourceUrl(
|
|
34
|
-
`/${url_path}${categoryUrlSuffix || ''}`
|
|
35
|
-
);
|
|
36
|
-
|
|
37
|
-
// setting keyboardProps if it is last child of that category
|
|
38
|
-
const keyboardProps =
|
|
39
|
-
index === category.children.length - 1
|
|
40
|
-
? props.keyboardProps
|
|
41
|
-
: {};
|
|
42
|
-
|
|
43
|
-
return (
|
|
44
|
-
<li key={index} className={classes.submenuChildItem}>
|
|
45
|
-
<Link
|
|
46
|
-
{...keyboardProps}
|
|
47
|
-
className={isActive ? classes.linkActive : classes.link}
|
|
48
|
-
data-cy="MegaMenu-SubmenuColumn-link"
|
|
49
|
-
to={categoryUrl}
|
|
50
|
-
onClick={onNavigate}
|
|
51
|
-
>
|
|
52
|
-
{name}
|
|
53
|
-
</Link>
|
|
54
|
-
</li>
|
|
55
|
-
);
|
|
56
|
-
});
|
|
57
|
-
|
|
58
|
-
children = <ul className={classes.submenuChild}>{childrenItems}</ul>;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
// setting keyboardProps if category does not have any sub-category
|
|
62
|
-
const keyboardProps = category.children.length ? {} : props.keyboardProps;
|
|
63
|
-
|
|
64
|
-
return (
|
|
65
|
-
<div className={classes.submenuColumn}>
|
|
66
|
-
<Link
|
|
67
|
-
{...keyboardProps}
|
|
68
|
-
className={classes.link}
|
|
69
|
-
data-cy="MegaMenu-SubmenuColumn-link"
|
|
70
|
-
to={categoryUrl}
|
|
71
|
-
onClick={() => {
|
|
72
|
-
handleCloseSubMenu();
|
|
73
|
-
onNavigate();
|
|
74
|
-
}}
|
|
75
|
-
>
|
|
76
|
-
<span className={classes.heading}>{category.name}</span>
|
|
77
|
-
</Link>
|
|
78
|
-
{children}
|
|
79
|
-
</div>
|
|
80
|
-
);
|
|
81
|
-
};
|
|
82
|
-
|
|
83
|
-
export default SubmenuColumn;
|
|
84
|
-
|
|
85
|
-
SubmenuColumn.propTypes = {
|
|
86
|
-
category: PropTypes.shape({
|
|
87
|
-
children: PropTypes.array,
|
|
88
|
-
uid: PropTypes.string.isRequired,
|
|
89
|
-
include_in_menu: PropTypes.number,
|
|
90
|
-
isActive: PropTypes.bool.isRequired,
|
|
91
|
-
name: PropTypes.string.isRequired,
|
|
92
|
-
path: PropTypes.array.isRequired,
|
|
93
|
-
position: PropTypes.number.isRequired,
|
|
94
|
-
url_path: PropTypes.string.isRequired
|
|
95
|
-
}).isRequired,
|
|
96
|
-
categoryUrlSuffix: PropTypes.string,
|
|
97
|
-
onNavigate: PropTypes.func.isRequired,
|
|
98
|
-
handleCloseSubMenu: PropTypes.func.isRequired
|
|
99
|
-
};
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Link } from 'react-router-dom';
|
|
3
|
+
|
|
4
|
+
import resourceUrl from '@magento/peregrine/lib/util/makeUrl';
|
|
5
|
+
|
|
6
|
+
import { useStyle } from '@magento/venia-ui/lib/classify';
|
|
7
|
+
import defaultClasses from './submenuColumn.module.css';
|
|
8
|
+
import PropTypes from 'prop-types';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* The SubmenuColumn component displays columns with categories in submenu
|
|
12
|
+
*
|
|
13
|
+
* @param {MegaMenuCategory} props.category
|
|
14
|
+
* @param {function} props.onNavigate - function called when clicking on Link
|
|
15
|
+
*/
|
|
16
|
+
const SubmenuColumn = props => {
|
|
17
|
+
const {
|
|
18
|
+
category,
|
|
19
|
+
categoryUrlSuffix,
|
|
20
|
+
onNavigate,
|
|
21
|
+
handleCloseSubMenu
|
|
22
|
+
} = props;
|
|
23
|
+
const classes = useStyle(defaultClasses, props.classes);
|
|
24
|
+
|
|
25
|
+
const categoryUrl = resourceUrl(
|
|
26
|
+
`/${category.url_path}${categoryUrlSuffix || ''}`
|
|
27
|
+
);
|
|
28
|
+
let children = null;
|
|
29
|
+
|
|
30
|
+
if (category.children.length) {
|
|
31
|
+
const childrenItems = category.children.map((subCategory, index) => {
|
|
32
|
+
const { url_path, isActive, name } = subCategory;
|
|
33
|
+
const categoryUrl = resourceUrl(
|
|
34
|
+
`/${url_path}${categoryUrlSuffix || ''}`
|
|
35
|
+
);
|
|
36
|
+
|
|
37
|
+
// setting keyboardProps if it is last child of that category
|
|
38
|
+
const keyboardProps =
|
|
39
|
+
index === category.children.length - 1
|
|
40
|
+
? props.keyboardProps
|
|
41
|
+
: {};
|
|
42
|
+
|
|
43
|
+
return (
|
|
44
|
+
<li key={index} className={classes.submenuChildItem}>
|
|
45
|
+
<Link
|
|
46
|
+
{...keyboardProps}
|
|
47
|
+
className={isActive ? classes.linkActive : classes.link}
|
|
48
|
+
data-cy="MegaMenu-SubmenuColumn-link"
|
|
49
|
+
to={categoryUrl}
|
|
50
|
+
onClick={onNavigate}
|
|
51
|
+
>
|
|
52
|
+
{name}
|
|
53
|
+
</Link>
|
|
54
|
+
</li>
|
|
55
|
+
);
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
children = <ul className={classes.submenuChild}>{childrenItems}</ul>;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
// setting keyboardProps if category does not have any sub-category
|
|
62
|
+
const keyboardProps = category.children.length ? {} : props.keyboardProps;
|
|
63
|
+
|
|
64
|
+
return (
|
|
65
|
+
<div className={classes.submenuColumn}>
|
|
66
|
+
<Link
|
|
67
|
+
{...keyboardProps}
|
|
68
|
+
className={classes.link}
|
|
69
|
+
data-cy="MegaMenu-SubmenuColumn-link"
|
|
70
|
+
to={categoryUrl}
|
|
71
|
+
onClick={() => {
|
|
72
|
+
handleCloseSubMenu();
|
|
73
|
+
onNavigate();
|
|
74
|
+
}}
|
|
75
|
+
>
|
|
76
|
+
<span className={classes.heading}>{category.name}</span>
|
|
77
|
+
</Link>
|
|
78
|
+
{children}
|
|
79
|
+
</div>
|
|
80
|
+
);
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
export default SubmenuColumn;
|
|
84
|
+
|
|
85
|
+
SubmenuColumn.propTypes = {
|
|
86
|
+
category: PropTypes.shape({
|
|
87
|
+
children: PropTypes.array,
|
|
88
|
+
uid: PropTypes.string.isRequired,
|
|
89
|
+
include_in_menu: PropTypes.number,
|
|
90
|
+
isActive: PropTypes.bool.isRequired,
|
|
91
|
+
name: PropTypes.string.isRequired,
|
|
92
|
+
path: PropTypes.array.isRequired,
|
|
93
|
+
position: PropTypes.number.isRequired,
|
|
94
|
+
url_path: PropTypes.string.isRequired
|
|
95
|
+
}).isRequired,
|
|
96
|
+
categoryUrlSuffix: PropTypes.string,
|
|
97
|
+
onNavigate: PropTypes.func.isRequired,
|
|
98
|
+
handleCloseSubMenu: PropTypes.func.isRequired
|
|
99
|
+
};
|
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
.submenuColumn {
|
|
2
|
-
composes: max-w-[235px] from global;
|
|
3
|
-
composes: p-5 from global;
|
|
4
|
-
}
|
|
5
|
-
|
|
6
|
-
.heading {
|
|
7
|
-
composes: font-semibold from global;
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
.link {
|
|
11
|
-
composes: whitespace-nowrap from global;
|
|
12
|
-
|
|
13
|
-
composes: focus_underline from global;
|
|
14
|
-
|
|
15
|
-
composes: hover_underline from global;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
.linkActive {
|
|
19
|
-
composes: underline from global;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
.submenuChild {
|
|
23
|
-
composes: mt-5 from global;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
.submenuChildItem {
|
|
27
|
-
composes: mb-3 from global;
|
|
28
|
-
}
|
|
1
|
+
.submenuColumn {
|
|
2
|
+
composes: max-w-[235px] from global;
|
|
3
|
+
composes: p-5 from global;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
.heading {
|
|
7
|
+
composes: font-semibold from global;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.link {
|
|
11
|
+
composes: whitespace-nowrap from global;
|
|
12
|
+
|
|
13
|
+
composes: focus_underline from global;
|
|
14
|
+
|
|
15
|
+
composes: hover_underline from global;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.linkActive {
|
|
19
|
+
composes: underline from global;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.submenuChild {
|
|
23
|
+
composes: mt-5 from global;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.submenuChildItem {
|
|
27
|
+
composes: mb-3 from global;
|
|
28
|
+
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { storiesOf } from '@storybook/react';
|
|
3
|
-
|
|
4
|
-
import SearchBar from '../searchBar';
|
|
5
|
-
import defaultClasses from '../searchBar.module.css';
|
|
6
|
-
|
|
7
|
-
const stories = storiesOf('Components/SearchBar', module);
|
|
8
|
-
|
|
9
|
-
stories.add('Search Bar', () => (
|
|
10
|
-
<SearchBar classes={defaultClasses} isOpen={true} />
|
|
11
|
-
));
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { storiesOf } from '@storybook/react';
|
|
3
|
+
|
|
4
|
+
import SearchBar from '../searchBar';
|
|
5
|
+
import defaultClasses from '../searchBar.module.css';
|
|
6
|
+
|
|
7
|
+
const stories = storiesOf('Components/SearchBar', module);
|
|
8
|
+
|
|
9
|
+
stories.add('Search Bar', () => (
|
|
10
|
+
<SearchBar classes={defaultClasses} isOpen={true} />
|
|
11
|
+
));
|