@ncds/ui-admin 1.8.9 → 1.8.12

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 (44) hide show
  1. package/dist/cjs/src/components/data-display/data-grid/DataGrid.js +3 -1
  2. package/dist/cjs/src/components/data-display/table/Table.js +326 -75
  3. package/dist/cjs/src/components/data-display/table/dnd-context.js +15 -0
  4. package/dist/cjs/src/components/data-display/table/dnd-preview.js +127 -0
  5. package/dist/cjs/src/components/index.js +11 -0
  6. package/dist/cjs/src/components/navigation/context-tab/ContextTab.js +233 -0
  7. package/dist/cjs/src/components/navigation/context-tab/index.js +16 -0
  8. package/dist/cjs/src/components/navigation/context-tab/useContextTabScroll.js +84 -0
  9. package/dist/esm/src/components/data-display/data-grid/DataGrid.js +3 -1
  10. package/dist/esm/src/components/data-display/table/Table.js +328 -77
  11. package/dist/esm/src/components/data-display/table/dnd-context.js +10 -0
  12. package/dist/esm/src/components/data-display/table/dnd-preview.js +121 -0
  13. package/dist/esm/src/components/index.js +1 -0
  14. package/dist/esm/src/components/navigation/context-tab/ContextTab.js +226 -0
  15. package/dist/esm/src/components/navigation/context-tab/index.js +1 -0
  16. package/dist/esm/src/components/navigation/context-tab/useContextTabScroll.js +77 -0
  17. package/dist/temp/src/components/data-display/data-grid/DataGrid.js +1 -1
  18. package/dist/temp/src/components/data-display/data-grid/DataGrid.types.d.ts +5 -0
  19. package/dist/temp/src/components/data-display/table/Table.d.ts +14 -4
  20. package/dist/temp/src/components/data-display/table/Table.js +172 -14
  21. package/dist/temp/src/components/data-display/table/dnd-context.d.ts +12 -0
  22. package/dist/temp/src/components/data-display/table/dnd-context.js +10 -0
  23. package/dist/temp/src/components/data-display/table/dnd-preview.d.ts +6 -0
  24. package/dist/temp/src/components/data-display/table/dnd-preview.js +120 -0
  25. package/dist/temp/src/components/data-display/table/types.d.ts +24 -1
  26. package/dist/temp/src/components/index.d.ts +1 -0
  27. package/dist/temp/src/components/index.js +1 -0
  28. package/dist/temp/src/components/navigation/context-tab/ContextTab.d.ts +18 -0
  29. package/dist/temp/src/components/navigation/context-tab/ContextTab.js +103 -0
  30. package/dist/temp/src/components/navigation/context-tab/index.d.ts +1 -0
  31. package/dist/temp/src/components/navigation/context-tab/index.js +1 -0
  32. package/dist/temp/src/components/navigation/context-tab/useContextTabScroll.d.ts +22 -0
  33. package/dist/temp/src/components/navigation/context-tab/useContextTabScroll.js +65 -0
  34. package/dist/types/src/components/data-display/data-grid/DataGrid.types.d.ts +5 -0
  35. package/dist/types/src/components/data-display/table/Table.d.ts +14 -4
  36. package/dist/types/src/components/data-display/table/dnd-context.d.ts +12 -0
  37. package/dist/types/src/components/data-display/table/dnd-preview.d.ts +6 -0
  38. package/dist/types/src/components/data-display/table/types.d.ts +24 -1
  39. package/dist/types/src/components/index.d.ts +1 -0
  40. package/dist/types/src/components/navigation/context-tab/ContextTab.d.ts +18 -0
  41. package/dist/types/src/components/navigation/context-tab/index.d.ts +1 -0
  42. package/dist/types/src/components/navigation/context-tab/useContextTabScroll.d.ts +22 -0
  43. package/dist/ui-admin/assets/styles/style.css +324 -2
  44. package/package.json +2 -2
@@ -126,6 +126,7 @@
126
126
  spinner (200) — 부분 로딩 표시
127
127
  popover (500) — dropdown · select-dropdown 등 부유 popover
128
128
  (Portal 미사용, 부모 stacking context 안에서 동작)
129
+ dnd-preview (600) — table row DnD 드래그 오버레이 — popover 위, modal 아래
129
130
  modal (1000) — 작업 차단 다이얼로그. backdrop이 stacking context를 만들고
130
131
  자식인 본체는 자연 stacking으로 따라가므로 단일 토큰으로 충분
131
132
  tooltip (2000) — 정보 보조. tag 자체 tooltip도 동일 토큰 사용
@@ -139,6 +140,7 @@
139
140
  --z-index-sticky: 10;
140
141
  --z-index-spinner: 200;
141
142
  --z-index-popover: 500;
143
+ --z-index-dnd-preview: 600;
142
144
  --z-index-modal: 1000;
143
145
  --z-index-tooltip: 2000;
144
146
  --z-index-notification: 2100;
@@ -5522,6 +5524,164 @@ button {
5522
5524
  box-shadow: -2px 0 var(--gray-700);
5523
5525
  }
5524
5526
 
5527
+ .ncua-context-tab {
5528
+ position: relative;
5529
+ display: flex;
5530
+ align-items: center;
5531
+ gap: 8px;
5532
+ padding-inline: 4px;
5533
+ border: 1px solid var(--gray-100);
5534
+ border-radius: 8px;
5535
+ background-color: var(--gray-100);
5536
+ }
5537
+ .ncua-context-tab__bar {
5538
+ position: relative;
5539
+ display: flex;
5540
+ flex: 1;
5541
+ gap: 8px;
5542
+ min-width: 0;
5543
+ padding-block: 4px;
5544
+ padding-inline-end: 4px;
5545
+ margin-inline-end: -4px;
5546
+ overflow-x: auto;
5547
+ scroll-snap-type: x mandatory;
5548
+ scrollbar-width: none;
5549
+ }
5550
+ .ncua-context-tab__bar::-webkit-scrollbar {
5551
+ display: none;
5552
+ }
5553
+ .ncua-context-tab__bar.is-fill .ncua-context-tab__tab {
5554
+ flex: 1 1 0;
5555
+ }
5556
+ .ncua-context-tab__tab {
5557
+ border: 0;
5558
+ padding: 0;
5559
+ background-color: transparent;
5560
+ cursor: pointer;
5561
+ display: flex;
5562
+ align-items: center;
5563
+ justify-content: center;
5564
+ gap: 4px;
5565
+ flex: 0 0 calc((100% - (var(--ncua-context-tab-visible, 7) - 1) * 8px) / var(--ncua-context-tab-visible, 7));
5566
+ min-width: 0;
5567
+ scroll-snap-align: start;
5568
+ padding: 5px 12px;
5569
+ border-radius: 6px;
5570
+ font-size: var(--font-size-sm);
5571
+ line-height: var(--line-heights-sm);
5572
+ font-weight: 700;
5573
+ color: var(--gray-400);
5574
+ white-space: nowrap;
5575
+ }
5576
+ .ncua-context-tab__tab-label {
5577
+ overflow: hidden;
5578
+ display: block;
5579
+ text-overflow: ellipsis;
5580
+ white-space: nowrap;
5581
+ word-wrap: break-word;
5582
+ min-width: 0;
5583
+ }
5584
+ .ncua-context-tab__tab:hover {
5585
+ color: var(--gray-500);
5586
+ }
5587
+ .ncua-context-tab__tab.is-active {
5588
+ color: var(--gray-700);
5589
+ }
5590
+ .ncua-context-tab__tab.is-disabled, .ncua-context-tab__tab:disabled {
5591
+ color: var(--gray-300);
5592
+ cursor: not-allowed;
5593
+ }
5594
+ .ncua-context-tab__tab.is-disabled:hover, .ncua-context-tab__tab:disabled:hover {
5595
+ background-color: transparent;
5596
+ box-shadow: none;
5597
+ }
5598
+ .ncua-context-tab__control {
5599
+ flex-shrink: 0;
5600
+ }
5601
+ .ncua-context-tab__control--menu.ncua-btn--xs, .ncua-context-tab__control--prev.ncua-btn--xs, .ncua-context-tab__control--next.ncua-btn--xs {
5602
+ width: 32px;
5603
+ height: 32px;
5604
+ transition: none;
5605
+ }
5606
+ .ncua-context-tab__tab:hover, .ncua-context-tab__tab.is-active, .ncua-context-tab__control--menu.ncua-btn--xs[aria-expanded]:hover, .ncua-context-tab__control--menu.ncua-btn--xs[aria-expanded=true], .ncua-context-tab__control--prev.ncua-btn--xs:not(.is-disable):hover, .ncua-context-tab__control--next.ncua-btn--xs:not(.is-disable):hover {
5607
+ background-color: var(--base-white);
5608
+ box-shadow: var(--shadow-sm);
5609
+ }
5610
+ .ncua-context-tab__nav {
5611
+ display: flex;
5612
+ align-items: center;
5613
+ gap: 4px;
5614
+ flex-shrink: 0;
5615
+ }
5616
+ .ncua-context-tab__panel {
5617
+ position: absolute;
5618
+ top: calc(100% + 4px);
5619
+ left: -1px;
5620
+ z-index: 10;
5621
+ display: flex;
5622
+ width: 100%;
5623
+ max-height: 188px;
5624
+ overflow-y: auto;
5625
+ border: 1px solid var(--gray-100);
5626
+ border-radius: 8px;
5627
+ background-color: var(--base-white);
5628
+ box-shadow: var(--shadow-lg);
5629
+ }
5630
+ .ncua-context-tab__panel-column {
5631
+ flex: 1 1 0;
5632
+ min-width: 0;
5633
+ padding: 4px 0;
5634
+ list-style: none;
5635
+ margin: 0;
5636
+ }
5637
+ .ncua-context-tab__panel-column li {
5638
+ padding: 2px 6px;
5639
+ }
5640
+ .ncua-context-tab__option {
5641
+ border: 0;
5642
+ padding: 0;
5643
+ background-color: transparent;
5644
+ cursor: pointer;
5645
+ display: flex;
5646
+ align-items: center;
5647
+ gap: 8px;
5648
+ width: 100%;
5649
+ min-width: 120px;
5650
+ padding: 7px 10px;
5651
+ border-radius: 6px;
5652
+ font-size: var(--font-size-xs);
5653
+ line-height: var(--line-heights-xs);
5654
+ font-weight: 500;
5655
+ color: var(--gray-500);
5656
+ text-align: left;
5657
+ }
5658
+ .ncua-context-tab__option-label {
5659
+ overflow: hidden;
5660
+ display: block;
5661
+ text-overflow: ellipsis;
5662
+ white-space: nowrap;
5663
+ word-wrap: break-word;
5664
+ min-width: 0;
5665
+ }
5666
+ .ncua-context-tab__option-check {
5667
+ flex-shrink: 0;
5668
+ margin-inline-start: auto;
5669
+ color: var(--gray-700);
5670
+ }
5671
+ .ncua-context-tab__option:hover {
5672
+ background-color: var(--gray-50);
5673
+ }
5674
+ .ncua-context-tab__option:disabled {
5675
+ color: var(--gray-300);
5676
+ cursor: not-allowed;
5677
+ }
5678
+ .ncua-context-tab__option:disabled:hover {
5679
+ background-color: transparent;
5680
+ }
5681
+ .ncua-context-tab .ncua-badge {
5682
+ flex-shrink: 0;
5683
+ }
5684
+
5525
5685
  .ncua-progress-circle {
5526
5686
  position: relative;
5527
5687
  display: inline-flex;
@@ -6341,10 +6501,10 @@ button {
6341
6501
  min-width: 240px;
6342
6502
  max-width: 240px;
6343
6503
  padding: 10px var(--spacing-m);
6344
- font-size: var(--font-size-sm);
6504
+ font-size: var(--font-size-xs);
6345
6505
  font-weight: var(--font-weights-commerce-sans-1);
6346
6506
  line-height: var(--line-heights-sm);
6347
- color: var(--gray-700);
6507
+ color: var(--gray-500);
6348
6508
  text-align: left;
6349
6509
  background: var(--gray-50);
6350
6510
  border-right: 1px solid var(--gray-100);
@@ -6417,6 +6577,168 @@ button {
6417
6577
  margin-right: 4px;
6418
6578
  }
6419
6579
 
6580
+ .ncua-table__drag-header-cell {
6581
+ width: 74px;
6582
+ min-width: 74px;
6583
+ max-width: 74px;
6584
+ padding: 0;
6585
+ border-right: 1px solid var(--gray-200);
6586
+ }
6587
+
6588
+ .ncua-table__drag-cell {
6589
+ width: 74px;
6590
+ min-width: 74px;
6591
+ max-width: 74px;
6592
+ padding: 0;
6593
+ border-right: 1px solid var(--gray-100);
6594
+ text-align: center;
6595
+ vertical-align: middle;
6596
+ line-height: 0;
6597
+ }
6598
+
6599
+ .ncua-table--draggable:not(.ncua-table--selectable) .ncua-table__drag-header-cell,
6600
+ .ncua-table--draggable:not(.ncua-table--selectable) .ncua-table__drag-cell {
6601
+ width: 56px;
6602
+ min-width: 56px;
6603
+ max-width: 56px;
6604
+ }
6605
+
6606
+ .ncua-table__drag-cell-inner {
6607
+ display: flex;
6608
+ width: 100%;
6609
+ align-items: center;
6610
+ justify-content: center;
6611
+ gap: 8px;
6612
+ padding: 0 8px;
6613
+ }
6614
+
6615
+ .ncua-table__drag-header-icon {
6616
+ display: inline-flex;
6617
+ align-items: center;
6618
+ justify-content: center;
6619
+ width: 16px;
6620
+ height: 16px;
6621
+ color: var(--gray-300);
6622
+ flex-shrink: 0;
6623
+ }
6624
+
6625
+ .ncua-table__drag-handle {
6626
+ display: inline-flex;
6627
+ align-items: center;
6628
+ justify-content: center;
6629
+ background: none;
6630
+ border: none;
6631
+ padding: 0;
6632
+ cursor: grab;
6633
+ color: var(--gray-300);
6634
+ width: 16px;
6635
+ height: 16px;
6636
+ flex-shrink: 0;
6637
+ }
6638
+ .ncua-table__drag-handle svg {
6639
+ width: 16px;
6640
+ height: 16px;
6641
+ flex-shrink: 0;
6642
+ }
6643
+ .ncua-table__drag-handle:hover {
6644
+ color: var(--gray-600);
6645
+ }
6646
+ .ncua-table__drag-handle:active {
6647
+ cursor: grabbing;
6648
+ }
6649
+ .ncua-table__drag-handle:disabled {
6650
+ cursor: not-allowed;
6651
+ color: var(--gray-200);
6652
+ pointer-events: none;
6653
+ }
6654
+
6655
+ .ncua-table__row.is-dragging {
6656
+ opacity: 1;
6657
+ }
6658
+
6659
+ .ncua-table__row--drag-over-top td:first-child,
6660
+ .ncua-table__row--drag-over-top th:first-child,
6661
+ .ncua-table__row--drag-over-bottom td:first-child,
6662
+ .ncua-table__row--drag-over-bottom th:first-child {
6663
+ position: relative;
6664
+ }
6665
+
6666
+ .ncua-table__row--drag-over-top td:first-child::after,
6667
+ .ncua-table__row--drag-over-top th:first-child::after {
6668
+ content: "";
6669
+ position: absolute;
6670
+ top: 0;
6671
+ left: 0;
6672
+ width: 10000px;
6673
+ height: 1px;
6674
+ background-color: var(--gray-600);
6675
+ pointer-events: none;
6676
+ z-index: 2;
6677
+ }
6678
+
6679
+ .ncua-table__row--drag-over-bottom td:first-child::after,
6680
+ .ncua-table__row--drag-over-bottom th:first-child::after {
6681
+ content: "";
6682
+ position: absolute;
6683
+ bottom: 0;
6684
+ left: 0;
6685
+ width: 10000px;
6686
+ height: 1px;
6687
+ background-color: var(--gray-600);
6688
+ pointer-events: none;
6689
+ z-index: 2;
6690
+ }
6691
+
6692
+ .ncua-table-dnd-preview {
6693
+ position: fixed;
6694
+ top: -9999px;
6695
+ left: -9999px;
6696
+ z-index: var(--z-index-dnd-preview);
6697
+ pointer-events: none;
6698
+ }
6699
+
6700
+ .ncua-table-dnd-preview__badge {
6701
+ position: absolute;
6702
+ top: 0;
6703
+ left: 0;
6704
+ width: 24px;
6705
+ height: 24px;
6706
+ border-radius: 50%;
6707
+ background: var(--gray-600);
6708
+ color: var(--base-white);
6709
+ font-size: 12px;
6710
+ font-weight: bold;
6711
+ display: flex;
6712
+ align-items: center;
6713
+ justify-content: center;
6714
+ z-index: 999;
6715
+ box-sizing: border-box;
6716
+ pointer-events: none;
6717
+ }
6718
+
6719
+ .ncua-table-dnd-preview__summary {
6720
+ position: absolute;
6721
+ isolation: isolate;
6722
+ z-index: 0;
6723
+ background: var(--gray-50);
6724
+ opacity: 0.5;
6725
+ box-shadow: var(--shadow-md);
6726
+ box-sizing: border-box;
6727
+ }
6728
+
6729
+ .ncua-table-dnd-preview__card {
6730
+ position: absolute;
6731
+ isolation: isolate;
6732
+ overflow: hidden;
6733
+ opacity: 1;
6734
+ box-shadow: var(--shadow-md);
6735
+ box-sizing: border-box;
6736
+ border-radius: 0;
6737
+ }
6738
+ .ncua-table-dnd-preview__card table {
6739
+ table-layout: fixed;
6740
+ }
6741
+
6420
6742
  .ncua-data-grid {
6421
6743
  display: flex;
6422
6744
  flex-direction: column;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ncds/ui-admin",
3
- "version": "1.8.9",
3
+ "version": "1.8.12",
4
4
  "description": "nhn-commerce의 어드민 디자인 시스템입니다.",
5
5
  "scripts": {
6
6
  "barrel": "node barrel.js",
@@ -70,7 +70,7 @@
70
70
  "@atlaskit/pragmatic-drag-and-drop-auto-scroll": "2.1.0",
71
71
  "@atlaskit/pragmatic-drag-and-drop-hitbox": "1.1.0",
72
72
  "@atlaskit/pragmatic-drag-and-drop-react-accessibility": "1.1.4",
73
- "@ncds/ui-admin-icon": "0.1.11",
73
+ "@ncds/ui-admin-icon": "0.1.12",
74
74
  "classnames": "2.5.1",
75
75
  "dompurify": "3.4.1",
76
76
  "flatpickr": "4.6.13",