@ncds/ui-admin 1.8.21-alpha.6 → 1.8.21-alpha.7

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.
Files changed (29) hide show
  1. package/dist/cjs/src/components/forms-and-input/input-base/InputBase.js +20 -14
  2. package/dist/cjs/src/components/index.js +11 -0
  3. package/dist/cjs/src/components/overlays/postcode-search-modal/PostcodeSearchModal.js +283 -0
  4. package/dist/cjs/src/components/overlays/postcode-search-modal/__tests__/PostcodeSearchModal.test.js +566 -0
  5. package/dist/cjs/src/components/overlays/postcode-search-modal/index.js +16 -0
  6. package/dist/cjs/src/generated/scoped-css.js +1 -1
  7. package/dist/esm/src/components/forms-and-input/input-base/InputBase.js +20 -14
  8. package/dist/esm/src/components/index.js +1 -0
  9. package/dist/esm/src/components/overlays/postcode-search-modal/PostcodeSearchModal.js +276 -0
  10. package/dist/esm/src/components/overlays/postcode-search-modal/__tests__/PostcodeSearchModal.test.js +563 -0
  11. package/dist/esm/src/components/overlays/postcode-search-modal/index.js +1 -0
  12. package/dist/esm/src/generated/scoped-css.js +1 -1
  13. package/dist/temp/src/components/forms-and-input/input-base/InputBase.js +18 -10
  14. package/dist/temp/src/components/index.d.ts +1 -0
  15. package/dist/temp/src/components/index.js +1 -0
  16. package/dist/temp/src/components/overlays/postcode-search-modal/PostcodeSearchModal.d.ts +49 -0
  17. package/dist/temp/src/components/overlays/postcode-search-modal/PostcodeSearchModal.js +118 -0
  18. package/dist/temp/src/components/overlays/postcode-search-modal/__tests__/PostcodeSearchModal.test.d.ts +1 -0
  19. package/dist/temp/src/components/overlays/postcode-search-modal/__tests__/PostcodeSearchModal.test.js +456 -0
  20. package/dist/temp/src/components/overlays/postcode-search-modal/index.d.ts +1 -0
  21. package/dist/temp/src/components/overlays/postcode-search-modal/index.js +1 -0
  22. package/dist/temp/src/generated/scoped-css.js +1 -1
  23. package/dist/types/src/components/index.d.ts +1 -0
  24. package/dist/types/src/components/overlays/postcode-search-modal/PostcodeSearchModal.d.ts +49 -0
  25. package/dist/types/src/components/overlays/postcode-search-modal/__tests__/PostcodeSearchModal.test.d.ts +1 -0
  26. package/dist/types/src/components/overlays/postcode-search-modal/index.d.ts +1 -0
  27. package/dist/ui-admin/assets/styles/style.css +186 -0
  28. package/dist/ui-admin/assets/styles/style.scoped.css +186 -0
  29. package/package.json +1 -1
@@ -44,6 +44,7 @@ export * from './navigation/vertical-tab';
44
44
  export * from './overlays/dropdown';
45
45
  export * from './overlays/modal';
46
46
  export * from './overlays/notification';
47
+ export * from './overlays/postcode-search-modal';
47
48
  export * from './overlays/tooltip';
48
49
  export * from './select-dropdown';
49
50
  export * from './shared';
@@ -0,0 +1,49 @@
1
+ /** 검색 결과 아이템 하나. */
2
+ interface PostcodeSearchResult {
3
+ /** 우편번호(5자리) */
4
+ zipCode: string;
5
+ /** 도로명주소(도로명 + 건물번호 + 참고항목 등) */
6
+ roadAddress: string;
7
+ /** 지번주소 */
8
+ jibunAddress: string;
9
+ }
10
+ /**
11
+ * 컴포넌트가 표시할 수 있는 에러코드(행정안전부 도로명주소 API 기준).
12
+ * 기획서에 직접 적힌 코드는 E0006·E0008·E0009·E0012·E0013 이고,
13
+ * E0010·E0011 은 기획서의 "E0009~E0013 통합" 범위 표기에서 채운 값이다.
14
+ */
15
+ type PostcodeSearchErrorCode = 'E0006' | 'E0008' | 'E0009' | 'E0010' | 'E0011' | 'E0012' | 'E0013';
16
+ interface PostcodeSearchModalProps {
17
+ open: boolean;
18
+ onClose: () => void;
19
+ zIndex?: number;
20
+ className?: string;
21
+ searchQuery: string;
22
+ onSearchQueryChange: (value: string) => void;
23
+ onSearch: () => void;
24
+ results: PostcodeSearchResult[];
25
+ totalCount: number;
26
+ currentPage: number;
27
+ onPageChange: (page: number) => void;
28
+ /** 페이지당 아이템 수. 기획서 기본값 15 */
29
+ pageSize?: number;
30
+ /** 검색 API 응답을 기다리는 중인지 여부. 응답 전에 "결과 없음" 이 먼저 뜨는 것을 막는다. */
31
+ loading?: boolean;
32
+ errorCode?: PostcodeSearchErrorCode;
33
+ onSelect: (result: PostcodeSearchResult) => void;
34
+ }
35
+ interface PostcodeSearchModalTipProps {
36
+ /** 압축 모드 여부. 결과 30건 초과일 때 true */
37
+ compact?: boolean;
38
+ className?: string;
39
+ }
40
+ declare const PostcodeSearchModal: {
41
+ ({ open, onClose, zIndex, className, searchQuery, onSearchQueryChange, onSearch, results, totalCount, currentPage, onPageChange, pageSize, loading, errorCode, onSelect, }: PostcodeSearchModalProps): import("react/jsx-runtime").JSX.Element;
42
+ displayName: string;
43
+ Tip: {
44
+ ({ compact, className }: PostcodeSearchModalTipProps): import("react/jsx-runtime").JSX.Element;
45
+ displayName: string;
46
+ };
47
+ };
48
+ export { PostcodeSearchModal };
49
+ export type { PostcodeSearchErrorCode, PostcodeSearchModalProps, PostcodeSearchModalTipProps, PostcodeSearchResult };
@@ -0,0 +1 @@
1
+ export * from './PostcodeSearchModal';
@@ -2246,6 +2246,192 @@ button {
2246
2246
  }
2247
2247
  }
2248
2248
 
2249
+ .ncua-modal:has(.ncua-postcode-search-modal) {
2250
+ padding-block-end: 0;
2251
+ height: 640px;
2252
+ }
2253
+ @media (max-width: 768px) {
2254
+ .ncua-modal:has(.ncua-postcode-search-modal) {
2255
+ height: 480px;
2256
+ }
2257
+ }
2258
+
2259
+ .ncua-modal__content:has(.ncua-postcode-search-modal) {
2260
+ display: flex;
2261
+ flex-direction: column;
2262
+ padding-block-end: 91px;
2263
+ }
2264
+
2265
+ .ncua-postcode-search-modal {
2266
+ display: flex;
2267
+ flex: 1;
2268
+ flex-direction: column;
2269
+ gap: var(--spacing-m);
2270
+ }
2271
+
2272
+ .ncua-postcode-search-modal__search {
2273
+ display: flex;
2274
+ align-items: flex-start;
2275
+ gap: var(--spacing-s);
2276
+ }
2277
+
2278
+ .ncua-postcode-search-modal__search-input {
2279
+ flex: 1;
2280
+ min-width: 0;
2281
+ }
2282
+
2283
+ .ncua-postcode-search-modal__search-button {
2284
+ flex-shrink: 0;
2285
+ }
2286
+
2287
+ .ncua-postcode-search-modal__count {
2288
+ color: var(--gray-700);
2289
+ font-size: var(--font-size-xs);
2290
+ font-weight: var(--font-weights-commerce-sans-2);
2291
+ line-height: var(--line-heights-xs);
2292
+ }
2293
+ .ncua-postcode-search-modal__count b {
2294
+ color: var(--primary-red-450);
2295
+ }
2296
+
2297
+ .ncua-postcode-search-modal__list {
2298
+ padding-left: 0;
2299
+ margin-bottom: 0;
2300
+ }
2301
+
2302
+ .ncua-postcode-search-modal__item {
2303
+ padding: 12px 16px;
2304
+ background-color: var(--base-white);
2305
+ border: 1px solid var(--gray-200);
2306
+ border-radius: 8px;
2307
+ }
2308
+ .ncua-postcode-search-modal__item .ncua-radio-field {
2309
+ align-items: center;
2310
+ width: 100%;
2311
+ }
2312
+ .ncua-postcode-search-modal__item .ncua-radio-field__input + span {
2313
+ flex: 1;
2314
+ }
2315
+ .ncua-postcode-search-modal__item + .ncua-postcode-search-modal__item {
2316
+ margin-block-start: 8px;
2317
+ }
2318
+ .ncua-postcode-search-modal__item:hover {
2319
+ box-shadow: var(--shadow-xs);
2320
+ background-color: var(--gray-50);
2321
+ }
2322
+ .ncua-postcode-search-modal__item:has(:checked) {
2323
+ border-color: var(--gray-400);
2324
+ }
2325
+
2326
+ .ncua-postcode-search-modal__addr-line {
2327
+ display: flex;
2328
+ align-items: flex-start;
2329
+ gap: var(--spacing-s);
2330
+ font-size: var(--font-size-xs);
2331
+ }
2332
+ .ncua-postcode-search-modal__addr-line + .ncua-postcode-search-modal__addr-line {
2333
+ margin-block-start: 8px;
2334
+ }
2335
+
2336
+ .ncua-postcode-search-modal__badge {
2337
+ padding: 1px 4px;
2338
+ width: 41px;
2339
+ height: 18px;
2340
+ border-radius: 4px;
2341
+ color: var(--gray-600);
2342
+ font-size: var(--font-size-xxs);
2343
+ line-height: var(--line-heights-xxs);
2344
+ text-align: center;
2345
+ background-color: var(--gray-100);
2346
+ }
2347
+
2348
+ .ncua-postcode-search-modal__item-road {
2349
+ flex: 1;
2350
+ word-break: break-all;
2351
+ }
2352
+
2353
+ .ncua-postcode-search-modal__item-zip {
2354
+ flex-shrink: 0;
2355
+ color: var(--gray-500);
2356
+ }
2357
+
2358
+ .ncua-postcode-search-modal__item-jibun {
2359
+ flex: 1;
2360
+ word-break: break-all;
2361
+ }
2362
+
2363
+ .ncua-postcode-search-modal__tip {
2364
+ color: var(--gray-500);
2365
+ font-size: var(--font-size-xxs);
2366
+ line-height: var(--line-heights-xxs);
2367
+ }
2368
+
2369
+ .ncua-postcode-search-modal__tip .ncua-postcode-search-modal__tip-label {
2370
+ display: flex;
2371
+ align-items: center;
2372
+ gap: var(--spacing-xs);
2373
+ margin-block-end: 12px;
2374
+ font-size: var(--font-size-xs);
2375
+ font-weight: var(--font-weights-commerce-sans-2);
2376
+ }
2377
+
2378
+ .ncua-postcode-search-modal__tip-icon {
2379
+ flex-shrink: 0;
2380
+ }
2381
+
2382
+ .ncua-postcode-search-modal__tip .ncua-postcode-search-modal__tip-title {
2383
+ margin: 0 0 4px;
2384
+ font-weight: var(--font-weights-commerce-sans-2);
2385
+ }
2386
+
2387
+ .ncua-postcode-search-modal__tip-list {
2388
+ display: flex;
2389
+ flex-direction: column;
2390
+ gap: var(--spacing-xs);
2391
+ margin: 0;
2392
+ list-style: disc;
2393
+ padding-left: 0;
2394
+ }
2395
+
2396
+ .ncua-postcode-search-modal__tip-item {
2397
+ position: relative;
2398
+ display: flex;
2399
+ flex-direction: column;
2400
+ padding-inline-start: 16px;
2401
+ }
2402
+ .ncua-postcode-search-modal__tip-item::before {
2403
+ content: "•";
2404
+ position: absolute;
2405
+ left: 0;
2406
+ }
2407
+
2408
+ .ncua-postcode-search-modal__tip-combination {
2409
+ color: var(--gray-700);
2410
+ }
2411
+
2412
+ .ncua-postcode-search-modal__tip-example {
2413
+ padding-left: var(--spacing-s);
2414
+ }
2415
+
2416
+ .ncua-postcode-search-modal__tip-compact-text {
2417
+ margin: 0;
2418
+ }
2419
+
2420
+ .ncua-postcode-search-modal__pagination {
2421
+ display: flex;
2422
+ justify-content: center;
2423
+ margin-top: auto;
2424
+ padding-top: var(--spacing-m);
2425
+ }
2426
+
2427
+ .ncua-postcode-search-modal__empty {
2428
+ display: flex;
2429
+ flex: 1;
2430
+ align-items: center;
2431
+ justify-content: center;
2432
+ padding: var(--spacing-xxl) 0;
2433
+ }
2434
+
2249
2435
  /* ------------------------------------------------------------------
2250
2436
  * Floating Notification Host
2251
2437
  *
@@ -2238,6 +2238,192 @@
2238
2238
  }
2239
2239
  }
2240
2240
 
2241
+ .ncua-modal:has(.ncua-postcode-search-modal) {
2242
+ padding-block-end: 0;
2243
+ height: 640px;
2244
+ }
2245
+ @media (max-width: 768px) {
2246
+ .ncua-modal:has(.ncua-postcode-search-modal) {
2247
+ height: 480px;
2248
+ }
2249
+ }
2250
+
2251
+ .ncua-modal__content:has(.ncua-postcode-search-modal) {
2252
+ display: flex;
2253
+ flex-direction: column;
2254
+ padding-block-end: 91px;
2255
+ }
2256
+
2257
+ .ncua-postcode-search-modal {
2258
+ display: flex;
2259
+ flex: 1;
2260
+ flex-direction: column;
2261
+ gap: var(--spacing-m);
2262
+ }
2263
+
2264
+ .ncua-postcode-search-modal__search {
2265
+ display: flex;
2266
+ align-items: flex-start;
2267
+ gap: var(--spacing-s);
2268
+ }
2269
+
2270
+ .ncua-postcode-search-modal__search-input {
2271
+ flex: 1;
2272
+ min-width: 0;
2273
+ }
2274
+
2275
+ .ncua-postcode-search-modal__search-button {
2276
+ flex-shrink: 0;
2277
+ }
2278
+
2279
+ .ncua-postcode-search-modal__count {
2280
+ color: var(--gray-700);
2281
+ font-size: var(--font-size-xs);
2282
+ font-weight: var(--font-weights-commerce-sans-2);
2283
+ line-height: var(--line-heights-xs);
2284
+ }
2285
+ .ncua-postcode-search-modal__count b {
2286
+ color: var(--primary-red-450);
2287
+ }
2288
+
2289
+ .ncua-postcode-search-modal__list {
2290
+ padding-left: 0;
2291
+ margin-bottom: 0;
2292
+ }
2293
+
2294
+ .ncua-postcode-search-modal__item {
2295
+ padding: 12px 16px;
2296
+ background-color: var(--base-white);
2297
+ border: 1px solid var(--gray-200);
2298
+ border-radius: 8px;
2299
+ }
2300
+ .ncua-postcode-search-modal__item .ncua-radio-field {
2301
+ align-items: center;
2302
+ width: 100%;
2303
+ }
2304
+ .ncua-postcode-search-modal__item .ncua-radio-field__input + span {
2305
+ flex: 1;
2306
+ }
2307
+ .ncua-postcode-search-modal__item + .ncua-postcode-search-modal__item {
2308
+ margin-block-start: 8px;
2309
+ }
2310
+ .ncua-postcode-search-modal__item:hover {
2311
+ box-shadow: var(--shadow-xs);
2312
+ background-color: var(--gray-50);
2313
+ }
2314
+ .ncua-postcode-search-modal__item:has(:checked) {
2315
+ border-color: var(--gray-400);
2316
+ }
2317
+
2318
+ .ncua-postcode-search-modal__addr-line {
2319
+ display: flex;
2320
+ align-items: flex-start;
2321
+ gap: var(--spacing-s);
2322
+ font-size: var(--font-size-xs);
2323
+ }
2324
+ .ncua-postcode-search-modal__addr-line + .ncua-postcode-search-modal__addr-line {
2325
+ margin-block-start: 8px;
2326
+ }
2327
+
2328
+ .ncua-postcode-search-modal__badge {
2329
+ padding: 1px 4px;
2330
+ width: 41px;
2331
+ height: 18px;
2332
+ border-radius: 4px;
2333
+ color: var(--gray-600);
2334
+ font-size: var(--font-size-xxs);
2335
+ line-height: var(--line-heights-xxs);
2336
+ text-align: center;
2337
+ background-color: var(--gray-100);
2338
+ }
2339
+
2340
+ .ncua-postcode-search-modal__item-road {
2341
+ flex: 1;
2342
+ word-break: break-all;
2343
+ }
2344
+
2345
+ .ncua-postcode-search-modal__item-zip {
2346
+ flex-shrink: 0;
2347
+ color: var(--gray-500);
2348
+ }
2349
+
2350
+ .ncua-postcode-search-modal__item-jibun {
2351
+ flex: 1;
2352
+ word-break: break-all;
2353
+ }
2354
+
2355
+ .ncua-postcode-search-modal__tip {
2356
+ color: var(--gray-500);
2357
+ font-size: var(--font-size-xxs);
2358
+ line-height: var(--line-heights-xxs);
2359
+ }
2360
+
2361
+ .ncua-postcode-search-modal__tip .ncua-postcode-search-modal__tip-label {
2362
+ display: flex;
2363
+ align-items: center;
2364
+ gap: var(--spacing-xs);
2365
+ margin-block-end: 12px;
2366
+ font-size: var(--font-size-xs);
2367
+ font-weight: var(--font-weights-commerce-sans-2);
2368
+ }
2369
+
2370
+ .ncua-postcode-search-modal__tip-icon {
2371
+ flex-shrink: 0;
2372
+ }
2373
+
2374
+ .ncua-postcode-search-modal__tip .ncua-postcode-search-modal__tip-title {
2375
+ margin: 0 0 4px;
2376
+ font-weight: var(--font-weights-commerce-sans-2);
2377
+ }
2378
+
2379
+ .ncua-postcode-search-modal__tip-list {
2380
+ display: flex;
2381
+ flex-direction: column;
2382
+ gap: var(--spacing-xs);
2383
+ margin: 0;
2384
+ list-style: disc;
2385
+ padding-left: 0;
2386
+ }
2387
+
2388
+ .ncua-postcode-search-modal__tip-item {
2389
+ position: relative;
2390
+ display: flex;
2391
+ flex-direction: column;
2392
+ padding-inline-start: 16px;
2393
+ }
2394
+ .ncua-postcode-search-modal__tip-item::before {
2395
+ content: "•";
2396
+ position: absolute;
2397
+ left: 0;
2398
+ }
2399
+
2400
+ .ncua-postcode-search-modal__tip-combination {
2401
+ color: var(--gray-700);
2402
+ }
2403
+
2404
+ .ncua-postcode-search-modal__tip-example {
2405
+ padding-left: var(--spacing-s);
2406
+ }
2407
+
2408
+ .ncua-postcode-search-modal__tip-compact-text {
2409
+ margin: 0;
2410
+ }
2411
+
2412
+ .ncua-postcode-search-modal__pagination {
2413
+ display: flex;
2414
+ justify-content: center;
2415
+ margin-top: auto;
2416
+ padding-top: var(--spacing-m);
2417
+ }
2418
+
2419
+ .ncua-postcode-search-modal__empty {
2420
+ display: flex;
2421
+ flex: 1;
2422
+ align-items: center;
2423
+ justify-content: center;
2424
+ padding: var(--spacing-xxl) 0;
2425
+ }
2426
+
2241
2427
  /* ------------------------------------------------------------------
2242
2428
  * Floating Notification Host
2243
2429
  *
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ncds/ui-admin",
3
- "version": "1.8.21-alpha.6",
3
+ "version": "1.8.21-alpha.7",
4
4
  "description": "nhn-commerce의 어드민 디자인 시스템입니다.",
5
5
  "scripts": {
6
6
  "barrel": "node barrel.js",