@cp949/japanpost-react 1.0.2 → 1.0.4
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.
- package/README.ko.md +27 -1
- package/README.md +24 -0
- package/dist/{src/core/types.d.ts → client.d.ts} +64 -29
- package/dist/client.es.js +495 -0
- package/dist/index.d.ts +291 -1
- package/dist/index.es.js +512 -459
- package/package.json +10 -10
- package/dist/index.umd.cjs +0 -6
- package/dist/src/components/AddressSearchInput.d.ts +0 -8
- package/dist/src/components/AddressSearchInput.d.ts.map +0 -1
- package/dist/src/components/PostalCodeInput.d.ts +0 -8
- package/dist/src/components/PostalCodeInput.d.ts.map +0 -1
- package/dist/src/core/errors.d.ts +0 -11
- package/dist/src/core/errors.d.ts.map +0 -1
- package/dist/src/core/formatters.d.ts +0 -12
- package/dist/src/core/formatters.d.ts.map +0 -1
- package/dist/src/core/normalizers.d.ts +0 -7
- package/dist/src/core/normalizers.d.ts.map +0 -1
- package/dist/src/core/types.d.ts.map +0 -1
- package/dist/src/core/validators.d.ts +0 -6
- package/dist/src/core/validators.d.ts.map +0 -1
- package/dist/src/index.d.ts +0 -11
- package/dist/src/index.d.ts.map +0 -1
- package/dist/src/react/toJapanAddressError.d.ts +0 -8
- package/dist/src/react/toJapanAddressError.d.ts.map +0 -1
- package/dist/src/react/useJapanAddress.d.ts +0 -8
- package/dist/src/react/useJapanAddress.d.ts.map +0 -1
- package/dist/src/react/useJapanAddressSearch.d.ts +0 -7
- package/dist/src/react/useJapanAddressSearch.d.ts.map +0 -1
- package/dist/src/react/useJapanPostalCode.d.ts +0 -7
- package/dist/src/react/useJapanPostalCode.d.ts.map +0 -1
- package/dist/src/react/useLatestRequestState.d.ts +0 -23
- package/dist/src/react/useLatestRequestState.d.ts.map +0 -1
package/README.ko.md
CHANGED
|
@@ -18,6 +18,28 @@ pnpm add @cp949/japanpost-react
|
|
|
18
18
|
|
|
19
19
|
- 지원 React 버전: React 18, React 19
|
|
20
20
|
|
|
21
|
+
이 패키지는 ESM으로 배포됩니다. 서버 유틸리티와 공용 타입은
|
|
22
|
+
`@cp949/japanpost-react`에서 가져오고, Next.js App Router에서 훅이나
|
|
23
|
+
headless 입력 컴포넌트는 `@cp949/japanpost-react/client`를 사용하세요.
|
|
24
|
+
`require("@cp949/japanpost-react")`,
|
|
25
|
+
`require("@cp949/japanpost-react/client")`는 지원되지 않으며, CommonJS
|
|
26
|
+
소비자는 `const pkg = await import("@cp949/japanpost-react");` 같은 ESM
|
|
27
|
+
interop을 사용해야 합니다.
|
|
28
|
+
|
|
29
|
+
## Next.js
|
|
30
|
+
|
|
31
|
+
Next.js App Router에서 훅이나 headless 입력 컴포넌트를 쓸 때는
|
|
32
|
+
클라이언트 컴포넌트 안에서 `@cp949/japanpost-react/client` 경로를
|
|
33
|
+
사용하는 것을 권장합니다. 유틸리티 함수와 공용 타입은 루트 엔트리에서
|
|
34
|
+
가져오면 됩니다.
|
|
35
|
+
|
|
36
|
+
```tsx
|
|
37
|
+
"use client";
|
|
38
|
+
|
|
39
|
+
import { PostalCodeInput, useJapanPostalCode } from "@cp949/japanpost-react/client";
|
|
40
|
+
import { normalizeJapanPostalCode, type JapanAddressDataSource } from "@cp949/japanpost-react";
|
|
41
|
+
```
|
|
42
|
+
|
|
21
43
|
## 빠른 시작
|
|
22
44
|
|
|
23
45
|
```tsx
|
|
@@ -157,6 +179,9 @@ export function PostalForm() {
|
|
|
157
179
|
성공할 수 있고, `404 -> not_found`는 miss를 오류로 노출하는 백엔드에서만
|
|
158
180
|
선택적으로 쓰면 됩니다.
|
|
159
181
|
|
|
182
|
+
Next.js에서도 `dataSource`는 자체 서버 API를 바라보도록 두고, Japan Post
|
|
183
|
+
업스트림 자격 증명과 토큰 교환은 브라우저가 아니라 서버에서 처리하세요.
|
|
184
|
+
|
|
160
185
|
## Exports
|
|
161
186
|
|
|
162
187
|
- `normalizeJapanPostalCode`
|
|
@@ -345,5 +370,6 @@ timeout 메시지는 토큰 발급 단계와 실제 조회 단계 중 어느 쪽
|
|
|
345
370
|
## SSR
|
|
346
371
|
|
|
347
372
|
`dataSource` 구현에서는 서버 측 API를 사용하고, 토큰 교환과 업스트림 서명은
|
|
348
|
-
서버에서만 처리하세요. React 훅과 UI
|
|
373
|
+
서버에서만 처리하세요. Next.js App Router에서는 React 훅과 UI 컴포넌트를
|
|
374
|
+
`@cp949/japanpost-react/client`에서 import해 클라이언트 컴포넌트에서
|
|
349
375
|
사용하는 것이 안전합니다.
|
package/README.md
CHANGED
|
@@ -21,6 +21,26 @@ pnpm add @cp949/japanpost-react
|
|
|
21
21
|
`packages/japanpost-react`
|
|
22
22
|
- Demo app in this repository: `apps/demo`
|
|
23
23
|
|
|
24
|
+
This package is published as ESM. Keep server utilities and shared types on
|
|
25
|
+
`@cp949/japanpost-react`, and import hooks or headless input components for the
|
|
26
|
+
Next.js App Router from `@cp949/japanpost-react/client`. CommonJS consumers
|
|
27
|
+
must use ESM interop. `require("@cp949/japanpost-react")` and
|
|
28
|
+
`require("@cp949/japanpost-react/client")` are not supported. In CommonJS, use
|
|
29
|
+
ESM interop such as `const pkg = await import("@cp949/japanpost-react");`.
|
|
30
|
+
|
|
31
|
+
## Next.js
|
|
32
|
+
|
|
33
|
+
When you use hooks or headless input components in the Next.js App Router,
|
|
34
|
+
import them from `@cp949/japanpost-react/client` inside a Client Component.
|
|
35
|
+
Keep utility functions and shared types on the root entry.
|
|
36
|
+
|
|
37
|
+
```tsx
|
|
38
|
+
"use client";
|
|
39
|
+
|
|
40
|
+
import { PostalCodeInput, useJapanPostalCode } from "@cp949/japanpost-react/client";
|
|
41
|
+
import { normalizeJapanPostalCode, type JapanAddressDataSource } from "@cp949/japanpost-react";
|
|
42
|
+
```
|
|
43
|
+
|
|
24
44
|
## What The Package Provides
|
|
25
45
|
|
|
26
46
|
- Hooks for postal-code lookup and address search:
|
|
@@ -163,6 +183,10 @@ The example paths above match this repository's reference backend. In your own
|
|
|
163
183
|
app, the backend routes can be different as long as your `dataSource`
|
|
164
184
|
implementation returns the same public types.
|
|
165
185
|
|
|
186
|
+
In Next.js, keep the `dataSource` implementation pointed at your own server-side
|
|
187
|
+
API routes. Do not expose Japan Post credentials or token exchange logic to the
|
|
188
|
+
browser.
|
|
189
|
+
|
|
166
190
|
## Core Contract
|
|
167
191
|
|
|
168
192
|
`Page<T>` is the result shape shared by the hooks and the reference backend:
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import { ReactNode, ComponentPropsWithoutRef } from 'react';
|
|
3
|
+
|
|
2
4
|
/**
|
|
3
5
|
* `japanpost-react`의 공개 계약과 내부 정규화 계약을 한 곳에 모아 둔 타입 모음이다.
|
|
4
6
|
* 훅, 입력 컴포넌트, data source, minimal-api 연동 예제가 모두 이 정의를 기준으로 맞물리므로
|
|
@@ -8,7 +10,7 @@ import { ComponentPropsWithoutRef, ReactNode } from 'react';
|
|
|
8
10
|
* 일본우정 API에서 반환되는 원본 주소 레코드 형태.
|
|
9
11
|
* 공개 API 표면에는 직접 노출하지 않고 내부에서만 사용한다.
|
|
10
12
|
*/
|
|
11
|
-
|
|
13
|
+
type JapanPostApiAddressRecord = {
|
|
12
14
|
zip_code?: string | number | null;
|
|
13
15
|
pref_code?: string | number | null;
|
|
14
16
|
pref_name?: string | null;
|
|
@@ -24,7 +26,7 @@ export type JapanPostApiAddressRecord = {
|
|
|
24
26
|
/**
|
|
25
27
|
* 우편번호로 주소를 검색할 때(searchcode) API 응답 형태.
|
|
26
28
|
*/
|
|
27
|
-
|
|
29
|
+
type JapanPostSearchCodeResponse = {
|
|
28
30
|
addresses?: JapanPostApiAddressRecord[] | null;
|
|
29
31
|
message?: string | null;
|
|
30
32
|
status?: number;
|
|
@@ -32,17 +34,17 @@ export type JapanPostSearchCodeResponse = {
|
|
|
32
34
|
/**
|
|
33
35
|
* 주소 키워드로 검색할 때(addresszip) API 응답 형태.
|
|
34
36
|
*/
|
|
35
|
-
|
|
37
|
+
type JapanPostAddressZipResponse = {
|
|
36
38
|
addresses?: JapanPostApiAddressRecord[] | null;
|
|
37
39
|
message?: string | null;
|
|
38
40
|
status?: number;
|
|
39
41
|
};
|
|
40
|
-
|
|
42
|
+
type JapanPostApiResponse = JapanPostSearchCodeResponse | JapanPostAddressZipResponse;
|
|
41
43
|
/**
|
|
42
44
|
* minimal-api가 그대로 받는 공개 searchcode 요청 타입이다.
|
|
43
45
|
* pageNumber/rowsPerPage를 노출하는 이유는 라이브러리와 API 예제가 같은 pager 의미 체계를 공유하기 위해서다.
|
|
44
46
|
*/
|
|
45
|
-
|
|
47
|
+
type JapanPostSearchcodeRequest = {
|
|
46
48
|
postalCode: string;
|
|
47
49
|
pageNumber: number;
|
|
48
50
|
rowsPerPage: number;
|
|
@@ -52,7 +54,7 @@ export type JapanPostSearchcodeRequest = {
|
|
|
52
54
|
* useJapanPostalCode의 공개 검색 입력 타입.
|
|
53
55
|
* 문자열 입력은 기존 호환성을 유지하고, 객체 입력은 pager 옵션을 함께 전달할 수 있게 한다.
|
|
54
56
|
*/
|
|
55
|
-
|
|
57
|
+
type JapanPostalCodeSearchInput = string | {
|
|
56
58
|
postalCode: string;
|
|
57
59
|
pageNumber?: number;
|
|
58
60
|
rowsPerPage?: number;
|
|
@@ -62,7 +64,7 @@ export type JapanPostalCodeSearchInput = string | {
|
|
|
62
64
|
* useJapanAddressSearch의 공개 검색 입력 타입.
|
|
63
65
|
* 문자열 입력은 키워드 검색 호환성을 유지하고, 객체 입력은 자유 검색과 구조화 검색 필드를 함께 전달할 수 있게 한다.
|
|
64
66
|
*/
|
|
65
|
-
|
|
67
|
+
type JapanAddressSearchInput = string | (Omit<JapanPostAddresszipRequest, "pageNumber" | "rowsPerPage"> & {
|
|
66
68
|
pageNumber?: number;
|
|
67
69
|
rowsPerPage?: number;
|
|
68
70
|
});
|
|
@@ -71,7 +73,7 @@ export type JapanAddressSearchInput = string | (Omit<JapanPostAddresszipRequest,
|
|
|
71
73
|
* 자유 검색(addressQuery)뿐 아니라 구조화 검색 필드도 함께 열어 두어
|
|
72
74
|
* 상위 UI가 필요한 만큼만 업스트림 검색 축을 선택적으로 노출할 수 있게 한다.
|
|
73
75
|
*/
|
|
74
|
-
|
|
76
|
+
type JapanPostAddresszipRequest = {
|
|
75
77
|
addressQuery?: string | null;
|
|
76
78
|
prefCode?: string | null;
|
|
77
79
|
prefName?: string | null;
|
|
@@ -93,7 +95,7 @@ export type JapanPostAddresszipRequest = {
|
|
|
93
95
|
* API 응답을 정규화한 후의 중간 주소 레코드 형태.
|
|
94
96
|
* 내부 data source 처리 후 공개 JapanAddress 타입으로 변환되기 전에 사용된다.
|
|
95
97
|
*/
|
|
96
|
-
|
|
98
|
+
type NormalizedJapanAddressRecord = {
|
|
97
99
|
postalCode: string;
|
|
98
100
|
prefecture: string;
|
|
99
101
|
prefectureKana?: string;
|
|
@@ -107,7 +109,7 @@ export type NormalizedJapanAddressRecord = {
|
|
|
107
109
|
* 라이브러리 공개 주소 타입. 훅과 클라이언트가 외부로 반환하는 최종 형태.
|
|
108
110
|
* `address`는 표시 편의를 위한 결합 문자열이고, 나머지 필드는 후처리/재조합이 가능한 구조화 값이다.
|
|
109
111
|
*/
|
|
110
|
-
|
|
112
|
+
type JapanAddress = {
|
|
111
113
|
postalCode: string;
|
|
112
114
|
prefecture: string;
|
|
113
115
|
prefectureKana?: string;
|
|
@@ -122,7 +124,7 @@ export type JapanAddress = {
|
|
|
122
124
|
* minimal-api와 라이브러리가 공통으로 사용하는 pager 응답 계약이다.
|
|
123
125
|
* 페이지 기반 UI가 아니더라도 total/page 정보를 유지해 "결과 없음"과 "일부만 조회됨"을 구분할 수 있다.
|
|
124
126
|
*/
|
|
125
|
-
|
|
127
|
+
type Page<T> = {
|
|
126
128
|
elements: T[];
|
|
127
129
|
totalElements: number;
|
|
128
130
|
pageNumber: number;
|
|
@@ -132,22 +134,22 @@ export type Page<T> = {
|
|
|
132
134
|
* 우편번호 조회 결과.
|
|
133
135
|
* 단일 주소만 기대하는 소비자도 있을 수 있지만, 업스트림 계약이 목록 + 페이징이므로 그대로 보존한다.
|
|
134
136
|
*/
|
|
135
|
-
|
|
137
|
+
type JapanPostalCodeLookupResult = Page<JapanAddress>;
|
|
136
138
|
/**
|
|
137
139
|
* 키워드 주소 검색 결과.
|
|
138
140
|
* postal code 조회와 동일한 pager 형태를 사용해 두 검색 모드를 같은 UI로 렌더링할 수 있게 한다.
|
|
139
141
|
*/
|
|
140
|
-
|
|
142
|
+
type JapanAddressSearchResult = Page<JapanAddress>;
|
|
141
143
|
/**
|
|
142
144
|
* 라이브러리 전용 오류 코드 목록.
|
|
143
145
|
* 소비자는 message 문자열보다 code를 기준으로 UX를 분기하는 것이 안전하다.
|
|
144
146
|
*/
|
|
145
|
-
|
|
147
|
+
type JapanAddressErrorCode = "invalid_postal_code" | "invalid_query" | "network_error" | "timeout" | "not_found" | "bad_response" | "data_source_error";
|
|
146
148
|
/**
|
|
147
149
|
* 라이브러리 전용 에러 타입. 훅과 data source 전반에서 일관되게 사용된다.
|
|
148
150
|
* 브라우저/서버/사용자 입력 오류를 모두 같은 형태로 감싸 public contract를 단순화한다.
|
|
149
151
|
*/
|
|
150
|
-
|
|
152
|
+
type JapanAddressError = Error & {
|
|
151
153
|
name: "JapanAddressError";
|
|
152
154
|
code: JapanAddressErrorCode;
|
|
153
155
|
cause?: unknown;
|
|
@@ -157,7 +159,7 @@ export type JapanAddressError = Error & {
|
|
|
157
159
|
* data source 요청에 전달할 선택 옵션.
|
|
158
160
|
* 현재는 AbortSignal만 쓰지만, 추후 timeout/metadata가 필요해져도 호출부 시그니처를 크게 흔들지 않기 위한 확장 지점이다.
|
|
159
161
|
*/
|
|
160
|
-
|
|
162
|
+
type JapanAddressRequestOptions = {
|
|
161
163
|
signal?: AbortSignal;
|
|
162
164
|
};
|
|
163
165
|
/**
|
|
@@ -165,7 +167,7 @@ export type JapanAddressRequestOptions = {
|
|
|
165
167
|
* 커스텀 구현체로 교체할 수 있도록 추상화되어 있다.
|
|
166
168
|
* 즉, 훅은 fetch 구현을 모르고 pager 계약과 에러 계약만 신뢰한다.
|
|
167
169
|
*/
|
|
168
|
-
|
|
170
|
+
type JapanAddressDataSource = {
|
|
169
171
|
lookupPostalCode: (request: JapanPostSearchcodeRequest, options?: JapanAddressRequestOptions) => Promise<Page<JapanAddress>>;
|
|
170
172
|
searchAddress: (request: JapanPostAddresszipRequest, options?: JapanAddressRequestOptions) => Promise<Page<JapanAddress>>;
|
|
171
173
|
};
|
|
@@ -173,14 +175,14 @@ export type JapanAddressDataSource = {
|
|
|
173
175
|
* useJapanPostalCode 훅 옵션.
|
|
174
176
|
* data source 주입 방식으로 브라우저 직접 호출, BFF, mock을 모두 같은 훅으로 다룬다.
|
|
175
177
|
*/
|
|
176
|
-
|
|
178
|
+
type UseJapanPostalCodeOptions = {
|
|
177
179
|
dataSource: JapanAddressDataSource;
|
|
178
180
|
};
|
|
179
181
|
/**
|
|
180
182
|
* useJapanAddressSearch 훅 옵션.
|
|
181
183
|
* debounce는 UI 입력 빈도를 제어하기 위한 것이며 data source 계약을 바꾸지 않는다.
|
|
182
184
|
*/
|
|
183
|
-
|
|
185
|
+
type UseJapanAddressSearchOptions = {
|
|
184
186
|
dataSource: JapanAddressDataSource;
|
|
185
187
|
debounceMs?: number;
|
|
186
188
|
};
|
|
@@ -188,7 +190,7 @@ export type UseJapanAddressSearchOptions = {
|
|
|
188
190
|
* useJapanAddress 훅 옵션.
|
|
189
191
|
* 통합 훅도 내부적으로는 두 검색 훅을 조합하므로 필요한 옵션만 얇게 위임한다.
|
|
190
192
|
*/
|
|
191
|
-
|
|
193
|
+
type UseJapanAddressOptions = {
|
|
192
194
|
dataSource: JapanAddressDataSource;
|
|
193
195
|
debounceMs?: number;
|
|
194
196
|
};
|
|
@@ -196,7 +198,7 @@ export type UseJapanAddressOptions = {
|
|
|
196
198
|
* 비동기 데이터 로딩 상태를 표현하는 제네릭 타입.
|
|
197
199
|
* 모든 훅이 같은 상태 모양을 공유하면 소비자 컴포넌트가 검색 종류와 무관하게 공통 렌더링 로직을 가질 수 있다.
|
|
198
200
|
*/
|
|
199
|
-
|
|
201
|
+
type UseAsyncState<T> = {
|
|
200
202
|
loading: boolean;
|
|
201
203
|
data: T | null;
|
|
202
204
|
error: JapanAddressError | null;
|
|
@@ -205,7 +207,7 @@ export type UseAsyncState<T> = {
|
|
|
205
207
|
* useJapanPostalCode 훅의 반환 타입.
|
|
206
208
|
* search는 실패나 취소 시 null을 반환해 UI가 try/catch 없이도 분기할 수 있게 한다.
|
|
207
209
|
*/
|
|
208
|
-
|
|
210
|
+
type UseJapanPostalCodeResult = UseAsyncState<JapanPostalCodeLookupResult> & {
|
|
209
211
|
cancel: () => void;
|
|
210
212
|
reset: () => void;
|
|
211
213
|
search: (input: JapanPostalCodeSearchInput) => Promise<JapanPostalCodeLookupResult | null>;
|
|
@@ -214,7 +216,7 @@ export type UseJapanPostalCodeResult = UseAsyncState<JapanPostalCodeLookupResult
|
|
|
214
216
|
* useJapanAddressSearch 훅의 반환 타입.
|
|
215
217
|
* debounce 취소와 오류 모두 Promise 결과 관점에서는 null로 귀결될 수 있으므로 호출부는 state와 함께 해석해야 한다.
|
|
216
218
|
*/
|
|
217
|
-
|
|
219
|
+
type UseJapanAddressSearchResult = UseAsyncState<JapanAddressSearchResult> & {
|
|
218
220
|
cancel: () => void;
|
|
219
221
|
reset: () => void;
|
|
220
222
|
search: (input: JapanAddressSearchInput) => Promise<JapanAddressSearchResult | null>;
|
|
@@ -223,7 +225,7 @@ export type UseJapanAddressSearchResult = UseAsyncState<JapanAddressSearchResult
|
|
|
223
225
|
* useJapanAddress 훅의 반환 타입.
|
|
224
226
|
* data/error는 "현재 활성 검색 모드" 기준 값이며, 두 내부 훅의 상태 전체를 그대로 노출하지는 않는다.
|
|
225
227
|
*/
|
|
226
|
-
|
|
228
|
+
type UseJapanAddressResult = UseAsyncState<Page<JapanAddress>> & {
|
|
227
229
|
reset: () => void;
|
|
228
230
|
searchByPostalCode: (input: JapanPostalCodeSearchInput) => Promise<JapanPostalCodeLookupResult | null>;
|
|
229
231
|
searchByAddressQuery: (input: JapanAddressSearchInput) => Promise<JapanAddressSearchResult | null>;
|
|
@@ -245,7 +247,7 @@ type BaseTextSearchInputProps = {
|
|
|
245
247
|
* PostalCodeInput 컴포넌트 props.
|
|
246
248
|
* onSearch는 표시 문자열이 아니라 정규화된 우편번호를 받는다는 점이 핵심 계약이다.
|
|
247
249
|
*/
|
|
248
|
-
|
|
250
|
+
type PostalCodeInputProps = BaseTextSearchInputProps & {
|
|
249
251
|
onChange?: (postalCode: string) => void;
|
|
250
252
|
onSearch: (postalCode: string) => void;
|
|
251
253
|
};
|
|
@@ -253,9 +255,42 @@ export type PostalCodeInputProps = BaseTextSearchInputProps & {
|
|
|
253
255
|
* AddressSearchInput 컴포넌트 props.
|
|
254
256
|
* onSearch에는 trim 처리된 검색어가 전달되어 공백만 다른 입력이 별도 쿼리로 취급되지 않게 한다.
|
|
255
257
|
*/
|
|
256
|
-
|
|
258
|
+
type AddressSearchInputProps = BaseTextSearchInputProps & {
|
|
257
259
|
onChange?: (query: string) => void;
|
|
258
260
|
onSearch: (query: string) => void;
|
|
259
261
|
};
|
|
260
|
-
|
|
261
|
-
|
|
262
|
+
|
|
263
|
+
/**
|
|
264
|
+
* 스타일 의존성이 없는 최소한의 주소 키워드 검색 입력 컴포넌트.
|
|
265
|
+
* value를 전달하면 제어 모드, 전달하지 않으면 비제어 모드로 동작한다.
|
|
266
|
+
* 검색 시 trim 처리를 내부에서 수행해 공백만 다른 입력이 별도 쿼리로 번지지 않게 한다.
|
|
267
|
+
*/
|
|
268
|
+
declare function AddressSearchInput({ defaultValue, value, disabled, label, buttonLabel, inputProps, buttonProps, onChange, onSearch, }: AddressSearchInputProps): react_jsx_runtime.JSX.Element;
|
|
269
|
+
|
|
270
|
+
/**
|
|
271
|
+
* 스타일 의존성이 없는 최소한의 우편번호 입력 컴포넌트.
|
|
272
|
+
* value를 전달하면 제어 모드, 전달하지 않으면 비제어 모드로 동작한다.
|
|
273
|
+
* 제출 시에는 표시 형식이 아니라 정규화된 숫자 문자열을 콜백에 넘기는 것이 핵심 계약이다.
|
|
274
|
+
*/
|
|
275
|
+
declare function PostalCodeInput({ defaultValue, value, disabled, label, buttonLabel, inputProps, buttonProps, onChange, onSearch, }: PostalCodeInputProps): react_jsx_runtime.JSX.Element;
|
|
276
|
+
|
|
277
|
+
/**
|
|
278
|
+
* 우편번호 조회와 키워드 주소 검색을 하나의 인터페이스로 제공하는 통합 훅.
|
|
279
|
+
* 두 검색 모드가 공유하는 data source를 내부에서 재사용하고,
|
|
280
|
+
* 마지막으로 실행된 검색 종류만 외부에 노출해 두 결과가 섞이지 않도록 한다.
|
|
281
|
+
*/
|
|
282
|
+
declare function useJapanAddress(options: UseJapanAddressOptions): UseJapanAddressResult;
|
|
283
|
+
|
|
284
|
+
/**
|
|
285
|
+
* 자유 형식 키워드로 일본 주소를 검색하는 훅.
|
|
286
|
+
* 디바운스를 지원하며 loading / data / error 상태와 search / reset 함수를 제공한다.
|
|
287
|
+
*/
|
|
288
|
+
declare function useJapanAddressSearch(options: UseJapanAddressSearchOptions): UseJapanAddressSearchResult;
|
|
289
|
+
|
|
290
|
+
/**
|
|
291
|
+
* 일본 우편번호로 주소를 조회하는 훅.
|
|
292
|
+
* loading / data / error 상태와 search / reset 함수를 제공한다.
|
|
293
|
+
*/
|
|
294
|
+
declare function useJapanPostalCode(options: UseJapanPostalCodeOptions): UseJapanPostalCodeResult;
|
|
295
|
+
|
|
296
|
+
export { AddressSearchInput, type AddressSearchInputProps, type JapanAddress, type JapanAddressDataSource, type JapanAddressError, type JapanAddressErrorCode, type JapanAddressRequestOptions, type JapanAddressSearchInput, type JapanAddressSearchResult, type JapanPostAddressZipResponse, type JapanPostAddresszipRequest, type JapanPostApiAddressRecord, type JapanPostApiResponse, type JapanPostSearchCodeResponse, type JapanPostSearchcodeRequest, type JapanPostalCodeLookupResult, type JapanPostalCodeSearchInput, type NormalizedJapanAddressRecord, type Page, PostalCodeInput, type PostalCodeInputProps, type UseAsyncState, type UseJapanAddressOptions, type UseJapanAddressResult, type UseJapanAddressSearchOptions, type UseJapanAddressSearchResult, type UseJapanPostalCodeOptions, type UseJapanPostalCodeResult, useJapanAddress, useJapanAddressSearch, useJapanPostalCode };
|