use-card-input-hook
TypeScript icon, indicating that this package has built-in type declarations

0.0.10 • Public • Published

Hooks Module

페이먼츠 커스텀 훅

  • package 이름 : use-card-input-hook
  • Writer : 헤일리, 리안

Installation

npm install use-card-input-hook

Available Hooks

  • useCardNumbers (카드 넘버 입력 커스텀 훅)
  • useCardCompany (카드 회사 선택 커스텀 훅)
  • useCardHolder (영문이름 입력 커스텀 훅)
  • useExpiryDate (유효기간(월/년) 입력 커스텀 훅)
  • useCVC (CVC 넘버 3자리 입력 커스텀 훅)
  • usePassword (비밀번호 2자리 입력 커스텀 훅)

Usage

(1) useCardNumbers

  • useCardNumbers는 카드 번호 16자리를 입력 받습니다.

  • 카드 번호는 하나의 폼에 입력하는 형태입니다 (카드 번호 14 ~ 16자리).

  • validate : 입력한 카드 번호가 모두 숫자인지, 조건에 맞게 모두 작성되었는지 확인합니다.

  • 사용 가능한 카드 타입 : CARD_BRAND = | 'VISA' | 'MASTER' | 'AMEX' | 'DINERS' | 'UNIONPAY';

[IS_NOT_NUMBER]: '카드번호는 숫자만 입력해주세요.'
[INVALID_LENGTH]: '잘못된 카드 번호입니다. 다시 입력해주세요.'

const { value, cardBrand, formatValue, onChange, onBlur, errorMessage } =
  useCardNumbers();

return (
  <>
    <h1>Hooks Modules</h1>
    <div>카드 번호</div>
    {/*cardNumbers*/}
    <input type="text" value={value} onChange={onChange} onBlur={onBlur} />
    <p>
      {cardBrand} {formatValue}
    </p>
    <p>{errorMessage}</p>
  </>
);

(2) useCardCompany

  • useCardCompany는 카드 발급 회사에 대해 선택할 수 있습니다.
  • validate : 선택한 벨류가 유효한 값인지 확인합니다.

[INVALID_OPTION]: '유효하지 않은 옵션입니다.'

const { value, onSelect, errorMessages } = useCardCompany({
  initialValue: '',
  optionArray: MockCardCompany,
});

return (
  <>
    <label>cardCompany</label>
    <select value={value} onChange={(e) => onSelect(e.target.value)}>
      <option value="">선택</option>
      {MockCardCompany.map((company) => (
        <option key={company} value={company}>
          {company}
        </option>
      ))}
    </select>
    <div>{errorMessages}</div>
  </>
);

(3) useCardHolder

  • useCardHolder 커스텀 훅은 카드의 영문이름을 입력 받습니다.
  • validate : 입력 받은 벨류가 모두 대문자 영어인지를 확인합니다.

[ONLY_UPPERCASE]: '영대문자로만 입력해주세요.'
[IS_DOUBLE_BLANK]: '빈칸이 두개 이상 포함되어 있습니다.'

const { value, onChange, onBlur, errorMessage } = useCardHolder('');

return (
  <>
    <label>CardHolder</label>
    <input
      value={value}
      onChange={onChange}
      onBlur={onBlur}
      name="cardHolder"
    />
    <div>{errorMessage}</div>
  </>
);

(4) useExpiryDate

  • useExpiryDate 커스텀 훅은 카드의 유효기간 (월/년도)에 대해 입력 받습니다.
  • validate : 입력 받은 벨류가 모두 숫자인지, 유효한 기간인지를 확인합니다.

[IS_NOT_NUMBER]: '만료 일자는 숫자만 입력해주세요.'
[INVALID_DATE]:'이미 만료된 카드입니다. 만료일자를 확인해 주세요.' [INVALID_MONTH]: '유효하지 않은 월 입력입니다.'
[INVALID_YEAR]: '유효하지 않은 년 입력입니다.'
[INVALID_LENGTH]: '일자는 2자리 숫자로 입력해 주세요.'

const {
  values: { month, year },
  onChange,
  onBlur,
  errorMessages,
} = useExpiryDate({
  month: '',
  year: '',
});

return (
  <>
    <label>expiryDate</label>
    <input value={month} onChange={onChange} onBlur={onBlur} name="month" />

    <div>{errorMessages && errorMessages.month}</div>
    <input value={year} onChange={onChange} onBlur={onBlur} name="year" />
    <div>{errorMessages && errorMessages.year}</div>
  </>
);

(5) useCVC

  • useCVC 커스텀 훅은 카드의 CVC 3자리를 입력 받습니다.
  • validate : 입력 받은 벨류가 모두 숫자인지, 길이가 3인지를 확인합니다.

[IS_NOT_NUMBER]: 'CVC는 숫자만 입력해주세요.'
[INVALID_LENGTH]: 'CVC는 3글자 이상으로 입력해 주세요.'

  const { value, onChange, onBlur, errorMessage } = useCVC('');
  return (
    <>
      <label>CVC</label>
      <input value={value} onChange={onChange} onBlur={onBlur} name="CVC" />
      {errorMessage && <p>{errorMessage}</p>}
    </>
  );```

(6) usePassword

  • usePassword 커스텀 훅은 카드의 비밀번호 앞자리 2자리를 입력 받습니다.
  • validate : 입력 받은 벨류가 모두 숫자인지, 길이가 2인지를 확인합니다.

[IS_NOT_NUMBER]: '비밀번호는 숫자만 입력해주세요.'
[INVALID_LENGTH]: '비밀번호는 2글자만 입력해 주세요.'

const { value, onChange, onBlur, errorMessage } = usePassword('');

return (
  <>
    <label>password</label>
    <input value={value} onChange={onChange} onBlur={onBlur} name="password" />
    <div>{errorMessage}</div>
  </>
);

Package Sidebar

Install

npm i use-card-input-hook

Weekly Downloads

3

Version

0.0.10

License

none

Unpacked Size

27.1 kB

Total Files

29

Last publish

Collaborators

  • healim01