@truedat/dd 8.11.6 → 8.11.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/package.json +4 -3
  2. package/src/components/Graphs.js +30 -4
  3. package/src/components/LineageContextMenu.js +185 -58
  4. package/src/components/LineageDownloadButton.js +16 -6
  5. package/src/components/LineageEventsPanel.js +80 -27
  6. package/src/components/LineageEventsTable.js +7 -3
  7. package/src/components/LineageGraph.js +5166 -306
  8. package/src/components/LineageGraphToolbar.js +896 -0
  9. package/src/components/LineageInspectorPanel.js +748 -0
  10. package/src/components/LineageResourceNode.js +501 -0
  11. package/src/components/LineageRoutes.js +1 -2
  12. package/src/components/LineageSelectionPanel.js +28 -12
  13. package/src/components/StructureGraph.js +8 -1
  14. package/src/components/StructureGraphView.js +14 -0
  15. package/src/components/StructureImpact.js +2 -22
  16. package/src/components/StructureLineage.js +2 -19
  17. package/src/components/StructuresUploadEventsTable.js +0 -3
  18. package/src/components/__tests__/LineageContextMenu.spec.js +42 -0
  19. package/src/components/__tests__/LineageGraph.spec.js +896 -0
  20. package/src/components/__tests__/LineageGraphLayout.spec.js +639 -0
  21. package/src/components/__tests__/LineageGraphToolbar.spec.js +366 -0
  22. package/src/components/__tests__/LineageHierarchy.spec.js +116 -0
  23. package/src/components/__tests__/LineageInspectorPanel.spec.js +364 -0
  24. package/src/components/__tests__/LineageResourceNode.spec.js +338 -0
  25. package/src/components/__tests__/LineageRoutes.spec.js +27 -9
  26. package/src/components/__tests__/__snapshots__/LineageDownloadButton.spec.js.snap +23 -3
  27. package/src/components/__tests__/__snapshots__/LineageForm.spec.js.snap +23 -3
  28. package/src/components/__tests__/lineageEventHelpers.spec.js +60 -0
  29. package/src/components/lineageEventHelpers.js +53 -17
  30. package/src/reducers/__tests__/lineageEvents.spec.js +164 -0
  31. package/src/reducers/__tests__/lineageQuery.spec.js +11 -0
  32. package/src/reducers/lineageEvents.js +68 -2
  33. package/src/reducers/lineageQuery.js +2 -6
  34. package/src/styles/LineageGraph.less +4094 -0
  35. package/src/styles/LineageGraphColors.less +105 -0
  36. package/src/styles/LineageGraphCore.less +20 -0
  37. package/src/styles/LineageResourceNode.less +711 -0
  38. package/src/utils/__tests__/lineageGraphIndex.spec.js +52 -0
  39. package/src/utils/__tests__/lineageLayout.spec.js +252 -0
  40. package/src/utils/__tests__/lineageTopology.spec.js +256 -0
  41. package/src/utils/lineageGraphIndex.js +296 -0
  42. package/src/utils/lineageLayout.js +1050 -0
  43. package/src/styles/lineageGraph.less +0 -1236
@@ -1,1236 +0,0 @@
1
- .graph-hash {
2
- font-family: monospace;
3
- }
4
-
5
- .dl svg {
6
- border-radius: 5px;
7
- }
8
-
9
- .lineage-view {
10
- --td-graph-container-height: clamp(620px, calc(100vh - 170px), 88vh);
11
- --td-graph-border-radius: 8px;
12
- --td-lineage-sidebar-width: 450px;
13
- --td-lineage-sidebar-collapsed-width: 56px;
14
- --td-lineage-menu-transition-duration: 180ms;
15
- --td-lineage-menu-transition-easing: ease;
16
- border-radius: 8px;
17
-
18
- &.ui.segment {
19
- padding: 0;
20
- border: 0;
21
- background: transparent;
22
- box-shadow: none;
23
- }
24
-
25
- &__header {
26
- display: flex;
27
- align-items: center;
28
- justify-content: space-between;
29
- gap: 16px;
30
- margin-bottom: 16px;
31
- padding: 10px 12px;
32
- border: 1px solid #dfe6ef;
33
- border-radius: 8px;
34
- background: #ffffff;
35
- box-shadow: 0 1px 3px rgba(21, 26, 36, 0.06);
36
- }
37
-
38
- &__header-main {
39
- display: flex;
40
- min-width: 0;
41
- align-items: center;
42
- gap: 12px;
43
- }
44
-
45
- &__header-icon {
46
- display: flex;
47
- width: 36px;
48
- height: 36px;
49
- flex: 0 0 auto;
50
- align-items: center;
51
- justify-content: center;
52
- border: 1px solid #d7dde6;
53
- border-radius: 8px;
54
- background: #f8fafc;
55
- color: #002057;
56
- }
57
-
58
- &__header-copy {
59
- min-width: 0;
60
- }
61
-
62
- &__header-title-row {
63
- display: flex;
64
- min-width: 0;
65
- align-items: center;
66
- gap: 8px;
67
- line-height: 1.2;
68
-
69
- h2 {
70
- margin: 0;
71
- color: #002057;
72
- font-size: 18px;
73
- font-weight: 700;
74
- line-height: 1.2;
75
- white-space: nowrap;
76
- }
77
- }
78
-
79
- &__header-copy p {
80
- margin: 4px 0 0;
81
- color: #697386;
82
- font-size: 12px;
83
- line-height: 1.3;
84
- }
85
-
86
- &__export-button.ui.button {
87
- flex: 0 0 auto;
88
- margin: 0;
89
- border-radius: 6px;
90
- color: #435064 !important;
91
- font-size: 10px;
92
- font-weight: 700;
93
- text-transform: uppercase;
94
- }
95
-
96
- &__workspace {
97
- position: relative;
98
- display: block;
99
- min-width: 0;
100
- overflow: visible;
101
- }
102
-
103
- &__sidebar {
104
- position: absolute;
105
- top: 30px;
106
- left: 15px;
107
- width: var(--td-lineage-sidebar-width);
108
- min-width: 0;
109
- max-height: calc(100vh - 80px);
110
- overflow: visible;
111
- border-radius: 8px;
112
- background: transparent;
113
- box-shadow: none;
114
- transition:
115
- width var(--td-lineage-menu-transition-duration)
116
- var(--td-lineage-menu-transition-easing),
117
- min-height var(--td-lineage-menu-transition-duration)
118
- var(--td-lineage-menu-transition-easing),
119
- box-shadow var(--td-lineage-menu-transition-duration)
120
- var(--td-lineage-menu-transition-easing);
121
- z-index: 5000;
122
-
123
- .lineage-toolbar {
124
- margin-bottom: 0;
125
- }
126
-
127
- .lineage-toolbar__form {
128
- gap: 14px;
129
- }
130
-
131
- .lineage-toolbar__fields {
132
- grid-template-columns: 1fr;
133
- }
134
-
135
- .lineage-selection-column--resource {
136
- grid-column: 1 / -1;
137
- }
138
-
139
- .lineage-toolbar__controls {
140
- grid-template-columns: 1fr;
141
- }
142
-
143
- .lineage-resource-field {
144
- grid-template-columns: minmax(0, 1fr) auto;
145
- }
146
-
147
- .lineage-column-dropdown.ui.dropdown .menu.visible {
148
- width: min(430px, calc(100vw - 88px));
149
- column-width: 220px;
150
- z-index: 4000;
151
- }
152
-
153
- .lineage-toolbar__actions {
154
- grid-column: 1 / -1;
155
-
156
- .ui.button:first-child {
157
- order: 3;
158
- grid-column: 1 / -1;
159
- }
160
-
161
- .ui.button:nth-child(2) {
162
- order: 1;
163
- }
164
-
165
- .ui.button:nth-child(3) {
166
- order: 2;
167
- }
168
- }
169
-
170
- .lineage-resource-selector.ui.multiple.dropdown > .label {
171
- max-width: calc(100% - 12px);
172
- }
173
-
174
- .lineage-resource-selector.ui.multiple.dropdown:not(.active):not(.visible) {
175
- max-height: min(292px, calc(100vh - 360px));
176
- overflow-x: hidden;
177
- overflow-y: auto;
178
- overscroll-behavior: contain;
179
-
180
- > .label {
181
- display: flex;
182
- width: calc(100% - 12px);
183
- max-width: none;
184
- align-items: center;
185
- }
186
- }
187
- }
188
-
189
- &__sidebar-panel {
190
- box-sizing: border-box;
191
- display: flex;
192
- width: var(--td-lineage-sidebar-width);
193
- max-height: inherit;
194
- flex-direction: column;
195
- gap: 0;
196
- opacity: 1;
197
- overflow: visible;
198
- transform: translateX(0);
199
- transition:
200
- opacity var(--td-lineage-menu-transition-duration)
201
- var(--td-lineage-menu-transition-easing),
202
- transform var(--td-lineage-menu-transition-duration)
203
- var(--td-lineage-menu-transition-easing),
204
- visibility 0ms linear 0ms;
205
- visibility: visible;
206
- }
207
-
208
- &__sidebar-header {
209
- position: relative;
210
- display: block;
211
- padding: 0 10px;
212
- }
213
-
214
- &__sidebar-toggle.ui.button {
215
- position: absolute;
216
- top: 0;
217
- right: -48px;
218
- width: 40px;
219
- height: 40px;
220
- min-height: 40px;
221
- margin: 0;
222
- padding: 0;
223
- border: 1px solid #d7dde6;
224
- border-radius: 8px;
225
- background: #ffffff !important;
226
- box-shadow: 0 6px 16px rgba(21, 26, 36, 0.08);
227
- transition:
228
- background-color var(--td-lineage-menu-transition-duration)
229
- var(--td-lineage-menu-transition-easing),
230
- border-color var(--td-lineage-menu-transition-duration)
231
- var(--td-lineage-menu-transition-easing),
232
- box-shadow var(--td-lineage-menu-transition-duration)
233
- var(--td-lineage-menu-transition-easing),
234
- color var(--td-lineage-menu-transition-duration)
235
- var(--td-lineage-menu-transition-easing);
236
- z-index: 2;
237
- }
238
-
239
- &__sidebar-tabs {
240
- display: flex;
241
- min-width: 0;
242
- width: 100%;
243
- max-width: 100%;
244
- align-items: flex-end;
245
- gap: 4px;
246
- overflow: visible;
247
- border: 0;
248
- background: transparent;
249
- }
250
-
251
- &__sidebar-tab {
252
- position: relative;
253
- display: inline-flex;
254
- flex: 1 1 0;
255
- width: auto;
256
- min-width: 0;
257
- min-height: 40px;
258
- align-items: center;
259
- justify-content: center;
260
- gap: 7px;
261
- padding: 6px 12px 7px;
262
- border: 1px solid #d7dde6;
263
- border-bottom-color: #d7dde6;
264
- border-radius: 8px 8px 0 0;
265
- background: #f8fafc;
266
- color: #697386;
267
- cursor: pointer;
268
- font-size: 10px;
269
- font-weight: 800;
270
- letter-spacing: 0;
271
- line-height: 1.2;
272
- text-transform: uppercase;
273
- transition:
274
- background-color var(--td-lineage-menu-transition-duration)
275
- var(--td-lineage-menu-transition-easing),
276
- border-color var(--td-lineage-menu-transition-duration)
277
- var(--td-lineage-menu-transition-easing),
278
- color var(--td-lineage-menu-transition-duration)
279
- var(--td-lineage-menu-transition-easing);
280
-
281
- &:not([aria-selected="true"]):hover {
282
- border-color: #002057;
283
- background: #002057;
284
- color: #ffffff;
285
- }
286
-
287
- &[aria-selected="true"] {
288
- z-index: 2;
289
- margin-bottom: -1px;
290
- border-bottom-color: #ffffff;
291
- background: #ffffff;
292
- color: #002057;
293
- box-shadow: 0 -4px 12px rgba(21, 26, 36, 0.05);
294
- }
295
-
296
- &-icon {
297
- display: inline-flex;
298
- width: 28px;
299
- height: 28px;
300
- flex: 0 0 auto;
301
- align-items: center;
302
- justify-content: center;
303
- border: 1px solid #d7dde6;
304
- border-radius: 8px;
305
- background: #ffffff;
306
- color: #697386;
307
- transition:
308
- background-color var(--td-lineage-menu-transition-duration)
309
- var(--td-lineage-menu-transition-easing),
310
- border-color var(--td-lineage-menu-transition-duration)
311
- var(--td-lineage-menu-transition-easing),
312
- box-shadow var(--td-lineage-menu-transition-duration)
313
- var(--td-lineage-menu-transition-easing),
314
- color var(--td-lineage-menu-transition-duration)
315
- var(--td-lineage-menu-transition-easing);
316
-
317
- .icon {
318
- margin: 0;
319
- font-size: 15px;
320
- line-height: 1;
321
- }
322
- }
323
-
324
- &[aria-selected="true"] &-icon {
325
- border-color: #002057;
326
- background: #002057;
327
- color: #ffffff;
328
- box-shadow: 0 8px 18px rgba(0, 32, 87, 0.2);
329
- }
330
-
331
- &:not([aria-selected="true"]):hover &-icon {
332
- border-color: rgba(255, 255, 255, 0.36);
333
- background: rgba(255, 255, 255, 0.12);
334
- box-shadow: none;
335
- color: #ffffff;
336
- }
337
-
338
- &-label {
339
- min-width: 0;
340
- overflow: hidden;
341
- text-overflow: ellipsis;
342
- white-space: nowrap;
343
- }
344
-
345
- &-count {
346
- display: inline-flex;
347
- flex: 0 0 auto;
348
- min-width: 16px;
349
- align-items: center;
350
- justify-content: center;
351
- margin-left: 5px;
352
- padding: 1px 4px;
353
- border-radius: 6px;
354
- background: #edf0f4;
355
- color: #697386;
356
- font-size: 9px;
357
- line-height: 1.2;
358
- transition:
359
- background-color var(--td-lineage-menu-transition-duration)
360
- var(--td-lineage-menu-transition-easing),
361
- color var(--td-lineage-menu-transition-duration)
362
- var(--td-lineage-menu-transition-easing);
363
- }
364
-
365
- &[aria-selected="true"] &-count {
366
- background: #edf4ff;
367
- color: #002057;
368
- }
369
-
370
- &:not([aria-selected="true"]):hover &-count {
371
- background: rgba(255, 255, 255, 0.16);
372
- color: #ffffff !important;
373
- }
374
- }
375
-
376
- &__sidebar-content {
377
- min-width: 0;
378
- padding: 20px;
379
- border: 1px solid #d7dde6;
380
- border-radius: 8px;
381
- background: #ffffff;
382
- box-shadow: 0 12px 36px rgba(21, 26, 36, 0.14);
383
- overflow: visible;
384
-
385
- &--events {
386
- overflow: visible;
387
- }
388
- }
389
-
390
- &__workspace--sidebar-collapsed {
391
- .lineage-view__sidebar {
392
- width: var(--td-lineage-sidebar-collapsed-width);
393
- min-height: 0;
394
- overflow: visible;
395
- }
396
-
397
- .lineage-view__sidebar-panel {
398
- position: absolute;
399
- top: 0;
400
- left: 0;
401
- opacity: 0;
402
- pointer-events: none;
403
- transform: translateX(-16px);
404
- transition:
405
- opacity var(--td-lineage-menu-transition-duration)
406
- var(--td-lineage-menu-transition-easing),
407
- transform var(--td-lineage-menu-transition-duration)
408
- var(--td-lineage-menu-transition-easing),
409
- visibility 0ms linear var(--td-lineage-menu-transition-duration);
410
- visibility: hidden;
411
- }
412
-
413
- .lineage-view__sidebar-rail.ui.button {
414
- display: flex;
415
- }
416
- }
417
-
418
- &__sidebar-rail.ui.button {
419
- position: relative;
420
- display: none;
421
- width: 40px;
422
- height: 40px;
423
- min-width: 40px;
424
- min-height: 40px;
425
- margin: 1px 0;
426
- padding: 0;
427
- flex-direction: row;
428
- align-items: center;
429
- justify-content: center;
430
- gap: 0;
431
- border: 1px solid #d7dde6;
432
- border-radius: var(--td-graph-border-radius, 8px);
433
- background: #ffffff !important;
434
- box-shadow: 0 12px 36px rgba(21, 26, 36, 0.14);
435
- color: #697386;
436
- overflow: hidden;
437
- transition:
438
- background-color var(--td-lineage-menu-transition-duration)
439
- var(--td-lineage-menu-transition-easing),
440
- border-color var(--td-lineage-menu-transition-duration)
441
- var(--td-lineage-menu-transition-easing),
442
- box-shadow var(--td-lineage-menu-transition-duration)
443
- var(--td-lineage-menu-transition-easing),
444
- color var(--td-lineage-menu-transition-duration)
445
- var(--td-lineage-menu-transition-easing);
446
-
447
- > .icon {
448
- flex: 0 0 auto;
449
- order: 1;
450
- margin: 0;
451
- position: relative;
452
- z-index: 1;
453
- }
454
-
455
- &:hover,
456
- &:focus {
457
- border-color: #002057;
458
- background: #002057 !important;
459
- color: #ffffff !important;
460
- }
461
-
462
- &:hover > .icon,
463
- &:focus > .icon,
464
- &:hover span,
465
- &:focus span {
466
- color: #ffffff !important;
467
- }
468
-
469
- span {
470
- display: none;
471
- position: relative;
472
- z-index: 1;
473
- }
474
- }
475
-
476
- &__sidebar-rail--hint.ui.button {
477
- border-color: #d7dde6;
478
- background: #ffffff !important;
479
- }
480
-
481
- &__sidebar-rail--hint-on.ui.button {
482
- border-color: #ed5c17;
483
- background: #fff1eb !important;
484
- box-shadow: 0 12px 36px rgba(237, 92, 23, 0.24);
485
- color: #ed5c17;
486
- }
487
-
488
- &__main {
489
- width: 100%;
490
- min-width: 0;
491
- }
492
-
493
- .ui.dropdown .menu,
494
- .ui.dropdown .menu.visible,
495
- .fix-dropdown-selector.ui.dropdown .menu,
496
- .fix-dropdown-selector.ui.dropdown .menu.visible {
497
- z-index: 4000 !important;
498
- }
499
-
500
- @media (prefers-reduced-motion: reduce) {
501
- &__sidebar,
502
- &__sidebar-panel,
503
- &__sidebar-toggle.ui.button,
504
- &__sidebar-tab,
505
- &__sidebar-tab-icon,
506
- &__sidebar-tab-count,
507
- &__sidebar-rail.ui.button {
508
- transition: none;
509
- }
510
- }
511
-
512
- @media (max-width: 767px) {
513
- &__header {
514
- align-items: flex-start;
515
- }
516
-
517
- &__workspace {
518
- display: grid;
519
- grid-template-columns: 1fr;
520
- }
521
-
522
- &__sidebar {
523
- position: static;
524
- width: 100%;
525
- max-height: none;
526
- min-height: 0;
527
- }
528
-
529
- &__workspace--sidebar-collapsed &__sidebar {
530
- min-height: 48px;
531
- }
532
-
533
- &__sidebar-rail.ui.button {
534
- width: 40px;
535
- height: 40px;
536
- min-height: 40px;
537
- flex-direction: row;
538
- justify-content: center;
539
- padding: 0;
540
- }
541
- }
542
- }
543
-
544
- .lineage-toolbar {
545
- margin-bottom: 16px;
546
- overflow: visible;
547
-
548
- &--panel {
549
- margin-bottom: 0;
550
- }
551
-
552
- &__title {
553
- padding-bottom: 8px !important;
554
- }
555
-
556
- &__form {
557
- display: grid;
558
- gap: 12px;
559
- overflow: visible;
560
- }
561
-
562
- &__fields {
563
- display: grid;
564
- grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
565
- gap: 8px;
566
- align-items: start;
567
- overflow: visible;
568
- }
569
-
570
- &__controls {
571
- display: grid;
572
- grid-template-columns: minmax(0, 1fr);
573
- gap: 8px;
574
- align-items: end;
575
- }
576
-
577
- &__levels {
578
- display: flex;
579
- min-width: 0;
580
- flex-direction: column;
581
- align-items: flex-start;
582
- gap: 6px;
583
-
584
- .ui.header {
585
- margin: 0;
586
- color: #435064;
587
- font-size: 12px;
588
- font-weight: 700;
589
- line-height: 1.2;
590
- }
591
- }
592
-
593
- &__level-options.inline.fields {
594
- display: flex;
595
- width: 100%;
596
- min-width: 0;
597
- flex-wrap: wrap;
598
- align-items: center;
599
- gap: 4px 10px;
600
- margin: 0;
601
-
602
- .field {
603
- margin: 0;
604
- }
605
-
606
- label {
607
- font-size: 11px;
608
- }
609
- }
610
-
611
- &__level-option {
612
- padding-right: 8px;
613
- }
614
-
615
- &__level-depth.field {
616
- display: inline-flex;
617
- min-width: 0;
618
- align-items: center;
619
- gap: 3px;
620
-
621
- .ui.radio.checkbox {
622
- margin: 0;
623
- }
624
- }
625
-
626
- &__level-input.field {
627
- width: 46px;
628
- min-width: 46px;
629
- margin: 0 !important;
630
-
631
- > .field {
632
- width: 46px;
633
- margin: 0;
634
- }
635
-
636
- .ui.input,
637
- .ui.input > input,
638
- input {
639
- width: 46px;
640
- min-width: 46px;
641
- max-width: 46px;
642
- }
643
-
644
- .ui.input > input,
645
- input {
646
- height: 30px;
647
- padding: 5px 6px;
648
- text-align: center;
649
- }
650
-
651
- input[type="number"]::-webkit-inner-spin-button,
652
- input[type="number"]::-webkit-outer-spin-button {
653
- -webkit-appearance: none;
654
- margin: 0;
655
- }
656
-
657
- input[type="number"] {
658
- -moz-appearance: textfield;
659
- }
660
- }
661
-
662
- &__actions {
663
- display: grid;
664
- grid-column: 1 / -1;
665
- grid-template-columns: repeat(2, minmax(0, 1fr));
666
- gap: 8px;
667
-
668
- .ui.button {
669
- margin: 0;
670
- transition:
671
- background-color var(--td-lineage-menu-transition-duration)
672
- var(--td-lineage-menu-transition-easing),
673
- border-color var(--td-lineage-menu-transition-duration)
674
- var(--td-lineage-menu-transition-easing),
675
- box-shadow var(--td-lineage-menu-transition-duration)
676
- var(--td-lineage-menu-transition-easing),
677
- color var(--td-lineage-menu-transition-duration)
678
- var(--td-lineage-menu-transition-easing);
679
- }
680
-
681
- > span,
682
- > span > .ui.button {
683
- display: block;
684
- width: 100%;
685
- }
686
- }
687
-
688
- @media (prefers-reduced-motion: reduce) {
689
- &__actions .ui.button {
690
- transition: none;
691
- }
692
- }
693
-
694
- @media (max-width: 767px) {
695
- &__fields {
696
- grid-template-columns: 1fr;
697
- }
698
-
699
- &__controls {
700
- grid-template-columns: 1fr;
701
- }
702
-
703
- &__actions {
704
- justify-content: stretch;
705
-
706
- .ui.button {
707
- flex: 1 1 auto;
708
- }
709
- }
710
- }
711
- }
712
-
713
- .lineage-selection-column {
714
- min-width: 0;
715
- overflow: visible;
716
-
717
- &--resource {
718
- grid-column: 1 / -1;
719
- }
720
-
721
- @media (max-width: 767px) {
722
- &--resource {
723
- grid-column: span 1;
724
- }
725
- }
726
- }
727
-
728
- .lineage-resource-field {
729
- display: grid;
730
- grid-template-columns: minmax(0, 1fr) auto;
731
- gap: 6px;
732
- align-items: start;
733
-
734
- @media (max-width: 767px) {
735
- grid-template-columns: minmax(0, 1fr) auto;
736
- }
737
- }
738
-
739
- .lineage-resource-toggle {
740
- display: inline-flex;
741
- width: auto;
742
- min-width: 34px;
743
- height: 34px;
744
- align-items: center;
745
- justify-content: center;
746
- margin: 0;
747
- padding: 0 6px;
748
- border-radius: 6px;
749
- border: 1px solid rgba(34, 36, 38, 0.15);
750
- background: #e0e1e2;
751
- color: rgba(0, 0, 0, 0.6);
752
- cursor: pointer;
753
- font-size: 13px;
754
- transition:
755
- background-color var(--td-lineage-menu-transition-duration)
756
- var(--td-lineage-menu-transition-easing),
757
- border-color var(--td-lineage-menu-transition-duration)
758
- var(--td-lineage-menu-transition-easing),
759
- box-shadow var(--td-lineage-menu-transition-duration)
760
- var(--td-lineage-menu-transition-easing),
761
- color var(--td-lineage-menu-transition-duration)
762
- var(--td-lineage-menu-transition-easing);
763
- white-space: nowrap;
764
-
765
- &:disabled {
766
- opacity: 0.45;
767
- cursor: not-allowed;
768
- }
769
-
770
- &-content {
771
- display: inline-flex;
772
- align-items: center;
773
- gap: 4px;
774
- }
775
-
776
- .icon {
777
- width: 1em;
778
- height: 1em;
779
- margin: 0;
780
- font-size: 14px;
781
- line-height: 1;
782
- }
783
-
784
- &--add {
785
- border-color: #ed5c17;
786
- background: #ed5c17;
787
- box-shadow: 0 0 0 1px #ed5c17 inset;
788
- color: #ffffff;
789
-
790
- &:hover,
791
- &:focus {
792
- border-color: #ed5c17;
793
- background: #ed5c17;
794
- box-shadow: 0 0 0 1px #ed5c17 inset;
795
- color: #ffffff;
796
- }
797
-
798
- .icon {
799
- color: #ffffff;
800
- }
801
- }
802
-
803
- @media (prefers-reduced-motion: reduce) {
804
- transition: none;
805
- }
806
- }
807
-
808
- .lineage-domain-selector.ui.dropdown .menu > .item.disabled {
809
- background-color: #f6f8fb;
810
- color: #a2a9b8;
811
- cursor: not-allowed;
812
- }
813
-
814
- .lineage-domain-selector-skeleton {
815
- position: relative;
816
- display: flex;
817
- min-height: 34px;
818
- align-items: center;
819
- justify-content: space-between;
820
- padding: 8px 10px;
821
- border: 1px solid #d7dde6;
822
- border-radius: 6px;
823
- background: #ffffff;
824
- overflow: hidden;
825
-
826
- &::before {
827
- position: absolute;
828
- inset: 0;
829
- background: linear-gradient(
830
- 90deg,
831
- rgba(246, 248, 251, 0) 0%,
832
- rgba(246, 248, 251, 0.88) 50%,
833
- rgba(246, 248, 251, 0) 100%
834
- );
835
- content: "";
836
- transform: translateX(-100%);
837
- animation: lineage-domain-skeleton 1100ms ease-in-out infinite;
838
- }
839
-
840
- &__label {
841
- width: min(150px, 62%);
842
- height: 10px;
843
- border-radius: 999px;
844
- background: #dfe5ee;
845
- }
846
-
847
- &__icon {
848
- width: 10px;
849
- height: 10px;
850
- border-right: 2px solid #b8c1cf;
851
- border-bottom: 2px solid #b8c1cf;
852
- transform: rotate(45deg);
853
- }
854
- }
855
-
856
- @keyframes lineage-domain-skeleton {
857
- to {
858
- transform: translateX(100%);
859
- }
860
- }
861
-
862
- .lineage-column-dropdown.ui.dropdown .menu.visible {
863
- width: min(480px, calc(100vw - 80px));
864
- column-gap: 0;
865
- column-width: 220px;
866
- z-index: 4000;
867
-
868
- > .item {
869
- break-inside: avoid;
870
- }
871
- }
872
-
873
- .lineage-resource-selector.ui.multiple.dropdown > .label {
874
- max-width: 180px;
875
- overflow: hidden;
876
- text-overflow: ellipsis;
877
- white-space: nowrap;
878
- }
879
-
880
- .lineage-events-panel {
881
- display: flex;
882
- min-height: 100%;
883
- flex-direction: column;
884
- gap: 10px;
885
-
886
- .lineage-view__sidebar-content--events & {
887
- &__scrollable {
888
- --td-lineage-events-scrollbar-width: 16px;
889
- --td-lineage-events-sidebar-offset: 21px;
890
-
891
- box-sizing: border-box;
892
- max-height: calc(var(--td-graph-container-height) - 98px);
893
- padding-top: 4px;
894
- width: calc(
895
- 100% + var(--td-lineage-events-scrollbar-width) +
896
- var(--td-lineage-events-sidebar-offset)
897
- );
898
- margin-right: calc(
899
- (
900
- var(--td-lineage-events-scrollbar-width) +
901
- var(--td-lineage-events-sidebar-offset)
902
- ) *
903
- -1
904
- );
905
- overflow-y: scroll;
906
- padding-right: calc(
907
- var(--td-lineage-events-scrollbar-width) +
908
- var(--td-lineage-events-sidebar-offset)
909
- );
910
- scrollbar-color: #002057 transparent;
911
- scrollbar-width: thin;
912
-
913
- &::-webkit-scrollbar {
914
- width: 6px;
915
- }
916
-
917
- &::-webkit-scrollbar-track {
918
- border-radius: 3px;
919
- background: transparent;
920
- }
921
-
922
- &::-webkit-scrollbar-thumb {
923
- border-radius: 3px;
924
- background: #002057;
925
-
926
- &:hover {
927
- background: #0040a8;
928
- }
929
- }
930
- }
931
-
932
- &__list {
933
- gap: 12px;
934
- }
935
- }
936
-
937
- &__header {
938
- display: flex;
939
- align-items: center;
940
- justify-content: space-between;
941
- color: #202a3a;
942
- font-size: 13px;
943
- font-weight: 800;
944
- letter-spacing: 0.08em;
945
- line-height: 1.2;
946
- text-transform: uppercase;
947
-
948
- .icon {
949
- margin: 0;
950
- color: #96a1b3;
951
- font-size: 18px;
952
- }
953
- }
954
-
955
- &__list {
956
- display: flex;
957
- flex-direction: column;
958
- gap: 8px;
959
- }
960
-
961
- &__item {
962
- padding: 10px;
963
- border: 1px solid #e8edf3;
964
- border-radius: 6px;
965
- background: #ffffff;
966
- box-shadow: 0 4px 14px rgba(21, 26, 36, 0.04);
967
- transition:
968
- border-color var(--td-lineage-menu-transition-duration)
969
- var(--td-lineage-menu-transition-easing),
970
- background-color var(--td-lineage-menu-transition-duration)
971
- var(--td-lineage-menu-transition-easing),
972
- box-shadow var(--td-lineage-menu-transition-duration)
973
- var(--td-lineage-menu-transition-easing),
974
- transform var(--td-lineage-menu-transition-duration)
975
- var(--td-lineage-menu-transition-easing);
976
-
977
- &:hover {
978
- border-color: #d7dde6;
979
- background: #ffffff;
980
- }
981
-
982
- &--clickable {
983
- cursor: pointer;
984
-
985
- &:hover {
986
- border-color: #002057;
987
- box-shadow: 0 6px 20px rgba(21, 26, 36, 0.1);
988
- transform: translateY(-1px);
989
- }
990
-
991
- &:focus-visible {
992
- outline: 2px solid #002057;
993
- outline-offset: 2px;
994
- }
995
- }
996
- }
997
-
998
- &__item-header {
999
- display: flex;
1000
- align-items: center;
1001
- justify-content: space-between;
1002
- gap: 12px;
1003
- }
1004
-
1005
- &__item-title {
1006
- display: inline-flex;
1007
- min-height: 22px;
1008
- align-items: center;
1009
- gap: 6px;
1010
- padding: 3px 8px;
1011
- border-radius: 6px;
1012
- background: #f1f4f8;
1013
- color: #002057;
1014
- font-size: 11px;
1015
- font-weight: 800;
1016
- line-height: 1.2;
1017
-
1018
- .icon {
1019
- margin: 0;
1020
- color: #58647a;
1021
- }
1022
- }
1023
-
1024
- &__meta {
1025
- display: flex;
1026
- flex-wrap: wrap;
1027
- gap: 4px 10px;
1028
- margin-top: 7px;
1029
- color: #526176;
1030
- font-size: 10px;
1031
- font-weight: 800;
1032
- line-height: 1.25;
1033
- }
1034
-
1035
- &__scope {
1036
- display: -webkit-box;
1037
- margin: 6px 0 0;
1038
- overflow: hidden;
1039
- color: #66758a;
1040
- font-family: monospace;
1041
- font-size: 10px;
1042
- font-weight: 700;
1043
- line-height: 1.35;
1044
- -webkit-box-orient: vertical;
1045
- -webkit-line-clamp: 2;
1046
- }
1047
-
1048
- &__row {
1049
- display: grid;
1050
- align-items: center;
1051
- padding-top: 6px;
1052
- border-top: 1px solid #eef2f6;
1053
- }
1054
-
1055
- &__row-main {
1056
- display: flex;
1057
- min-width: 0;
1058
- flex-wrap: wrap;
1059
- align-items: center;
1060
- gap: 6px 10px;
1061
- }
1062
-
1063
- &__type {
1064
- display: inline-flex;
1065
- flex: 1 1 96px;
1066
- min-width: 0;
1067
- align-items: center;
1068
- gap: 6px;
1069
- overflow: hidden;
1070
- color: #2b3444;
1071
- font-size: 11px;
1072
- font-weight: 800;
1073
- line-height: 1.2;
1074
- text-overflow: ellipsis;
1075
- white-space: nowrap;
1076
-
1077
- .icon {
1078
- flex: 0 0 auto;
1079
- margin: 0;
1080
- color: #697386;
1081
- font-size: 12px;
1082
- }
1083
- }
1084
-
1085
- &__date {
1086
- flex: 1 1 96px;
1087
- min-width: 0;
1088
- overflow: hidden;
1089
- color: #96a1b3;
1090
- font-size: 10px;
1091
- font-weight: 700;
1092
- line-height: 1.2;
1093
- text-align: right;
1094
- text-overflow: ellipsis;
1095
- white-space: nowrap;
1096
- }
1097
-
1098
- &__card-status {
1099
- display: inline-flex;
1100
- flex: 0 0 auto;
1101
- align-items: center;
1102
- gap: 4px;
1103
- color: #697386;
1104
- font-size: 12px;
1105
- font-weight: 800;
1106
- line-height: 1;
1107
- text-transform: uppercase;
1108
-
1109
- &--completed {
1110
- color: #159a6a;
1111
- }
1112
-
1113
- &--failed {
1114
- color: #e23d5b;
1115
- }
1116
- }
1117
-
1118
- &__card-status-trigger {
1119
- display: inline-flex;
1120
- align-items: center;
1121
- gap: 4px;
1122
- padding: 0;
1123
- border: 0;
1124
- background: transparent;
1125
- color: inherit;
1126
- cursor: inherit;
1127
- font-size: inherit;
1128
- font-weight: inherit;
1129
- line-height: inherit;
1130
- text-transform: inherit;
1131
-
1132
- .icon {
1133
- margin: 0;
1134
- font-size: 14px;
1135
- }
1136
- }
1137
-
1138
- &__card-status--failed &__card-status-trigger {
1139
- cursor: help;
1140
- }
1141
-
1142
- &__empty {
1143
- display: flex;
1144
- min-height: 180px;
1145
- flex: 1 1 auto;
1146
- flex-direction: column;
1147
- align-items: center;
1148
- justify-content: center;
1149
- gap: 8px;
1150
- padding: 24px 8px;
1151
- color: #a2a9b8;
1152
- font-size: 11px;
1153
- font-weight: 600;
1154
- text-align: center;
1155
-
1156
- .icon {
1157
- margin: 0;
1158
- color: #cbd3df;
1159
- font-size: 24px;
1160
- }
1161
- }
1162
-
1163
- @media (prefers-reduced-motion: reduce) {
1164
- &__item,
1165
- &__item--clickable {
1166
- transition: none;
1167
- }
1168
- }
1169
- }
1170
-
1171
- .structure-lineage {
1172
- position: relative;
1173
- width: 100%;
1174
- overflow: hidden;
1175
- margin-bottom: 0;
1176
- padding-bottom: 0;
1177
-
1178
- &__download-button {
1179
- position: absolute;
1180
- top: 4%;
1181
- right: 1%;
1182
- z-index: 5;
1183
-
1184
- span,
1185
- .ui.button,
1186
- .ui.popup {
1187
- pointer-events: auto;
1188
- }
1189
- }
1190
-
1191
- .ui.grid {
1192
- margin: 0;
1193
- padding-bottom: 0;
1194
- padding-left: 0;
1195
- padding-right: 0;
1196
-
1197
- > .row {
1198
- padding-top: 0;
1199
- padding-bottom: 0;
1200
- margin-bottom: 0;
1201
- margin-left: 0;
1202
- margin-right: 0;
1203
- padding-left: 0;
1204
- padding-right: 0;
1205
- }
1206
-
1207
- > * {
1208
- padding-left: 0;
1209
- padding-right: 0;
1210
- }
1211
-
1212
- > .row > .column {
1213
- padding-bottom: 0;
1214
- padding-left: 0;
1215
- padding-right: 0;
1216
- }
1217
- }
1218
-
1219
- .dl {
1220
- height: 100%;
1221
- padding: 0;
1222
- margin: 0;
1223
-
1224
- svg {
1225
- width: 100%;
1226
- height: 100% !important;
1227
- min-height: 340px;
1228
- background-color: #f7f8fa;
1229
- padding: 0;
1230
- margin: 0;
1231
- display: block;
1232
- margin-left: 0;
1233
- margin-right: 0;
1234
- }
1235
- }
1236
- }