gantt-lib 0.78.0 → 0.80.0

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/styles.css CHANGED
@@ -717,12 +717,24 @@
717
717
  pointer-events: none;
718
718
  overflow: visible;
719
719
  }
720
+ .gantt-dependency-line {
721
+ pointer-events: visibleStroke;
722
+ }
723
+ .gantt-dependency-hit-area {
724
+ fill: none;
725
+ stroke: transparent;
726
+ stroke-width: 12;
727
+ stroke-linecap: round;
728
+ stroke-linejoin: round;
729
+ pointer-events: stroke;
730
+ }
720
731
  .gantt-dependency-path {
721
732
  fill: none;
722
733
  stroke: var(--gantt-dependency-line-color, #666666);
723
734
  stroke-width: 1;
724
735
  stroke-linecap: round;
725
736
  stroke-linejoin: round;
737
+ pointer-events: none;
726
738
  }
727
739
  .gantt-dependency-virtual {
728
740
  stroke-dasharray: 4 2;
@@ -735,6 +747,14 @@
735
747
  stroke: #ef4444;
736
748
  stroke-width: 2;
737
749
  }
750
+ .gantt-dependency-line:hover .gantt-dependency-hit-area {
751
+ stroke: var(--gantt-dependency-hover-background, rgba(239, 68, 68, 0.22));
752
+ }
753
+ .gantt-dependency-line:hover .gantt-dependency-path {
754
+ stroke: var(--gantt-dependency-hover-color, #ef4444);
755
+ stroke-width: 2;
756
+ marker-end: url(#arrowhead-hover);
757
+ }
738
758
  .gantt-dependency-arrow polygon {
739
759
  fill: var(--gantt-dependency-line-color, #666666);
740
760
  }
@@ -1172,7 +1192,7 @@
1172
1192
  cursor: not-allowed;
1173
1193
  }
1174
1194
  .gantt-tl-cell-deps {
1175
- width: 90px;
1195
+ width: 128px;
1176
1196
  flex-shrink: 0;
1177
1197
  flex-wrap: wrap;
1178
1198
  gap: 4px;
@@ -1362,23 +1382,90 @@
1362
1382
  .gantt-tl-dep-chip {
1363
1383
  display: inline-flex;
1364
1384
  align-items: center;
1365
- gap: 1px;
1366
- background-color: rgba(59, 130, 246, 0.12);
1385
+ gap: 2px;
1386
+ background-color: rgba(107, 114, 128, 0.12);
1367
1387
  border-radius: 6px;
1368
- padding: 4px 4px;
1369
- font-size: 0.7rem;
1370
- color: #1d4ed8;
1388
+ padding: 3px 4px;
1389
+ font-size: inherit;
1390
+ color: #4b5563;
1371
1391
  white-space: nowrap;
1372
1392
  line-height: 14px;
1373
1393
  cursor: pointer;
1374
- min-width: 42px;
1394
+ width: fit-content;
1395
+ min-width: 22px;
1375
1396
  justify-content: center;
1376
1397
  }
1377
- .gantt-tl-dep-chip-selected {
1398
+ .gantt-tl-dep-chip-with-number {
1399
+ display: inline-flex;
1400
+ align-items: center;
1401
+ gap: 5px;
1402
+ border-radius: 6px;
1403
+ cursor: pointer;
1404
+ font-size: 0.75rem;
1405
+ padding: 3px 6px;
1406
+ }
1407
+ .gantt-tl-dep-chip-with-number:hover {
1408
+ background-color: rgba(59, 130, 246, 0.12);
1409
+ }
1410
+ .gantt-tl-dep-chip-with-number:hover .gantt-tl-dep-chip-task-number,
1411
+ .gantt-tl-dep-chip-with-number:hover .gantt-tl-dep-chip svg,
1412
+ .gantt-tl-dep-chip-with-number:hover .gantt-tl-dep-chip-lag {
1413
+ color: #2563eb;
1414
+ }
1415
+ .gantt-tl-dep-chip-with-number:hover .gantt-tl-dep-chip {
1416
+ background-color: rgba(59, 130, 246, 0.18);
1417
+ }
1418
+ .gantt-tl-dep-chip-tooltip {
1419
+ position: absolute;
1420
+ left: calc(100% + 6px);
1421
+ top: 50%;
1422
+ transform: translateY(-50%);
1423
+ z-index: 1000;
1424
+ display: none;
1425
+ width: max-content;
1426
+ min-width: 0;
1427
+ max-width: min(360px, calc(100vw - 32px));
1428
+ padding: 5px 8px;
1429
+ border-radius: 4px;
1430
+ background: #111827;
1431
+ color: #fff;
1432
+ font-size: 0.75rem;
1433
+ line-height: 1.3;
1434
+ white-space: normal;
1435
+ overflow-wrap: anywhere;
1436
+ box-shadow: 0 6px 18px rgba(15, 23, 42, 0.18);
1437
+ pointer-events: none;
1438
+ }
1439
+ .gantt-tl-dep-chip-with-number:hover .gantt-tl-dep-chip-tooltip,
1440
+ .gantt-tl-dep-chip-with-number:focus-visible .gantt-tl-dep-chip-tooltip {
1441
+ display: block;
1442
+ }
1443
+ .gantt-tl-dep-chip-task-number {
1444
+ color: #4b5563;
1445
+ font-weight: 400;
1446
+ line-height: 14px;
1447
+ }
1448
+ .gantt-tl-dep-chip svg {
1449
+ color: #4b5563;
1450
+ }
1451
+ .gantt-tl-dep-chip-lag {
1452
+ color: #9ca3af;
1453
+ line-height: 14px;
1454
+ }
1455
+ .gantt-tl-dep-chip-with-number-selected {
1378
1456
  background-color: #2563eb;
1379
- border-color: #2563eb;
1380
1457
  color: #fff;
1381
- font-weight: 600;
1458
+ }
1459
+ .gantt-tl-dep-chip-with-number-selected .gantt-tl-dep-chip {
1460
+ background-color: rgba(255, 255, 255, 0.16);
1461
+ }
1462
+ .gantt-tl-dep-chip-with-number-selected .gantt-tl-dep-chip-task-number,
1463
+ .gantt-tl-dep-chip-with-number-selected .gantt-tl-dep-chip svg,
1464
+ .gantt-tl-dep-chip-with-number-selected .gantt-tl-dep-chip-lag {
1465
+ color: #fff;
1466
+ }
1467
+ .gantt-tl-dep-chip-with-number-selected .gantt-tl-dep-chip-lag {
1468
+ opacity: 0.82;
1382
1469
  }
1383
1470
  .gantt-tl-dep-chip-wrapper {
1384
1471
  display: inline-flex;
@@ -1959,12 +2046,20 @@
1959
2046
  font-weight: 500;
1960
2047
  background: var(--gantt-cell-background, #ffffff);
1961
2048
  }
2049
+ .gantt-resourceTimeline-resourceHeaderNew {
2050
+ align-items: center;
2051
+ padding-top: 0;
2052
+ }
1962
2053
  .gantt-resourceTimeline-resourceName {
1963
2054
  min-width: 0;
1964
2055
  flex: 1 1 auto;
2056
+ display: -webkit-box;
1965
2057
  overflow: hidden;
1966
- text-overflow: ellipsis;
1967
- white-space: nowrap;
2058
+ font-size: 13px;
2059
+ line-height: 1.25;
2060
+ overflow-wrap: anywhere;
2061
+ -webkit-box-orient: vertical;
2062
+ -webkit-line-clamp: 2;
1968
2063
  }
1969
2064
  .gantt-resourceTimeline-conflictBadge {
1970
2065
  display: inline-flex;
@@ -1981,6 +2076,104 @@
1981
2076
  font-weight: 700;
1982
2077
  line-height: 18px;
1983
2078
  }
2079
+ .gantt-resourceTimeline-resourceMenuButton {
2080
+ display: inline-flex;
2081
+ align-items: center;
2082
+ justify-content: center;
2083
+ flex: 0 0 auto;
2084
+ width: 24px;
2085
+ height: 24px;
2086
+ margin-top: -3px;
2087
+ border: 0;
2088
+ border-radius: 4px;
2089
+ background: transparent;
2090
+ color: #6b7280;
2091
+ cursor: pointer;
2092
+ font: inherit;
2093
+ font-size: 18px;
2094
+ line-height: 1;
2095
+ opacity: 0;
2096
+ transition:
2097
+ background-color 120ms ease,
2098
+ color 120ms ease,
2099
+ opacity 120ms ease;
2100
+ }
2101
+ .gantt-resourceTimeline-resourceHeader:hover .gantt-resourceTimeline-resourceMenuButton,
2102
+ .gantt-resourceTimeline-resourceHeader:focus-within .gantt-resourceTimeline-resourceMenuButton,
2103
+ .gantt-resourceTimeline-resourceHeaderMenuOpen .gantt-resourceTimeline-resourceMenuButton {
2104
+ opacity: 1;
2105
+ }
2106
+ .gantt-resourceTimeline-resourceMenuButton:hover,
2107
+ .gantt-resourceTimeline-resourceMenuButton:focus-visible {
2108
+ background: #e5e7eb;
2109
+ color: #374151;
2110
+ outline: none;
2111
+ }
2112
+ .gantt-resourceTimeline-resourceMenu {
2113
+ min-width: 150px !important;
2114
+ padding: 4px !important;
2115
+ display: flex;
2116
+ flex-direction: column;
2117
+ gap: 2px;
2118
+ }
2119
+ .gantt-resourceTimeline-resourceMenuItem {
2120
+ display: flex;
2121
+ align-items: center;
2122
+ gap: 8px;
2123
+ width: 100%;
2124
+ padding: 6px 10px;
2125
+ border: 0;
2126
+ border-radius: 4px;
2127
+ background: transparent;
2128
+ color: #374151;
2129
+ cursor: pointer;
2130
+ font: inherit;
2131
+ font-size: 0.8rem;
2132
+ text-align: left;
2133
+ white-space: nowrap;
2134
+ }
2135
+ .gantt-resourceTimeline-resourceMenuItem:hover:not(:disabled),
2136
+ .gantt-resourceTimeline-resourceMenuItem:focus-visible:not(:disabled) {
2137
+ background-color: rgba(0, 0, 0, 0.05);
2138
+ outline: none;
2139
+ }
2140
+ .gantt-resourceTimeline-resourceMenuItem:disabled {
2141
+ cursor: default;
2142
+ opacity: 0.45;
2143
+ }
2144
+ .gantt-resourceTimeline-resourceMenuItemDanger {
2145
+ color: #ef4444;
2146
+ }
2147
+ .gantt-resourceTimeline-resourceMenuItemDanger:hover:not(:disabled),
2148
+ .gantt-resourceTimeline-resourceMenuItemDanger:focus-visible:not(:disabled) {
2149
+ background-color: rgba(239, 68, 68, 0.08);
2150
+ color: #dc2626;
2151
+ }
2152
+ .gantt-resourceTimeline-resourceInput {
2153
+ width: 100%;
2154
+ }
2155
+ .gantt-resourceTimeline-addResourceButton {
2156
+ display: flex;
2157
+ align-items: center;
2158
+ width: 100%;
2159
+ box-sizing: border-box;
2160
+ padding: 0 12px;
2161
+ border: 0;
2162
+ border-bottom: 1px solid var(--gantt-grid-line-color, #e0e0e0);
2163
+ background: var(--gantt-cell-background, #ffffff);
2164
+ color: #2563eb;
2165
+ cursor: pointer;
2166
+ font: inherit;
2167
+ font-size: 14px;
2168
+ font-weight: 600;
2169
+ text-align: left;
2170
+ }
2171
+ .gantt-resourceTimeline-addResourceButton:hover,
2172
+ .gantt-resourceTimeline-addResourceButton:focus-visible {
2173
+ background: #f8fafc;
2174
+ color: #1d4ed8;
2175
+ outline: none;
2176
+ }
1984
2177
  .gantt-resourceTimeline-chartSurface {
1985
2178
  position: relative;
1986
2179
  flex: 1;
@@ -1995,6 +2188,9 @@
1995
2188
  .gantt-resourceTimeline-grid {
1996
2189
  position: relative;
1997
2190
  }
2191
+ .gantt-resourceTimeline .gantt-ti-indicator {
2192
+ z-index: 4;
2193
+ }
1998
2194
  .gantt-resourceTimeline-row {
1999
2195
  position: absolute;
2000
2196
  left: 0;
@@ -2010,16 +2206,51 @@
2010
2206
  padding: 4px;
2011
2207
  color: var(--gantt-task-bar-text-color, #ffffff);
2012
2208
  border-radius: var(--gantt-resource-bar-radius, 4px);
2013
- overflow: hidden;
2209
+ overflow: visible;
2014
2210
  cursor: grab;
2015
2211
  user-select: none;
2016
2212
  }
2213
+ .gantt-resourceTimeline-item::after {
2214
+ content: attr(data-resource-item-tooltip);
2215
+ position: absolute;
2216
+ left: 50%;
2217
+ top: -8px;
2218
+ z-index: 20;
2219
+ max-width: 360px;
2220
+ padding: 6px 8px;
2221
+ border-radius: 6px;
2222
+ background: rgba(15, 23, 42, 0.96);
2223
+ color: #ffffff;
2224
+ font-size: 12px;
2225
+ font-weight: 600;
2226
+ line-height: 1.25;
2227
+ opacity: 0;
2228
+ pointer-events: none;
2229
+ text-align: left;
2230
+ transform: translate(-50%, calc(-100% + 2px));
2231
+ transition: opacity 80ms ease-out, transform 80ms ease-out;
2232
+ visibility: hidden;
2233
+ white-space: normal;
2234
+ width: max-content;
2235
+ word-break: break-word;
2236
+ }
2237
+ .gantt-resourceTimeline-item:hover::after,
2238
+ .gantt-resourceTimeline-item:focus-visible::after {
2239
+ opacity: 1;
2240
+ transform: translate(-50%, -100%);
2241
+ visibility: visible;
2242
+ }
2243
+ .gantt-resourceTimeline-item:hover,
2244
+ .gantt-resourceTimeline-item:focus-visible {
2245
+ z-index: 30;
2246
+ }
2017
2247
  .gantt-resourceTimeline-weekendOverlay {
2018
2248
  position: absolute;
2019
2249
  top: 0;
2020
2250
  bottom: 0;
2021
2251
  z-index: 1;
2022
2252
  pointer-events: none;
2253
+ border-radius: inherit;
2023
2254
  background-image:
2024
2255
  repeating-linear-gradient(
2025
2256
  135deg,
@@ -2035,6 +2266,7 @@
2035
2266
  bottom: 0;
2036
2267
  z-index: 0;
2037
2268
  pointer-events: none;
2269
+ border-radius: inherit;
2038
2270
  background-color: rgba(239, 68, 68, 1);
2039
2271
  }
2040
2272
  .gantt-resourceTimeline-resizeHandle {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gantt-lib",
3
- "version": "0.78.0",
3
+ "version": "0.80.0",
4
4
  "description": "Lightweight React Gantt chart component library",
5
5
  "license": "MIT",
6
6
  "repository": {