@udi-organization/udi-package 1.0.31 → 1.0.33

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/dist/index.js DELETED
@@ -1,2438 +0,0 @@
1
- import * as __WEBPACK_EXTERNAL_MODULE_react__ from "react";
2
- /******/ var __webpack_modules__ = ({
3
-
4
- /***/ "./node_modules/css-loader/dist/cjs.js!./src/components/udiTable/UdiTable.css":
5
- /*!************************************************************************************!*\
6
- !*** ./node_modules/css-loader/dist/cjs.js!./src/components/udiTable/UdiTable.css ***!
7
- \************************************************************************************/
8
- /***/ ((module, __webpack_exports__, __webpack_require__) => {
9
-
10
- __webpack_require__.r(__webpack_exports__);
11
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
12
- /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
13
- /* harmony export */ });
14
- /* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");
15
- /* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);
16
- /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");
17
- /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);
18
- // Imports
19
-
20
-
21
- var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));
22
- // Module
23
- ___CSS_LOADER_EXPORT___.push([module.id, `/* UdiTable 樣式 */
24
-
25
- .udi-table-container {
26
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif;
27
- background: white;
28
- border-radius: 8px;
29
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
30
- overflow: hidden;
31
- width: 100%;
32
- }
33
-
34
- /* 錯誤訊息樣式 */
35
- .udi-table-container .error-message {
36
- background: #f8d7da;
37
- color: #721c24;
38
- padding: 12px 16px;
39
- border-left: 4px solid #dc3545;
40
- margin-bottom: 16px;
41
- border-radius: 4px;
42
- font-weight: 500;
43
- }
44
-
45
- @media (max-width: 768px) {
46
- .udi-table-container .error-message {
47
- margin: 8px;
48
- font-size: 14px;
49
- }
50
- }
51
-
52
- /* 篩選器樣式 */
53
- .udi-table-filter {
54
- background: #f8f9fa;
55
- border-bottom: 1px solid #e9ecef;
56
- }
57
-
58
- .udi-table-filter .filter-section .basic-filter {
59
- padding: 16px;
60
- display: flex;
61
- align-items: center;
62
- gap: 12px;
63
- flex-wrap: wrap;
64
- }
65
-
66
- .udi-table-filter .filter-section .basic-filter .filter-column-selector {
67
- display: flex;
68
- align-items: center;
69
- gap: 8px;
70
- white-space: nowrap;
71
- }
72
-
73
- .udi-table-filter .filter-section .basic-filter .filter-column-selector label {
74
- font-weight: 500;
75
- color: #495057;
76
- font-size: 14px;
77
- }
78
-
79
- .udi-table-filter .filter-section .basic-filter .filter-column-selector .filter-column-select {
80
- padding: 8px 12px;
81
- border: 1px solid #ced4da;
82
- border-radius: 4px;
83
- background: white;
84
- font-size: 14px;
85
- cursor: pointer;
86
- outline: none;
87
- transition: border-color 0.15s ease-in-out;
88
- min-width: 120px;
89
- }
90
-
91
- .udi-table-filter .filter-section .basic-filter .filter-column-selector .filter-column-select:focus {
92
- border-color: #007bff;
93
- box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);
94
- }
95
-
96
- .udi-table-filter .filter-section .basic-filter .filter-column-selector .filter-column-select:hover {
97
- border-color: #adb5bd;
98
- }
99
-
100
- .udi-table-filter .filter-section .basic-filter .filter-input {
101
- flex: 1;
102
- padding: 8px 12px;
103
- border: 1px solid #ced4da;
104
- border-radius: 4px;
105
- font-size: 14px;
106
- outline: none;
107
- transition: border-color 0.15s ease-in-out;
108
- min-width: 200px;
109
- }
110
-
111
- .udi-table-filter .filter-section .basic-filter .filter-input:focus {
112
- border-color: #007bff;
113
- box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);
114
- }
115
-
116
- .udi-table-filter .filter-section .basic-filter .advanced-filter-toggle {
117
- padding: 8px 16px;
118
- background: #007bff;
119
- color: white;
120
- border: none;
121
- border-radius: 4px;
122
- cursor: pointer;
123
- font-size: 14px;
124
- transition: background-color 0.15s ease-in-out;
125
- white-space: nowrap;
126
- }
127
-
128
- .udi-table-filter .filter-section .basic-filter .advanced-filter-toggle:hover {
129
- background: #0056b3;
130
- }
131
-
132
- .udi-table-filter .filter-section .basic-filter .reset-button {
133
- padding: 8px 16px;
134
- background: #6c757d;
135
- color: white;
136
- border: none;
137
- border-radius: 4px;
138
- cursor: pointer;
139
- font-size: 14px;
140
- transition: background-color 0.15s ease-in-out;
141
- white-space: nowrap;
142
- }
143
-
144
- .udi-table-filter .filter-section .basic-filter .reset-button:hover {
145
- background: #5a6268;
146
- }
147
-
148
- .udi-table-filter .filter-section .advanced-filter {
149
- padding: 16px;
150
- background: #f1f3f4;
151
- border-top: 1px solid #e9ecef;
152
- }
153
-
154
- .udi-table-filter .filter-section .advanced-filter .advanced-filter-header {
155
- display: flex;
156
- justify-content: space-between;
157
- align-items: center;
158
- margin-bottom: 16px;
159
- }
160
-
161
- .udi-table-filter .filter-section .advanced-filter .advanced-filter-header h4 {
162
- margin: 0;
163
- color: #495057;
164
- font-size: 16px;
165
- font-weight: 600;
166
- }
167
-
168
- .udi-table-filter .filter-section .advanced-filter .advanced-filter-header .clear-advanced-button {
169
- padding: 6px 12px;
170
- background: #dc3545;
171
- color: white;
172
- border: none;
173
- border-radius: 4px;
174
- cursor: pointer;
175
- font-size: 12px;
176
- transition: background-color 0.15s ease-in-out;
177
- }
178
-
179
- .udi-table-filter .filter-section .advanced-filter .advanced-filter-header .clear-advanced-button:hover {
180
- background: #c82333;
181
- }
182
-
183
- .udi-table-filter .filter-section .advanced-filter .advanced-filter-grid {
184
- display: grid;
185
- grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
186
- gap: 12px;
187
- }
188
-
189
- .udi-table-filter .filter-section .advanced-filter .advanced-filter-grid .advanced-filter-item {
190
- display: flex;
191
- flex-direction: column;
192
- gap: 4px;
193
- }
194
-
195
- .udi-table-filter .filter-section .advanced-filter .advanced-filter-grid .advanced-filter-item label {
196
- font-weight: 500;
197
- color: #495057;
198
- font-size: 13px;
199
- }
200
-
201
- .udi-table-filter .filter-section .advanced-filter .advanced-filter-grid .advanced-filter-item .advanced-filter-input {
202
- padding: 8px 12px;
203
- border: 1px solid #ced4da;
204
- border-radius: 4px;
205
- font-size: 14px;
206
- outline: none;
207
- transition: border-color 0.15s ease-in-out;
208
- background: white;
209
- }
210
-
211
- .udi-table-filter .filter-section .advanced-filter .advanced-filter-grid .advanced-filter-item .advanced-filter-input:focus {
212
- border-color: #007bff;
213
- box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);
214
- }
215
-
216
- .udi-table-filter .filter-section .advanced-filter .advanced-filter-grid .advanced-filter-item .advanced-filter-input:hover {
217
- border-color: #adb5bd;
218
- }
219
-
220
- /* 滾動位置顯示器 */
221
- .scroll-position-indicator {
222
- padding: 8px 16px;
223
- background: #e3f2fd;
224
- border-bottom: 1px solid #bbdefb;
225
- font-size: 12px;
226
- color: #1565c0;
227
- font-family: 'Courier New', monospace;
228
- text-align: center;
229
- }
230
-
231
- /* 表格包裝器 */
232
- .udi-table-wrapper {
233
- overflow-x: auto;
234
- height: 300px;
235
- overflow-y: auto;
236
- border: 1px solid #e9ecef;
237
- -webkit-overflow-scrolling: touch;
238
- }
239
-
240
- .udi-table-wrapper::-webkit-scrollbar {
241
- width: 8px;
242
- height: 8px;
243
- }
244
-
245
- .udi-table-wrapper::-webkit-scrollbar-track {
246
- background: #f8f9fa;
247
- border-radius: 4px;
248
- }
249
-
250
- .udi-table-wrapper::-webkit-scrollbar-thumb {
251
- background: #cbd5e0;
252
- border-radius: 4px;
253
- }
254
-
255
- .udi-table-wrapper::-webkit-scrollbar-thumb:hover {
256
- background: #a0aec0;
257
- }
258
-
259
- /* 表格樣式 */
260
- .udi-table {
261
- width: 200%;
262
- min-width: 800px;
263
- border-collapse: collapse;
264
- font-size: 14px;
265
- }
266
-
267
- .udi-table th,
268
- .udi-table td {
269
- padding: 12px 16px;
270
- text-align: left;
271
- border-bottom: 1px solid #e9ecef;
272
- white-space: nowrap;
273
- overflow: hidden;
274
- text-overflow: ellipsis;
275
- max-width: 300px;
276
- }
277
-
278
- .udi-table th {
279
- background: #f8f9fa;
280
- font-weight: 600;
281
- color: #495057;
282
- position: sticky;
283
- top: 0;
284
- z-index: 10;
285
- border-bottom: 2px solid #dee2e6;
286
- }
287
-
288
- .udi-table th.sortable {
289
- cursor: pointer;
290
- user-select: none;
291
- transition: background-color 0.15s ease-in-out;
292
- }
293
-
294
- .udi-table th.sortable:hover {
295
- background: #e9ecef;
296
- }
297
-
298
- .udi-table th.sortable .sort-icon {
299
- opacity: 0.4;
300
- }
301
-
302
- .udi-table th.sorted {
303
- background: #e3f2fd;
304
- color: #1976d2;
305
- }
306
-
307
- .udi-table th.sorted .sort-icon {
308
- opacity: 1;
309
- }
310
-
311
- .udi-table th .th-content {
312
- display: flex;
313
- align-items: center;
314
- justify-content: space-between;
315
- min-width: 0;
316
- }
317
-
318
- .udi-table th .sort-icon {
319
- margin-left: 8px;
320
- font-size: 12px;
321
- opacity: 0.7;
322
- flex-shrink: 0;
323
- }
324
-
325
- .udi-table tbody tr {
326
- transition: background-color 0.15s ease-in-out;
327
- }
328
-
329
- .udi-table tbody tr:hover {
330
- background: #f8f9fa;
331
- }
332
-
333
- .udi-table tbody tr:nth-child(even) {
334
- background: #fdfdfe;
335
- }
336
-
337
- .udi-table tbody tr:nth-child(even):hover {
338
- background: #f8f9fa;
339
- }
340
-
341
- .udi-table tbody td:first-child {
342
- left: 0;
343
- background: inherit;
344
- z-index: 5;
345
- border-right: 1px solid #e9ecef;
346
- }
347
-
348
- .udi-table .no-data {
349
- text-align: center;
350
- color: #6c757d;
351
- font-style: italic;
352
- padding: 32px;
353
- }
354
-
355
- .udi-table .loading-state {
356
- text-align: center;
357
- padding: 40px 20px;
358
- }
359
-
360
- .udi-table .loading-state .loading-spinner {
361
- display: flex;
362
- flex-direction: column;
363
- align-items: center;
364
- gap: 12px;
365
- }
366
-
367
- .udi-table .loading-state .loading-spinner .spinner {
368
- width: 32px;
369
- height: 32px;
370
- border: 3px solid #f3f3f3;
371
- border-top: 3px solid #007bff;
372
- border-radius: 50%;
373
- animation: spin 1s linear infinite;
374
- }
375
-
376
- .udi-table .loading-state .loading-spinner span {
377
- color: #868e96;
378
- font-size: 14px;
379
- }
380
-
381
- @keyframes spin {
382
- 0% { transform: rotate(0deg); }
383
- 100% { transform: rotate(360deg); }
384
- }
385
-
386
- /* 分頁樣式 */
387
- .udi-table-pagination {
388
- padding: 16px;
389
- background: #f8f9fa;
390
- border-top: 1px solid #e9ecef;
391
- display: flex;
392
- justify-content: space-between;
393
- align-items: center;
394
- flex-wrap: wrap;
395
- gap: 12px;
396
- }
397
-
398
- .udi-table-pagination .pagination-info {
399
- display: flex;
400
- flex-direction: column;
401
- gap: 8px;
402
- color: #6c757d;
403
- font-size: 14px;
404
- }
405
-
406
- .udi-table-pagination .pagination-info .page-size-selector {
407
- display: flex;
408
- align-items: center;
409
- gap: 8px;
410
- }
411
-
412
- .udi-table-pagination .pagination-info .page-size-selector label {
413
- font-weight: 500;
414
- color: #495057;
415
- }
416
-
417
- .udi-table-pagination .pagination-info .page-size-selector .page-size-select {
418
- padding: 4px 8px;
419
- border: 1px solid #ced4da;
420
- border-radius: 4px;
421
- background: white;
422
- font-size: 14px;
423
- cursor: pointer;
424
- outline: none;
425
- transition: border-color 0.15s ease-in-out;
426
- }
427
-
428
- .udi-table-pagination .pagination-info .page-size-selector .page-size-select:focus {
429
- border-color: #007bff;
430
- box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);
431
- }
432
-
433
- .udi-table-pagination .pagination-info .page-size-selector .page-size-select:hover {
434
- border-color: #adb5bd;
435
- }
436
-
437
- .udi-table-pagination .pagination-info .page-size-selector span {
438
- color: #495057;
439
- }
440
-
441
- .udi-table-pagination .pagination-info .pagination-summary {
442
- font-size: 13px;
443
- }
444
-
445
- .udi-table-pagination .pagination-controls {
446
- display: flex;
447
- gap: 4px;
448
- align-items: center;
449
- }
450
-
451
- .udi-table-pagination .pagination-controls .current-page-mobile {
452
- padding: 8px 12px;
453
- background: #007bff;
454
- color: white;
455
- border-radius: 4px;
456
- font-size: 14px;
457
- font-weight: 500;
458
- min-width: 60px;
459
- text-align: center;
460
- border: 1px solid #007bff;
461
- }
462
-
463
- .udi-table-pagination .pagination-controls .pagination-button {
464
- padding: 6px 12px;
465
- border: 1px solid #ced4da;
466
- background: white;
467
- color: #495057;
468
- cursor: pointer;
469
- border-radius: 4px;
470
- font-size: 14px;
471
- transition: all 0.15s ease-in-out;
472
- min-width: 40px;
473
- }
474
-
475
- .udi-table-pagination .pagination-controls .pagination-button:hover:not(:disabled) {
476
- background: #e9ecef;
477
- border-color: #adb5bd;
478
- }
479
-
480
- .udi-table-pagination .pagination-controls .pagination-button:disabled {
481
- background: #f8f9fa;
482
- color: #6c757d;
483
- cursor: not-allowed;
484
- opacity: 0.6;
485
- }
486
-
487
- .udi-table-pagination .pagination-controls .pagination-button.disabled {
488
- background: #f1f3f4;
489
- color: #9aa0a6;
490
- cursor: not-allowed;
491
- opacity: 0.5;
492
- border-color: #dadce0;
493
- }
494
-
495
- .udi-table-pagination .pagination-controls .pagination-button.disabled:hover {
496
- background: #f1f3f4;
497
- border-color: #dadce0;
498
- }
499
-
500
- .udi-table-pagination .pagination-controls .pagination-button.active {
501
- background: #007bff;
502
- border-color: #007bff;
503
- color: white;
504
- }
505
-
506
- .udi-table-pagination .pagination-controls .pagination-button.active:hover {
507
- background: #0056b3;
508
- border-color: #0056b3;
509
- }
510
-
511
- /* 響應式設計 */
512
-
513
- /* 大螢幕 (1200px+) - 桌面 */
514
- @media (min-width: 1200px) {
515
- .udi-table-wrapper {
516
- height: 400px;
517
- }
518
-
519
- .udi-table-filter .filter-section .advanced-filter .advanced-filter-grid {
520
- grid-template-columns: repeat(3, 1fr);
521
- }
522
- }
523
-
524
- /* 中等螢幕 (992px - 1199px) - 桌面/平板橫向 */
525
- @media (max-width: 1199px) and (min-width: 992px) {
526
- .udi-table-filter .filter-section .advanced-filter .advanced-filter-grid {
527
- grid-template-columns: repeat(2, 1fr);
528
- }
529
- }
530
-
531
- /* 小螢幕 (768px - 991px) - 平板 */
532
- @media (max-width: 991px) and (min-width: 768px) {
533
- .udi-table-container {
534
- border-radius: 6px;
535
- }
536
-
537
- .udi-table-wrapper {
538
- height: 350px;
539
- }
540
-
541
- .udi-table {
542
- min-width: 600px;
543
- }
544
-
545
- .udi-table th,
546
- .udi-table td {
547
- padding: 10px 12px;
548
- font-size: 13px;
549
- max-width: 200px;
550
- }
551
-
552
- .udi-table-filter .filter-section .basic-filter {
553
- flex-wrap: wrap;
554
- gap: 10px;
555
- }
556
-
557
- .udi-table-filter .filter-section .basic-filter .filter-input {
558
- min-width: 180px;
559
- }
560
-
561
- .udi-table-filter .filter-section .advanced-filter .advanced-filter-grid {
562
- grid-template-columns: repeat(2, 1fr);
563
- gap: 10px;
564
- }
565
-
566
- .udi-table-pagination {
567
- padding: 12px;
568
- }
569
-
570
- .udi-table-pagination .pagination-info .page-size-selector {
571
- flex-direction: column;
572
- align-items: flex-start;
573
- gap: 4px;
574
- }
575
- }
576
-
577
- /* 手機螢幕 (481px - 767px) */
578
- @media (max-width: 767px) and (min-width: 481px) {
579
- .udi-table-container {
580
- border-radius: 4px;
581
- margin: 0 4px;
582
- }
583
-
584
- .udi-table-wrapper {
585
- height: 300px;
586
- }
587
-
588
- .udi-table {
589
- min-width: 500px;
590
- }
591
-
592
- .udi-table th,
593
- .udi-table td {
594
- padding: 8px 10px;
595
- font-size: 12px;
596
- max-width: 150px;
597
- }
598
-
599
- .udi-table th:first-child,
600
- .udi-table tbody td:first-child {
601
- position: sticky;
602
- left: 0;
603
- background: inherit;
604
- z-index: 5;
605
- border-right: 2px solid #e9ecef;
606
- font-weight: 600;
607
- }
608
-
609
- .scroll-position-indicator {
610
- padding: 6px 12px;
611
- font-size: 11px;
612
- }
613
-
614
- .udi-table-filter .filter-section .basic-filter {
615
- padding: 12px;
616
- flex-direction: column;
617
- align-items: stretch;
618
- gap: 8px;
619
- }
620
-
621
- .udi-table-filter .filter-section .basic-filter .filter-column-selector {
622
- justify-content: flex-start;
623
- }
624
-
625
- .udi-table-filter .filter-section .basic-filter .filter-column-selector label {
626
- font-size: 13px;
627
- }
628
-
629
- .udi-table-filter .filter-section .basic-filter .filter-column-selector .filter-column-select {
630
- min-width: 100px;
631
- flex: 1;
632
- font-size: 14px;
633
- }
634
-
635
- .udi-table-filter .filter-section .basic-filter .filter-input {
636
- min-width: auto;
637
- font-size: 16px;
638
- }
639
-
640
- .udi-table-filter .filter-section .basic-filter .advanced-filter-toggle,
641
- .udi-table-filter .filter-section .basic-filter .reset-button {
642
- align-self: stretch;
643
- font-size: 14px;
644
- }
645
-
646
- .udi-table-filter .filter-section .advanced-filter {
647
- padding: 12px;
648
- }
649
-
650
- .udi-table-filter .filter-section .advanced-filter .advanced-filter-header {
651
- flex-direction: column;
652
- align-items: stretch;
653
- gap: 8px;
654
- }
655
-
656
- .udi-table-filter .filter-section .advanced-filter .advanced-filter-header h4 {
657
- font-size: 14px;
658
- }
659
-
660
- .udi-table-filter .filter-section .advanced-filter .advanced-filter-header .clear-advanced-button {
661
- align-self: flex-end;
662
- }
663
-
664
- .udi-table-filter .filter-section .advanced-filter .advanced-filter-grid {
665
- grid-template-columns: 1fr;
666
- gap: 8px;
667
- }
668
-
669
- .udi-table-filter .filter-section .advanced-filter .advanced-filter-grid .advanced-filter-item label {
670
- font-size: 12px;
671
- }
672
-
673
- .udi-table-filter .filter-section .advanced-filter .advanced-filter-grid .advanced-filter-item .advanced-filter-input {
674
- font-size: 16px;
675
- }
676
-
677
- .udi-table-pagination {
678
- flex-direction: column;
679
- align-items: stretch;
680
- padding: 12px;
681
- gap: 8px;
682
- }
683
-
684
- .udi-table-pagination .pagination-info {
685
- text-align: center;
686
- }
687
-
688
- .udi-table-pagination .pagination-info .page-size-selector {
689
- justify-content: center;
690
- flex-wrap: wrap;
691
- }
692
-
693
- .udi-table-pagination .pagination-controls {
694
- justify-content: center;
695
- }
696
-
697
- .udi-table-pagination .pagination-controls .pagination-button {
698
- padding: 8px 12px;
699
- font-size: 13px;
700
- min-width: 36px;
701
- }
702
- }
703
-
704
- /* 極小螢幕 (320px - 480px) */
705
- @media (max-width: 480px) {
706
- .udi-table-container {
707
- border-radius: 0;
708
- margin: 0;
709
- box-shadow: none;
710
- border-left: 1px solid #e9ecef;
711
- border-right: 1px solid #e9ecef;
712
- }
713
-
714
- .udi-table-wrapper {
715
- height: 250px;
716
- border: none;
717
- }
718
-
719
- .udi-table {
720
- min-width: 400px;
721
- font-size: 11px;
722
- }
723
-
724
- .udi-table th,
725
- .udi-table td {
726
- padding: 6px 8px;
727
- font-size: 11px;
728
- max-width: 120px;
729
- }
730
-
731
- .udi-table th:first-child,
732
- .udi-table tbody td:first-child {
733
- min-width: 60px;
734
- }
735
-
736
- .scroll-position-indicator {
737
- padding: 4px 8px;
738
- font-size: 10px;
739
- }
740
-
741
- .udi-table-filter .filter-section .basic-filter {
742
- padding: 8px;
743
- gap: 6px;
744
- }
745
-
746
- .udi-table-filter .filter-section .basic-filter .filter-column-selector label {
747
- font-size: 12px;
748
- }
749
-
750
- .udi-table-filter .filter-section .basic-filter .filter-column-selector .filter-column-select {
751
- font-size: 13px;
752
- padding: 6px 8px;
753
- }
754
-
755
- .udi-table-filter .filter-section .basic-filter .filter-input {
756
- padding: 8px 10px;
757
- font-size: 16px;
758
- }
759
-
760
- .udi-table-filter .filter-section .basic-filter .advanced-filter-toggle,
761
- .udi-table-filter .filter-section .basic-filter .reset-button {
762
- padding: 8px 12px;
763
- font-size: 13px;
764
- }
765
-
766
- .udi-table-filter .filter-section .advanced-filter {
767
- padding: 8px;
768
- }
769
-
770
- .udi-table-filter .filter-section .advanced-filter .advanced-filter-header h4 {
771
- font-size: 13px;
772
- }
773
-
774
- .udi-table-filter .filter-section .advanced-filter .advanced-filter-header .clear-advanced-button {
775
- padding: 4px 8px;
776
- font-size: 11px;
777
- }
778
-
779
- .udi-table-filter .filter-section .advanced-filter .advanced-filter-grid {
780
- gap: 6px;
781
- }
782
-
783
- .udi-table-filter .filter-section .advanced-filter .advanced-filter-grid .advanced-filter-item label {
784
- font-size: 11px;
785
- }
786
-
787
- .udi-table-filter .filter-section .advanced-filter .advanced-filter-grid .advanced-filter-item .advanced-filter-input {
788
- padding: 6px 8px;
789
- font-size: 16px;
790
- }
791
-
792
- .udi-table-pagination {
793
- padding: 8px;
794
- gap: 6px;
795
- }
796
-
797
- .udi-table-pagination .pagination-info {
798
- font-size: 12px;
799
- }
800
-
801
- .udi-table-pagination .pagination-info .page-size-selector {
802
- gap: 4px;
803
- }
804
-
805
- .udi-table-pagination .pagination-info .page-size-selector label {
806
- font-size: 11px;
807
- }
808
-
809
- .udi-table-pagination .pagination-info .page-size-selector .page-size-select {
810
- padding: 4px 6px;
811
- font-size: 12px;
812
- }
813
-
814
- .udi-table-pagination .pagination-info .pagination-summary {
815
- font-size: 11px;
816
- }
817
-
818
- .udi-table-pagination .pagination-controls {
819
- flex-wrap: wrap;
820
- gap: 2px;
821
- }
822
-
823
- .udi-table-pagination .pagination-controls .pagination-button {
824
- padding: 6px 8px;
825
- font-size: 11px;
826
- min-width: 28px;
827
- }
828
- }
829
-
830
- /* 橫向模式優化 */
831
- @media (orientation: landscape) and (max-height: 500px) {
832
- .udi-table-wrapper {
833
- height: 200px;
834
- }
835
-
836
- .udi-table-filter .filter-section .basic-filter {
837
- flex-direction: row;
838
- flex-wrap: wrap;
839
- }
840
- }
841
-
842
- /* 高DPI螢幕優化 */
843
- @media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
844
- .udi-table th,
845
- .udi-table td {
846
- border-width: 0.5px;
847
- }
848
- }
849
- `, "",{"version":3,"sources":["webpack://./src/components/udiTable/UdiTable.css"],"names":[],"mappings":"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","sourcesContent":["/* UdiTable 樣式 */\n\n.udi-table-container {\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif;\n background: white;\n border-radius: 8px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n overflow: hidden;\n width: 100%;\n}\n\n/* 錯誤訊息樣式 */\n.udi-table-container .error-message {\n background: #f8d7da;\n color: #721c24;\n padding: 12px 16px;\n border-left: 4px solid #dc3545;\n margin-bottom: 16px;\n border-radius: 4px;\n font-weight: 500;\n}\n\n@media (max-width: 768px) {\n .udi-table-container .error-message {\n margin: 8px;\n font-size: 14px;\n }\n}\n\n/* 篩選器樣式 */\n.udi-table-filter {\n background: #f8f9fa;\n border-bottom: 1px solid #e9ecef;\n}\n\n.udi-table-filter .filter-section .basic-filter {\n padding: 16px;\n display: flex;\n align-items: center;\n gap: 12px;\n flex-wrap: wrap;\n}\n\n.udi-table-filter .filter-section .basic-filter .filter-column-selector {\n display: flex;\n align-items: center;\n gap: 8px;\n white-space: nowrap;\n}\n\n.udi-table-filter .filter-section .basic-filter .filter-column-selector label {\n font-weight: 500;\n color: #495057;\n font-size: 14px;\n}\n\n.udi-table-filter .filter-section .basic-filter .filter-column-selector .filter-column-select {\n padding: 8px 12px;\n border: 1px solid #ced4da;\n border-radius: 4px;\n background: white;\n font-size: 14px;\n cursor: pointer;\n outline: none;\n transition: border-color 0.15s ease-in-out;\n min-width: 120px;\n}\n\n.udi-table-filter .filter-section .basic-filter .filter-column-selector .filter-column-select:focus {\n border-color: #007bff;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.udi-table-filter .filter-section .basic-filter .filter-column-selector .filter-column-select:hover {\n border-color: #adb5bd;\n}\n\n.udi-table-filter .filter-section .basic-filter .filter-input {\n flex: 1;\n padding: 8px 12px;\n border: 1px solid #ced4da;\n border-radius: 4px;\n font-size: 14px;\n outline: none;\n transition: border-color 0.15s ease-in-out;\n min-width: 200px;\n}\n\n.udi-table-filter .filter-section .basic-filter .filter-input:focus {\n border-color: #007bff;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.udi-table-filter .filter-section .basic-filter .advanced-filter-toggle {\n padding: 8px 16px;\n background: #007bff;\n color: white;\n border: none;\n border-radius: 4px;\n cursor: pointer;\n font-size: 14px;\n transition: background-color 0.15s ease-in-out;\n white-space: nowrap;\n}\n\n.udi-table-filter .filter-section .basic-filter .advanced-filter-toggle:hover {\n background: #0056b3;\n}\n\n.udi-table-filter .filter-section .basic-filter .reset-button {\n padding: 8px 16px;\n background: #6c757d;\n color: white;\n border: none;\n border-radius: 4px;\n cursor: pointer;\n font-size: 14px;\n transition: background-color 0.15s ease-in-out;\n white-space: nowrap;\n}\n\n.udi-table-filter .filter-section .basic-filter .reset-button:hover {\n background: #5a6268;\n}\n\n.udi-table-filter .filter-section .advanced-filter {\n padding: 16px;\n background: #f1f3f4;\n border-top: 1px solid #e9ecef;\n}\n\n.udi-table-filter .filter-section .advanced-filter .advanced-filter-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 16px;\n}\n\n.udi-table-filter .filter-section .advanced-filter .advanced-filter-header h4 {\n margin: 0;\n color: #495057;\n font-size: 16px;\n font-weight: 600;\n}\n\n.udi-table-filter .filter-section .advanced-filter .advanced-filter-header .clear-advanced-button {\n padding: 6px 12px;\n background: #dc3545;\n color: white;\n border: none;\n border-radius: 4px;\n cursor: pointer;\n font-size: 12px;\n transition: background-color 0.15s ease-in-out;\n}\n\n.udi-table-filter .filter-section .advanced-filter .advanced-filter-header .clear-advanced-button:hover {\n background: #c82333;\n}\n\n.udi-table-filter .filter-section .advanced-filter .advanced-filter-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: 12px;\n}\n\n.udi-table-filter .filter-section .advanced-filter .advanced-filter-grid .advanced-filter-item {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.udi-table-filter .filter-section .advanced-filter .advanced-filter-grid .advanced-filter-item label {\n font-weight: 500;\n color: #495057;\n font-size: 13px;\n}\n\n.udi-table-filter .filter-section .advanced-filter .advanced-filter-grid .advanced-filter-item .advanced-filter-input {\n padding: 8px 12px;\n border: 1px solid #ced4da;\n border-radius: 4px;\n font-size: 14px;\n outline: none;\n transition: border-color 0.15s ease-in-out;\n background: white;\n}\n\n.udi-table-filter .filter-section .advanced-filter .advanced-filter-grid .advanced-filter-item .advanced-filter-input:focus {\n border-color: #007bff;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.udi-table-filter .filter-section .advanced-filter .advanced-filter-grid .advanced-filter-item .advanced-filter-input:hover {\n border-color: #adb5bd;\n}\n\n/* 滾動位置顯示器 */\n.scroll-position-indicator {\n padding: 8px 16px;\n background: #e3f2fd;\n border-bottom: 1px solid #bbdefb;\n font-size: 12px;\n color: #1565c0;\n font-family: 'Courier New', monospace;\n text-align: center;\n}\n\n/* 表格包裝器 */\n.udi-table-wrapper {\n overflow-x: auto;\n height: 300px;\n overflow-y: auto;\n border: 1px solid #e9ecef;\n -webkit-overflow-scrolling: touch;\n}\n\n.udi-table-wrapper::-webkit-scrollbar {\n width: 8px;\n height: 8px;\n}\n\n.udi-table-wrapper::-webkit-scrollbar-track {\n background: #f8f9fa;\n border-radius: 4px;\n}\n\n.udi-table-wrapper::-webkit-scrollbar-thumb {\n background: #cbd5e0;\n border-radius: 4px;\n}\n\n.udi-table-wrapper::-webkit-scrollbar-thumb:hover {\n background: #a0aec0;\n}\n\n/* 表格樣式 */\n.udi-table {\n width: 200%;\n min-width: 800px;\n border-collapse: collapse;\n font-size: 14px;\n}\n\n.udi-table th,\n.udi-table td {\n padding: 12px 16px;\n text-align: left;\n border-bottom: 1px solid #e9ecef;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 300px;\n}\n\n.udi-table th {\n background: #f8f9fa;\n font-weight: 600;\n color: #495057;\n position: sticky;\n top: 0;\n z-index: 10;\n border-bottom: 2px solid #dee2e6;\n}\n\n.udi-table th.sortable {\n cursor: pointer;\n user-select: none;\n transition: background-color 0.15s ease-in-out;\n}\n\n.udi-table th.sortable:hover {\n background: #e9ecef;\n}\n\n.udi-table th.sortable .sort-icon {\n opacity: 0.4;\n}\n\n.udi-table th.sorted {\n background: #e3f2fd;\n color: #1976d2;\n}\n\n.udi-table th.sorted .sort-icon {\n opacity: 1;\n}\n\n.udi-table th .th-content {\n display: flex;\n align-items: center;\n justify-content: space-between;\n min-width: 0;\n}\n\n.udi-table th .sort-icon {\n margin-left: 8px;\n font-size: 12px;\n opacity: 0.7;\n flex-shrink: 0;\n}\n\n.udi-table tbody tr {\n transition: background-color 0.15s ease-in-out;\n}\n\n.udi-table tbody tr:hover {\n background: #f8f9fa;\n}\n\n.udi-table tbody tr:nth-child(even) {\n background: #fdfdfe;\n}\n\n.udi-table tbody tr:nth-child(even):hover {\n background: #f8f9fa;\n}\n\n.udi-table tbody td:first-child {\n left: 0;\n background: inherit;\n z-index: 5;\n border-right: 1px solid #e9ecef;\n}\n\n.udi-table .no-data {\n text-align: center;\n color: #6c757d;\n font-style: italic;\n padding: 32px;\n}\n\n.udi-table .loading-state {\n text-align: center;\n padding: 40px 20px;\n}\n\n.udi-table .loading-state .loading-spinner {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 12px;\n}\n\n.udi-table .loading-state .loading-spinner .spinner {\n width: 32px;\n height: 32px;\n border: 3px solid #f3f3f3;\n border-top: 3px solid #007bff;\n border-radius: 50%;\n animation: spin 1s linear infinite;\n}\n\n.udi-table .loading-state .loading-spinner span {\n color: #868e96;\n font-size: 14px;\n}\n\n@keyframes spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n}\n\n/* 分頁樣式 */\n.udi-table-pagination {\n padding: 16px;\n background: #f8f9fa;\n border-top: 1px solid #e9ecef;\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-wrap: wrap;\n gap: 12px;\n}\n\n.udi-table-pagination .pagination-info {\n display: flex;\n flex-direction: column;\n gap: 8px;\n color: #6c757d;\n font-size: 14px;\n}\n\n.udi-table-pagination .pagination-info .page-size-selector {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.udi-table-pagination .pagination-info .page-size-selector label {\n font-weight: 500;\n color: #495057;\n}\n\n.udi-table-pagination .pagination-info .page-size-selector .page-size-select {\n padding: 4px 8px;\n border: 1px solid #ced4da;\n border-radius: 4px;\n background: white;\n font-size: 14px;\n cursor: pointer;\n outline: none;\n transition: border-color 0.15s ease-in-out;\n}\n\n.udi-table-pagination .pagination-info .page-size-selector .page-size-select:focus {\n border-color: #007bff;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.udi-table-pagination .pagination-info .page-size-selector .page-size-select:hover {\n border-color: #adb5bd;\n}\n\n.udi-table-pagination .pagination-info .page-size-selector span {\n color: #495057;\n}\n\n.udi-table-pagination .pagination-info .pagination-summary {\n font-size: 13px;\n}\n\n.udi-table-pagination .pagination-controls {\n display: flex;\n gap: 4px;\n align-items: center;\n}\n\n.udi-table-pagination .pagination-controls .current-page-mobile {\n padding: 8px 12px;\n background: #007bff;\n color: white;\n border-radius: 4px;\n font-size: 14px;\n font-weight: 500;\n min-width: 60px;\n text-align: center;\n border: 1px solid #007bff;\n}\n\n.udi-table-pagination .pagination-controls .pagination-button {\n padding: 6px 12px;\n border: 1px solid #ced4da;\n background: white;\n color: #495057;\n cursor: pointer;\n border-radius: 4px;\n font-size: 14px;\n transition: all 0.15s ease-in-out;\n min-width: 40px;\n}\n\n.udi-table-pagination .pagination-controls .pagination-button:hover:not(:disabled) {\n background: #e9ecef;\n border-color: #adb5bd;\n}\n\n.udi-table-pagination .pagination-controls .pagination-button:disabled {\n background: #f8f9fa;\n color: #6c757d;\n cursor: not-allowed;\n opacity: 0.6;\n}\n\n.udi-table-pagination .pagination-controls .pagination-button.disabled {\n background: #f1f3f4;\n color: #9aa0a6;\n cursor: not-allowed;\n opacity: 0.5;\n border-color: #dadce0;\n}\n\n.udi-table-pagination .pagination-controls .pagination-button.disabled:hover {\n background: #f1f3f4;\n border-color: #dadce0;\n}\n\n.udi-table-pagination .pagination-controls .pagination-button.active {\n background: #007bff;\n border-color: #007bff;\n color: white;\n}\n\n.udi-table-pagination .pagination-controls .pagination-button.active:hover {\n background: #0056b3;\n border-color: #0056b3;\n}\n\n/* 響應式設計 */\n\n/* 大螢幕 (1200px+) - 桌面 */\n@media (min-width: 1200px) {\n .udi-table-wrapper {\n height: 400px;\n }\n \n .udi-table-filter .filter-section .advanced-filter .advanced-filter-grid {\n grid-template-columns: repeat(3, 1fr);\n }\n}\n\n/* 中等螢幕 (992px - 1199px) - 桌面/平板橫向 */\n@media (max-width: 1199px) and (min-width: 992px) {\n .udi-table-filter .filter-section .advanced-filter .advanced-filter-grid {\n grid-template-columns: repeat(2, 1fr);\n }\n}\n\n/* 小螢幕 (768px - 991px) - 平板 */\n@media (max-width: 991px) and (min-width: 768px) {\n .udi-table-container {\n border-radius: 6px;\n }\n\n .udi-table-wrapper {\n height: 350px;\n }\n\n .udi-table {\n min-width: 600px;\n }\n \n .udi-table th,\n .udi-table td {\n padding: 10px 12px;\n font-size: 13px;\n max-width: 200px;\n }\n\n .udi-table-filter .filter-section .basic-filter {\n flex-wrap: wrap;\n gap: 10px;\n }\n \n .udi-table-filter .filter-section .basic-filter .filter-input {\n min-width: 180px;\n }\n\n .udi-table-filter .filter-section .advanced-filter .advanced-filter-grid {\n grid-template-columns: repeat(2, 1fr);\n gap: 10px;\n }\n\n .udi-table-pagination {\n padding: 12px;\n }\n \n .udi-table-pagination .pagination-info .page-size-selector {\n flex-direction: column;\n align-items: flex-start;\n gap: 4px;\n }\n}\n\n/* 手機螢幕 (481px - 767px) */\n@media (max-width: 767px) and (min-width: 481px) {\n .udi-table-container {\n border-radius: 4px;\n margin: 0 4px;\n }\n\n .udi-table-wrapper {\n height: 300px;\n }\n\n .udi-table {\n min-width: 500px;\n }\n \n .udi-table th,\n .udi-table td {\n padding: 8px 10px;\n font-size: 12px;\n max-width: 150px;\n }\n \n .udi-table th:first-child,\n .udi-table tbody td:first-child {\n position: sticky;\n left: 0;\n background: inherit;\n z-index: 5;\n border-right: 2px solid #e9ecef;\n font-weight: 600;\n }\n\n .scroll-position-indicator {\n padding: 6px 12px;\n font-size: 11px;\n }\n\n .udi-table-filter .filter-section .basic-filter {\n padding: 12px;\n flex-direction: column;\n align-items: stretch;\n gap: 8px;\n }\n\n .udi-table-filter .filter-section .basic-filter .filter-column-selector {\n justify-content: flex-start;\n }\n \n .udi-table-filter .filter-section .basic-filter .filter-column-selector label {\n font-size: 13px;\n }\n \n .udi-table-filter .filter-section .basic-filter .filter-column-selector .filter-column-select {\n min-width: 100px;\n flex: 1;\n font-size: 14px;\n }\n\n .udi-table-filter .filter-section .basic-filter .filter-input {\n min-width: auto;\n font-size: 16px;\n }\n\n .udi-table-filter .filter-section .basic-filter .advanced-filter-toggle,\n .udi-table-filter .filter-section .basic-filter .reset-button {\n align-self: stretch;\n font-size: 14px;\n }\n\n .udi-table-filter .filter-section .advanced-filter {\n padding: 12px;\n }\n\n .udi-table-filter .filter-section .advanced-filter .advanced-filter-header {\n flex-direction: column;\n align-items: stretch;\n gap: 8px;\n }\n\n .udi-table-filter .filter-section .advanced-filter .advanced-filter-header h4 {\n font-size: 14px;\n }\n \n .udi-table-filter .filter-section .advanced-filter .advanced-filter-header .clear-advanced-button {\n align-self: flex-end;\n }\n\n .udi-table-filter .filter-section .advanced-filter .advanced-filter-grid {\n grid-template-columns: 1fr;\n gap: 8px;\n }\n\n .udi-table-filter .filter-section .advanced-filter .advanced-filter-grid .advanced-filter-item label {\n font-size: 12px;\n }\n \n .udi-table-filter .filter-section .advanced-filter .advanced-filter-grid .advanced-filter-item .advanced-filter-input {\n font-size: 16px;\n }\n\n .udi-table-pagination {\n flex-direction: column;\n align-items: stretch;\n padding: 12px;\n gap: 8px;\n }\n\n .udi-table-pagination .pagination-info {\n text-align: center;\n }\n \n .udi-table-pagination .pagination-info .page-size-selector {\n justify-content: center;\n flex-wrap: wrap;\n }\n\n .udi-table-pagination .pagination-controls {\n justify-content: center;\n }\n \n .udi-table-pagination .pagination-controls .pagination-button {\n padding: 8px 12px;\n font-size: 13px;\n min-width: 36px;\n }\n}\n\n/* 極小螢幕 (320px - 480px) */\n@media (max-width: 480px) {\n .udi-table-container {\n border-radius: 0;\n margin: 0;\n box-shadow: none;\n border-left: 1px solid #e9ecef;\n border-right: 1px solid #e9ecef;\n }\n\n .udi-table-wrapper {\n height: 250px;\n border: none;\n }\n\n .udi-table {\n min-width: 400px;\n font-size: 11px;\n }\n \n .udi-table th,\n .udi-table td {\n padding: 6px 8px;\n font-size: 11px;\n max-width: 120px;\n }\n \n .udi-table th:first-child,\n .udi-table tbody td:first-child {\n min-width: 60px;\n }\n\n .scroll-position-indicator {\n padding: 4px 8px;\n font-size: 10px;\n }\n\n .udi-table-filter .filter-section .basic-filter {\n padding: 8px;\n gap: 6px;\n }\n\n .udi-table-filter .filter-section .basic-filter .filter-column-selector label {\n font-size: 12px;\n }\n \n .udi-table-filter .filter-section .basic-filter .filter-column-selector .filter-column-select {\n font-size: 13px;\n padding: 6px 8px;\n }\n\n .udi-table-filter .filter-section .basic-filter .filter-input {\n padding: 8px 10px;\n font-size: 16px;\n }\n\n .udi-table-filter .filter-section .basic-filter .advanced-filter-toggle,\n .udi-table-filter .filter-section .basic-filter .reset-button {\n padding: 8px 12px;\n font-size: 13px;\n }\n\n .udi-table-filter .filter-section .advanced-filter {\n padding: 8px;\n }\n\n .udi-table-filter .filter-section .advanced-filter .advanced-filter-header h4 {\n font-size: 13px;\n }\n \n .udi-table-filter .filter-section .advanced-filter .advanced-filter-header .clear-advanced-button {\n padding: 4px 8px;\n font-size: 11px;\n }\n\n .udi-table-filter .filter-section .advanced-filter .advanced-filter-grid {\n gap: 6px;\n }\n\n .udi-table-filter .filter-section .advanced-filter .advanced-filter-grid .advanced-filter-item label {\n font-size: 11px;\n }\n \n .udi-table-filter .filter-section .advanced-filter .advanced-filter-grid .advanced-filter-item .advanced-filter-input {\n padding: 6px 8px;\n font-size: 16px;\n }\n\n .udi-table-pagination {\n padding: 8px;\n gap: 6px;\n }\n\n .udi-table-pagination .pagination-info {\n font-size: 12px;\n }\n \n .udi-table-pagination .pagination-info .page-size-selector {\n gap: 4px;\n }\n \n .udi-table-pagination .pagination-info .page-size-selector label {\n font-size: 11px;\n }\n \n .udi-table-pagination .pagination-info .page-size-selector .page-size-select {\n padding: 4px 6px;\n font-size: 12px;\n }\n \n .udi-table-pagination .pagination-info .pagination-summary {\n font-size: 11px;\n }\n\n .udi-table-pagination .pagination-controls {\n flex-wrap: wrap;\n gap: 2px;\n }\n\n .udi-table-pagination .pagination-controls .pagination-button {\n padding: 6px 8px;\n font-size: 11px;\n min-width: 28px;\n }\n}\n\n/* 橫向模式優化 */\n@media (orientation: landscape) and (max-height: 500px) {\n .udi-table-wrapper {\n height: 200px;\n }\n \n .udi-table-filter .filter-section .basic-filter {\n flex-direction: row;\n flex-wrap: wrap;\n }\n}\n\n/* 高DPI螢幕優化 */\n@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {\n .udi-table th,\n .udi-table td {\n border-width: 0.5px;\n }\n}\n"],"sourceRoot":""}]);
850
- // Exports
851
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
852
-
853
-
854
- /***/ }),
855
-
856
- /***/ "./node_modules/css-loader/dist/runtime/api.js":
857
- /*!*****************************************************!*\
858
- !*** ./node_modules/css-loader/dist/runtime/api.js ***!
859
- \*****************************************************/
860
- /***/ ((module) => {
861
-
862
-
863
-
864
- /*
865
- MIT License http://www.opensource.org/licenses/mit-license.php
866
- Author Tobias Koppers @sokra
867
- */
868
- module.exports = function (cssWithMappingToString) {
869
- var list = [];
870
-
871
- // return the list of modules as css string
872
- list.toString = function toString() {
873
- return this.map(function (item) {
874
- var content = "";
875
- var needLayer = typeof item[5] !== "undefined";
876
- if (item[4]) {
877
- content += "@supports (".concat(item[4], ") {");
878
- }
879
- if (item[2]) {
880
- content += "@media ".concat(item[2], " {");
881
- }
882
- if (needLayer) {
883
- content += "@layer".concat(item[5].length > 0 ? " ".concat(item[5]) : "", " {");
884
- }
885
- content += cssWithMappingToString(item);
886
- if (needLayer) {
887
- content += "}";
888
- }
889
- if (item[2]) {
890
- content += "}";
891
- }
892
- if (item[4]) {
893
- content += "}";
894
- }
895
- return content;
896
- }).join("");
897
- };
898
-
899
- // import a list of modules into the list
900
- list.i = function i(modules, media, dedupe, supports, layer) {
901
- if (typeof modules === "string") {
902
- modules = [[null, modules, undefined]];
903
- }
904
- var alreadyImportedModules = {};
905
- if (dedupe) {
906
- for (var k = 0; k < this.length; k++) {
907
- var id = this[k][0];
908
- if (id != null) {
909
- alreadyImportedModules[id] = true;
910
- }
911
- }
912
- }
913
- for (var _k = 0; _k < modules.length; _k++) {
914
- var item = [].concat(modules[_k]);
915
- if (dedupe && alreadyImportedModules[item[0]]) {
916
- continue;
917
- }
918
- if (typeof layer !== "undefined") {
919
- if (typeof item[5] === "undefined") {
920
- item[5] = layer;
921
- } else {
922
- item[1] = "@layer".concat(item[5].length > 0 ? " ".concat(item[5]) : "", " {").concat(item[1], "}");
923
- item[5] = layer;
924
- }
925
- }
926
- if (media) {
927
- if (!item[2]) {
928
- item[2] = media;
929
- } else {
930
- item[1] = "@media ".concat(item[2], " {").concat(item[1], "}");
931
- item[2] = media;
932
- }
933
- }
934
- if (supports) {
935
- if (!item[4]) {
936
- item[4] = "".concat(supports);
937
- } else {
938
- item[1] = "@supports (".concat(item[4], ") {").concat(item[1], "}");
939
- item[4] = supports;
940
- }
941
- }
942
- list.push(item);
943
- }
944
- };
945
- return list;
946
- };
947
-
948
- /***/ }),
949
-
950
- /***/ "./node_modules/css-loader/dist/runtime/sourceMaps.js":
951
- /*!************************************************************!*\
952
- !*** ./node_modules/css-loader/dist/runtime/sourceMaps.js ***!
953
- \************************************************************/
954
- /***/ ((module) => {
955
-
956
-
957
-
958
- module.exports = function (item) {
959
- var content = item[1];
960
- var cssMapping = item[3];
961
- if (!cssMapping) {
962
- return content;
963
- }
964
- if (typeof btoa === "function") {
965
- var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));
966
- var data = "sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(base64);
967
- var sourceMapping = "/*# ".concat(data, " */");
968
- return [content].concat([sourceMapping]).join("\n");
969
- }
970
- return [content].join("\n");
971
- };
972
-
973
- /***/ }),
974
-
975
- /***/ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js":
976
- /*!****************************************************************************!*\
977
- !*** ./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js ***!
978
- \****************************************************************************/
979
- /***/ ((module) => {
980
-
981
-
982
-
983
- var stylesInDOM = [];
984
- function getIndexByIdentifier(identifier) {
985
- var result = -1;
986
- for (var i = 0; i < stylesInDOM.length; i++) {
987
- if (stylesInDOM[i].identifier === identifier) {
988
- result = i;
989
- break;
990
- }
991
- }
992
- return result;
993
- }
994
- function modulesToDom(list, options) {
995
- var idCountMap = {};
996
- var identifiers = [];
997
- for (var i = 0; i < list.length; i++) {
998
- var item = list[i];
999
- var id = options.base ? item[0] + options.base : item[0];
1000
- var count = idCountMap[id] || 0;
1001
- var identifier = "".concat(id, " ").concat(count);
1002
- idCountMap[id] = count + 1;
1003
- var indexByIdentifier = getIndexByIdentifier(identifier);
1004
- var obj = {
1005
- css: item[1],
1006
- media: item[2],
1007
- sourceMap: item[3],
1008
- supports: item[4],
1009
- layer: item[5]
1010
- };
1011
- if (indexByIdentifier !== -1) {
1012
- stylesInDOM[indexByIdentifier].references++;
1013
- stylesInDOM[indexByIdentifier].updater(obj);
1014
- } else {
1015
- var updater = addElementStyle(obj, options);
1016
- options.byIndex = i;
1017
- stylesInDOM.splice(i, 0, {
1018
- identifier: identifier,
1019
- updater: updater,
1020
- references: 1
1021
- });
1022
- }
1023
- identifiers.push(identifier);
1024
- }
1025
- return identifiers;
1026
- }
1027
- function addElementStyle(obj, options) {
1028
- var api = options.domAPI(options);
1029
- api.update(obj);
1030
- var updater = function updater(newObj) {
1031
- if (newObj) {
1032
- if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap && newObj.supports === obj.supports && newObj.layer === obj.layer) {
1033
- return;
1034
- }
1035
- api.update(obj = newObj);
1036
- } else {
1037
- api.remove();
1038
- }
1039
- };
1040
- return updater;
1041
- }
1042
- module.exports = function (list, options) {
1043
- options = options || {};
1044
- list = list || [];
1045
- var lastIdentifiers = modulesToDom(list, options);
1046
- return function update(newList) {
1047
- newList = newList || [];
1048
- for (var i = 0; i < lastIdentifiers.length; i++) {
1049
- var identifier = lastIdentifiers[i];
1050
- var index = getIndexByIdentifier(identifier);
1051
- stylesInDOM[index].references--;
1052
- }
1053
- var newLastIdentifiers = modulesToDom(newList, options);
1054
- for (var _i = 0; _i < lastIdentifiers.length; _i++) {
1055
- var _identifier = lastIdentifiers[_i];
1056
- var _index = getIndexByIdentifier(_identifier);
1057
- if (stylesInDOM[_index].references === 0) {
1058
- stylesInDOM[_index].updater();
1059
- stylesInDOM.splice(_index, 1);
1060
- }
1061
- }
1062
- lastIdentifiers = newLastIdentifiers;
1063
- };
1064
- };
1065
-
1066
- /***/ }),
1067
-
1068
- /***/ "./node_modules/style-loader/dist/runtime/insertBySelector.js":
1069
- /*!********************************************************************!*\
1070
- !*** ./node_modules/style-loader/dist/runtime/insertBySelector.js ***!
1071
- \********************************************************************/
1072
- /***/ ((module) => {
1073
-
1074
-
1075
-
1076
- var memo = {};
1077
-
1078
- /* istanbul ignore next */
1079
- function getTarget(target) {
1080
- if (typeof memo[target] === "undefined") {
1081
- var styleTarget = document.querySelector(target);
1082
-
1083
- // Special case to return head of iframe instead of iframe itself
1084
- if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {
1085
- try {
1086
- // This will throw an exception if access to iframe is blocked
1087
- // due to cross-origin restrictions
1088
- styleTarget = styleTarget.contentDocument.head;
1089
- } catch (e) {
1090
- // istanbul ignore next
1091
- styleTarget = null;
1092
- }
1093
- }
1094
- memo[target] = styleTarget;
1095
- }
1096
- return memo[target];
1097
- }
1098
-
1099
- /* istanbul ignore next */
1100
- function insertBySelector(insert, style) {
1101
- var target = getTarget(insert);
1102
- if (!target) {
1103
- throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");
1104
- }
1105
- target.appendChild(style);
1106
- }
1107
- module.exports = insertBySelector;
1108
-
1109
- /***/ }),
1110
-
1111
- /***/ "./node_modules/style-loader/dist/runtime/insertStyleElement.js":
1112
- /*!**********************************************************************!*\
1113
- !*** ./node_modules/style-loader/dist/runtime/insertStyleElement.js ***!
1114
- \**********************************************************************/
1115
- /***/ ((module) => {
1116
-
1117
-
1118
-
1119
- /* istanbul ignore next */
1120
- function insertStyleElement(options) {
1121
- var element = document.createElement("style");
1122
- options.setAttributes(element, options.attributes);
1123
- options.insert(element, options.options);
1124
- return element;
1125
- }
1126
- module.exports = insertStyleElement;
1127
-
1128
- /***/ }),
1129
-
1130
- /***/ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js":
1131
- /*!**********************************************************************************!*\
1132
- !*** ./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js ***!
1133
- \**********************************************************************************/
1134
- /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
1135
-
1136
-
1137
-
1138
- /* istanbul ignore next */
1139
- function setAttributesWithoutAttributes(styleElement) {
1140
- var nonce = true ? __webpack_require__.nc : 0;
1141
- if (nonce) {
1142
- styleElement.setAttribute("nonce", nonce);
1143
- }
1144
- }
1145
- module.exports = setAttributesWithoutAttributes;
1146
-
1147
- /***/ }),
1148
-
1149
- /***/ "./node_modules/style-loader/dist/runtime/styleDomAPI.js":
1150
- /*!***************************************************************!*\
1151
- !*** ./node_modules/style-loader/dist/runtime/styleDomAPI.js ***!
1152
- \***************************************************************/
1153
- /***/ ((module) => {
1154
-
1155
-
1156
-
1157
- /* istanbul ignore next */
1158
- function apply(styleElement, options, obj) {
1159
- var css = "";
1160
- if (obj.supports) {
1161
- css += "@supports (".concat(obj.supports, ") {");
1162
- }
1163
- if (obj.media) {
1164
- css += "@media ".concat(obj.media, " {");
1165
- }
1166
- var needLayer = typeof obj.layer !== "undefined";
1167
- if (needLayer) {
1168
- css += "@layer".concat(obj.layer.length > 0 ? " ".concat(obj.layer) : "", " {");
1169
- }
1170
- css += obj.css;
1171
- if (needLayer) {
1172
- css += "}";
1173
- }
1174
- if (obj.media) {
1175
- css += "}";
1176
- }
1177
- if (obj.supports) {
1178
- css += "}";
1179
- }
1180
- var sourceMap = obj.sourceMap;
1181
- if (sourceMap && typeof btoa !== "undefined") {
1182
- css += "\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), " */");
1183
- }
1184
-
1185
- // For old IE
1186
- /* istanbul ignore if */
1187
- options.styleTagTransform(css, styleElement, options.options);
1188
- }
1189
- function removeStyleElement(styleElement) {
1190
- // istanbul ignore if
1191
- if (styleElement.parentNode === null) {
1192
- return false;
1193
- }
1194
- styleElement.parentNode.removeChild(styleElement);
1195
- }
1196
-
1197
- /* istanbul ignore next */
1198
- function domAPI(options) {
1199
- if (typeof document === "undefined") {
1200
- return {
1201
- update: function update() {},
1202
- remove: function remove() {}
1203
- };
1204
- }
1205
- var styleElement = options.insertStyleElement(options);
1206
- return {
1207
- update: function update(obj) {
1208
- apply(styleElement, options, obj);
1209
- },
1210
- remove: function remove() {
1211
- removeStyleElement(styleElement);
1212
- }
1213
- };
1214
- }
1215
- module.exports = domAPI;
1216
-
1217
- /***/ }),
1218
-
1219
- /***/ "./node_modules/style-loader/dist/runtime/styleTagTransform.js":
1220
- /*!*********************************************************************!*\
1221
- !*** ./node_modules/style-loader/dist/runtime/styleTagTransform.js ***!
1222
- \*********************************************************************/
1223
- /***/ ((module) => {
1224
-
1225
-
1226
-
1227
- /* istanbul ignore next */
1228
- function styleTagTransform(css, styleElement) {
1229
- if (styleElement.styleSheet) {
1230
- styleElement.styleSheet.cssText = css;
1231
- } else {
1232
- while (styleElement.firstChild) {
1233
- styleElement.removeChild(styleElement.firstChild);
1234
- }
1235
- styleElement.appendChild(document.createTextNode(css));
1236
- }
1237
- }
1238
- module.exports = styleTagTransform;
1239
-
1240
- /***/ }),
1241
-
1242
- /***/ "./src/components/udiTable/UdiTable.css":
1243
- /*!**********************************************!*\
1244
- !*** ./src/components/udiTable/UdiTable.css ***!
1245
- \**********************************************/
1246
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1247
-
1248
- __webpack_require__.r(__webpack_exports__);
1249
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1250
- /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1251
- /* harmony export */ });
1252
- /* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");
1253
- /* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);
1254
- /* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");
1255
- /* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);
1256
- /* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");
1257
- /* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);
1258
- /* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");
1259
- /* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);
1260
- /* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");
1261
- /* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);
1262
- /* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");
1263
- /* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);
1264
- /* harmony import */ var _node_modules_css_loader_dist_cjs_js_UdiTable_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../node_modules/css-loader/dist/cjs.js!./UdiTable.css */ "./node_modules/css-loader/dist/cjs.js!./src/components/udiTable/UdiTable.css");
1265
-
1266
-
1267
-
1268
-
1269
-
1270
-
1271
-
1272
-
1273
-
1274
-
1275
-
1276
- var options = {};
1277
-
1278
- options.styleTagTransform = (_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());
1279
- options.setAttributes = (_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());
1280
- options.insert = _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");
1281
- options.domAPI = (_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());
1282
- options.insertStyleElement = (_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());
1283
-
1284
- var update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_UdiTable_css__WEBPACK_IMPORTED_MODULE_6__["default"], options);
1285
-
1286
-
1287
-
1288
-
1289
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_css_loader_dist_cjs_js_UdiTable_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _node_modules_css_loader_dist_cjs_js_UdiTable_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _node_modules_css_loader_dist_cjs_js_UdiTable_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);
1290
-
1291
-
1292
- /***/ }),
1293
-
1294
- /***/ "./src/components/udiTable/UdiTable.jsx":
1295
- /*!**********************************************!*\
1296
- !*** ./src/components/udiTable/UdiTable.jsx ***!
1297
- \**********************************************/
1298
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1299
-
1300
- __webpack_require__.r(__webpack_exports__);
1301
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1302
- /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1303
- /* harmony export */ });
1304
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
1305
- /* harmony import */ var _UdiTable_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./UdiTable.css */ "./src/components/udiTable/UdiTable.css");
1306
- function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
1307
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
1308
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
1309
- function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
1310
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
1311
- function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
1312
- function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
1313
- function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
1314
- function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
1315
- function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
1316
- function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
1317
- function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
1318
- function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
1319
- function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
1320
- function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
1321
- function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
1322
- function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
1323
- function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
1324
- function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
1325
- function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
1326
-
1327
-
1328
- var UdiTable = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function (_ref, ref) {
1329
- var _columns$find;
1330
- var _ref$onDataRequest = _ref.onDataRequest,
1331
- onDataRequest = _ref$onDataRequest === void 0 ? null : _ref$onDataRequest,
1332
- _ref$columns = _ref.columns,
1333
- columns = _ref$columns === void 0 ? [] : _ref$columns,
1334
- _ref$pageSize = _ref.pageSize,
1335
- pageSize = _ref$pageSize === void 0 ? 10 : _ref$pageSize,
1336
- _ref$sortable = _ref.sortable,
1337
- sortable = _ref$sortable === void 0 ? true : _ref$sortable,
1338
- _ref$filterable = _ref.filterable,
1339
- filterable = _ref$filterable === void 0 ? true : _ref$filterable,
1340
- _ref$className = _ref.className,
1341
- className = _ref$className === void 0 ? '' : _ref$className,
1342
- _ref$isDev = _ref.isDev,
1343
- isDev = _ref$isDev === void 0 ? false : _ref$isDev,
1344
- _ref$syncTableControl = _ref.syncTableControl,
1345
- syncTableControl = _ref$syncTableControl === void 0 ? false : _ref$syncTableControl,
1346
- _ref$currentTableRef = _ref.currentTableRef,
1347
- currentTableRef = _ref$currentTableRef === void 0 ? {
1348
- currentTableRef: currentTableRef
1349
- } : _ref$currentTableRef,
1350
- _ref$name = _ref.name,
1351
- name = _ref$name === void 0 ? null : _ref$name,
1352
- setTablePage = _ref.setTablePage;
1353
- // 內部狀態管理
1354
- var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([]),
1355
- _useState2 = _slicedToArray(_useState, 2),
1356
- data = _useState2[0],
1357
- setData = _useState2[1];
1358
- var _useState3 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),
1359
- _useState4 = _slicedToArray(_useState3, 2),
1360
- loading = _useState4[0],
1361
- setLoading = _useState4[1];
1362
- var _useState5 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(0),
1363
- _useState6 = _slicedToArray(_useState5, 2),
1364
- totalCount = _useState6[0],
1365
- setTotalCount = _useState6[1];
1366
- var _useState7 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null),
1367
- _useState8 = _slicedToArray(_useState7, 2),
1368
- error = _useState8[0],
1369
- setError = _useState8[1];
1370
- var _useState9 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({
1371
- key: null,
1372
- direction: 'asc'
1373
- }),
1374
- _useState0 = _slicedToArray(_useState9, 2),
1375
- sortConfig = _useState0[0],
1376
- setSortConfig = _useState0[1];
1377
- var _useState1 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(''),
1378
- _useState10 = _slicedToArray(_useState1, 2),
1379
- filterText = _useState10[0],
1380
- setFilterText = _useState10[1];
1381
- var _useState11 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)('all'),
1382
- _useState12 = _slicedToArray(_useState11, 2),
1383
- filterColumn = _useState12[0],
1384
- setFilterColumn = _useState12[1];
1385
- var _useState13 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),
1386
- _useState14 = _slicedToArray(_useState13, 2),
1387
- showAdvancedFilter = _useState14[0],
1388
- setShowAdvancedFilter = _useState14[1];
1389
- var _useState15 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({}),
1390
- _useState16 = _slicedToArray(_useState15, 2),
1391
- advancedFilters = _useState16[0],
1392
- setAdvancedFilters = _useState16[1];
1393
- var _useState17 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(1),
1394
- _useState18 = _slicedToArray(_useState17, 2),
1395
- currentPage = _useState18[0],
1396
- setCurrentPage = _useState18[1];
1397
- var _useState19 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(pageSize),
1398
- _useState20 = _slicedToArray(_useState19, 2),
1399
- currentPageSize = _useState20[0],
1400
- setCurrentPageSize = _useState20[1];
1401
- var _useState21 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({
1402
- top: 0,
1403
- left: 0,
1404
- verticalPercent: 0,
1405
- horizontalPercent: 0
1406
- }),
1407
- _useState22 = _slicedToArray(_useState21, 2),
1408
- scrollPosition = _useState22[0],
1409
- setScrollPosition = _useState22[1];
1410
- var _useState23 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({
1411
- hasHorizontal: false,
1412
- hasVertical: false,
1413
- maxScrollLeft: 0,
1414
- maxScrollTop: 0
1415
- }),
1416
- _useState24 = _slicedToArray(_useState23, 2),
1417
- scrollbarInfo = _useState24[0],
1418
- setScrollbarInfo = _useState24[1];
1419
- var tableWrapperRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);
1420
- var _useState25 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),
1421
- _useState26 = _slicedToArray(_useState25, 2),
1422
- isHovered = _useState26[0],
1423
- setIsHovered = _useState26[1];
1424
- var _useState27 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),
1425
- _useState28 = _slicedToArray(_useState27, 2),
1426
- isInfiniteScroll = _useState28[0],
1427
- setIsInfiniteScroll = _useState28[1];
1428
- var _useState29 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),
1429
- _useState30 = _slicedToArray(_useState29, 2),
1430
- isDropdownOpen = _useState30[0],
1431
- setIsDropdownOpen = _useState30[1];
1432
- var _useState31 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),
1433
- _useState32 = _slicedToArray(_useState31, 2),
1434
- hasFetchedData = _useState32[0],
1435
- setHasFetchedData = _useState32[1];
1436
-
1437
- // 內部執行外部 callback 的函數
1438
- var executeDataRequest = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(/*#__PURE__*/function () {
1439
- var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(params) {
1440
- var result, _data, _t;
1441
- return _regenerator().w(function (_context) {
1442
- while (1) switch (_context.p = _context.n) {
1443
- case 0:
1444
- if (!(!onDataRequest || hasFetchedData)) {
1445
- _context.n = 1;
1446
- break;
1447
- }
1448
- return _context.a(2);
1449
- case 1:
1450
- setLoading(true);
1451
- setError(null);
1452
- _context.p = 2;
1453
- _context.n = 3;
1454
- return onDataRequest(params);
1455
- case 3:
1456
- result = _context.v;
1457
- _data = Array.isArray(result.data) ? result.data : [];
1458
- if (isInfiniteScroll) {
1459
- setData(function (prevData) {
1460
- return [].concat(_toConsumableArray(prevData), _toConsumableArray(_data));
1461
- });
1462
- } else {
1463
- setData(_data);
1464
- }
1465
- setTotalCount(result.totalCount || 0);
1466
- setHasFetchedData(true);
1467
- _context.n = 5;
1468
- break;
1469
- case 4:
1470
- _context.p = 4;
1471
- _t = _context.v;
1472
- console.error('❌ Callback Error:', _t);
1473
- setError(_t.message);
1474
- setData([]);
1475
- setTotalCount(0);
1476
- case 5:
1477
- _context.p = 5;
1478
- setLoading(false);
1479
- return _context.f(5);
1480
- case 6:
1481
- return _context.a(2);
1482
- }
1483
- }, _callee, null, [[2, 4, 5, 6]]);
1484
- }));
1485
- return function (_x) {
1486
- return _ref2.apply(this, arguments);
1487
- };
1488
- }(), [onDataRequest, isInfiniteScroll, hasFetchedData]);
1489
-
1490
- // 防抖的請求執行
1491
- var debouncedDataRequest = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function () {
1492
- var timeoutId;
1493
- return function (params) {
1494
- clearTimeout(timeoutId);
1495
- timeoutId = setTimeout(function () {
1496
- executeDataRequest(params);
1497
- }, 300);
1498
- };
1499
- }, [executeDataRequest]);
1500
- (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {
1501
- setTablePage(function (prev) {
1502
- return _objectSpread(_objectSpread({}, prev), {}, _defineProperty(_defineProperty({}, "".concat(name, "Page"), currentPage), "".concat(name, "PageSize"), currentPageSize));
1503
- });
1504
- }, [currentPageSize, currentPage]);
1505
-
1506
- // 暴露給外部的方法
1507
- (0,react__WEBPACK_IMPORTED_MODULE_0__.useImperativeHandle)(ref, function () {
1508
- return {
1509
- // 執行數據請求的函數 - 這是外部會調用的主要函數
1510
- executeRequest: function executeRequest() {
1511
- var customParams = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
1512
- var params = _objectSpread({
1513
- page: currentPage,
1514
- pageSize: currentPageSize,
1515
- search: filterText,
1516
- searchColumn: filterColumn,
1517
- advancedFilters: advancedFilters,
1518
- sortBy: sortConfig.key,
1519
- sortOrder: sortConfig.direction
1520
- }, customParams);
1521
- executeDataRequest(params);
1522
- },
1523
- // 重新載入(使用當前參數)
1524
- reload: function reload() {
1525
- var params = {
1526
- page: currentPage,
1527
- pageSize: currentPageSize,
1528
- search: filterText,
1529
- searchColumn: filterColumn,
1530
- advancedFilters: advancedFilters,
1531
- sortBy: sortConfig.key,
1532
- sortOrder: sortConfig.direction
1533
- };
1534
- executeDataRequest(params);
1535
- },
1536
- // 重置篩選並執行請求
1537
- resetFilters: function resetFilters() {
1538
- setFilterText('');
1539
- setFilterColumn('all');
1540
- setAdvancedFilters({});
1541
- setCurrentPage(1);
1542
- setSortConfig({
1543
- key: null,
1544
- direction: 'asc'
1545
- });
1546
-
1547
- // 重置後立即執行請求
1548
- var params = {
1549
- page: 1,
1550
- pageSize: currentPageSize,
1551
- search: '',
1552
- searchColumn: 'all',
1553
- advancedFilters: {},
1554
- sortBy: null,
1555
- sortOrder: 'asc'
1556
- };
1557
- executeDataRequest(params);
1558
- },
1559
- setPage: function setPage(page) {
1560
- setCurrentPage(page);
1561
- },
1562
- setPageSize: function setPageSize(size) {
1563
- setCurrentPageSize(size);
1564
- setCurrentPage(1);
1565
- },
1566
- // 完整的狀態 API - 提供所有詳細信息
1567
- getState: function getState() {
1568
- return {
1569
- // 基本數據狀態
1570
- data: data,
1571
- loading: loading,
1572
- error: error,
1573
- totalCount: totalCount,
1574
- tableWrapperRef: tableWrapperRef.current,
1575
- tableName: name,
1576
- // 分頁狀態
1577
- pagination: {
1578
- currentPage: currentPage,
1579
- pageSize: currentPageSize,
1580
- totalPages: Math.ceil(totalCount / currentPageSize),
1581
- hasNextPage: currentPage < Math.ceil(totalCount / currentPageSize),
1582
- hasPreviousPage: currentPage > 1,
1583
- startIndex: (currentPage - 1) * currentPageSize + 1,
1584
- endIndex: Math.min(currentPage * currentPageSize, totalCount),
1585
- isFirstPage: currentPage === 1,
1586
- isLastPage: currentPage === Math.ceil(totalCount / currentPageSize)
1587
- },
1588
- // 滾動狀態
1589
- scroll: {
1590
- position: scrollPosition,
1591
- scrollbar: scrollbarInfo,
1592
- isAtTop: scrollPosition.verticalPercent === 0,
1593
- isAtBottom: scrollPosition.verticalPercent === 100,
1594
- isAtLeft: scrollPosition.horizontalPercent === 0,
1595
- isAtRight: scrollPosition.horizontalPercent === 100,
1596
- canScrollVertically: scrollbarInfo.hasVertical,
1597
- canScrollHorizontally: scrollbarInfo.hasHorizontal
1598
- },
1599
- // 排序狀態
1600
- sort: {
1601
- sortConfig: sortConfig,
1602
- sortBy: sortConfig.key,
1603
- sortOrder: sortConfig.direction,
1604
- isSorted: sortConfig.key !== null
1605
- },
1606
- // 篩選狀態
1607
- filter: {
1608
- filterText: filterText,
1609
- filterColumn: filterColumn,
1610
- advancedFilters: advancedFilters,
1611
- showAdvancedFilter: showAdvancedFilter,
1612
- hasBasicFilter: filterText !== '' || filterColumn !== 'all',
1613
- hasAdvancedFilter: Object.keys(advancedFilters).length > 0,
1614
- hasAnyFilter: filterText !== '' || filterColumn !== 'all' || Object.keys(advancedFilters).length > 0,
1615
- activeFiltersCount: Object.keys(advancedFilters).filter(function (key) {
1616
- return advancedFilters[key];
1617
- }).length + (filterText ? 1 : 0)
1618
- },
1619
- // 表格配置狀態
1620
- config: {
1621
- sortable: sortable,
1622
- filterable: filterable,
1623
- className: className,
1624
- isDev: isDev,
1625
- columnsCount: columns.length,
1626
- columns: columns.map(function (col) {
1627
- return {
1628
- dataField: col.dataField,
1629
- title: col.title,
1630
- width: col.width,
1631
- sortable: sortable
1632
- };
1633
- })
1634
- },
1635
- // 響應式狀態
1636
- responsive: {
1637
- isMobile: isMobile,
1638
- isTablet: isTablet,
1639
- isDesktop: !isMobile && !isTablet,
1640
- screenWidth: window.innerWidth,
1641
- screenHeight: window.innerHeight
1642
- },
1643
- // 元數據
1644
- meta: {
1645
- timestamp: new Date().toISOString(),
1646
- version: '1.0.0',
1647
- componentName: 'UdiTable'
1648
- },
1649
- isHovered: isHovered
1650
- };
1651
- },
1652
- // 簡化版狀態 API - 只返回核心信息
1653
- getCoreState: function getCoreState() {
1654
- return {
1655
- currentPage: currentPage,
1656
- totalPages: Math.ceil(totalCount / currentPageSize),
1657
- totalCount: totalCount,
1658
- pageSize: currentPageSize,
1659
- loading: loading,
1660
- error: error,
1661
- scrollPosition: scrollPosition,
1662
- hasData: data.length > 0
1663
- };
1664
- },
1665
- // 滾動位置 API
1666
- getScrollState: function getScrollState() {
1667
- return _objectSpread(_objectSpread(_objectSpread({}, scrollPosition), scrollbarInfo), {}, {
1668
- isAtTop: scrollPosition.verticalPercent === 0,
1669
- isAtBottom: scrollPosition.verticalPercent === 100,
1670
- isAtLeft: scrollPosition.horizontalPercent === 0,
1671
- isAtRight: scrollPosition.horizontalPercent === 100
1672
- });
1673
- },
1674
- // 分頁狀態 API
1675
- getPaginationState: function getPaginationState() {
1676
- return {
1677
- currentPage: currentPage,
1678
- totalPages: Math.ceil(totalCount / currentPageSize),
1679
- pageSize: currentPageSize,
1680
- totalCount: totalCount,
1681
- hasNextPage: currentPage < Math.ceil(totalCount / currentPageSize),
1682
- hasPreviousPage: currentPage > 1,
1683
- startIndex: (currentPage - 1) * currentPageSize + 1,
1684
- endIndex: Math.min(currentPage * currentPageSize, totalCount)
1685
- };
1686
- },
1687
- // 篩選狀態 API
1688
- getFilterState: function getFilterState() {
1689
- return {
1690
- filterText: filterText,
1691
- filterColumn: filterColumn,
1692
- advancedFilters: advancedFilters,
1693
- showAdvancedFilter: showAdvancedFilter,
1694
- hasAnyFilter: filterText !== '' || filterColumn !== 'all' || Object.keys(advancedFilters).length > 0
1695
- };
1696
- },
1697
- // 排序狀態 API
1698
- getSortState: function getSortState() {
1699
- return _objectSpread(_objectSpread({}, sortConfig), {}, {
1700
- isSorted: sortConfig.key !== null
1701
- });
1702
- },
1703
- // 滾動控制 API
1704
- scrollControl: scrollControl,
1705
- tableWrapperRef: tableWrapperRef.current
1706
- };
1707
- }, [data, loading, totalCount, error, currentPage, currentPageSize, sortConfig, filterText, filterColumn, advancedFilters, showAdvancedFilter, scrollPosition, scrollbarInfo, isMobile, isTablet, sortable, filterable, className, isDev, columns, executeDataRequest]);
1708
-
1709
- // 初始載入
1710
- (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {
1711
- if (onDataRequest) {
1712
- var params = {
1713
- page: 1,
1714
- pageSize: currentPageSize,
1715
- search: '',
1716
- searchColumn: 'all',
1717
- advancedFilters: {},
1718
- sortBy: null,
1719
- sortOrder: 'asc'
1720
- };
1721
- executeDataRequest(params);
1722
- }
1723
- }, [onDataRequest, executeDataRequest]);
1724
-
1725
- // 監聽篩選和排序變化
1726
- (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {
1727
- if (!onDataRequest) return;
1728
- var params = {
1729
- page: currentPage,
1730
- pageSize: currentPageSize,
1731
- search: filterText,
1732
- searchColumn: filterColumn,
1733
- advancedFilters: advancedFilters,
1734
- sortBy: sortConfig.key,
1735
- sortOrder: sortConfig.direction
1736
- };
1737
- debouncedDataRequest(params);
1738
- }, [onDataRequest, currentPage, currentPageSize, filterText, filterColumn, advancedFilters, sortConfig, debouncedDataRequest]);
1739
-
1740
- // 計算總頁數
1741
- var totalPages = Math.ceil(totalCount / currentPageSize);
1742
-
1743
- // 檢測螢幕尺寸
1744
- var _useState33 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),
1745
- _useState34 = _slicedToArray(_useState33, 2),
1746
- isMobile = _useState34[0],
1747
- setIsMobile = _useState34[1];
1748
- var _useState35 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),
1749
- _useState36 = _slicedToArray(_useState35, 2),
1750
- isTablet = _useState36[0],
1751
- setIsTablet = _useState36[1];
1752
- (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {
1753
- var checkScreenSize = function checkScreenSize() {
1754
- var width = window.innerWidth;
1755
- setIsMobile(width < 768);
1756
- setIsTablet(width >= 768 && width < 992);
1757
- };
1758
- checkScreenSize();
1759
- window.addEventListener('resize', checkScreenSize);
1760
- return function () {
1761
- return window.removeEventListener('resize', checkScreenSize);
1762
- };
1763
- }, []);
1764
-
1765
- // 滾動事件處理(使用 throttle)
1766
- (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {
1767
- var tableWrapper = tableWrapperRef.current;
1768
- if (!tableWrapper) return;
1769
-
1770
- // 更新滾動條信息
1771
- var updateScrollbarInfo = function updateScrollbarInfo() {
1772
- var hasHorizontal = tableWrapper.scrollWidth > tableWrapper.clientWidth;
1773
- var hasVertical = tableWrapper.scrollHeight > tableWrapper.clientHeight;
1774
- var maxScrollLeft = Math.max(0, tableWrapper.scrollWidth - tableWrapper.clientWidth);
1775
- var maxScrollTop = Math.max(0, tableWrapper.scrollHeight - tableWrapper.clientHeight);
1776
- setScrollbarInfo({
1777
- hasHorizontal: hasHorizontal,
1778
- hasVertical: hasVertical,
1779
- maxScrollLeft: maxScrollLeft,
1780
- maxScrollTop: maxScrollTop,
1781
- scrollWidth: tableWrapper.scrollWidth,
1782
- scrollHeight: tableWrapper.scrollHeight,
1783
- clientWidth: tableWrapper.clientWidth,
1784
- clientHeight: tableWrapper.clientHeight
1785
- });
1786
- };
1787
-
1788
- // 初始化滾動條信息
1789
- updateScrollbarInfo();
1790
- var isThrottled = false;
1791
- var handleScroll = function handleScroll(event) {
1792
- if (isThrottled) return;
1793
- isThrottled = true;
1794
- requestAnimationFrame(function () {
1795
- //browser api > 每次滾动事件(rerender)使用 requestAnimationFrame
1796
- var target = event.target;
1797
- var scrollTop = target.scrollTop;
1798
- var scrollLeft = target.scrollLeft;
1799
- var scrollHeight = target.scrollHeight;
1800
- var clientHeight = target.clientHeight;
1801
- var scrollWidth = target.scrollWidth;
1802
- var clientWidth = target.clientWidth;
1803
-
1804
- // 計算滾動百分比
1805
- var verticalScrollPercent = scrollHeight > clientHeight ? scrollTop / (scrollHeight - clientHeight) * 100 : 0;
1806
- var horizontalScrollPercent = scrollWidth > clientWidth ? scrollLeft / (scrollWidth - clientWidth) * 100 : 0;
1807
- setScrollPosition({
1808
- top: scrollTop,
1809
- left: scrollLeft,
1810
- verticalPercent: parseFloat(verticalScrollPercent.toFixed(1)),
1811
- horizontalPercent: parseFloat(horizontalScrollPercent.toFixed(1))
1812
- });
1813
-
1814
- // 更新滾動條信息(以防表格尺寸發生變化)
1815
- updateScrollbarInfo();
1816
- isThrottled = false;
1817
- });
1818
- };
1819
-
1820
- // 監聽窗口大小變化
1821
- var handleResize = function handleResize() {
1822
- updateScrollbarInfo();
1823
- };
1824
- tableWrapper.addEventListener('scroll', handleScroll, {
1825
- passive: true
1826
- });
1827
- window.addEventListener('resize', handleResize);
1828
-
1829
- // 使用 ResizeObserver 監聽表格內容變化(如果支援的話)
1830
- var resizeObserver;
1831
- if (window.ResizeObserver) {
1832
- resizeObserver = new ResizeObserver(function () {
1833
- updateScrollbarInfo();
1834
- });
1835
- resizeObserver.observe(tableWrapper);
1836
- }
1837
- return function () {
1838
- tableWrapper.removeEventListener('scroll', handleScroll);
1839
- window.removeEventListener('resize', handleResize);
1840
- if (resizeObserver) {
1841
- resizeObserver.disconnect();
1842
- }
1843
- };
1844
- }, [data]); // 當數據變化時重新初始化
1845
-
1846
- // 排序處理
1847
- var handleSort = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function (key) {
1848
- if (!sortable) return;
1849
- setSortConfig(function (prev) {
1850
- var direction = 'asc';
1851
- if (prev.key === key && prev.direction === 'asc') {
1852
- direction = 'desc';
1853
- }
1854
- return {
1855
- key: key,
1856
- direction: direction
1857
- };
1858
- });
1859
- setCurrentPage(1);
1860
- }, [sortable]);
1861
-
1862
- // 分頁處理
1863
- var handlePageChange = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function (page) {
1864
- setCurrentPage(page);
1865
- }, []);
1866
-
1867
- // 重置篩選
1868
- var resetFilter = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function () {
1869
- setFilterText('');
1870
- setFilterColumn('all');
1871
- setAdvancedFilters({});
1872
- setCurrentPage(1);
1873
- }, []);
1874
-
1875
- // 處理進階篩選變更
1876
- var handleAdvancedFilterChange = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function (columnKey, value) {
1877
- setAdvancedFilters(function (prev) {
1878
- return _objectSpread(_objectSpread({}, prev), {}, _defineProperty({}, columnKey, value));
1879
- });
1880
- setCurrentPage(1);
1881
- }, []);
1882
-
1883
- // 清除進階篩選
1884
- var clearAdvancedFilters = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function () {
1885
- setAdvancedFilters({});
1886
- setCurrentPage(1);
1887
- }, []);
1888
-
1889
- // 切換進階篩選顯示
1890
- var toggleAdvancedFilter = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function () {
1891
- setShowAdvancedFilter(function (prev) {
1892
- return !prev;
1893
- });
1894
- }, []);
1895
-
1896
- // 處理每頁顯示數量變更
1897
- var handlePageSizeChange = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function (newPageSize) {
1898
- setCurrentPageSize(newPageSize);
1899
- setCurrentPage(1);
1900
- }, []);
1901
-
1902
- // 滾動控制函數
1903
- var scrollControl = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function (axis, value) {
1904
- var tableWrapper = tableWrapperRef.current;
1905
- if (!tableWrapper) return;
1906
- var maxScrollTop = tableWrapper.scrollHeight - tableWrapper.clientHeight;
1907
- var maxScrollLeft = tableWrapper.scrollWidth - tableWrapper.clientWidth;
1908
- var scrollValue = axis === 'top' ? Math.min(value, maxScrollTop) : Math.min(value, maxScrollLeft);
1909
- if (axis === 'top') {
1910
- tableWrapper.scrollTop = scrollValue;
1911
- } else {
1912
- tableWrapper.scrollLeft = scrollValue;
1913
- }
1914
- }, []);
1915
-
1916
- // Add hover detection
1917
- var handleMouseEnter = function handleMouseEnter() {
1918
- setIsHovered(true);
1919
- if (syncTableControl && currentTableRef) {
1920
- currentTableRef.current = tableWrapperRef.current;
1921
- }
1922
- };
1923
- var handleMouseLeave = function handleMouseLeave() {
1924
- if (!isDropdownOpen) {
1925
- setIsHovered(false);
1926
- }
1927
- };
1928
-
1929
- // Handle infinite scroll toggle
1930
- var toggleInfiniteScroll = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function () {
1931
- setIsInfiniteScroll(function (prev) {
1932
- return !prev;
1933
- });
1934
- }, []);
1935
- var debouncedHandlePageChange = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function () {
1936
- var timeoutId;
1937
- return function (newPage) {
1938
- clearTimeout(timeoutId);
1939
- timeoutId = setTimeout(function () {
1940
- if (newPage <= totalPages) {
1941
- handlePageChange(newPage);
1942
- }
1943
- }, 300);
1944
- };
1945
- }, [handlePageChange, totalPages]);
1946
- (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {
1947
- if (isInfiniteScroll) {
1948
- var tableWrapper = tableWrapperRef.current;
1949
- if (!tableWrapper) return;
1950
- var handleScroll = function handleScroll() {
1951
- var scrollTop = tableWrapper.scrollTop,
1952
- scrollHeight = tableWrapper.scrollHeight,
1953
- clientHeight = tableWrapper.clientHeight;
1954
- var verticalScrollPercent = scrollHeight > clientHeight ? scrollTop / (scrollHeight - clientHeight) * 100 : 0;
1955
- if (verticalScrollPercent >= 80 && currentPage < totalPages) {
1956
- debouncedHandlePageChange(currentPage + 1);
1957
- }
1958
- };
1959
- tableWrapper.addEventListener("scroll", handleScroll);
1960
- return function () {
1961
- tableWrapper.removeEventListener("scroll", handleScroll);
1962
- };
1963
- }
1964
- }, [isInfiniteScroll, currentPage, totalPages, debouncedHandlePageChange]);
1965
-
1966
- // Dropdown focus and blur handlers
1967
- var handleDropdownFocus = function handleDropdownFocus() {
1968
- setIsDropdownOpen(true);
1969
- };
1970
- var handleDropdownBlur = function handleDropdownBlur() {
1971
- setIsDropdownOpen(false);
1972
- };
1973
- return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["default"].createElement(react__WEBPACK_IMPORTED_MODULE_0__["default"].Fragment, null, name && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["default"].createElement("div", {
1974
- className: "udi-table-name"
1975
- }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["default"].createElement("h3", null, name)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["default"].createElement("div", {
1976
- className: "udi-table-container ".concat(className),
1977
- onMouseEnter: handleMouseEnter,
1978
- onMouseLeave: handleMouseLeave
1979
- }, error && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["default"].createElement("div", {
1980
- className: "error-message"
1981
- }, "\u274C \u8F09\u5165\u5931\u6557: ", error), filterable && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["default"].createElement("div", {
1982
- className: "udi-table-filter"
1983
- }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["default"].createElement("div", {
1984
- className: "filter-section"
1985
- }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["default"].createElement("div", {
1986
- className: "basic-filter"
1987
- }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["default"].createElement("div", {
1988
- className: "filter-column-selector"
1989
- }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["default"].createElement("label", {
1990
- htmlFor: "filterColumn"
1991
- }, "\u641C\u5C0B\u6B04\u4F4D\uFF1A"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["default"].createElement("select", {
1992
- id: "filterColumn",
1993
- value: filterColumn,
1994
- onChange: function onChange(e) {
1995
- setFilterColumn(e.target.value);
1996
- setCurrentPage(1);
1997
- },
1998
- className: "filter-column-select"
1999
- }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["default"].createElement("option", {
2000
- value: "all"
2001
- }, "\u5168\u90E8\u6B04\u4F4D"), columns.map(function (column) {
2002
- return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["default"].createElement("option", {
2003
- key: column.dataField,
2004
- value: column.dataField
2005
- }, column.title);
2006
- }))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["default"].createElement("input", {
2007
- type: "text",
2008
- placeholder: filterColumn === 'all' ? '搜尋所有欄位...' : "\u641C\u5C0B ".concat(((_columns$find = columns.find(function (col) {
2009
- return col.key === filterColumn;
2010
- })) === null || _columns$find === void 0 ? void 0 : _columns$find.title) || '', "..."),
2011
- value: filterText,
2012
- onChange: function onChange(e) {
2013
- setFilterText(e.target.value);
2014
- setCurrentPage(1);
2015
- },
2016
- className: "filter-input"
2017
- }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["default"].createElement("button", {
2018
- onClick: toggleAdvancedFilter,
2019
- className: "advanced-filter-toggle"
2020
- }, showAdvancedFilter ? '隱藏進階篩選' : '進階篩選'), (filterText || filterColumn !== 'all' || Object.keys(advancedFilters).length > 0) && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["default"].createElement("button", {
2021
- onClick: resetFilter,
2022
- className: "reset-button"
2023
- }, "\u91CD\u7F6E\u6240\u6709\u7BE9\u9078")), showAdvancedFilter && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["default"].createElement("div", {
2024
- className: "advanced-filter"
2025
- }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["default"].createElement("div", {
2026
- className: "advanced-filter-header"
2027
- }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["default"].createElement("h4", null, "\u9032\u968E\u7BE9\u9078 - \u591A\u6B04\u4F4D\u540C\u6642\u7BE9\u9078"), Object.keys(advancedFilters).length > 0 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["default"].createElement("button", {
2028
- onClick: clearAdvancedFilters,
2029
- className: "clear-advanced-button"
2030
- }, "\u6E05\u9664\u9032\u968E\u7BE9\u9078")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["default"].createElement("div", {
2031
- className: "advanced-filter-grid"
2032
- }, columns.map(function (column) {
2033
- return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["default"].createElement("div", {
2034
- key: column.dataField,
2035
- className: "advanced-filter-item"
2036
- }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["default"].createElement("label", {
2037
- htmlFor: "advanced-".concat(column.dataField)
2038
- }, column.title, "\uFF1A"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["default"].createElement("input", {
2039
- id: "advanced-".concat(column.dataField),
2040
- type: "text",
2041
- placeholder: "\u7BE9\u9078 ".concat(column.title, "..."),
2042
- value: advancedFilters[column.dataField] || '',
2043
- onChange: function onChange(e) {
2044
- return handleAdvancedFilterChange(column.dataField, e.target.value);
2045
- },
2046
- className: "advanced-filter-input"
2047
- }));
2048
- }))))), isDev && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["default"].createElement("div", {
2049
- className: "scroll-position-indicator"
2050
- }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["default"].createElement("div", null, "\u6EFE\u52D5\u4F4D\u7F6E: \u5782\u76F4 ", scrollPosition.verticalPercent.toFixed(1), "% | \u6C34\u5E73 ", scrollPosition.horizontalPercent.toFixed(1), "%"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["default"].createElement("div", null, "\u5206\u9801: ", currentPage, "/", Math.ceil(totalCount / currentPageSize), " | \u7E3D\u7B46\u6578: ", totalCount), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["default"].createElement("div", null, "\u6EFE\u52D5\u689D: ", scrollbarInfo.hasVertical ? '垂直✓' : '垂直✗', " | ", scrollbarInfo.hasHorizontal ? '水平✓' : '水平✗'), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["default"].createElement("div", null, "\u87A2\u5E55: ", isMobile ? '手機' : isTablet ? '平板' : '桌面', " (", window.innerWidth, "x", window.innerHeight, ")")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["default"].createElement("div", {
2051
- className: "udi-table-wrapper-container",
2052
- style: {
2053
- position: 'relative'
2054
- }
2055
- }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["default"].createElement("div", {
2056
- className: "udi-table-wrapper",
2057
- ref: tableWrapperRef
2058
- }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["default"].createElement("table", {
2059
- className: "udi-table"
2060
- }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["default"].createElement("thead", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["default"].createElement("tr", null, columns.map(function (column) {
2061
- return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["default"].createElement("th", {
2062
- key: column.dataField,
2063
- onClick: function onClick() {
2064
- return handleSort(column.dataField);
2065
- },
2066
- className: "\n ".concat(sortable ? 'sortable' : '', "\n ").concat(sortConfig.key === column.dataField ? 'sorted' : '', "\n ").concat(sortConfig.key === column.dataField ? sortConfig.direction : '', "\n "),
2067
- style: {
2068
- width: column.width,
2069
- minWidth: column.minWidth
2070
- }
2071
- }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["default"].createElement("div", {
2072
- className: "th-content"
2073
- }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["default"].createElement("span", null, column.title), sortable && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["default"].createElement("span", {
2074
- className: "sort-icon"
2075
- }, sortConfig.key === column.dataField ? sortConfig.direction === 'asc' ? '↑' : '↓' : '↕')));
2076
- }))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["default"].createElement("tbody", null, loading ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["default"].createElement("tr", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["default"].createElement("td", {
2077
- colSpan: columns.length,
2078
- className: "loading-state"
2079
- }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["default"].createElement("div", {
2080
- className: "loading-spinner"
2081
- }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["default"].createElement("div", {
2082
- className: "spinner"
2083
- }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["default"].createElement("span", null, "loading...")))) : data.length > 0 ? data.map(function (row, rowIndex) {
2084
- return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["default"].createElement("tr", {
2085
- key: "row-".concat(rowIndex, "-").concat(row.id || "")
2086
- }, columns.map(function (column, colIndex) {
2087
- return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["default"].createElement("td", {
2088
- key: "cell-".concat(rowIndex, "-").concat(colIndex, "-").concat(column.dataField),
2089
- title: row[column.dataField] // Add title attribute for tooltip
2090
- }, column.render ? column.render(row[column.dataField], row, rowIndex + 1, column.dataField, name) : row[column.dataField]);
2091
- }));
2092
- }) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["default"].createElement("tr", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["default"].createElement("td", {
2093
- colSpan: columns.length,
2094
- className: "no-data"
2095
- }, "\u6C92\u6709\u8CC7\u6599")))))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["default"].createElement("div", {
2096
- className: "udi-table-pagination"
2097
- }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["default"].createElement("div", {
2098
- className: "pagination-info"
2099
- }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["default"].createElement("div", {
2100
- className: "page-size-selector"
2101
- }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["default"].createElement("label", {
2102
- htmlFor: "pageSize"
2103
- }, "\u6BCF\u9801\u986F\u793A\uFF1A"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["default"].createElement("div", {
2104
- className: "page-size-container",
2105
- onMouseEnter: handleMouseEnter
2106
- }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["default"].createElement("select", {
2107
- id: "pageSize",
2108
- value: currentPageSize,
2109
- onChange: function onChange(e) {
2110
- return handlePageSizeChange(Number(e.target.value));
2111
- },
2112
- onFocus: handleDropdownFocus,
2113
- onBlur: handleDropdownBlur,
2114
- className: "page-size-select"
2115
- }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["default"].createElement("option", {
2116
- value: 5
2117
- }, "5"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["default"].createElement("option", {
2118
- value: 10
2119
- }, "10"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["default"].createElement("option", {
2120
- value: 20
2121
- }, "20"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["default"].createElement("option", {
2122
- value: 50
2123
- }, "50"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["default"].createElement("option", {
2124
- value: 100
2125
- }, "100"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["default"].createElement("span", null, "\u7B46")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["default"].createElement("div", {
2126
- className: "pagination-summary"
2127
- }, "\u5171 ", totalCount, " \u7B46\u8CC7\u6599", totalPages > 1 ? "\uFF0C\u7B2C ".concat(currentPage, " / ").concat(totalPages, " \u9801") : '')), totalPages > 1 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["default"].createElement("div", {
2128
- className: "pagination-controls"
2129
- }, isMobile ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["default"].createElement(react__WEBPACK_IMPORTED_MODULE_0__["default"].Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["default"].createElement("button", {
2130
- onClick: function onClick() {
2131
- return handlePageChange(currentPage - 1);
2132
- },
2133
- disabled: currentPage === 1,
2134
- className: "pagination-button"
2135
- }, "\u2039"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["default"].createElement("span", {
2136
- className: "current-page-mobile"
2137
- }, currentPage, " / ", totalPages), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["default"].createElement("button", {
2138
- onClick: function onClick() {
2139
- return handlePageChange(currentPage + 1);
2140
- },
2141
- disabled: currentPage === totalPages,
2142
- className: "pagination-button"
2143
- }, "\u203A")) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["default"].createElement(react__WEBPACK_IMPORTED_MODULE_0__["default"].Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["default"].createElement("button", {
2144
- onClick: function onClick() {
2145
- return handlePageChange(1);
2146
- },
2147
- disabled: currentPage === 1,
2148
- className: "pagination-button"
2149
- }, "\u9996\u9801"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["default"].createElement("button", {
2150
- onClick: function onClick() {
2151
- return handlePageChange(currentPage - 1);
2152
- },
2153
- disabled: currentPage === 1,
2154
- className: "pagination-button"
2155
- }, "\u4E0A\u4E00\u9801"), function () {
2156
- var pages = [];
2157
-
2158
- // 計算要顯示的三個頁碼
2159
- var centerPage = currentPage;
2160
- var startPage = Math.max(1, centerPage - 1);
2161
- var endPage = Math.min(totalPages, startPage + 2);
2162
-
2163
- // 如果右邊不足3個,向左調整
2164
- if (endPage - startPage < 2) {
2165
- startPage = Math.max(1, endPage - 2);
2166
- }
2167
-
2168
- // 固定顯示3個按鈕
2169
- var _loop = function _loop() {
2170
- var pageNum = startPage + i;
2171
- var isValidPage = pageNum <= totalPages;
2172
- pages.push(/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["default"].createElement("button", {
2173
- key: "page-btn-".concat(i),
2174
- onClick: function onClick() {
2175
- return isValidPage ? handlePageChange(pageNum) : null;
2176
- },
2177
- disabled: !isValidPage,
2178
- className: "pagination-button ".concat(isValidPage && currentPage === pageNum ? 'active' : '', " ").concat(!isValidPage ? 'disabled' : '')
2179
- }, isValidPage ? pageNum : '-'));
2180
- };
2181
- for (var i = 0; i < 3; i++) {
2182
- _loop();
2183
- }
2184
- return pages;
2185
- }(), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["default"].createElement("button", {
2186
- onClick: function onClick() {
2187
- return handlePageChange(currentPage + 1);
2188
- },
2189
- disabled: currentPage === totalPages,
2190
- className: "pagination-button"
2191
- }, "\u4E0B\u4E00\u9801"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["default"].createElement("button", {
2192
- onClick: function onClick() {
2193
- return handlePageChange(totalPages);
2194
- },
2195
- disabled: currentPage === totalPages,
2196
- className: "pagination-button"
2197
- }, "\u672B\u9801")))), isDev && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["default"].createElement("button", {
2198
- onClick: toggleInfiniteScroll,
2199
- className: "toggle-infinite-scroll-button"
2200
- }, isInfiniteScroll ? "切換到手動分頁" : "切換到無限滾動")));
2201
- });
2202
- UdiTable.displayName = 'UdiTable';
2203
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (UdiTable);
2204
-
2205
- /***/ }),
2206
-
2207
- /***/ "./src/utils/formatDate.js":
2208
- /*!*********************************!*\
2209
- !*** ./src/utils/formatDate.js ***!
2210
- \*********************************/
2211
- /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
2212
-
2213
- __webpack_require__.r(__webpack_exports__);
2214
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2215
- /* harmony export */ formatDate: () => (/* binding */ formatDate)
2216
- /* harmony export */ });
2217
- function formatDate(date) {
2218
- return new Date(date).toLocaleDateString('zh-TW');
2219
- }
2220
-
2221
- /***/ }),
2222
-
2223
- /***/ "./src/utils/helpers.js":
2224
- /*!******************************!*\
2225
- !*** ./src/utils/helpers.js ***!
2226
- \******************************/
2227
- /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
2228
-
2229
- __webpack_require__.r(__webpack_exports__);
2230
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2231
- /* harmony export */ isObject: () => (/* binding */ isObject),
2232
- /* harmony export */ sleep: () => (/* binding */ sleep)
2233
- /* harmony export */ });
2234
- function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2235
- /**
2236
- * 判斷傳入值是否為純粹的物件(不包含陣列與 null)
2237
- *
2238
- * @param {*} val - 任意型別的值
2239
- * @returns {boolean} - 若是純物件則回傳 true,否則回傳 false
2240
- *
2241
- * @example
2242
- * isObject({}) // true
2243
- * isObject([]) // false
2244
- * isObject(null) // false
2245
- * isObject("string") // false
2246
- */
2247
- var isObject = function isObject(val) {
2248
- return val !== null && _typeof(val) === 'object' && !Array.isArray(val);
2249
- };
2250
-
2251
- /**
2252
- * 等待指定時間後再繼續執行
2253
- *
2254
- * @param {number} time - 等待的時間(毫秒為單位,例如 1000 代表 1 秒)
2255
- * @returns {Promise<void>} - 回傳一個 Promise,在指定毫秒數後 resolve
2256
- *
2257
- * @example
2258
- * await sleep(1000); // 等待 1 秒
2259
- */
2260
- function sleep(time) {
2261
- // 建立一個 Promise,使用 setTimeout 來延遲執行 resolve
2262
- return new Promise(function (resolve) {
2263
- return setTimeout(resolve, time);
2264
- });
2265
- }
2266
-
2267
-
2268
- /***/ }),
2269
-
2270
- /***/ "./src/utils/index.js":
2271
- /*!****************************!*\
2272
- !*** ./src/utils/index.js ***!
2273
- \****************************/
2274
- /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
2275
-
2276
- __webpack_require__.r(__webpack_exports__);
2277
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2278
- /* harmony export */ add: () => (/* reexport safe */ _math_js__WEBPACK_IMPORTED_MODULE_2__.add),
2279
- /* harmony export */ formatDate: () => (/* reexport safe */ _formatDate_js__WEBPACK_IMPORTED_MODULE_0__.formatDate),
2280
- /* harmony export */ isObject: () => (/* reexport safe */ _helpers_js__WEBPACK_IMPORTED_MODULE_1__.isObject),
2281
- /* harmony export */ sleep: () => (/* reexport safe */ _helpers_js__WEBPACK_IMPORTED_MODULE_1__.sleep),
2282
- /* harmony export */ subtract: () => (/* reexport safe */ _math_js__WEBPACK_IMPORTED_MODULE_2__.subtract)
2283
- /* harmony export */ });
2284
- /* harmony import */ var _formatDate_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./formatDate.js */ "./src/utils/formatDate.js");
2285
- /* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./helpers.js */ "./src/utils/helpers.js");
2286
- /* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./math.js */ "./src/utils/math.js");
2287
-
2288
-
2289
-
2290
-
2291
- /***/ }),
2292
-
2293
- /***/ "./src/utils/math.js":
2294
- /*!***************************!*\
2295
- !*** ./src/utils/math.js ***!
2296
- \***************************/
2297
- /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
2298
-
2299
- __webpack_require__.r(__webpack_exports__);
2300
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2301
- /* harmony export */ add: () => (/* binding */ add),
2302
- /* harmony export */ subtract: () => (/* binding */ subtract)
2303
- /* harmony export */ });
2304
- // math.js
2305
-
2306
- function add(a, b) {
2307
- if (typeof a !== 'number' || typeof b !== 'number') {
2308
- throw new Error('參數必須是數字');
2309
- }
2310
- return a + b;
2311
- }
2312
- function subtract(a, b) {
2313
- if (typeof a !== 'number' || typeof b !== 'number') {
2314
- throw new Error('參數必須是數字');
2315
- }
2316
- return a - b;
2317
- }
2318
-
2319
- /***/ }),
2320
-
2321
- /***/ "react":
2322
- /*!************************!*\
2323
- !*** external "react" ***!
2324
- \************************/
2325
- /***/ ((module) => {
2326
-
2327
- module.exports = __WEBPACK_EXTERNAL_MODULE_react__;
2328
-
2329
- /***/ })
2330
-
2331
- /******/ });
2332
- /************************************************************************/
2333
- /******/ // The module cache
2334
- /******/ var __webpack_module_cache__ = {};
2335
- /******/
2336
- /******/ // The require function
2337
- /******/ function __webpack_require__(moduleId) {
2338
- /******/ // Check if module is in cache
2339
- /******/ var cachedModule = __webpack_module_cache__[moduleId];
2340
- /******/ if (cachedModule !== undefined) {
2341
- /******/ return cachedModule.exports;
2342
- /******/ }
2343
- /******/ // Create a new module (and put it into the cache)
2344
- /******/ var module = __webpack_module_cache__[moduleId] = {
2345
- /******/ id: moduleId,
2346
- /******/ // no module.loaded needed
2347
- /******/ exports: {}
2348
- /******/ };
2349
- /******/
2350
- /******/ // Execute the module function
2351
- /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
2352
- /******/
2353
- /******/ // Return the exports of the module
2354
- /******/ return module.exports;
2355
- /******/ }
2356
- /******/
2357
- /************************************************************************/
2358
- /******/ /* webpack/runtime/compat get default export */
2359
- /******/ (() => {
2360
- /******/ // getDefaultExport function for compatibility with non-harmony modules
2361
- /******/ __webpack_require__.n = (module) => {
2362
- /******/ var getter = module && module.__esModule ?
2363
- /******/ () => (module['default']) :
2364
- /******/ () => (module);
2365
- /******/ __webpack_require__.d(getter, { a: getter });
2366
- /******/ return getter;
2367
- /******/ };
2368
- /******/ })();
2369
- /******/
2370
- /******/ /* webpack/runtime/define property getters */
2371
- /******/ (() => {
2372
- /******/ // define getter functions for harmony exports
2373
- /******/ __webpack_require__.d = (exports, definition) => {
2374
- /******/ for(var key in definition) {
2375
- /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
2376
- /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
2377
- /******/ }
2378
- /******/ }
2379
- /******/ };
2380
- /******/ })();
2381
- /******/
2382
- /******/ /* webpack/runtime/hasOwnProperty shorthand */
2383
- /******/ (() => {
2384
- /******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
2385
- /******/ })();
2386
- /******/
2387
- /******/ /* webpack/runtime/make namespace object */
2388
- /******/ (() => {
2389
- /******/ // define __esModule on exports
2390
- /******/ __webpack_require__.r = (exports) => {
2391
- /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
2392
- /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2393
- /******/ }
2394
- /******/ Object.defineProperty(exports, '__esModule', { value: true });
2395
- /******/ };
2396
- /******/ })();
2397
- /******/
2398
- /******/ /* webpack/runtime/nonce */
2399
- /******/ (() => {
2400
- /******/ __webpack_require__.nc = undefined;
2401
- /******/ })();
2402
- /******/
2403
- /************************************************************************/
2404
- var __webpack_exports__ = {};
2405
- // This entry needs to be wrapped in an IIFE because it needs to be isolated against other modules in the chunk.
2406
- (() => {
2407
- /*!**********************!*\
2408
- !*** ./src/index.js ***!
2409
- \**********************/
2410
- __webpack_require__.r(__webpack_exports__);
2411
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2412
- /* harmony export */ UdiTable: () => (/* reexport safe */ _components_udiTable_UdiTable_jsx__WEBPACK_IMPORTED_MODULE_0__["default"]),
2413
- /* harmony export */ add: () => (/* reexport safe */ _utils_index_js__WEBPACK_IMPORTED_MODULE_1__.add),
2414
- /* harmony export */ formatDate: () => (/* reexport safe */ _utils_index_js__WEBPACK_IMPORTED_MODULE_1__.formatDate),
2415
- /* harmony export */ isObject: () => (/* reexport safe */ _utils_index_js__WEBPACK_IMPORTED_MODULE_1__.isObject),
2416
- /* harmony export */ sleep: () => (/* reexport safe */ _utils_index_js__WEBPACK_IMPORTED_MODULE_1__.sleep),
2417
- /* harmony export */ subtract: () => (/* reexport safe */ _utils_index_js__WEBPACK_IMPORTED_MODULE_1__.subtract),
2418
- /* harmony export */ test01: () => (/* binding */ test01)
2419
- /* harmony export */ });
2420
- /* harmony import */ var _components_udiTable_UdiTable_jsx__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./components/udiTable/UdiTable.jsx */ "./src/components/udiTable/UdiTable.jsx");
2421
- /* harmony import */ var _utils_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils/index.js */ "./src/utils/index.js");
2422
-
2423
-
2424
- function test01() {
2425
- console.log('Hello from Udi Package!');
2426
- }
2427
- })();
2428
-
2429
- const __webpack_exports__UdiTable = __webpack_exports__.UdiTable;
2430
- const __webpack_exports__add = __webpack_exports__.add;
2431
- const __webpack_exports__formatDate = __webpack_exports__.formatDate;
2432
- const __webpack_exports__isObject = __webpack_exports__.isObject;
2433
- const __webpack_exports__sleep = __webpack_exports__.sleep;
2434
- const __webpack_exports__subtract = __webpack_exports__.subtract;
2435
- const __webpack_exports__test01 = __webpack_exports__.test01;
2436
- export { __webpack_exports__UdiTable as UdiTable, __webpack_exports__add as add, __webpack_exports__formatDate as formatDate, __webpack_exports__isObject as isObject, __webpack_exports__sleep as sleep, __webpack_exports__subtract as subtract, __webpack_exports__test01 as test01 };
2437
-
2438
- //# sourceMappingURL=index.js.map