@riosst100/pwa-marketplace 1.2.6 → 1.2.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (129) hide show
  1. package/.github/workflows/dependabot.yml +28 -28
  2. package/package.json +18 -18
  3. package/src/Utilities/graphQL.js +76 -76
  4. package/src/componentOverrideMapping.js +17 -16
  5. package/src/components/BecomeSeller/becomeSeller.js +335 -335
  6. package/src/components/BecomeSeller/becomeSeller.module.css +46 -46
  7. package/src/components/BecomeSellerLink/becomeSellerLink.js +52 -52
  8. package/src/components/BecomeSellerLink/becomeSellerLink.module.css +12 -12
  9. package/src/components/BecomeSellerPage/becomeSellerPage.js +45 -45
  10. package/src/components/BecomeSellerPage/becomeSellerPage.module.css +21 -21
  11. package/src/components/Filter/index.js +53 -53
  12. package/src/components/Header/becomeSellerLink.js +28 -28
  13. package/src/components/Header/becomeSellerLink.module.css +12 -12
  14. package/src/components/Header/websiteSwitcher.js +109 -109
  15. package/src/components/Pagination/index.js +49 -40
  16. package/src/components/PhoneTextInput/phoneTextInput.module.css +21 -21
  17. package/src/components/ProductItem/index.js +50 -50
  18. package/src/components/Search/index.js +16 -16
  19. package/src/components/Seller/index.js +1 -1
  20. package/src/components/Seller/seller.js +249 -42
  21. package/src/components/SellerAccountPage/sellerAccountPage.js +110 -110
  22. package/src/components/SellerAccountPage/sellerAccountPage.module.css +55 -55
  23. package/src/components/SellerCountry/sellerCountry.gql.js +11 -11
  24. package/src/components/SellerInformation/index.js +1 -1
  25. package/src/components/SellerInformation/sellerInformation.js +90 -84
  26. package/src/components/SellerLocation/index.js +1 -1
  27. package/src/components/SellerLocation/sellerLocation.js +19 -18
  28. package/src/components/SellerLocation/sellerLocationItem.js +27 -25
  29. package/src/components/SellerPage/sellerPage.js +9 -9
  30. package/src/components/SellerProducts/sellerProducts.js +47 -218
  31. package/src/components/SellerReview/index.js +1 -1
  32. package/src/components/SellerReview/sellerReview.js +143 -143
  33. package/src/components/SellerReviewItem/sellerReviewItem.js +60 -60
  34. package/src/components/SellerVerification/sellerVerification.js +198 -198
  35. package/src/components/SellerVerification/sellerVerification.module.css +47 -47
  36. package/src/components/SellerVerificationPage/sellerVerificationPage.js +43 -43
  37. package/src/components/SellerVerificationPage/sellerVerificationPage.module.css +21 -21
  38. package/src/components/SortBy/index.js +24 -16
  39. package/src/components/WebsiteSwitcher/websiteSwitcher.js +109 -109
  40. package/src/components/commons/Slider/index.js +13 -13
  41. package/src/components/commons/Tabs/index.js +64 -62
  42. package/src/index.js +6 -6
  43. package/src/intercept.js +113 -113
  44. package/src/moduleOverrideWebpackPlugin.js +70 -70
  45. package/src/overwrites/peregrine/lib/store/actions/user/asyncActions.js +96 -96
  46. package/src/overwrites/peregrine/lib/talons/AccountMenu/useAccountMenuItems.js +74 -74
  47. package/src/overwrites/peregrine/lib/talons/Adapter/useAdapter.js +208 -208
  48. package/src/overwrites/peregrine/lib/talons/Header/storeSwitcher.gql.js +45 -45
  49. package/src/overwrites/peregrine/lib/talons/Header/useStoreSwitcher.js +204 -204
  50. package/src/overwrites/peregrine/lib/talons/Region/useRegion.js +102 -102
  51. package/src/overwrites/peregrine/lib/talons/SignIn/signIn.gql.js +56 -56
  52. package/src/overwrites/peregrine/lib/talons/SignIn/useSignIn.js +226 -226
  53. package/src/overwrites/peregrine/lib/util/deriveErrorMessage.js +34 -34
  54. package/src/overwrites/pwa-buildpack/lib/queries/getAvailableStoresConfigData.graphql +11 -11
  55. package/src/overwrites/venia-ui/lib/components/Adapter/adapter.js +112 -112
  56. package/src/overwrites/venia-ui/lib/components/Header/header.js +130 -118
  57. package/src/overwrites/venia-ui/lib/components/Header/storeSwitcher.js +105 -105
  58. package/src/overwrites/venia-ui/lib/components/Header/switcherItem.js +47 -47
  59. package/src/overwrites/venia-ui/lib/components/MegaMenu/__tests__/MegaMenu.spec.js +91 -91
  60. package/src/overwrites/venia-ui/lib/components/MegaMenu/__tests__/MegaMenuItem.spec.js +123 -123
  61. package/src/overwrites/venia-ui/lib/components/MegaMenu/__tests__/Submenu.spec.js +61 -61
  62. package/src/overwrites/venia-ui/lib/components/MegaMenu/__tests__/SubmenuColumn.spec.js +50 -50
  63. package/src/overwrites/venia-ui/lib/components/MegaMenu/__tests__/__snapshots__/MegaMenu.spec.js.snap +114 -114
  64. package/src/overwrites/venia-ui/lib/components/MegaMenu/__tests__/__snapshots__/MegaMenuItem.spec.js.snap +71 -71
  65. package/src/overwrites/venia-ui/lib/components/MegaMenu/__tests__/__snapshots__/Submenu.spec.js.snap +59 -59
  66. package/src/overwrites/venia-ui/lib/components/MegaMenu/__tests__/__snapshots__/SubmenuColumn.spec.js.snap +34 -34
  67. package/src/overwrites/venia-ui/lib/components/MegaMenu/index.js +1 -1
  68. package/src/overwrites/venia-ui/lib/components/MegaMenu/megaMenu.js +90 -90
  69. package/src/overwrites/venia-ui/lib/components/MegaMenu/megaMenu.module.css +12 -12
  70. package/src/overwrites/venia-ui/lib/components/MegaMenu/megaMenuItem.js +156 -156
  71. package/src/overwrites/venia-ui/lib/components/MegaMenu/megaMenuItem.module.css +30 -30
  72. package/src/overwrites/venia-ui/lib/components/MegaMenu/submenu.js +89 -89
  73. package/src/overwrites/venia-ui/lib/components/MegaMenu/submenu.module.css +42 -42
  74. package/src/overwrites/venia-ui/lib/components/MegaMenu/submenuColumn.js +99 -99
  75. package/src/overwrites/venia-ui/lib/components/MegaMenu/submenuColumn.module.css +28 -28
  76. package/src/overwrites/venia-ui/lib/components/SearchBar/__stories__/searchBar.js +11 -11
  77. package/src/overwrites/venia-ui/lib/components/SearchBar/__tests__/__snapshots__/searchField.spec.js.snap +72 -72
  78. package/src/overwrites/venia-ui/lib/components/SearchBar/__tests__/__snapshots__/suggestedCategories.spec.js.snap +30 -30
  79. package/src/overwrites/venia-ui/lib/components/SearchBar/__tests__/__snapshots__/suggestedProduct.spec.js.snap +69 -69
  80. package/src/overwrites/venia-ui/lib/components/SearchBar/__tests__/__snapshots__/suggestedProducts.spec.js.snap +7 -7
  81. package/src/overwrites/venia-ui/lib/components/SearchBar/__tests__/__snapshots__/suggestions.spec.js.snap +12 -12
  82. package/src/overwrites/venia-ui/lib/components/SearchBar/__tests__/autocomplete.spec.js +52 -52
  83. package/src/overwrites/venia-ui/lib/components/SearchBar/__tests__/searchBar.spec.js +82 -82
  84. package/src/overwrites/venia-ui/lib/components/SearchBar/__tests__/searchField.spec.js +87 -87
  85. package/src/overwrites/venia-ui/lib/components/SearchBar/__tests__/suggestedCategories.spec.js +45 -45
  86. package/src/overwrites/venia-ui/lib/components/SearchBar/__tests__/suggestedProduct.spec.js +43 -43
  87. package/src/overwrites/venia-ui/lib/components/SearchBar/__tests__/suggestedProducts.spec.js +45 -45
  88. package/src/overwrites/venia-ui/lib/components/SearchBar/__tests__/suggestions.spec.js +110 -110
  89. package/src/overwrites/venia-ui/lib/components/SearchBar/autocomplete.js +172 -172
  90. package/src/overwrites/venia-ui/lib/components/SearchBar/autocomplete.module.css +62 -62
  91. package/src/overwrites/venia-ui/lib/components/SearchBar/index.js +1 -1
  92. package/src/overwrites/venia-ui/lib/components/SearchBar/searchBar.js +74 -74
  93. package/src/overwrites/venia-ui/lib/components/SearchBar/searchBar.module.css +49 -49
  94. package/src/overwrites/venia-ui/lib/components/SearchBar/searchField.js +40 -40
  95. package/src/overwrites/venia-ui/lib/components/SearchBar/suggestedCategories.js +48 -48
  96. package/src/overwrites/venia-ui/lib/components/SearchBar/suggestedCategories.module.css +13 -13
  97. package/src/overwrites/venia-ui/lib/components/SearchBar/suggestedCategory.js +49 -49
  98. package/src/overwrites/venia-ui/lib/components/SearchBar/suggestedProduct.js +97 -97
  99. package/src/overwrites/venia-ui/lib/components/SearchBar/suggestedProduct.module.css +24 -24
  100. package/src/overwrites/venia-ui/lib/components/SearchBar/suggestedProducts.js +43 -43
  101. package/src/overwrites/venia-ui/lib/components/SearchBar/suggestedProducts.module.css +13 -13
  102. package/src/overwrites/venia-ui/lib/components/SearchBar/suggestions.js +75 -75
  103. package/src/overwrites/venia-ui/lib/components/SearchBar/suggestions.module.css +6 -6
  104. package/src/overwrites/venia-ui/lib/components/StoreCodeRoute/storeCodeRoute.js +75 -75
  105. package/src/overwrites/venia-ui/lib/targets/venia-ui-intercept.js +70 -70
  106. package/src/queries/getAvailableWebsitesConfigData.graphql +14 -14
  107. package/src/queries/index.js +30 -30
  108. package/src/talons/BecomeSeller/becomeSeller.gql.js +45 -45
  109. package/src/talons/BecomeSeller/useBecomeSeller.js +145 -145
  110. package/src/talons/BecomeSellerLink/useBecomeSellerLink.js +11 -11
  111. package/src/talons/BecomeSellerPage/useBecomeSellerPage.js +76 -76
  112. package/src/talons/Header/useBecomeSellerLink.js +13 -13
  113. package/src/talons/Header/useWebsiteSwitcher.js +218 -218
  114. package/src/talons/Seller/seller.gql.js +139 -204
  115. package/src/talons/Seller/useSeller.js +66 -71
  116. package/src/talons/SellerAccountPage/useSellerAccountPage.js +174 -174
  117. package/src/talons/SellerCountry/useSellerCountry.js +25 -25
  118. package/src/talons/WebsiteByIp/getWebsiteByIp.gql.js +13 -13
  119. package/src/talons/WebsiteByIp/useWebsiteByIp.js +34 -34
  120. package/src/talons/WebsiteSwitcher/useWebsiteSwitcher.js +218 -218
  121. package/src/theme/vars.js +6 -6
  122. package/src/util/mapSeller.js +7 -7
  123. package/src/components/OperatingHours/index.js +0 -1
  124. package/src/components/OperatingHours/operatingHours.js +0 -32
  125. package/src/components/Seller/sellerAddressCard.js +0 -48
  126. package/src/components/SellerDetail/index.js +0 -1
  127. package/src/components/SellerDetail/sellerDetail.js +0 -158
  128. package/src/components/SellerPage/core.js +0 -10
  129. package/src/talons/SellerProducts/useSellerProducts.js +0 -129
@@ -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
+ ));