From 21286e57aeccc0eb31814f55e781f7a50af6ccde Mon Sep 17 00:00:00 2001 From: "Brian.Jiang2021" Date: Tue, 18 Jul 2023 11:22:27 +0800 Subject: [PATCH] feat: hide register by setting https://bigc-b2b.atlassian.net/browse/BUN-1281 --- apps/storefront/src/App.tsx | 27 +++++++++----- .../src/components/layout/B3Nav.tsx | 4 +-- .../src/hooks/dom/useRegisteredbctob2b.ts | 14 ++++++-- apps/storefront/src/pages/login/Login.tsx | 35 ++++++++++++------- .../src/shared/global/context/config.ts | 3 ++ apps/storefront/src/utils/b3HideRegister.ts | 21 +++++++++++ apps/storefront/src/utils/b3Init.ts | 3 ++ apps/storefront/src/utils/index.ts | 2 ++ packages/global-b3/index.ts | 1 + 9 files changed, 85 insertions(+), 25 deletions(-) create mode 100644 apps/storefront/src/utils/b3HideRegister.ts diff --git a/apps/storefront/src/App.tsx b/apps/storefront/src/App.tsx index bd765f9b..c310c847 100644 --- a/apps/storefront/src/App.tsx +++ b/apps/storefront/src/App.tsx @@ -26,6 +26,7 @@ import { getQuoteEnabled, getStoreTaxZoneRates, getTemPlateConfig, + handleHideRegisterPage, loginInfo, setStorefrontConfig, } from '@/utils' @@ -55,6 +56,7 @@ export default function App() { productQuoteEnabled, emailAddress, // showPageMask + registerEnabled, }, dispatch, } = useContext(GlobaledContext) @@ -194,14 +196,18 @@ export default function App() { useEffect(() => { if (quoteConfig.length > 0 && storefrontConfig) { - const { productQuoteEnabled, cartQuoteEnabled, shoppingListEnabled } = - getQuoteEnabled( - quoteConfig, - storefrontConfig, - role, - isB2BUser, - isAgenting - ) + const { + productQuoteEnabled, + cartQuoteEnabled, + shoppingListEnabled, + registerEnabled, + } = getQuoteEnabled( + quoteConfig, + storefrontConfig, + role, + isB2BUser, + isAgenting + ) dispatch({ type: 'common', @@ -209,11 +215,16 @@ export default function App() { productQuoteEnabled, cartQuoteEnabled, shoppingListEnabled, + registerEnabled, }, }) } }, [isB2BUser, isAgenting, role, quoteConfig, storefrontConfig]) + useEffect(() => { + handleHideRegisterPage(registerEnabled) + }, [registerEnabled, storefrontConfig]) + useEffect(() => { if (isOpen) { showPageMask(dispatch, false) diff --git a/apps/storefront/src/components/layout/B3Nav.tsx b/apps/storefront/src/components/layout/B3Nav.tsx index 2c0131ea..bca9949a 100644 --- a/apps/storefront/src/components/layout/B3Nav.tsx +++ b/apps/storefront/src/components/layout/B3Nav.tsx @@ -33,7 +33,7 @@ export default function B3Nav({ closeSidebar }: B3NavProps) { const { dispatch } = useContext(DynamicallyVariableedContext) const { state: globalState } = useContext(GlobaledContext) - const { quoteDetailHasNewMessages } = globalState + const { quoteDetailHasNewMessages, registerEnabled } = globalState const theme = useTheme() const primaryColor = theme.palette.primary.main @@ -68,7 +68,7 @@ export default function B3Nav({ closeSidebar }: B3NavProps) { ? 'Please create an account, or login to create a shopping list.' : 'To receive full access to buyer portal, please register. It will take 2 minutes.', cancelText: 'Cancel', - saveText: 'Register', + saveText: registerEnabled ? 'Register' : '', saveFn: jumpRegister, }, }, diff --git a/apps/storefront/src/hooks/dom/useRegisteredbctob2b.ts b/apps/storefront/src/hooks/dom/useRegisteredbctob2b.ts index 7895dd63..7dbf401a 100644 --- a/apps/storefront/src/hooks/dom/useRegisteredbctob2b.ts +++ b/apps/storefront/src/hooks/dom/useRegisteredbctob2b.ts @@ -14,7 +14,7 @@ const useRegisteredbctob2b = ( const b3Lang = useB3Lang() const { - state: { isB2BUser, customerId, companyInfo }, + state: { isB2BUser, customerId, companyInfo, registerEnabled }, } = useContext(GlobaledContext) const { @@ -45,10 +45,18 @@ const useRegisteredbctob2b = ( document.querySelector(globalB3['dom.navUserLoginElement']) ) { // already exist - if (document.querySelector('.navUser-item.navUser-convert-b2b')) { + const b2ToB2b = document.querySelector( + '.navUser-item.navUser-convert-b2b' + ) + + if (b2ToB2b) { + if (!registerEnabled) b2ToB2b.remove() + return } + if (!registerEnabled) return + const convertB2BNavNode = createConvertB2BNavNode() const accountNode = document.querySelector( globalB3['dom.navUserLoginElement'] @@ -68,7 +76,7 @@ const useRegisteredbctob2b = ( } else { document.querySelector('.navUser-item.navUser-convert-b2b')?.remove() } - }, [isB2BUser, customerId, openQuickView, b2b]) + }, [isB2BUser, customerId, openQuickView, b2b, registerEnabled]) } export default useRegisteredbctob2b diff --git a/apps/storefront/src/pages/login/Login.tsx b/apps/storefront/src/pages/login/Login.tsx index 8a09d30c..f627e3b8 100644 --- a/apps/storefront/src/pages/login/Login.tsx +++ b/apps/storefront/src/pages/login/Login.tsx @@ -74,7 +74,14 @@ export default function Login(props: RegisteredProps) { const b3Lang = useB3Lang() const { - state: { isCheckout, logo, B3UserId, salesRepCompanyId = 0, isAgenting }, + state: { + isCheckout, + logo, + B3UserId, + salesRepCompanyId = 0, + isAgenting, + registerEnabled, + }, dispatch, } = useContext(GlobaledContext) @@ -316,6 +323,7 @@ export default function Login(props: RegisteredProps) { margin: '20px 0', display: 'flex', flexDirection: isMobile ? 'column' : 'row', + justifyContent: 'center', }} > - - - + {registerEnabled && ( + + + + )} {loginInfo.widgetFooterText && ( diff --git a/apps/storefront/src/shared/global/context/config.ts b/apps/storefront/src/shared/global/context/config.ts index 86583258..83800012 100644 --- a/apps/storefront/src/shared/global/context/config.ts +++ b/apps/storefront/src/shared/global/context/config.ts @@ -94,6 +94,7 @@ export interface GlobalState { enabledStatus: boolean } shoppingLists: boolean + tradeProfessionalApplication: boolean } storeEnabled: boolean storeName: string @@ -103,6 +104,7 @@ export interface GlobalState { productQuoteEnabled: boolean cartQuoteEnabled: boolean shoppingListEnabled: boolean + registerEnabled: boolean quoteConfig: CustomFieldItems[] currencies: { channelCurrencies: ChannelCurrenciesProps @@ -157,6 +159,7 @@ export const initState = { productQuoteEnabled: false, cartQuoteEnabled: false, shoppingListEnabled: false, + registerEnabled: true, quoteConfig: [], currencies: B3SStorage.get('currencies') || {}, openAPPParams: { diff --git a/apps/storefront/src/utils/b3HideRegister.ts b/apps/storefront/src/utils/b3HideRegister.ts new file mode 100644 index 00000000..cb033550 --- /dev/null +++ b/apps/storefront/src/utils/b3HideRegister.ts @@ -0,0 +1,21 @@ +import globalB3 from '@b3/global-b3' + +const handleHideRegisterPage = (registerEnabled: boolean) => { + const registerPageAll = document.querySelectorAll(globalB3['dom.register']) + // Text between sign in and register - [or] + const navUserOrText = document.querySelectorAll('.navUser-or') + + if (registerPageAll.length > 0) { + registerPageAll.forEach((page: CustomFieldItems) => { + page.style.display = registerEnabled ? 'block' : 'none' + }) + } + + if (navUserOrText.length > 0) { + navUserOrText.forEach((text: CustomFieldItems) => { + text.style.display = registerEnabled ? 'block' : 'none' + }) + } +} + +export default handleHideRegisterPage diff --git a/apps/storefront/src/utils/b3Init.ts b/apps/storefront/src/utils/b3Init.ts index 16ba1ae9..fa575340 100644 --- a/apps/storefront/src/utils/b3Init.ts +++ b/apps/storefront/src/utils/b3Init.ts @@ -19,6 +19,7 @@ export const getQuoteEnabled = ( enabledStatus: boolean } shoppingLists: boolean + tradeProfessionalApplication: boolean }, role: number | string, isB2BUser: boolean, @@ -34,6 +35,7 @@ export const getQuoteEnabled = ( const quoteEnabled = storefrontConfig.quotes || false const shoppingListEnabled = storefrontConfig.shoppingLists + const registerEnabled = storefrontConfig.tradeProfessionalApplication quoteConfig.forEach((config) => { if (config.key === 'quote_customer') { @@ -82,5 +84,6 @@ export const getQuoteEnabled = ( productQuoteEnabled, cartQuoteEnabled, shoppingListEnabled, + registerEnabled, } } diff --git a/apps/storefront/src/utils/index.ts b/apps/storefront/src/utils/index.ts index e65c2b29..03dcd2f7 100644 --- a/apps/storefront/src/utils/index.ts +++ b/apps/storefront/src/utils/index.ts @@ -13,6 +13,7 @@ import { displayFormat, getUTCTimestamp, } from './b3DateFormat' +import handleHideRegisterPage from './b3HideRegister' import { getLogo, getQuoteEnabled } from './b3Init' import { showPageMask } from './b3PageMask' import distanceDay from './b3Picker' @@ -76,6 +77,7 @@ export { getUTCTimestamp, globalSnackbar, handleGetCurrentProductInfo, + handleHideRegisterPage, isAllRequiredOptionFilled, isModifierNumberTextValid, isModifierTextValid, diff --git a/packages/global-b3/index.ts b/packages/global-b3/index.ts index 4f97c8ad..fe86a0da 100644 --- a/packages/global-b3/index.ts +++ b/packages/global-b3/index.ts @@ -29,6 +29,7 @@ const globalB3 = { 'dom.cartElement': '[href="/cart.php"], #form-action-addToCart, [data-button-type="add-cart"], [data-event-type="product-click"], .card-body a, [data-emthemesmodez-cart-item-add]', 'dom.productView': '.productView', + 'dom.register': '[href^="/login.php?action=create_account"]', before_login_goto_page: '/account.php?action=order_status', checkout_super_clear_session: 'true', setting: {