From cbf24ea33bca862c430b2c90318f78cb6360fc10 Mon Sep 17 00:00:00 2001 From: Vladimir Khvan Date: Thu, 13 Jun 2024 16:19:54 +0500 Subject: [PATCH] Web: Client: Data Import: add props to configure SelectUsersStep --- .../components/SelectUsersStep/index.tsx | 75 ++++++++++++------- .../categories/data-import/types/index.ts | 4 + 2 files changed, 51 insertions(+), 28 deletions(-) diff --git a/packages/client/src/pages/PortalSettings/categories/data-import/components/SelectUsersStep/index.tsx b/packages/client/src/pages/PortalSettings/categories/data-import/components/SelectUsersStep/index.tsx index 0288869a34..dda2ff604b 100644 --- a/packages/client/src/pages/PortalSettings/categories/data-import/components/SelectUsersStep/index.tsx +++ b/packages/client/src/pages/PortalSettings/categories/data-import/components/SelectUsersStep/index.tsx @@ -45,8 +45,14 @@ import { InjectedSelectUsersStepProps, } from "../../types"; +const REFRESH_TIMEOUT = 100; +const PAGING_BREAKPOINT = 25; + const SelectUsersStep = (props: SelectUsersStepProps) => { const { + canDisable, + shouldSetUsers, + t, incrementStep, decrementStep, @@ -55,6 +61,8 @@ const SelectUsersStep = (props: SelectUsersStepProps) => { setSearchValue, checkedUsers, users, + areCheckedUsersEmpty, + setResultUsers, quotaCharacteristics, } = props as InjectedSelectUsersStepProps; @@ -100,19 +108,35 @@ const SelectUsersStep = (props: SelectUsersStepProps) => { checkedUsers.withEmail.filter((user) => !user.isDuplicate).length + checkedUsers.withoutEmail.length; + const handleStepIncrement = shouldSetUsers + ? () => { + setResultUsers(); + incrementStep(); + } + : incrementStep; + + const Buttons = ( + quota.max : false)) + } + /> + ); + return ( {withEmailUsers.length > 0 ? ( <> - + {Buttons} {quota.max && ( { placeholder={t("Common:Search")} value={searchValue} onChange={onChangeInput} - refreshTimeout={100} + refreshTimeout={REFRESH_TIMEOUT} onClearSearch={onClearSearchInput} size={InputSize.base} /> - {withEmailUsers.length > 25 && filteredAccounts.length > 0 && ( - - )} + {withEmailUsers.length > PAGING_BREAKPOINT && + filteredAccounts.length > 0 && ( + + )} ) : ( @@ -150,17 +175,7 @@ const SelectUsersStep = (props: SelectUsersStepProps) => { )} - {filteredAccounts.length > 0 && ( - - )} + {filteredAccounts.length > 0 && Buttons} ); }; @@ -175,6 +190,8 @@ export default inject(({ importAccountsStore, currentQuotaStore }) => { setSearchValue, cancelMigration, checkedUsers, + areCheckedUsersEmpty, + setResultUsers, } = importAccountsStore; const { quotaCharacteristics } = currentQuotaStore; @@ -188,6 +205,8 @@ export default inject(({ importAccountsStore, currentQuotaStore }) => { setSearchValue, cancelMigration, checkedUsers, + areCheckedUsersEmpty, + setResultUsers, quotaCharacteristics, }; diff --git a/packages/client/src/pages/PortalSettings/categories/data-import/types/index.ts b/packages/client/src/pages/PortalSettings/categories/data-import/types/index.ts index 9aceb3ccde..ec3870ff79 100644 --- a/packages/client/src/pages/PortalSettings/categories/data-import/types/index.ts +++ b/packages/client/src/pages/PortalSettings/categories/data-import/types/index.ts @@ -112,6 +112,8 @@ export type TQuota = TPaymentFeature; export interface SelectUsersStepProps { t: TFunciton; + canDisable: boolean; + shouldSetUsers: boolean; } export interface InjectedSelectUsersStepProps extends SelectUsersStepProps { @@ -123,6 +125,8 @@ export interface InjectedSelectUsersStepProps extends SelectUsersStepProps { cancelMigration: TStore["importAccountsStore"]["cancelMigration"]; checkedUsers: TStore["importAccountsStore"]["checkedUsers"]; users: TStore["importAccountsStore"]["users"]; + areCheckedUsersEmpty: TStore["importAccountsStore"]["areCheckedUsersEmpty"]; + setResultUsers: TStore["importAccountsStore"]["setResultUsers"]; quotaCharacteristics: TStore["currentQuotaStore"]["quotaCharacteristics"]; }