- 각 필터 키패드 가림 현상 수정
This commit is contained in:
@@ -13,6 +13,7 @@ import { getResultStatusBtnGroup, getSearchTypeOption } from '@/entities/additio
|
|||||||
import { FilterSelectMid } from '@/shared/ui/filter/select-mid';
|
import { FilterSelectMid } from '@/shared/ui/filter/select-mid';
|
||||||
import { useTranslation } from 'react-i18next';
|
import { useTranslation } from 'react-i18next';
|
||||||
import { FullMenuClose } from '@/entities/common/ui/full-menu-close';
|
import { FullMenuClose } from '@/entities/common/ui/full-menu-close';
|
||||||
|
import { useKeyboardAware } from '@/shared/lib/hooks';
|
||||||
|
|
||||||
export const AccountHolderSearchFilter = ({
|
export const AccountHolderSearchFilter = ({
|
||||||
filterOn,
|
filterOn,
|
||||||
@@ -33,7 +34,7 @@ export const AccountHolderSearchFilter = ({
|
|||||||
setResultStatus
|
setResultStatus
|
||||||
}: AccountHolderSearchFilterProps) => {
|
}: AccountHolderSearchFilterProps) => {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
|
const { handleInputFocus } = useKeyboardAware();
|
||||||
const [filterMid, setFilterMid] = useState<string>(mid);
|
const [filterMid, setFilterMid] = useState<string>(mid);
|
||||||
const [filterSearchType, setFilterSearchType] = useState<AccountHolderSearchCl>(searchType);
|
const [filterSearchType, setFilterSearchType] = useState<AccountHolderSearchCl>(searchType);
|
||||||
const [filterSearchKeyword, setFilterSearchKeyword] = useState<string>(searchKeyword);
|
const [filterSearchKeyword, setFilterSearchKeyword] = useState<string>(searchKeyword);
|
||||||
@@ -85,7 +86,7 @@ export const AccountHolderSearchFilter = ({
|
|||||||
<div className="full-menu-actions">
|
<div className="full-menu-actions">
|
||||||
<FullMenuClose
|
<FullMenuClose
|
||||||
addClass='full-menu-close'
|
addClass='full-menu-close'
|
||||||
onClickToCallback={ onClickToClose }
|
onClickToCallback={onClickToClose}
|
||||||
></FullMenuClose>
|
></FullMenuClose>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -104,6 +105,7 @@ export const AccountHolderSearchFilter = ({
|
|||||||
selectOptions={getSearchTypeOption(t)}
|
selectOptions={getSearchTypeOption(t)}
|
||||||
inputValue={filterSearchKeyword}
|
inputValue={filterSearchKeyword}
|
||||||
inputSetter={setFilterSearchKeyword}
|
inputSetter={setFilterSearchKeyword}
|
||||||
|
handleInputFocus={handleInputFocus}
|
||||||
></FilterSelectInput>
|
></FilterSelectInput>
|
||||||
<FilterCalendar
|
<FilterCalendar
|
||||||
startDate={filterStartDate}
|
startDate={filterStartDate}
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ import { getArsOrderStatusBtnGroup, getArsPaymentStatusBtnGroup } from '../../..
|
|||||||
import { useStore } from '@/shared/model/store';
|
import { useStore } from '@/shared/model/store';
|
||||||
import { FilterSelectMid } from '@/shared/ui/filter/select-mid';
|
import { FilterSelectMid } from '@/shared/ui/filter/select-mid';
|
||||||
import { FullMenuClose } from '@/entities/common/ui/full-menu-close';
|
import { FullMenuClose } from '@/entities/common/ui/full-menu-close';
|
||||||
|
import { useKeyboardAware } from '@/shared/lib/hooks/use-keyboard-aware';
|
||||||
|
|
||||||
export interface ArsFilterProps {
|
export interface ArsFilterProps {
|
||||||
filterOn: boolean;
|
filterOn: boolean;
|
||||||
@@ -60,7 +61,7 @@ export const ArsFilter = ({
|
|||||||
setMinAmount,
|
setMinAmount,
|
||||||
setMaxAmount
|
setMaxAmount
|
||||||
}: ArsFilterProps) => {
|
}: ArsFilterProps) => {
|
||||||
|
const { handleInputFocus, keyboardAwarePadding } = useKeyboardAware();
|
||||||
const [filterMid, setFilterMid] = useState<string>(mid);
|
const [filterMid, setFilterMid] = useState<string>(mid);
|
||||||
const [filterMoid, setFilterMoid] = useState<string>(moid);
|
const [filterMoid, setFilterMoid] = useState<string>(moid);
|
||||||
const [filterFromDate, setFilterFromDate] = useState<string>(moment(fromDate).format('YYYYMMDD'));
|
const [filterFromDate, setFilterFromDate] = useState<string>(moment(fromDate).format('YYYYMMDD'));
|
||||||
@@ -122,6 +123,7 @@ export const ArsFilter = ({
|
|||||||
title={t('transaction.constants.orderNumber')}
|
title={t('transaction.constants.orderNumber')}
|
||||||
inputValue={ filterMoid }
|
inputValue={ filterMoid }
|
||||||
inputSetter={ setFilterMoid }
|
inputSetter={ setFilterMoid }
|
||||||
|
handleInputFocus={ handleInputFocus }
|
||||||
></FilterInput>
|
></FilterInput>
|
||||||
<FilterCalendar
|
<FilterCalendar
|
||||||
title={t('filter.period')}
|
title={t('filter.period')}
|
||||||
@@ -148,6 +150,8 @@ export const ArsFilter = ({
|
|||||||
maxAmount={ filterMaxAmount }
|
maxAmount={ filterMaxAmount }
|
||||||
setMinAmount={ setFilterMinAmount }
|
setMinAmount={ setFilterMinAmount }
|
||||||
setMaxAmount={ setFilterMaxAmount }
|
setMaxAmount={ setFilterMaxAmount }
|
||||||
|
handleInputFocus={ handleInputFocus }
|
||||||
|
keyboardAwarePadding={ keyboardAwarePadding }
|
||||||
></FilterRangeAmount>
|
></FilterRangeAmount>
|
||||||
</div>
|
</div>
|
||||||
<div className="apply-row">
|
<div className="apply-row">
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import { getAuthResultBtnGroup, getTransactionTypeBtnGroup } from '@/entities/ad
|
|||||||
import { FilterSelectMid } from '@/shared/ui/filter/select-mid';
|
import { FilterSelectMid } from '@/shared/ui/filter/select-mid';
|
||||||
import { useTranslation } from 'react-i18next';
|
import { useTranslation } from 'react-i18next';
|
||||||
import { FullMenuClose } from '@/entities/common/ui/full-menu-close';
|
import { FullMenuClose } from '@/entities/common/ui/full-menu-close';
|
||||||
|
import { useKeyboardAware } from '@/shared/lib/hooks';
|
||||||
|
|
||||||
export const FaceAuthFilter = ({
|
export const FaceAuthFilter = ({
|
||||||
filterOn,
|
filterOn,
|
||||||
@@ -31,6 +32,7 @@ export const FaceAuthFilter = ({
|
|||||||
setAuthResult
|
setAuthResult
|
||||||
}: FaceAuthFilterProps) => {
|
}: FaceAuthFilterProps) => {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
|
const { handleInputFocus } = useKeyboardAware();
|
||||||
|
|
||||||
const [filterMid, setFilterMid] = useState<string>(mid);
|
const [filterMid, setFilterMid] = useState<string>(mid);
|
||||||
const [filterMemberId, setFilterMemberId] = useState<string>(userMallId);
|
const [filterMemberId, setFilterMemberId] = useState<string>(userMallId);
|
||||||
@@ -89,6 +91,7 @@ export const FaceAuthFilter = ({
|
|||||||
title={t('additionalService.faceAuth.merchantMemberId')}
|
title={t('additionalService.faceAuth.merchantMemberId')}
|
||||||
inputValue={filterMemberId}
|
inputValue={filterMemberId}
|
||||||
inputSetter={setFilterMemberId}
|
inputSetter={setFilterMemberId}
|
||||||
|
handleInputFocus={ handleInputFocus }
|
||||||
></FilterInput>
|
></FilterInput>
|
||||||
|
|
||||||
<FilterCalendar
|
<FilterCalendar
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ import { getAlimtalkAlimClBtnGroupForGeneral, getAlimtalkAlimClBtnGroupForVBank,
|
|||||||
import { FilterSelectMid } from '@/shared/ui/filter/select-mid';
|
import { FilterSelectMid } from '@/shared/ui/filter/select-mid';
|
||||||
import { useTranslation } from 'react-i18next';
|
import { useTranslation } from 'react-i18next';
|
||||||
import { FullMenuClose } from '@/entities/common/ui/full-menu-close';
|
import { FullMenuClose } from '@/entities/common/ui/full-menu-close';
|
||||||
|
import { useKeyboardAware } from '@/shared/lib/hooks';
|
||||||
|
|
||||||
export interface AlimtalkFilterProps {
|
export interface AlimtalkFilterProps {
|
||||||
filterOn: boolean;
|
filterOn: boolean;
|
||||||
@@ -65,6 +66,7 @@ export const AlimtalkFilter = ({
|
|||||||
setSendCl
|
setSendCl
|
||||||
}: AlimtalkFilterProps) => {
|
}: AlimtalkFilterProps) => {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
|
const { handleInputFocus, keyboardAwarePadding } = useKeyboardAware();
|
||||||
|
|
||||||
const [filterMid, setFilterMid] = useState<string>(mid);
|
const [filterMid, setFilterMid] = useState<string>(mid);
|
||||||
const [filterSearchCl, setFilterSearchCl] = useState<AlimtalkSearchCl>(searchCl);
|
const [filterSearchCl, setFilterSearchCl] = useState<AlimtalkSearchCl>(searchCl);
|
||||||
@@ -126,7 +128,7 @@ export const AlimtalkFilter = ({
|
|||||||
<div className="full-menu-actions">
|
<div className="full-menu-actions">
|
||||||
<FullMenuClose
|
<FullMenuClose
|
||||||
addClass='full-menu-close'
|
addClass='full-menu-close'
|
||||||
onClickToCallback={ onClickToClose }
|
onClickToCallback={onClickToClose}
|
||||||
></FullMenuClose>
|
></FullMenuClose>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -134,7 +136,7 @@ export const AlimtalkFilter = ({
|
|||||||
<FilterSelectMid
|
<FilterSelectMid
|
||||||
title={t('filter.merchant')}
|
title={t('filter.merchant')}
|
||||||
selectSetter={setFilterMid}
|
selectSetter={setFilterMid}
|
||||||
showType={ 'GID' }
|
showType={'GID'}
|
||||||
></FilterSelectMid>
|
></FilterSelectMid>
|
||||||
<FilterSelectInput
|
<FilterSelectInput
|
||||||
title={t('additionalService.alimtalk.orderOrTid')}
|
title={t('additionalService.alimtalk.orderOrTid')}
|
||||||
@@ -143,6 +145,7 @@ export const AlimtalkFilter = ({
|
|||||||
selectOptions={getAlimtalkSearchClOptionGroup(t)}
|
selectOptions={getAlimtalkSearchClOptionGroup(t)}
|
||||||
inputValue={filterSearchValue}
|
inputValue={filterSearchValue}
|
||||||
inputSetter={setFilterSearchValue}
|
inputSetter={setFilterSearchValue}
|
||||||
|
handleInputFocus={handleInputFocus}
|
||||||
></FilterSelectInput>
|
></FilterSelectInput>
|
||||||
<FilterSelect
|
<FilterSelect
|
||||||
title={t('filter.paymentMethod')}
|
title={t('filter.paymentMethod')}
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import { useStore } from '@/shared/model/store';
|
|||||||
import { FilterSelectMid } from '@/shared/ui/filter/select-mid';
|
import { FilterSelectMid } from '@/shared/ui/filter/select-mid';
|
||||||
import { useTranslation } from 'react-i18next';
|
import { useTranslation } from 'react-i18next';
|
||||||
import { FullMenuClose } from '@/entities/common/ui/full-menu-close';
|
import { FullMenuClose } from '@/entities/common/ui/full-menu-close';
|
||||||
|
import { useKeyboardAware } from '@/shared/lib/hooks';
|
||||||
|
|
||||||
export interface FundAccountResultFilterProps {
|
export interface FundAccountResultFilterProps {
|
||||||
filterOn: boolean;
|
filterOn: boolean;
|
||||||
@@ -55,7 +56,7 @@ export const FundAccountResultFilter = ({
|
|||||||
setResultStatus
|
setResultStatus
|
||||||
}: FundAccountResultFilterProps) => {
|
}: FundAccountResultFilterProps) => {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
|
const { handleInputFocus, keyboardAwarePadding } = useKeyboardAware();
|
||||||
const [filterMid, setFilterMid] = useState<string>(mid);
|
const [filterMid, setFilterMid] = useState<string>(mid);
|
||||||
const [filterSearchCl, setFilterSearchCl] = useState<FundAccountSearchCl>(searchCl);
|
const [filterSearchCl, setFilterSearchCl] = useState<FundAccountSearchCl>(searchCl);
|
||||||
const [filterSearchValue, setFilterSearchValue] = useState<string>(searchValue);
|
const [filterSearchValue, setFilterSearchValue] = useState<string>(searchValue);
|
||||||
@@ -132,6 +133,7 @@ export const FundAccountResultFilter = ({
|
|||||||
selectOptions={getFundAccountSearchClOptionsGroup(t)}
|
selectOptions={getFundAccountSearchClOptionsGroup(t)}
|
||||||
inputValue={filterSearchValue}
|
inputValue={filterSearchValue}
|
||||||
inputSetter={setFilterSearchValue}
|
inputSetter={setFilterSearchValue}
|
||||||
|
handleInputFocus={ handleInputFocus }
|
||||||
></FilterSelectInput>
|
></FilterSelectInput>
|
||||||
<FilterButtonGroups
|
<FilterButtonGroups
|
||||||
title={t('additionalService.fundAccount.searchCriteria')}
|
title={t('additionalService.fundAccount.searchCriteria')}
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import { useStore } from '@/shared/model/store';
|
|||||||
import { FilterSelectMid } from '@/shared/ui/filter/select-mid';
|
import { FilterSelectMid } from '@/shared/ui/filter/select-mid';
|
||||||
import { useTranslation } from 'react-i18next';
|
import { useTranslation } from 'react-i18next';
|
||||||
import { FullMenuClose } from '@/entities/common/ui/full-menu-close';
|
import { FullMenuClose } from '@/entities/common/ui/full-menu-close';
|
||||||
|
import { useKeyboardAware } from '@/shared/lib/hooks';
|
||||||
|
|
||||||
export interface FundAccountTransactionFilterProps {
|
export interface FundAccountTransactionFilterProps {
|
||||||
filterOn: boolean;
|
filterOn: boolean;
|
||||||
@@ -51,7 +52,7 @@ export const FundAccountTransactionFilter = ({
|
|||||||
setStatus
|
setStatus
|
||||||
}: FundAccountTransactionFilterProps) => {
|
}: FundAccountTransactionFilterProps) => {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
|
const { handleInputFocus, keyboardAwarePadding } = useKeyboardAware();
|
||||||
const [filterMid, setFilterMid] = useState<string>(mid);
|
const [filterMid, setFilterMid] = useState<string>(mid);
|
||||||
const [filterSearchCl, setFilterSearchCl] = useState<FundAccountSearchCl>(searchCl);
|
const [filterSearchCl, setFilterSearchCl] = useState<FundAccountSearchCl>(searchCl);
|
||||||
const [filterSearchValue, setFilterSearchValue] = useState<string>(searchValue);
|
const [filterSearchValue, setFilterSearchValue] = useState<string>(searchValue);
|
||||||
@@ -126,6 +127,7 @@ export const FundAccountTransactionFilter = ({
|
|||||||
selectOptions={getFundAccountSearchClOptionsGroup(t)}
|
selectOptions={getFundAccountSearchClOptionsGroup(t)}
|
||||||
inputValue={filterSearchValue}
|
inputValue={filterSearchValue}
|
||||||
inputSetter={setFilterSearchValue}
|
inputSetter={setFilterSearchValue}
|
||||||
|
handleInputFocus={ handleInputFocus }
|
||||||
></FilterSelectInput>
|
></FilterSelectInput>
|
||||||
<FilterCalendar
|
<FilterCalendar
|
||||||
title={t('filter.period')}
|
title={t('filter.period')}
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import { getKeyInPaymentPaymentStatusBtnGroup } from '@/entities/additional-serv
|
|||||||
import { FilterSelectMid } from '@/shared/ui/filter/select-mid';
|
import { FilterSelectMid } from '@/shared/ui/filter/select-mid';
|
||||||
import { useTranslation } from 'react-i18next';
|
import { useTranslation } from 'react-i18next';
|
||||||
import { FullMenuClose } from '@/entities/common/ui/full-menu-close';
|
import { FullMenuClose } from '@/entities/common/ui/full-menu-close';
|
||||||
|
import { useKeyboardAware } from '@/shared/lib/hooks';
|
||||||
|
|
||||||
export const KeyInPaymentFilter = ({
|
export const KeyInPaymentFilter = ({
|
||||||
filterOn,
|
filterOn,
|
||||||
@@ -31,6 +32,7 @@ export const KeyInPaymentFilter = ({
|
|||||||
setMaxAmount
|
setMaxAmount
|
||||||
}: KeyInPaymentFilterProps) => {
|
}: KeyInPaymentFilterProps) => {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
|
const { handleInputFocus, keyboardAwarePadding } = useKeyboardAware();
|
||||||
|
|
||||||
const [filterMid, setFilterMid] = useState<string>(mid);
|
const [filterMid, setFilterMid] = useState<string>(mid);
|
||||||
const [filterStartDate, setFilterStartDate] = useState<string>(startDate);
|
const [filterStartDate, setFilterStartDate] = useState<string>(startDate);
|
||||||
@@ -69,7 +71,7 @@ export const KeyInPaymentFilter = ({
|
|||||||
<div className="full-menu-actions">
|
<div className="full-menu-actions">
|
||||||
<FullMenuClose
|
<FullMenuClose
|
||||||
addClass='full-menu-close'
|
addClass='full-menu-close'
|
||||||
onClickToCallback={ onClickToClose }
|
onClickToCallback={onClickToClose}
|
||||||
></FullMenuClose>
|
></FullMenuClose>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -101,6 +103,8 @@ export const KeyInPaymentFilter = ({
|
|||||||
maxAmount={filterMaxAmount}
|
maxAmount={filterMaxAmount}
|
||||||
setMinAmount={setFilterMinAmount}
|
setMinAmount={setFilterMinAmount}
|
||||||
setMaxAmount={setFilterMaxAmount}
|
setMaxAmount={setFilterMaxAmount}
|
||||||
|
handleInputFocus={handleInputFocus}
|
||||||
|
keyboardAwarePadding={keyboardAwarePadding}
|
||||||
></FilterRangeAmount>
|
></FilterRangeAmount>
|
||||||
</div>
|
</div>
|
||||||
<div className="apply-row">
|
<div className="apply-row">
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ import { LinkPaymentHistoryFilterProps, LinkPaymentPaymentStatus, LinkPaymentSea
|
|||||||
import { FilterSelectMid } from '@/shared/ui/filter/select-mid';
|
import { FilterSelectMid } from '@/shared/ui/filter/select-mid';
|
||||||
import { useTranslation } from 'react-i18next';
|
import { useTranslation } from 'react-i18next';
|
||||||
import { FullMenuClose } from '@/entities/common/ui/full-menu-close';
|
import { FullMenuClose } from '@/entities/common/ui/full-menu-close';
|
||||||
|
import { useKeyboardAware } from '@/shared/lib/hooks';
|
||||||
|
|
||||||
export const LinkPaymentHistoryFilter = ({
|
export const LinkPaymentHistoryFilter = ({
|
||||||
filterOn,
|
filterOn,
|
||||||
@@ -39,7 +40,7 @@ export const LinkPaymentHistoryFilter = ({
|
|||||||
setSendMethod
|
setSendMethod
|
||||||
}: LinkPaymentHistoryFilterProps) => {
|
}: LinkPaymentHistoryFilterProps) => {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
|
const { handleInputFocus, keyboardAwarePadding } = useKeyboardAware();
|
||||||
const [filterMid, setFilterMid] = useState<string>(mid);
|
const [filterMid, setFilterMid] = useState<string>(mid);
|
||||||
const [filterSearchCl, setFilterSearchCl] = useState<LinkPaymentSearchCl>(searchCl);
|
const [filterSearchCl, setFilterSearchCl] = useState<LinkPaymentSearchCl>(searchCl);
|
||||||
const [filterSearchValue, setFilterSearchValue] = useState<string>(searchValue);
|
const [filterSearchValue, setFilterSearchValue] = useState<string>(searchValue);
|
||||||
@@ -130,6 +131,7 @@ export const LinkPaymentHistoryFilter = ({
|
|||||||
selectOptions={searchTypeOption}
|
selectOptions={searchTypeOption}
|
||||||
inputValue={filterSearchValue}
|
inputValue={filterSearchValue}
|
||||||
inputSetter={setFilterSearchValue}
|
inputSetter={setFilterSearchValue}
|
||||||
|
handleInputFocus={ handleInputFocus }
|
||||||
></FilterSelectInput>
|
></FilterSelectInput>
|
||||||
<FilterCalendar
|
<FilterCalendar
|
||||||
startDate={filterStartDate}
|
startDate={filterStartDate}
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ import { useStore } from '@/shared/model/store';
|
|||||||
import { LinkPaymentProcessStatus, LinkPaymentSearchCl, LinkPaymentSendMethod, LinkPaymentSendStatus, LinkPaymentWaitFilterProps } from '@/entities/additional-service/model/link-pay/types';
|
import { LinkPaymentProcessStatus, LinkPaymentSearchCl, LinkPaymentSendMethod, LinkPaymentSendStatus, LinkPaymentWaitFilterProps } from '@/entities/additional-service/model/link-pay/types';
|
||||||
import { FilterSelectMid } from '@/shared/ui/filter/select-mid';
|
import { FilterSelectMid } from '@/shared/ui/filter/select-mid';
|
||||||
import { FullMenuClose } from '@/entities/common/ui/full-menu-close';
|
import { FullMenuClose } from '@/entities/common/ui/full-menu-close';
|
||||||
|
import { useKeyboardAware } from '@/shared/lib/hooks';
|
||||||
|
|
||||||
export const LinkPaymentWaitSendFilter = ({
|
export const LinkPaymentWaitSendFilter = ({
|
||||||
filterOn,
|
filterOn,
|
||||||
@@ -34,7 +35,7 @@ export const LinkPaymentWaitSendFilter = ({
|
|||||||
setProcessStatus
|
setProcessStatus
|
||||||
}: LinkPaymentWaitFilterProps) => {
|
}: LinkPaymentWaitFilterProps) => {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
|
const { handleInputFocus, keyboardAwarePadding } = useKeyboardAware();
|
||||||
const [filterMid, setFilterMid] = useState<string>(mid);
|
const [filterMid, setFilterMid] = useState<string>(mid);
|
||||||
const [filterSearchType, setFilterSearchType] = useState<LinkPaymentSearchCl>(searchCl);
|
const [filterSearchType, setFilterSearchType] = useState<LinkPaymentSearchCl>(searchCl);
|
||||||
const [filterSearchKeyword, setFilterSearchKeyword] = useState<string>(searchKeyword);
|
const [filterSearchKeyword, setFilterSearchKeyword] = useState<string>(searchKeyword);
|
||||||
@@ -114,6 +115,7 @@ export const LinkPaymentWaitSendFilter = ({
|
|||||||
selectOptions={searchTypeOption}
|
selectOptions={searchTypeOption}
|
||||||
inputValue={filterSearchKeyword}
|
inputValue={filterSearchKeyword}
|
||||||
inputSetter={setFilterSearchKeyword}
|
inputSetter={setFilterSearchKeyword}
|
||||||
|
handleInputFocus={ handleInputFocus }
|
||||||
></FilterSelectInput>
|
></FilterSelectInput>
|
||||||
<FilterCalendar
|
<FilterCalendar
|
||||||
startDate={filterStartDate}
|
startDate={filterStartDate}
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import { useStore } from '@/shared/model/store';
|
|||||||
import { FilterMotionDuration, FilterMotionStyle, FilterMotionVariants } from '@/entities/common/model/constant';
|
import { FilterMotionDuration, FilterMotionStyle, FilterMotionVariants } from '@/entities/common/model/constant';
|
||||||
import { FilterSelectMid } from '@/shared/ui/filter/select-mid';
|
import { FilterSelectMid } from '@/shared/ui/filter/select-mid';
|
||||||
import { FullMenuClose } from '@/entities/common/ui/full-menu-close';
|
import { FullMenuClose } from '@/entities/common/ui/full-menu-close';
|
||||||
|
import { useKeyboardAware } from '@/shared/lib/hooks';
|
||||||
export const SmsPaymentFilter = ({
|
export const SmsPaymentFilter = ({
|
||||||
filterOn,
|
filterOn,
|
||||||
setFilterOn,
|
setFilterOn,
|
||||||
@@ -30,6 +31,7 @@ export const SmsPaymentFilter = ({
|
|||||||
setSmsCl
|
setSmsCl
|
||||||
}: SmsPaymentFilterProps) => {
|
}: SmsPaymentFilterProps) => {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
|
const { handleInputFocus, keyboardAwarePadding } = useKeyboardAware();
|
||||||
|
|
||||||
const [filterMid, setFilterMid] = useState<string>(mid);
|
const [filterMid, setFilterMid] = useState<string>(mid);
|
||||||
const [filterSearchCl, setFilterSearchCl] = useState<SmsPaymentSearchCl>(searchCl);
|
const [filterSearchCl, setFilterSearchCl] = useState<SmsPaymentSearchCl>(searchCl);
|
||||||
@@ -84,7 +86,7 @@ export const SmsPaymentFilter = ({
|
|||||||
<div className="full-menu-actions">
|
<div className="full-menu-actions">
|
||||||
<FullMenuClose
|
<FullMenuClose
|
||||||
addClass='full-menu-close'
|
addClass='full-menu-close'
|
||||||
onClickToCallback={ onClickToClose }
|
onClickToCallback={onClickToClose}
|
||||||
></FullMenuClose>
|
></FullMenuClose>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -103,6 +105,7 @@ export const SmsPaymentFilter = ({
|
|||||||
selectOptions={searchTypeOption}
|
selectOptions={searchTypeOption}
|
||||||
inputValue={filterSearchValue}
|
inputValue={filterSearchValue}
|
||||||
inputSetter={setFilterSearchValue}
|
inputSetter={setFilterSearchValue}
|
||||||
|
handleInputFocus={handleInputFocus}
|
||||||
></FilterSelectInput>
|
></FilterSelectInput>
|
||||||
<FilterCalendar
|
<FilterCalendar
|
||||||
startDate={filterFromDate}
|
startDate={filterFromDate}
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
import { CSSProperties, FocusEvent } from 'react';
|
||||||
|
|
||||||
export enum AppLanguage {
|
export enum AppLanguage {
|
||||||
// DEVICE = 'DEVICE',
|
// DEVICE = 'DEVICE',
|
||||||
KO = 'ko',
|
KO = 'ko',
|
||||||
@@ -54,6 +56,8 @@ export interface FilterRangeAmountProps {
|
|||||||
maxAmount?: number;
|
maxAmount?: number;
|
||||||
setMinAmount: (minAmount?: number) => void;
|
setMinAmount: (minAmount?: number) => void;
|
||||||
setMaxAmount: (maxAmount?: number) => void;
|
setMaxAmount: (maxAmount?: number) => void;
|
||||||
|
handleInputFocus?: (e: FocusEvent<HTMLInputElement>) => void;
|
||||||
|
keyboardAwarePadding?: CSSProperties;
|
||||||
};
|
};
|
||||||
export interface FilterButtonGroupsProps {
|
export interface FilterButtonGroupsProps {
|
||||||
title: string;
|
title: string;
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ import {
|
|||||||
import { useStore } from '@/shared/model/store';
|
import { useStore } from '@/shared/model/store';
|
||||||
import { FilterSelectMid } from '@/shared/ui/filter/select-mid';
|
import { FilterSelectMid } from '@/shared/ui/filter/select-mid';
|
||||||
import { FullMenuClose } from '@/entities/common/ui/full-menu-close';
|
import { FullMenuClose } from '@/entities/common/ui/full-menu-close';
|
||||||
|
import { useKeyboardAware } from '@/shared/lib/hooks/use-keyboard-aware';
|
||||||
|
|
||||||
export const AllTransactionFilter = ({
|
export const AllTransactionFilter = ({
|
||||||
filterOn,
|
filterOn,
|
||||||
@@ -79,7 +80,7 @@ export const AllTransactionFilter = ({
|
|||||||
const midOptions = useStore.getState().UserStore.selectOptionsMids;
|
const midOptions = useStore.getState().UserStore.selectOptionsMids;
|
||||||
|
|
||||||
const [statusCodeBtns, setStatusCodeBtns] = useState<Array<Record<string, string>>>();
|
const [statusCodeBtns, setStatusCodeBtns] = useState<Array<Record<string, string>>>();
|
||||||
|
const { handleInputFocus, keyboardAwarePadding } = useKeyboardAware();
|
||||||
const moidTidOptionsGroup = getAllTransactionMoidTidOptionsGroup(t);
|
const moidTidOptionsGroup = getAllTransactionMoidTidOptionsGroup(t);
|
||||||
const allTransactionStatusCode = getAllTransactionStatusCode(t);
|
const allTransactionStatusCode = getAllTransactionStatusCode(t);
|
||||||
|
|
||||||
@@ -243,6 +244,7 @@ export const AllTransactionFilter = ({
|
|||||||
selectOptions={ moidTidOptionsGroup }
|
selectOptions={ moidTidOptionsGroup }
|
||||||
inputValue={ filterMoidTidValue }
|
inputValue={ filterMoidTidValue }
|
||||||
inputSetter={ setFilterMoidTidValue }
|
inputSetter={ setFilterMoidTidValue }
|
||||||
|
handleInputFocus={ handleInputFocus }
|
||||||
></FilterSelectInput>
|
></FilterSelectInput>
|
||||||
<FilterCalendar
|
<FilterCalendar
|
||||||
title={t('filter.period')}
|
title={t('filter.period')}
|
||||||
@@ -274,6 +276,7 @@ export const AllTransactionFilter = ({
|
|||||||
maxAmount={ filterMaxAmount }
|
maxAmount={ filterMaxAmount }
|
||||||
setMinAmount={ setFilterMinAmount }
|
setMinAmount={ setFilterMinAmount }
|
||||||
setMaxAmount={ setFilterMaxAmount }
|
setMaxAmount={ setFilterMaxAmount }
|
||||||
|
handleInputFocus={ handleInputFocus }
|
||||||
></FilterRangeAmount>
|
></FilterRangeAmount>
|
||||||
{/*
|
{/*
|
||||||
<FilterSelect
|
<FilterSelect
|
||||||
@@ -290,6 +293,8 @@ export const AllTransactionFilter = ({
|
|||||||
selectOptions={ searchClOptionsGroup }
|
selectOptions={ searchClOptionsGroup }
|
||||||
inputValue={ filterSearchValue }
|
inputValue={ filterSearchValue }
|
||||||
inputSetter={ setFilterSearchValue }
|
inputSetter={ setFilterSearchValue }
|
||||||
|
handleInputFocus={ handleInputFocus}
|
||||||
|
keyboardAwarePadding={ keyboardAwarePadding }
|
||||||
></FilterSelectInput>
|
></FilterSelectInput>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ import {
|
|||||||
import { useStore } from '@/shared/model/store';
|
import { useStore } from '@/shared/model/store';
|
||||||
import { FilterSelectMid } from '@/shared/ui/filter/select-mid';
|
import { FilterSelectMid } from '@/shared/ui/filter/select-mid';
|
||||||
import { FullMenuClose } from '@/entities/common/ui/full-menu-close';
|
import { FullMenuClose } from '@/entities/common/ui/full-menu-close';
|
||||||
|
import { useKeyboardAware } from '@/shared/lib/hooks';
|
||||||
|
|
||||||
export const BillingFilter = ({
|
export const BillingFilter = ({
|
||||||
filterOn,
|
filterOn,
|
||||||
@@ -55,7 +56,7 @@ export const BillingFilter = ({
|
|||||||
setMaxAmount
|
setMaxAmount
|
||||||
}: BillingFilterProps) => {
|
}: BillingFilterProps) => {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
|
const { handleInputFocus, keyboardAwarePadding } = useKeyboardAware();
|
||||||
const [filterMid, setFilterMid] = useState<string>(mid);
|
const [filterMid, setFilterMid] = useState<string>(mid);
|
||||||
const [filterSearchType, setFilterSearchType] = useState<BillingSearchType>(searchType);
|
const [filterSearchType, setFilterSearchType] = useState<BillingSearchType>(searchType);
|
||||||
const [filterSearchKeyword, setFilterSearchKeyword] = useState<string>(searchKeyword);
|
const [filterSearchKeyword, setFilterSearchKeyword] = useState<string>(searchKeyword);
|
||||||
@@ -124,7 +125,7 @@ export const BillingFilter = ({
|
|||||||
<div className="option-list pt-16 pb-86">
|
<div className="option-list pt-16 pb-86">
|
||||||
<FilterSelectMid
|
<FilterSelectMid
|
||||||
title={t('filter.merchant')}
|
title={t('filter.merchant')}
|
||||||
selectSetter={ setMid }
|
selectSetter={ setFilterMid }
|
||||||
showType={ 'GID' }
|
showType={ 'GID' }
|
||||||
></FilterSelectMid>
|
></FilterSelectMid>
|
||||||
<FilterSelectInput
|
<FilterSelectInput
|
||||||
@@ -134,6 +135,7 @@ export const BillingFilter = ({
|
|||||||
selectOptions={ searchTypeOptionsGroup }
|
selectOptions={ searchTypeOptionsGroup }
|
||||||
inputValue={ searchKeyword }
|
inputValue={ searchKeyword }
|
||||||
inputSetter={ setFilterSearchKeyword }
|
inputSetter={ setFilterSearchKeyword }
|
||||||
|
handleInputFocus={ handleInputFocus }
|
||||||
></FilterSelectInput>
|
></FilterSelectInput>
|
||||||
<FilterCalendar
|
<FilterCalendar
|
||||||
title={t('filter.period')}
|
title={t('filter.period')}
|
||||||
@@ -168,6 +170,8 @@ export const BillingFilter = ({
|
|||||||
maxAmount={ filterMaxAmount }
|
maxAmount={ filterMaxAmount }
|
||||||
setMinAmount={ setFilterMinAmount }
|
setMinAmount={ setFilterMinAmount }
|
||||||
setMaxAmount={ setFilterMaxAmount }
|
setMaxAmount={ setFilterMaxAmount }
|
||||||
|
handleInputFocus={ handleInputFocus }
|
||||||
|
keyboardAwarePadding={ keyboardAwarePadding }
|
||||||
></FilterRangeAmount>
|
></FilterRangeAmount>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ import {
|
|||||||
import { useStore } from '@/shared/model/store';
|
import { useStore } from '@/shared/model/store';
|
||||||
import { FilterSelectMid } from '@/shared/ui/filter/select-mid';
|
import { FilterSelectMid } from '@/shared/ui/filter/select-mid';
|
||||||
import { FullMenuClose } from '@/entities/common/ui/full-menu-close';
|
import { FullMenuClose } from '@/entities/common/ui/full-menu-close';
|
||||||
|
import { useKeyboardAware } from '@/shared/lib/hooks';
|
||||||
|
|
||||||
export const CashReceiptFilter = ({
|
export const CashReceiptFilter = ({
|
||||||
filterOn,
|
filterOn,
|
||||||
@@ -49,6 +50,7 @@ export const CashReceiptFilter = ({
|
|||||||
setSearchNumber
|
setSearchNumber
|
||||||
}: CashReceiptFilterProps) => {
|
}: CashReceiptFilterProps) => {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
|
const { handleInputFocus, keyboardAwarePadding } = useKeyboardAware();
|
||||||
|
|
||||||
const [filterMid, setFilterMid] = useState<string>(mid);
|
const [filterMid, setFilterMid] = useState<string>(mid);
|
||||||
const [filterStartDate, setFilterStartDate] = useState<string>(startDate);
|
const [filterStartDate, setFilterStartDate] = useState<string>(startDate);
|
||||||
@@ -153,6 +155,8 @@ export const CashReceiptFilter = ({
|
|||||||
selectOptions={ issueTypeOptionsGroup }
|
selectOptions={ issueTypeOptionsGroup }
|
||||||
inputValue={ filterSearchNumber }
|
inputValue={ filterSearchNumber }
|
||||||
inputSetter={ setFilterSearchNumber }
|
inputSetter={ setFilterSearchNumber }
|
||||||
|
handleInputFocus={ handleInputFocus }
|
||||||
|
keyboardAwarePadding={ keyboardAwarePadding }
|
||||||
></FilterSelectInput>
|
></FilterSelectInput>
|
||||||
</div>
|
</div>
|
||||||
<div className="apply-row">
|
<div className="apply-row">
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ import {
|
|||||||
import { useStore } from '@/shared/model/store';
|
import { useStore } from '@/shared/model/store';
|
||||||
import { FilterSelectMid } from '@/shared/ui/filter/select-mid';
|
import { FilterSelectMid } from '@/shared/ui/filter/select-mid';
|
||||||
import { FullMenuClose } from '@/entities/common/ui/full-menu-close';
|
import { FullMenuClose } from '@/entities/common/ui/full-menu-close';
|
||||||
|
import { useKeyboardAware } from '@/shared/lib/hooks';
|
||||||
|
|
||||||
export const EscrowFilter = ({
|
export const EscrowFilter = ({
|
||||||
filterOn,
|
filterOn,
|
||||||
@@ -51,7 +52,7 @@ export const EscrowFilter = ({
|
|||||||
setMaxAmount
|
setMaxAmount
|
||||||
}: EscrowFilterProps) => {
|
}: EscrowFilterProps) => {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
|
const { handleInputFocus, keyboardAwarePadding } = useKeyboardAware();
|
||||||
const [filterMid, setFilterMid] = useState<string>(mid);
|
const [filterMid, setFilterMid] = useState<string>(mid);
|
||||||
const [filterSearchType, setFilterSearchType] = useState<EscrowSearchType>(searchType);
|
const [filterSearchType, setFilterSearchType] = useState<EscrowSearchType>(searchType);
|
||||||
const [filterSearchKeyword, setFilterSearchKeyword] = useState<string>(searchKeyword);
|
const [filterSearchKeyword, setFilterSearchKeyword] = useState<string>(searchKeyword);
|
||||||
@@ -127,6 +128,7 @@ export const EscrowFilter = ({
|
|||||||
selectOptions={ searchTypeOptionsGroup }
|
selectOptions={ searchTypeOptionsGroup }
|
||||||
inputValue={ filterSearchKeyword }
|
inputValue={ filterSearchKeyword }
|
||||||
inputSetter={ setFilterSearchKeyword }
|
inputSetter={ setFilterSearchKeyword }
|
||||||
|
handleInputFocus={ handleInputFocus }
|
||||||
></FilterSelectInput>
|
></FilterSelectInput>
|
||||||
<FilterCalendar
|
<FilterCalendar
|
||||||
title={t('filter.period')}
|
title={t('filter.period')}
|
||||||
@@ -155,6 +157,8 @@ export const EscrowFilter = ({
|
|||||||
maxAmount={ filterMaxAmount }
|
maxAmount={ filterMaxAmount }
|
||||||
setMinAmount={ setFilterMinAmount }
|
setMinAmount={ setFilterMinAmount }
|
||||||
setMaxAmount={ setFilterMaxAmount }
|
setMaxAmount={ setFilterMaxAmount }
|
||||||
|
handleInputFocus={ handleInputFocus }
|
||||||
|
keyboardAwarePadding={ keyboardAwarePadding }
|
||||||
></FilterRangeAmount>
|
></FilterRangeAmount>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ import { useLocation } from 'react-router';
|
|||||||
import { snackBar } from '@/shared/lib/toast';
|
import { snackBar } from '@/shared/lib/toast';
|
||||||
import { maskEmail, maskPhoneNumber } from '@/shared/lib/masking';
|
import { maskEmail, maskPhoneNumber } from '@/shared/lib/masking';
|
||||||
import { validatePassword } from '@/shared/lib/password-validation';
|
import { validatePassword } from '@/shared/lib/password-validation';
|
||||||
|
import { useKeyboardAware } from '@/shared/lib/hooks';
|
||||||
|
|
||||||
export const UserAddAccountPage = () => {
|
export const UserAddAccountPage = () => {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
@@ -23,6 +24,7 @@ export const UserAddAccountPage = () => {
|
|||||||
const location = useLocation();
|
const location = useLocation();
|
||||||
const { mid } = location.state || {};
|
const { mid } = location.state || {};
|
||||||
|
|
||||||
|
const { handleInputFocus, keyboardAwarePadding } = useKeyboardAware();
|
||||||
const { mutateAsync: userCreate, isPending } = useUserCreateMutation({
|
const { mutateAsync: userCreate, isPending } = useUserCreateMutation({
|
||||||
onError: (error) => {
|
onError: (error) => {
|
||||||
type ErrorDetail = {
|
type ErrorDetail = {
|
||||||
@@ -555,7 +557,10 @@ export const UserAddAccountPage = () => {
|
|||||||
placeholder="example@domain.com"
|
placeholder="example@domain.com"
|
||||||
value={displayValue}
|
value={displayValue}
|
||||||
onChange={(e) => handleNewEmailChange(index, e.target.value)}
|
onChange={(e) => handleNewEmailChange(index, e.target.value)}
|
||||||
onFocus={() => setEditableEmailIndex(index)}
|
onFocus={(e) => {
|
||||||
|
handleInputFocus(e);
|
||||||
|
setEditableEmailIndex(index);
|
||||||
|
}}
|
||||||
onBlur={() => {
|
onBlur={() => {
|
||||||
if (email && isValidEmail(email)) {
|
if (email && isValidEmail(email)) {
|
||||||
setEditableEmailIndex(-1);
|
setEditableEmailIndex(-1);
|
||||||
@@ -591,14 +596,19 @@ export const UserAddAccountPage = () => {
|
|||||||
const displayValue = isReadOnly && phone ? maskPhoneNumber(phone) : phone;
|
const displayValue = isReadOnly && phone ? maskPhoneNumber(phone) : phone;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="ua-input-row" key={index}>
|
<div className="ua-input-row" key={index}
|
||||||
|
style={keyboardAwarePadding}
|
||||||
|
>
|
||||||
<input
|
<input
|
||||||
className="wid-100"
|
className="wid-100"
|
||||||
type="tel"
|
type="tel"
|
||||||
placeholder="01012345678"
|
placeholder="01012345678"
|
||||||
value={displayValue}
|
value={displayValue}
|
||||||
onChange={(e) => handleNewPhoneChange(index, e.target.value)}
|
onChange={(e) => handleNewPhoneChange(index, e.target.value)}
|
||||||
onFocus={() => setEditablePhoneIndex(index)}
|
onFocus={(e) => {
|
||||||
|
handleInputFocus(e);
|
||||||
|
setEditablePhoneIndex(index);
|
||||||
|
}}
|
||||||
onBlur={() => {
|
onBlur={() => {
|
||||||
if (phone && isValidPhone(phone)) {
|
if (phone && isValidPhone(phone)) {
|
||||||
setEditablePhoneIndex(-1);
|
setEditablePhoneIndex(-1);
|
||||||
|
|||||||
@@ -221,9 +221,9 @@ export const KeyInPaymentPage = () => {
|
|||||||
sortType
|
sortType
|
||||||
]);
|
]);
|
||||||
|
|
||||||
if (!hasAccess) {
|
// if (!hasAccess) {
|
||||||
return <AccessDeniedDialog />;
|
// return <AccessDeniedDialog />;
|
||||||
}
|
// }
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
|
|||||||
@@ -9,9 +9,9 @@ export interface UseKeyboardAwareOptions {
|
|||||||
|
|
||||||
export const useKeyboardAware = (options?: UseKeyboardAwareOptions) => {
|
export const useKeyboardAware = (options?: UseKeyboardAwareOptions) => {
|
||||||
const {
|
const {
|
||||||
defaultPadding = 60,
|
defaultPadding = 0,
|
||||||
heightRatio = 0.7,
|
heightRatio = 0.7,
|
||||||
maxPadding = 300,
|
maxPadding = 320,
|
||||||
transition = 'padding-bottom 0.2s ease'
|
transition = 'padding-bottom 0.2s ease'
|
||||||
} = options || {};
|
} = options || {};
|
||||||
|
|
||||||
|
|||||||
@@ -1,14 +1,16 @@
|
|||||||
import { ChangeEvent } from 'react';
|
import { ChangeEvent, FocusEvent } from 'react';
|
||||||
|
|
||||||
export interface FilterInputProps {
|
export interface FilterInputProps {
|
||||||
title: string;
|
title: string;
|
||||||
inputValue: string;
|
inputValue: string;
|
||||||
inputSetter: (value: any) => void;
|
inputSetter: (value: any) => void;
|
||||||
|
handleInputFocus?: (e: FocusEvent<HTMLInputElement>) => void;
|
||||||
};
|
};
|
||||||
export const FilterInput = ({
|
export const FilterInput = ({
|
||||||
title,
|
title,
|
||||||
inputValue,
|
inputValue,
|
||||||
inputSetter
|
inputSetter,
|
||||||
|
handleInputFocus
|
||||||
}: FilterInputProps) => {
|
}: FilterInputProps) => {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
@@ -25,6 +27,7 @@ export const FilterInput = ({
|
|||||||
placeholder=""
|
placeholder=""
|
||||||
value={ inputValue }
|
value={ inputValue }
|
||||||
onChange={ (e: ChangeEvent<HTMLInputElement>) => inputSetter(e.target.value)}
|
onChange={ (e: ChangeEvent<HTMLInputElement>) => inputSetter(e.target.value)}
|
||||||
|
onFocus={ handleInputFocus }
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import { FilterRangeAmountProps } from '@/entities/common/model/types';
|
import { FilterRangeAmountProps } from '@/entities/common/model/types';
|
||||||
|
import { useKeyboardAware } from '@/shared/lib/hooks/use-keyboard-aware';
|
||||||
import { useEffect } from 'react';
|
import { useEffect } from 'react';
|
||||||
import { useState } from 'react';
|
import { useState } from 'react';
|
||||||
import { ChangeEvent } from 'react';
|
import { ChangeEvent } from 'react';
|
||||||
@@ -10,9 +11,10 @@ export const FilterRangeAmount = ({
|
|||||||
maxAmount,
|
maxAmount,
|
||||||
setMinAmount,
|
setMinAmount,
|
||||||
setMaxAmount,
|
setMaxAmount,
|
||||||
|
handleInputFocus,
|
||||||
|
keyboardAwarePadding
|
||||||
}: FilterRangeAmountProps) => {
|
}: FilterRangeAmountProps) => {
|
||||||
const [filterTitle, setFilterTitle] = useState<string>(title || '거래금액');
|
const [filterTitle, setFilterTitle] = useState<string>(title || '거래금액');
|
||||||
|
|
||||||
const onChangeMinAmount = (val?: number) => {
|
const onChangeMinAmount = (val?: number) => {
|
||||||
setMinAmount(val || undefined);
|
setMinAmount(val || undefined);
|
||||||
};
|
};
|
||||||
@@ -30,13 +32,14 @@ export const FilterRangeAmount = ({
|
|||||||
className="opt-label"
|
className="opt-label"
|
||||||
style={{ fontSize: 'var(--fs-14)' }}
|
style={{ fontSize: 'var(--fs-14)' }}
|
||||||
>{ filterTitle }</div>
|
>{ filterTitle }</div>
|
||||||
<div className="opt-controls">
|
<div className="opt-controls" style={keyboardAwarePadding}>
|
||||||
<div className="input-wrapper ">
|
<div className="input-wrapper ">
|
||||||
<NumericFormat
|
<NumericFormat
|
||||||
value={ minAmount }
|
value={ minAmount }
|
||||||
allowNegative={ false }
|
allowNegative={ false }
|
||||||
displayType="input"
|
displayType="input"
|
||||||
onChange={(e: ChangeEvent<HTMLInputElement>) => onChangeMinAmount(parseInt(e.target.value)) }
|
onChange={(e: ChangeEvent<HTMLInputElement>) => onChangeMinAmount(parseInt(e.target.value)) }
|
||||||
|
onFocus={handleInputFocus}
|
||||||
></NumericFormat>
|
></NumericFormat>
|
||||||
</div>
|
</div>
|
||||||
<span> ~ </span>
|
<span> ~ </span>
|
||||||
@@ -46,6 +49,7 @@ export const FilterRangeAmount = ({
|
|||||||
allowNegative={ false }
|
allowNegative={ false }
|
||||||
displayType="input"
|
displayType="input"
|
||||||
onChange={(e: ChangeEvent<HTMLInputElement>) => onChangeMaxAmount(parseInt(e.target.value)) }
|
onChange={(e: ChangeEvent<HTMLInputElement>) => onChangeMaxAmount(parseInt(e.target.value)) }
|
||||||
|
onFocus={handleInputFocus}
|
||||||
></NumericFormat>
|
></NumericFormat>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { ChangeEvent, useState } from 'react';
|
import { ChangeEvent, CSSProperties, FocusEvent } from 'react';
|
||||||
|
|
||||||
export interface FilterSelectInputProps {
|
export interface FilterSelectInputProps {
|
||||||
title: string;
|
title: string;
|
||||||
@@ -7,6 +7,8 @@ export interface FilterSelectInputProps {
|
|||||||
selectOptions: Array<Record<string, string>>;
|
selectOptions: Array<Record<string, string>>;
|
||||||
inputValue: string | undefined;
|
inputValue: string | undefined;
|
||||||
inputSetter?: (value: any) => void;
|
inputSetter?: (value: any) => void;
|
||||||
|
handleInputFocus?: (e: FocusEvent<HTMLInputElement>) => void;
|
||||||
|
keyboardAwarePadding?: CSSProperties;
|
||||||
};
|
};
|
||||||
export const FilterSelectInput = ({
|
export const FilterSelectInput = ({
|
||||||
title,
|
title,
|
||||||
@@ -14,11 +16,10 @@ export const FilterSelectInput = ({
|
|||||||
selectSetter,
|
selectSetter,
|
||||||
selectOptions,
|
selectOptions,
|
||||||
inputValue,
|
inputValue,
|
||||||
inputSetter
|
inputSetter,
|
||||||
|
handleInputFocus,
|
||||||
|
keyboardAwarePadding
|
||||||
}: FilterSelectInputProps) => {
|
}: FilterSelectInputProps) => {
|
||||||
const [selectVal, setSelectVal] = useState();
|
|
||||||
const [inputVal, setInputVal] = useState();
|
|
||||||
|
|
||||||
const getSelectOptions = () => {
|
const getSelectOptions = () => {
|
||||||
let rs = [];
|
let rs = [];
|
||||||
for (let i = 0; i < selectOptions.length; i++) {
|
for (let i = 0; i < selectOptions.length; i++) {
|
||||||
@@ -53,7 +54,7 @@ export const FilterSelectInput = ({
|
|||||||
className="opt-label"
|
className="opt-label"
|
||||||
style={{ fontSize: 'var(--fs-14)' }}
|
style={{ fontSize: 'var(--fs-14)' }}
|
||||||
>{ title }</div>
|
>{ title }</div>
|
||||||
<div className="opt-controls">
|
<div className="opt-controls" style={keyboardAwarePadding}>
|
||||||
<select
|
<select
|
||||||
className="w-110"
|
className="w-110"
|
||||||
value={ selectValue }
|
value={ selectValue }
|
||||||
@@ -67,6 +68,7 @@ export const FilterSelectInput = ({
|
|||||||
style={{ height: '38px' }}
|
style={{ height: '38px' }}
|
||||||
value={inputValue}
|
value={inputValue}
|
||||||
onChange={onChangeInput}
|
onChange={onChangeInput}
|
||||||
|
onFocus={handleInputFocus}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ export interface FilterSelectProps {
|
|||||||
selectValue: string;
|
selectValue: string;
|
||||||
selectSetter: (value: any) => void;
|
selectSetter: (value: any) => void;
|
||||||
selectOptions: Array<Record<string, string>>;
|
selectOptions: Array<Record<string, string>>;
|
||||||
|
|
||||||
};
|
};
|
||||||
export const FilterSelect = ({
|
export const FilterSelect = ({
|
||||||
title,
|
title,
|
||||||
|
|||||||
Reference in New Issue
Block a user