gantt-lib 0.80.1 → 0.82.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
@@ -2118,35 +2118,307 @@
2118
2118
  position: sticky;
2119
2119
  top: 0;
2120
2120
  z-index: 4;
2121
+ display: grid;
2122
+ grid-template-columns: 30px minmax(146px, 1fr) 80px 86px 32px;
2123
+ align-items: center;
2121
2124
  background: var(--gantt-cell-background, #ffffff);
2122
2125
  border-bottom: 1px solid var(--gantt-grid-line-color, #e0e0e0);
2126
+ box-sizing: border-box;
2127
+ color: #6b7280;
2128
+ }
2129
+ .gantt-resourceTimeline-resourceHeaderCell {
2130
+ min-width: 0;
2131
+ padding: 0 8px;
2132
+ font-size: 11px;
2133
+ font-weight: 700;
2134
+ letter-spacing: 0;
2135
+ line-height: 1;
2136
+ overflow: hidden;
2137
+ text-overflow: ellipsis;
2138
+ white-space: nowrap;
2139
+ }
2140
+ .gantt-resourceTimeline-resourceHeaderNumber {
2141
+ padding-left: 10px;
2142
+ }
2143
+ .gantt-resourceTimeline-resourceHeaderName {
2144
+ padding-left: 40px;
2145
+ }
2146
+ .gantt-resourceTimeline-resourceHeaderActions {
2147
+ text-align: right;
2123
2148
  }
2124
2149
  .gantt-resourceTimeline-resourceHeader {
2125
- display: flex;
2126
- align-items: flex-start;
2127
- gap: 8px;
2128
- padding: 10px 12px 0;
2150
+ display: grid;
2151
+ grid-template-columns: 30px minmax(146px, 1fr) 80px 86px 32px;
2152
+ align-items: start;
2153
+ column-gap: 0;
2154
+ padding: 6px 0 0;
2129
2155
  box-sizing: border-box;
2130
2156
  border-bottom: 1px solid var(--gantt-grid-line-color, #e0e0e0);
2131
- color: #1f2937;
2157
+ color: #172b4d;
2132
2158
  font-size: 14px;
2133
2159
  font-weight: 500;
2134
2160
  background: var(--gantt-cell-background, #ffffff);
2161
+ transition: background-color 120ms ease, box-shadow 120ms ease;
2162
+ }
2163
+ .gantt-resourceTimeline-resourceHeader:hover,
2164
+ .gantt-resourceTimeline-resourceHeaderMenuOpen {
2165
+ background: #f4f8ff;
2166
+ box-shadow: inset 0 0 0 9999px rgba(9, 30, 66, 0.015);
2135
2167
  }
2136
2168
  .gantt-resourceTimeline-resourceHeaderNew {
2137
2169
  align-items: center;
2138
2170
  padding-top: 0;
2139
2171
  }
2172
+ .gantt-resourceTimeline-resourceNumber {
2173
+ min-width: 0;
2174
+ padding: 1px 6px 0 10px;
2175
+ color: #8993a4;
2176
+ font-family:
2177
+ ui-monospace,
2178
+ SFMono-Regular,
2179
+ Menlo,
2180
+ Monaco,
2181
+ Consolas,
2182
+ "Liberation Mono",
2183
+ monospace;
2184
+ font-size: 12px;
2185
+ line-height: 1.25;
2186
+ }
2140
2187
  .gantt-resourceTimeline-resourceName {
2141
2188
  min-width: 0;
2142
- flex: 1 1 auto;
2143
- display: -webkit-box;
2144
- overflow: hidden;
2189
+ display: flex;
2190
+ align-items: flex-start;
2191
+ gap: 6px;
2192
+ min-height: 32px;
2193
+ overflow: visible;
2145
2194
  font-size: 13px;
2146
2195
  line-height: 1.25;
2196
+ padding: 0 6px;
2147
2197
  overflow-wrap: anywhere;
2148
- -webkit-box-orient: vertical;
2149
- -webkit-line-clamp: 2;
2198
+ }
2199
+ .gantt-resourceTimeline-resourceNameInput {
2200
+ width: 100%;
2201
+ min-width: 0;
2202
+ height: 34px;
2203
+ min-height: 34px;
2204
+ resize: none;
2205
+ border: 1px solid transparent;
2206
+ border-radius: 4px;
2207
+ background: transparent;
2208
+ color: #172b4d;
2209
+ font: inherit;
2210
+ font-size: 13px;
2211
+ font-weight: 500;
2212
+ line-height: 1.25;
2213
+ overflow: hidden;
2214
+ padding: 2px 4px;
2215
+ text-overflow: ellipsis;
2216
+ white-space: normal;
2217
+ overflow-wrap: anywhere;
2218
+ }
2219
+ .gantt-resourceTimeline-resourceNameInput:hover:not(:disabled) {
2220
+ background: #ffffff;
2221
+ border-color: #dfe1e6;
2222
+ }
2223
+ .gantt-resourceTimeline-resourceNameInput:focus {
2224
+ background: #ffffff;
2225
+ border-color: #4c9aff;
2226
+ box-shadow: 0 0 0 2px rgba(76, 154, 255, 0.22);
2227
+ outline: none;
2228
+ }
2229
+ .gantt-resourceTimeline-resourceNameInput:disabled {
2230
+ opacity: 1;
2231
+ }
2232
+ .gantt-resourceTimeline-resourceTypeIconButton {
2233
+ display: inline-flex;
2234
+ align-items: center;
2235
+ justify-content: center;
2236
+ flex: 0 0 auto;
2237
+ width: 24px;
2238
+ height: 24px;
2239
+ margin-top: -1px;
2240
+ border: 1px solid transparent;
2241
+ border-radius: 4px;
2242
+ background: #ffffff;
2243
+ color: #6b778c;
2244
+ cursor: pointer;
2245
+ padding: 0;
2246
+ }
2247
+ .gantt-resourceTimeline-resourceTypeIconButton:hover:not(:disabled),
2248
+ .gantt-resourceTimeline-resourceTypeIconButton:focus-visible {
2249
+ background: #ffffff;
2250
+ border-color: #4c9aff;
2251
+ outline: none;
2252
+ }
2253
+ .gantt-resourceTimeline-resourceTypeIconButton:focus-visible {
2254
+ box-shadow: 0 0 0 2px rgba(76, 154, 255, 0.22);
2255
+ }
2256
+ .gantt-resourceTimeline-resourceTypeIconButton:disabled {
2257
+ cursor: default;
2258
+ opacity: 1;
2259
+ }
2260
+ .gantt-resourceTimeline-resourceTypeIcon {
2261
+ fill: none;
2262
+ stroke: currentColor;
2263
+ stroke-linecap: round;
2264
+ stroke-linejoin: round;
2265
+ stroke-width: 2;
2266
+ }
2267
+ .gantt-resourceTimeline-resourceTypeIconPeople {
2268
+ color: #0052cc;
2269
+ }
2270
+ .gantt-resourceTimeline-resourceTypeIconEquipment {
2271
+ color: #172b4d;
2272
+ }
2273
+ .gantt-resourceTimeline-resourceTypeIconMaterials {
2274
+ color: #de350b;
2275
+ }
2276
+ .gantt-resourceTimeline-resourceTypeIconOther {
2277
+ color: #6b778c;
2278
+ }
2279
+ .gantt-resourceTimeline-resourceScopeChip span,
2280
+ .gantt-resourceTimeline-resourceAssignments span {
2281
+ min-width: 0;
2282
+ overflow: hidden;
2283
+ text-overflow: ellipsis;
2284
+ white-space: nowrap;
2285
+ }
2286
+ .gantt-resourceTimeline-resourceScopeChip {
2287
+ display: inline-flex;
2288
+ align-items: center;
2289
+ justify-self: start;
2290
+ margin-top: 1px;
2291
+ max-width: calc(100% - 16px);
2292
+ min-width: 58px;
2293
+ height: 22px;
2294
+ margin: 0 6px;
2295
+ border: 1px solid transparent;
2296
+ cursor: pointer;
2297
+ font-family: inherit;
2298
+ }
2299
+ .gantt-resourceTimeline-resourceScopeChip:hover:not(:disabled) {
2300
+ background-color: #ffffff;
2301
+ border-color: #dfe1e6;
2302
+ }
2303
+ .gantt-resourceTimeline-resourceScopeChip:focus-visible {
2304
+ background: #ffffff;
2305
+ border-color: #4c9aff;
2306
+ box-shadow: 0 0 0 2px rgba(76, 154, 255, 0.22);
2307
+ outline: none;
2308
+ }
2309
+ .gantt-resourceTimeline-resourceScopeChip:disabled {
2310
+ cursor: default;
2311
+ opacity: 1;
2312
+ }
2313
+ .gantt-resourceTimeline-resourceScopeChip,
2314
+ .gantt-resourceTimeline-resourceOptionScopeDot {
2315
+ max-width: calc(100% - 16px);
2316
+ overflow: hidden;
2317
+ border-radius: 3px;
2318
+ padding: 2px 6px;
2319
+ font-size: 10px;
2320
+ font-weight: 700;
2321
+ letter-spacing: 0;
2322
+ line-height: 1.2;
2323
+ text-overflow: ellipsis;
2324
+ white-space: nowrap;
2325
+ }
2326
+ .gantt-resourceTimeline-resourceScopeShared {
2327
+ background: #deebff;
2328
+ color: #0747a6;
2329
+ }
2330
+ .gantt-resourceTimeline-resourceScopeProject {
2331
+ background: #e3fcef;
2332
+ color: #006644;
2333
+ }
2334
+ .gantt-resourceTimeline-resourceAssignments {
2335
+ display: flex;
2336
+ flex-direction: column;
2337
+ align-items: flex-start;
2338
+ justify-content: center;
2339
+ gap: 1px;
2340
+ justify-self: start;
2341
+ margin-top: 0;
2342
+ max-width: calc(100% - 16px);
2343
+ min-width: 50px;
2344
+ min-height: 34px;
2345
+ margin: 0 6px;
2346
+ overflow: hidden;
2347
+ color: #5e6c84;
2348
+ padding: 0;
2349
+ font-size: 11px;
2350
+ line-height: 1.3;
2351
+ text-overflow: ellipsis;
2352
+ white-space: nowrap;
2353
+ }
2354
+ .gantt-resourceTimeline-resourceAssignmentCount {
2355
+ display: inline-flex;
2356
+ align-items: center;
2357
+ gap: 4px;
2358
+ color: #6b778c;
2359
+ font-size: 11px;
2360
+ font-weight: 500;
2361
+ }
2362
+ .gantt-resourceTimeline-resourceAssignmentIcon {
2363
+ flex: 0 0 auto;
2364
+ fill: currentColor;
2365
+ stroke: none;
2366
+ }
2367
+ .gantt-resourceTimeline-resourceWorkedDays {
2368
+ color: #172b4d;
2369
+ font-size: 12px;
2370
+ font-weight: 700;
2371
+ }
2372
+ .gantt-resourceTimeline-resourceOptionMenu {
2373
+ min-width: 156px !important;
2374
+ padding: 4px !important;
2375
+ display: flex;
2376
+ flex-direction: column;
2377
+ gap: 2px;
2378
+ }
2379
+ .gantt-resourceTimeline-resourceOption {
2380
+ display: flex;
2381
+ align-items: center;
2382
+ gap: 8px;
2383
+ width: 100%;
2384
+ border: 0;
2385
+ border-radius: 4px;
2386
+ background: transparent;
2387
+ color: #172b4d;
2388
+ cursor: pointer;
2389
+ font: inherit;
2390
+ font-size: 12px;
2391
+ padding: 6px 8px;
2392
+ text-align: left;
2393
+ white-space: nowrap;
2394
+ }
2395
+ .gantt-resourceTimeline-resourceOption:hover,
2396
+ .gantt-resourceTimeline-resourceOptionActive {
2397
+ background: #deebff;
2398
+ color: #0747a6;
2399
+ }
2400
+ .gantt-resourceTimeline-resourceOptionIcon {
2401
+ display: inline-flex;
2402
+ align-items: center;
2403
+ justify-content: center;
2404
+ width: 18px;
2405
+ height: 18px;
2406
+ flex: 0 0 auto;
2407
+ }
2408
+ .gantt-resourceTimeline-resourceOptionScopeDot {
2409
+ width: 10px;
2410
+ height: 10px;
2411
+ min-width: 10px;
2412
+ padding: 0;
2413
+ flex: 0 0 auto;
2414
+ }
2415
+ .gantt-resourceTimeline-resourceActions {
2416
+ display: flex;
2417
+ min-width: 0;
2418
+ align-items: center;
2419
+ justify-content: flex-end;
2420
+ gap: 4px;
2421
+ padding: 0 8px;
2150
2422
  }
2151
2423
  .gantt-resourceTimeline-conflictBadge {
2152
2424
  display: inline-flex;
@@ -2156,21 +2428,32 @@
2156
2428
  min-width: 18px;
2157
2429
  height: 18px;
2158
2430
  padding: 0 5px;
2431
+ border: 0;
2159
2432
  border-radius: 3px;
2160
- background: #fee2e2;
2161
- color: #b91c1c;
2433
+ background: #de350b;
2434
+ color: #ffffff;
2435
+ cursor: pointer;
2162
2436
  font-size: 0.6875rem;
2163
2437
  font-weight: 700;
2438
+ font-family: inherit;
2164
2439
  line-height: 18px;
2165
2440
  }
2441
+ .gantt-resourceTimeline-conflictBadge:hover,
2442
+ .gantt-resourceTimeline-conflictBadge:focus-visible {
2443
+ background: #bf2600;
2444
+ color: #ffffff;
2445
+ outline: none;
2446
+ }
2447
+ .gantt-resourceTimeline-conflictBadge:focus-visible {
2448
+ box-shadow: 0 0 0 2px rgba(239, 68, 68, 0.25);
2449
+ }
2166
2450
  .gantt-resourceTimeline-resourceMenuButton {
2167
2451
  display: inline-flex;
2168
2452
  align-items: center;
2169
2453
  justify-content: center;
2170
2454
  flex: 0 0 auto;
2171
- width: 24px;
2172
- height: 24px;
2173
- margin-top: -3px;
2455
+ width: 22px;
2456
+ height: 22px;
2174
2457
  border: 0;
2175
2458
  border-radius: 4px;
2176
2459
  background: transparent;
@@ -2237,6 +2520,7 @@
2237
2520
  color: #dc2626;
2238
2521
  }
2239
2522
  .gantt-resourceTimeline-resourceInput {
2523
+ grid-column: 2 / span 2;
2240
2524
  width: 100%;
2241
2525
  }
2242
2526
  .gantt-resourceTimeline-addResourceButton {
@@ -2263,6 +2547,7 @@
2263
2547
  }
2264
2548
  .gantt-resourceTimeline-chartSurface {
2265
2549
  position: relative;
2550
+ z-index: 0;
2266
2551
  flex: 1;
2267
2552
  }
2268
2553
  .gantt-resourceTimeline-stickyHeader {
@@ -2327,9 +2612,47 @@
2327
2612
  transform: translate(-50%, -100%);
2328
2613
  visibility: visible;
2329
2614
  }
2330
- .gantt-resourceTimeline-item:hover,
2331
- .gantt-resourceTimeline-item:focus-visible {
2332
- z-index: 30;
2615
+ .gantt-resourceTimeline-itemActive {
2616
+ z-index: 31;
2617
+ box-shadow: 0px 0 0px 2px rgb(0 0 0);
2618
+ }
2619
+ .gantt-resourceTimeline-itemMenuButton {
2620
+ position: absolute;
2621
+ top: 3px;
2622
+ right: 3px;
2623
+ z-index: 4;
2624
+ display: inline-flex;
2625
+ align-items: center;
2626
+ justify-content: center;
2627
+ width: 22px;
2628
+ height: 22px;
2629
+ padding: 0;
2630
+ border: 0;
2631
+ border-radius: 4px;
2632
+ background: rgba(255, 255, 255, 0.22);
2633
+ color: inherit;
2634
+ cursor: pointer;
2635
+ font: inherit;
2636
+ font-size: 18px;
2637
+ font-weight: 700;
2638
+ line-height: 1;
2639
+ opacity: 0;
2640
+ transform: translateY(-1px);
2641
+ transition:
2642
+ background-color 120ms ease,
2643
+ opacity 120ms ease,
2644
+ transform 120ms ease;
2645
+ }
2646
+ .gantt-resourceTimeline-item:hover .gantt-resourceTimeline-itemMenuButton,
2647
+ .gantt-resourceTimeline-item:focus-within .gantt-resourceTimeline-itemMenuButton,
2648
+ .gantt-resourceTimeline-itemActive .gantt-resourceTimeline-itemMenuButton {
2649
+ opacity: 1;
2650
+ transform: translateY(0);
2651
+ }
2652
+ .gantt-resourceTimeline-itemMenuButton:hover,
2653
+ .gantt-resourceTimeline-itemMenuButton:focus-visible {
2654
+ background: rgba(255, 255, 255, 0.34);
2655
+ outline: none;
2333
2656
  }
2334
2657
  .gantt-resourceTimeline-weekendOverlay {
2335
2658
  position: absolute;
@@ -2376,6 +2699,10 @@
2376
2699
  opacity: 0.85;
2377
2700
  box-shadow: 0 4px 12px rgba(31, 41, 55, 0.2);
2378
2701
  }
2702
+ .gantt-resourceTimeline-itemConflictActive {
2703
+ z-index: 31;
2704
+ box-shadow: 0 0 0 2px rgba(239, 68, 68, 0.85), 0 4px 12px rgba(31, 41, 55, 0.2);
2705
+ }
2379
2706
  .gantt-resourceTimeline-itemDisabled {
2380
2707
  cursor: default;
2381
2708
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gantt-lib",
3
- "version": "0.80.1",
3
+ "version": "0.82.0",
4
4
  "description": "Lightweight React Gantt chart component library",
5
5
  "license": "MIT",
6
6
  "repository": {