@ninebone/table 0.1.23 → 0.1.31

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.
@@ -0,0 +1,241 @@
1
+
2
+ :host {
3
+ display: flex;
4
+ flex-direction: column;
5
+ position: relative;
6
+ overflow: hidden;
7
+
8
+ background: #fff;
9
+ }
10
+
11
+ :host([theme="simple"]) {
12
+ /* 1. 불필요한 패널 및 컴포넌트 숨기기 */
13
+ .ng-part-header, .ng-part-footer,
14
+ nine-table-toolbar,
15
+ nine-table-sheets-footer,
16
+ nine-table-vscrollbar,
17
+ nine-table-hscrollbar,
18
+ nine-table-sheet .ng-scroll-edge {
19
+ display: none;
20
+ }
21
+
22
+ .col-indicator-rowgroup {
23
+ display: none;
24
+ }
25
+ tr {
26
+ height: 32px;
27
+ }
28
+
29
+ /* 2. 💡 [핵심] 스크롤바용 우측 16px 빈 공간을 제거하고 1열(1fr)로 꽉 채우기 */
30
+ nine-table-sheet {
31
+ border: none;
32
+ overflow: hidden;
33
+ grid-template-columns: 1fr;
34
+ grid-template-rows: 1fr;
35
+ }
36
+
37
+ nine-table-sheet tr th,
38
+ nine-table-sheet tr td {
39
+ border: none;
40
+ padding: 0 8px;
41
+ }
42
+
43
+ nine-table-sheet tr td {
44
+ text-align: left;
45
+ }
46
+
47
+ /* 4. 브라우저 기본 네이티브 스크롤바를 콘텐츠 위에 자연스럽게 오버레이(Overlay) */
48
+ nine-table-sheet .ng-sheet-body {
49
+ overflow-y: auto;
50
+ overflow-x: hidden;
51
+ scrollbar-width: thin;
52
+ scrollbar-color: rgba(0, 0, 0, 0.2) transparent;
53
+ }
54
+
55
+ nine-table-sheet .ng-sheet-body::-webkit-scrollbar {
56
+ display: block;
57
+ width: 6px;
58
+ height: 6px;
59
+ }
60
+
61
+ nine-table-sheet .ng-sheet-body::-webkit-scrollbar-track {
62
+ background: transparent;
63
+ }
64
+
65
+ nine-table-sheet .ng-sheet-body::-webkit-scrollbar-thumb {
66
+ background: rgba(0, 0, 0, 0.15);
67
+ border-radius: 3px;
68
+ }
69
+
70
+ nine-table-sheet .ng-sheet-body::-webkit-scrollbar-thumb:hover {
71
+ background: rgba(0, 0, 0, 0.3);
72
+ }
73
+
74
+ nine-table-sheet .ng-container-body {
75
+ --overflow: visible;
76
+ }
77
+
78
+ }
79
+
80
+ /* 🎯 Toolbar 숨김 제어 */
81
+ :host([theme="simple"]) nine-table-toolbar,
82
+ :host([show-header="false"]) nine-table-toolbar {
83
+ display: none;
84
+ }
85
+
86
+ /* 🎯 Footer(StatusBar) 숨김 제어 (show-statusbar="false") */
87
+ :host([theme="simple"]) nine-table-sheets-footer,
88
+ :host([show-statusbar="false"]) nine-table-sheets-footer {
89
+ display: none;
90
+ }
91
+
92
+ :host([theme="simple"]) {
93
+ col[data-col="0"], th[data-col="0"], td[data-col="0"] {
94
+ display: none;
95
+ }
96
+ .ng-container-right {
97
+ display: none;
98
+ }
99
+ tr {
100
+ height: 26px;
101
+ }
102
+ }
103
+
104
+ /* 3분할된 tr들이 동시에 hover 상태가 되었을 때의 배경색 */
105
+ nine-table-sheet tr.hover th,
106
+ nine-table-sheet tr.hover td {
107
+ background-color: rgba(37, 99, 235, 0.06);
108
+ }
109
+
110
+ tr.col-indicator-rowgroup {
111
+ th,td {
112
+ padding: 0;
113
+ }
114
+ }
115
+
116
+ .col-indicator-rowgroup.expand {
117
+ height: 20px;
118
+ }
119
+ .col-indicator-rowgroup.collapse {
120
+ height: 2px;
121
+
122
+ }
123
+ .col-indicator-rowgroup.expand th {
124
+ background-color: #eee;
125
+ border-right-color: #ccc;
126
+ border-top: 2px solid #666;
127
+ }
128
+ .col-indicator-rowgroup.collapse th {
129
+ background-color: #666;
130
+ border: none;
131
+ }
132
+ .col-indicator-rowgroup.collapse div {
133
+ display: unset;
134
+ }
135
+ .col-indicator-rowgroup.collapse div {
136
+ display: none;
137
+ }
138
+
139
+ nine-table-body { display: flex; flex-direction: row; flex: 1; overflow: hidden; position: relative; }
140
+ nine-table-summary { display: none; width: 250px; flex-shrink: 0; border-right: 1px solid #e5e7eb; }
141
+ --nine-splitter:not([data-split-index]) { width: 4px; background: #e5e7eb; cursor: col-resize; flex-shrink: 0; }
142
+ nine-table-analysis { display: none; }
143
+ nine-table-footer { display: none; }
144
+
145
+ nine-table-sheets {
146
+ flex: 1;
147
+ display: flex;
148
+ flex-direction: column;
149
+ overflow: hidden;
150
+ position: relative;
151
+ background: #fff;
152
+ }
153
+ nine-table-sheets-body {
154
+ flex: 1;
155
+ overflow: hidden;
156
+ position: relative;
157
+ display: flex;
158
+ flex-direction: row;
159
+ }
160
+
161
+
162
+
163
+ nine-table-sheet .ng-nodata-overlay {
164
+ display: none;
165
+ position: absolute;
166
+ left: 0;
167
+ right: 0;
168
+ background: #ffffff;
169
+ z-index: 0;
170
+ align-items: center;
171
+ justify-content: center;
172
+ font-size: 12px;
173
+ color: #9ca3af;
174
+ }
175
+
176
+ nine-table-sheets.nodata {
177
+ .ng-nodata-overlay {
178
+ display: flex;
179
+ }
180
+
181
+ .ng-scroll-content {
182
+ table {
183
+ display: none;
184
+ }
185
+ .ng-virtual-spacer {
186
+ display: none;
187
+ }
188
+ }
189
+ }
190
+
191
+ :host(.loading) {
192
+ .ng-loading-bar {
193
+ display: block;
194
+ }
195
+ }
196
+
197
+
198
+ .ng-loading-bar {
199
+ position: absolute;
200
+ top: 0;
201
+ left: 0;
202
+ right: 0;
203
+ height: 2px;
204
+ background: rgba(255, 255, 255, 0.08); /* 은은한 화이트 트랙 배경 */
205
+ z-index: 10000;
206
+ display: none;
207
+ overflow: hidden;
208
+ }
209
+
210
+ /* 🎯 아주 좁고 쨍한 빛 조각 형태로 압축 */
211
+ .ng-loading-bar::after {
212
+ content: '';
213
+ position: absolute;
214
+ top: 0;
215
+ left: 0;
216
+ bottom: 0;
217
+ width: 12%; /* 바의 전체 길이를 12%로 대폭 축소 */
218
+ background: linear-gradient(
219
+ 90deg,
220
+ transparent 0%,
221
+ rgba(255, 255, 255, 0.4) 20%,
222
+ #ffffff 50%,
223
+ rgba(255, 255, 255, 0.4) 80%,
224
+ transparent 100%
225
+ );
226
+ box-shadow: 0 0 10px rgba(255, 255, 255, 0.9);
227
+ animation: ng-loading-slide 0.9s ease-in-out infinite;
228
+ }
229
+
230
+
231
+
232
+
233
+
234
+ @keyframes ng-loading-slide {
235
+ 0% {
236
+ transform: translateX(-150%);
237
+ }
238
+ 100% {
239
+ transform: translateX(850%); /* 폭이 좁아진 만큼 이동 거리 확장 */
240
+ }
241
+ }