javascriptgantt
Version:
An open source JavaScript Gantt. This library provides a powerful set of tools and functionalities to create interactive Gantt charts for project management.
1,158 lines (1,004 loc) • 25.8 kB
CSS
:root {
/* -------- Background Colors Start ----------- */
--body-background: #fff;
--header-background: #fafafa;
--header-cell-background: #fafafa;
--timeline-cell-background: #f8f8f8;
--timeline-scale-background: #fafafa;
--resizer-background: #cecece;
--grid-resize-area-background: #a2a2a24f;
--row-item-background: #fff;
--row-item-hover-background: #d5eaff;
--weekend-cell-background: #ebebeb;
--selected-background: #d5eaff;
--marker-background: #4ca0ff80;
--marker-hover-background: #4ca0fff2;
--toastr-background: #aaaaaa;
--scroll-background: #f5f7fa;
/* lightbox backgrounds */
--lightbox-background: #fff;
--textarea-background: #fff;
/* tooltip background */
--tooltip-background: #fff;
/* taskbar background */
--taskbar-background: #7fbbfff2;
--taskbar-child-background: #56a4fdf2;
--task-area-background: #0094ff4d;
--task-progress-background: #0094ff4d;
--child-task-progress-background: #298dfff2;
/* milestone content */
--milestone-content-background: #e84855;
/* backdrop background */
--backdrop-background: #0000004d;
--loder-backdrop-background: #000000cc;
/* btn background */
--btn-primary-background: #0094ff;
--btn-normal-background: #fff;
--btn-danger-background: #c11d1d;
/* link backgrounds */
--link-background: #ffa011;
--link-control-background: #f0f0f0;
--link-control-hover-background: #fff;
--selected-link-control-background: #ffa011;
/* -------- Background Colors End ----------- */
/* -------- Text Colors Start ----------- */
--primary-color: #1d273c;
--marker-color: #fff;
--tooltip-color: #454545;
--task-content-color: #fff;
--milestone-content-color: #333232;
/* btn colors */
--btn-primary-color: #fff;
--btn-normal-color: #000;
--btn-danger-color: #c11d1d;
/* loader color */
--loader-color: #d1ebfa;
--loader-after-color: #0093ff;
/* toastr color */
--toastr-color: #fff;
--toastr-p-color: #fff;
/* -------- Text Colors End ----------- */
/* -------- Border Colors Start ----------- */
--primary-border: #dddddd;
/* taskbar border */
--taskbar-border: #4e89cdf2;
--task-area-border: #0094ff;
--milestone-content-border: #e84855;
/* lightbox textarea */
--lightbox-border: #cecece;
/* link border */
--link-border: #ffa011;
--link-control-border: #929292;
}
.js-gantt-layout * {
box-sizing: border-box;
color: var(--primary-color);
-webkit-user-select: none; /* Safari */
-moz-user-select: none; /* Firefox */
-ms-user-select: none; /* Internet Explorer */
user-select: none;
}
.js-gantt-d-flex {
display: flex ;
}
.js-gantt-d-none {
display: none ;
}
.js-gantt-d-block {
display: block ;
}
.js-gantt-border-left-none {
border-left: none ;
}
.js-gantt-layout {
width: 100%;
height: 100%;
position: relative;
background-color: var(--body-background);
border: 1px solid var(--primary-border);
}
.sidebar-head-cell-container,
.right-sidebar-head-cell-container {
height: 60px;
border-bottom: 1px solid var(--primary-border);
background-color: var(--header-background);
align-items: center;
position: relative;
width: 100%;
min-width: 100%;
position: sticky;
top: 0;
white-space: nowrap;
z-index: 1010;
}
.sidebar-head-cell-container .head-cell,
.right-sidebar-head-cell-container .right-head-cell {
text-align: center;
width: 80px;
padding: 0;
display: inline-block;
border-right: 1px solid var(--primary-border);
background-color: var(--header-cell-background);
height: 100%;
line-height: inherit;
white-space: nowrap;
overflow: hidden;
position: relative;
}
.js-gantt-calendar-cell {
text-align: center;
position: absolute;
border-right: 1px solid var(--primary-border);
}
.js-gantt-scale-cell {
position: absolute;
border-right: 1px solid var(--primary-border);
text-align: center;
}
.js-gantt-scale-row {
position: relative;
height: 29px;
background-color: var(--timeline-scale-background);
line-height: inherit;
width: 100%;
}
.js-gantt-scale-row:not(:nth-child(1)) {
border-top: 1px solid var(--primary-border);
}
.js-gantt-timeline-cell .js-gantt-scale {
overflow-x: hidden;
overflow-y: hidden;
position: sticky;
top: 0;
border-bottom: 1px solid var(--primary-border);
z-index: 1010;
}
.js-gantt-row-item {
align-items: center;
height: 50px;
line-height: inherit;
border-bottom: 1px solid var(--primary-border);
}
.js-gantt-cell-data {
white-space: nowrap;
border-right: 1px solid transparent;
}
.js-gantt-left-cell,
.js-gantt-right-sidebar-cell {
height: 100%;
}
.js-gantt-left-cell,
.js-gantt-right-sidebar-cell {
border-right: 1px solid var(--primary-border);
overflow: auto;
position: relative;
overflow-x: hidden;
}
.js-gantt-left-cell,
.js-gantt-right-sidebar-cell,
.js-gantt-timeline-cell {
scrollbar-width: thin;
scrollbar-color: transparent transparent;
scrollbar-width: none;
/* Internet Explorer */
-ms-overflow-style: none;
}
/* WebKit (Safari/Chrome) */
.js-gantt-left-cell::-webkit-scrollbar,
.js-gantt-right-sidebar-cell::-webkit-scrollbar,
.js-gantt-timeline-cell::-webkit-scrollbar {
width: 0;
height: 0;
}
.js-gantt-task-row {
height: 50px;
position: relative;
white-space: nowrap;
border-bottom: 1px solid var(--primary-border);
}
.js-gantt-task-cell {
width: 80px;
height: 100%;
position: absolute;
background-color: var(--timeline-cell-background);
border-right: 1px solid var(--primary-border);
/* border-left: 1px solid #ebebeb; */
}
.js-gantt-weekday-cell {
border-left: none;
}
.js-gantt-indent {
width: 20px;
height: inherit;
flex-grow: 0;
flex-shrink: 0;
}
.js-gantt-timeline-cell {
height: 100%;
overflow: auto;
}
.sidebar-head-cell-container .js-gantt-col-resizer-wrap,
.right-sidebar-head-cell-container .js-gantt-col-resizer-wrap {
cursor: col-resize;
position: absolute;
width: 13px;
margin-left: -7px;
top: 0px;
height: 60px;
}
.js-gantt-col-resizer-wrap .js-gantt-col-resizer {
background-color: var(--resizer-background);
height: 100%;
width: 1px;
margin: 0 auto;
}
.js-gantt-grid-resize-area {
height: 100%;
background-color: var(--grid-resize-area-background);
position: absolute;
top: 0;
left: 0;
z-index: 10;
border-right: 1px solid var(--primary-border);
z-index: 1060;
}
.js-gantt-layout .js-gantt-left-layout-resizer-wrap,
.js-gantt-layout .js-gantt-timeline-resizer-wrap {
cursor: e-resize;
position: absolute;
width: 13px;
margin-left: -7px;
top: 0px;
height: 100%;
z-index: 1060;
}
.js-gantt-left-layout-resizer-wrap .js-gantt-left-layout-resizer,
.js-gantt-timeline-resizer-wrap .js-gantt-timeline-resizer {
background-color: var(--resizer-background);
height: 100%;
width: 1px;
margin: 0 auto;
}
.js-gantt-left-layout-resizer-wrap .js-gantt-left-layout-resizer.resizing,
.js-gantt-timeline-resizer-wrap .js-gantt-timeline-resizer.resizing {
--resizer-background: #218eed;
}
.js-gantt-grid-data {
width: 100%;
min-width: 100%;
}
.js-gantt-grid-data .js-gantt-row-item {
transition: background-color 0.2s ease-in-out;
}
.js-gantt-grid-data .js-gantt-row-item {
background-color: var(--row-item-background);
}
.js-gantt-grid-data .js-gantt-row-item:hover {
cursor: pointer;
background-color: var(--row-item-hover-background);
}
.js-gantt-weekend-cell {
background-color: var(--weekend-cell-background);
/* border-left: 1px solid #ebebeb; */
}
/* .js-gantt-selected {
background-color: var(--selected-background);
} */
.js-gantt-selected > div {
background-color: var(--selected-background);
}
.js-gantt-timeline-data {
position: relative;
overflow: hidden;
}
.js-gantt-marker-today,
.js-gantt-marker-area .js-gantt-marker {
height: 100%;
width: 2px;
top: 0;
position: absolute;
text-align: center;
background-color: var(--marker-background);
box-sizing: border-box;
z-index: 1009;
transition: background-color 0.2s ease-in-out;
}
.js-gantt-marker-today:hover {
background-color: var(--marker-hover-background);
cursor: default;
}
.js-gantt-marker-today-text {
padding: 5px;
background: inherit;
color: #fff;
position: absolute;
font-size: 12px;
line-height: 12px;
opacity: 0.8;
}
.js-gantt-tooltip {
padding: 10px;
position: fixed; /* previous value :- absolute */
z-index: 1080;
white-space: nowrap;
background-color: var(--tooltip-background);
font-size: 8pt;
color: var(--tooltip-color);
border-color: #b3b3b3;
line-height: 120%;
box-shadow: rgba(100, 100, 111, 0.4) 0px 7px 29px 0px;
max-width: calc(100vw - 30px);
overflow: hidden;
text-overflow: ellipsis;
}
.js-gantt-tooltip * {
color: var(--tooltip-color);
}
.js-gantt-bars-area {
width: 100%;
position: absolute;
top: 0;
left: 0;
}
.js-gantt-bar-task {
position: absolute;
z-index: 1007;
height: 40px;
line-height: inherit;
background-color: var(--taskbar-child-background);
border: 1px solid var(--taskbar-border);
border-radius: 3px;
text-align: center;
}
.js-gantt-bar-task.js-gantt-bar-parent-task {
height: 40px;
line-height: inherit;
background-color: var(--taskbar-background);
border: 1px solid var(--taskbar-border);
}
.js-gantt-bar-task-content {
height: 100%;
width: 100%;
line-height: inherit;
position: absolute;
top: 0;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
color: var(--task-content-color);
cursor: pointer;
}
.js-gantt-bar-task:hover .js-gantt-task-drag-left,
.js-gantt-bar-task:hover .js-gantt-task-drag-right {
display: block;
}
.js-gantt-task-drag-left,
.js-gantt-task-drag-right {
position: absolute;
height: 100%;
width: 8px;
z-index: 1008;
cursor: w-resize;
background-color: transparent;
display: none;
}
.js-gantt-task-drag-left {
left: -7px;
}
.js-gantt-task-drag-right {
right: -7px;
}
.js-gantt-cell {
padding: 0 6px;
overflow: hidden;
white-space: nowrap;
flex-grow: 0;
flex-shrink: 0;
height: inherit;
box-sizing: border-box;
}
.js-gantt-lightbox {
background: var(--lightbox-background);
color: var(--primary-color);
padding: 10px;
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
z-index: 1070;
border-radius: 4px;
min-width: 400px;
box-shadow: rgba(0, 0, 0, 0.35) 0px 5px 15px;
}
.js-gantt-lightbox-backdrop {
position: fixed;
top: 0;
left: 0;
background-color: var(--backdrop-background);
width: 100vw;
height: 100vh;
z-index: 1060;
}
.js-gantt-lightbox .js-gantt-task-title {
margin-bottom: 5px;
}
.js-gantt-lightbox span,
.js-gantt-lightbox p {
color: var(--primary-color);
}
.js-gantt-lightbox textarea {
color: var(--primary-color);
border: 1px solid var(--primary-border);
background-color: var(--textarea-background);
border-radius: 4px;
margin: 5px 0;
padding: 5px;
resize: none;
width: 100%;
}
.js-gantt-lightbox .lightbox-footer button {
color: var(--btn-primary-color);
padding: 8px 15px;
border: none;
cursor: pointer;
border-radius: 4px;
}
.js-gantt-lightbox .lightbox-footer button[role="save"] {
background-color: var(--btn-primary-background);
margin-right: 10px;
}
.js-gantt-lightbox .lightbox-footer button[role="cancel"] {
background-color: var(--btn-normal-background);
color: var(--btn-normal-color);
border: 1px solid var(--primary-border);
}
.js-gantt-lightbox .lightbox-footer button[role="delete"] {
background-color: var(--btn-danger-background);
float: right;
}
.js-gantt-fullScreen {
height: 100vh ;
width: 100vw ;
position: absolute;
top: 0;
left: 0;
z-index: 1;
}
.task-dragging {
opacity: 0.5;
z-index: 9999;
}
.js-gantt-tree-icon {
cursor: pointer;
width: 20px;
background-repeat: no-repeat;
background-position: 50%;
flex-grow: 0;
flex-shrink: 0;
}
.js-gantt-tree-close {
background-image: url('data:image/svg+xml,<svg width="6" height="10" viewBox="0 0 6 10" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1.2947 0.219725C1.07551 0.00293446 0.750024 -0.0567913 0.466392 0.0555267C0.18335 0.174359 0 0.450875 0 0.758994L0 9.24099C0 9.54731 0.182767 9.82382 0.466392 9.94093C0.750024 10.0604 1.07551 9.99523 1.2947 9.77674L5.53596 5.53548C5.82974 5.2381 5.82974 4.75856 5.53596 4.46118L1.2947 0.219725Z" fill="%23A2A4AB"/></svg>');
}
.js-gantt-tree-open {
background-image: url('data:image/svg+xml,<svg width="11" height="6" viewBox="0 0 11 6" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M10.6584 1.41653C10.8752 1.19733 10.935 0.871851 10.8226 0.588218C10.7038 0.305177 10.4273 0.121826 10.1192 0.121826L1.63719 0.121826C1.33087 0.121826 1.05435 0.304593 0.937241 0.588218C0.817806 0.871851 0.882942 1.19734 1.10144 1.41653L5.34269 5.65779C5.64007 5.95157 6.11962 5.95157 6.417 5.65779L10.6584 1.41653Z" fill="%23A2A4AB"/></svg>');
}
/* custom scroller */
#js-gantt-ver-scroll-cell {
height: 100%;
width: 19px;
flex-grow: 0;
flex-shrink: 0;
background-color: var(--scroll-background);
position: relative;
left: 0;
right: 0;
}
#js-gantt-hor-scroll-cell {
width: 100%;
position: absolute;
top: 100%;
left: 0;
height: 1px;
background-color: var(--scroll-background);
}
.js-gantt-fullScreen #js-gantt-hor-scroll-cell {
margin-top: -17px;
}
.js-gantt-hor-scroll {
width: 100%;
background-color: transparent;
height: 19px;
overflow-x: auto;
overflow-y: hidden;
position: absolute;
left: 0;
z-index: 1;
}
.js-gantt-hor-scroll > div {
height: 1px;
}
.js-gantt-ver-scroll {
width: 100%;
overflow-y: auto;
overflow-x: hidden;
position: absolute;
}
.js-gantt-blank {
width: 20px;
height: inherit;
flex-grow: 0;
flex-shrink: 0;
}
.js-gantt-marker-area {
position: absolute;
height: 100%;
top: 0;
}
.js-gantt-marker-area .js-gantt-marker .js-gantt-marker-content {
padding: 5px;
background: inherit;
color: var(--marker-color);
position: absolute;
font-size: 12px;
line-height: 12px;
opacity: 0.8;
}
.js-gantt-marker-area .js-gantt-marker:hover {
background-color: var(--marker-hover-background);
}
.js-gantt-selected-task-bar {
box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.5);
}
.js-gantt-bar-milestone.js-gantt-selected-task-bar {
box-shadow: none;
}
.js-gantt-bar-milestone.js-gantt-selected-task-bar .js-gantt-bar-task-content {
box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.5);
}
/* arrow links to connect tasks */
.js-gantt-links-area {
position: absolute;
left: 0;
top: 0;
width: 100%;
}
.js-gantt-task-link {
position: absolute;
cursor: pointer;
z-index: 1006;
}
.js-gantt-link-line {
position: absolute;
background-color: var(--link-background);
transition: box-shadow 0.2s ease-in-out;
}
.js-gantt-task-link:not([link-type="2"], [link-type="3"])
.js-gantt-link-line:last-child:after {
content: " ";
height: 0;
position: absolute;
width: 0;
top: -6px;
left: calc(100% - 6px);
border: 7px solid transparent;
border-left-color: var(--link-border);
}
.js-gantt-task-link[link-type="2"] .js-gantt-link-line:last-child:before,
.js-gantt-task-link[link-type="3"] .js-gantt-link-line:last-child:before {
content: " ";
height: 0;
position: absolute;
width: 0;
top: -6px;
left: -7px;
border: 7px solid transparent;
border-right-color: var(--link-border);
}
.js-gantt-hor-link-line {
height: 2px;
}
.js-gantt-ver-link-line {
width: 2px;
}
.ver-inner-line {
height: 100%;
width: 10px;
margin-left: -4px;
}
.hor-inner-line {
height: 10px;
width: 100%;
margin-top: -4px;
}
.js-gantt-task-link:hover .js-gantt-link-line {
box-shadow: 0 0 5px 0 #ffa011;
}
.js-gantt-link-control div {
display: none;
cursor: pointer;
box-sizing: border-box;
position: relative;
top: 50%;
margin-top: -7.5px;
vertical-align: middle;
border: 1px solid var(--link-control-border);
border-radius: 6.5px;
height: 13px;
width: 13px;
background-color: var(--link-control-background);
}
.js-gantt-link-control {
width: 20px;
position: absolute;
top: 0;
height: 100%;
line-height: inherit;
z-index: 1007;
}
.js-gantt-link-control.js-gantt-right-point div {
margin-left: 7px;
}
.js-gantt-left-point {
left: -20px;
}
.js-gantt-right-point {
right: -20px;
}
.js-gantt-bar-task:hover .js-gantt-link-control div,
.js-gantt-bar-milestone:hover .js-gantt-link-control div {
display: block;
}
.js-gantt-bar-task.hovered .js-gantt-link-control div,
.js-gantt-bar-milestone.hovered .js-gantt-link-control div {
display: block;
}
.js-gantt-link-point:hover {
background-color: var(--link-control-hover-background);
}
.js-gantt-link-direction {
height: 0;
border: 0 none var(--link-border);
border-bottom-style: dashed;
border-bottom-width: 2px;
transform-origin: 0 0;
-ms-transform-origin: 0 0;
-webkit-transform-origin: 0 0;
z-index: 1008;
margin-left: 1px;
position: absolute;
}
.selected-target {
background-color: var(--selected-link-control-background) ;
}
/* zt Gantt loader */
.js-gantt-loader {
width: 55px;
height: 55px;
perspective: 1000px;
border-radius: 50%;
color: var(--loader-color);
z-index: 1100;
position: fixed;
top: 50%;
left: 50%;
transform: rotateZ(45deg) translate(-50%, -50%);
}
.js-gantt-loader:before,
.js-gantt-loader:after {
content: "";
display: block;
position: absolute;
top: 0;
left: 0;
width: inherit;
height: inherit;
border-radius: 50%;
transform: rotateX(70deg);
animation: 1s spin linear infinite;
}
.js-gantt-loader:after {
color: var(--loader-after-color);
transform: rotateY(70deg);
animation-delay: 0.4s;
}
.js-gantt-loader-drop {
background-color: var(--loder-backdrop-background);
position: fixed;
width: 100vw;
height: 100vh;
top: 0;
left: 0;
z-index: 1099;
}
@keyframes rotate {
0% {
transform: translate(-50%, -50%) rotateZ(0deg);
}
100% {
transform: translate(-50%, -50%) rotateZ(360deg);
}
}
@keyframes rotateccw {
0% {
transform: translate(-50%, -50%) rotate(0deg);
}
100% {
transform: translate(-50%, -50%) rotate(-360deg);
}
}
@keyframes spin {
0%,
100% {
box-shadow: 0.2em 0px 0 0px currentcolor;
}
12% {
box-shadow: 0.2em 0.2em 0 0 currentcolor;
}
25% {
box-shadow: 0 0.2em 0 0px currentcolor;
}
37% {
box-shadow: -0.2em 0.2em 0 0 currentcolor;
}
50% {
box-shadow: -0.2em 0 0 0 currentcolor;
}
62% {
box-shadow: -0.2em -0.2em 0 0 currentcolor;
}
75% {
box-shadow: 0px -0.2em 0 0 currentcolor;
}
87% {
box-shadow: 0.2em -0.2em 0 0 currentcolor;
}
}
.task-area {
position: absolute;
border: 1px solid var(--task-area-border);
background-color: var(--task-area-background);
z-index: 1008;
}
.js-gantt-task-progress-wrapper {
position: relative;
width: 100%;
height: 100%;
line-height: inherit;
overflow: hidden;
border-radius: 3px;
}
.js-gantt-task-progress {
height: 100%;
}
.js-gantt-task-progress-drag {
position: absolute;
cursor: ew-resize;
display: none;
background-repeat: no-repeat;
background-position: 50%;
width: 16px;
height: 10px;
bottom: -4px;
margin-left: -8px;
z-index: 1;
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAALCAYAAAB24g05AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MkY3Rjk0RUVDMkYzMTFFMkI1OThEQTA3ODU0OTkzMEEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MkY3Rjk0RUZDMkYzMTFFMkI1OThEQTA3ODU0OTkzMEEiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDoyRjdGOTRFQ0MyRjMxMUUyQjU5OERBMDc4NTQ5OTMwQSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoyRjdGOTRFREMyRjMxMUUyQjU5OERBMDc4NTQ5OTMwQSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PobPBzIAAADkSURBVHjaYpk2bRoDDsAExL1QdjEQ/8OmiAWHZk4gXqymqhQM4ty6fU8OSMUA8XdiDBAB4k0a6iqWRga6EKcwMQXduHlnL5DpB8Rv0J2JDFSA+JiOtgZcMwiA2CAxkBxUDVYDLEAKgIpV9XQ0MZwFEgPJAZnHoWpRDAgC4n2W5saiQKfjClQGkBxQDciL+6B6wAbkA/EqJwdrTkUFOQZCAKQGpBbIXA3SCzJggo+XK7OEuBgDsQCkFqgHrBfsBT5eHgZSAUwP2IBfv36TbABMDygdtK1Zv6UESLORaAbIhG6AAAMAKN8wE24DXWcAAAAASUVORK5CYII=");
}
.js-gantt-bar-task.js-gantt-bar-parent-task .js-gantt-task-progress {
background-color: var(--task-progress-background);
}
.js-gantt-bar-task.child-task .js-gantt-task-progress {
background-color: var(--child-task-progress-background);
}
.js-gantt-bar-task:hover .js-gantt-task-progress-drag {
display: block;
}
/* milestone css */
.js-gantt-bar-milestone {
position: absolute;
z-index: 1007;
height: 40px;
line-height: inherit;
background-color: transparent ;
border: 0px solid transparent ;
border-radius: 3px;
text-align: center;
margin-left: -10px;
}
.js-gantt-side-content {
height: 100%;
line-height: inherit;
position: absolute;
top: 0;
white-space: nowrap;
left: calc(100% + 22px);
color: var(--milestone-content-color);
cursor: pointer;
}
.js-gantt-bar-milestone .js-gantt-bar-task-content {
background-color: var(--milestone-content-background);
border: 1px solid var(--milestone-content-border);
border-radius: inherit;
box-sizing: border-box;
-moz-box-sizing: border-box;
transform: rotate(45deg);
}
.js-gantt-bar-milestone div {
visibility: visible;
}
/* toastr css start */
.js-gantt-toastr-area {
position: fixed;
z-index: 999999;
right: 5px;
top: 5px;
}
.js-gantt-toastr {
visibility: hidden;
min-width: 250px;
max-width: 350px;
background-color: #aaaaaa;
color: #fff;
border-radius: 3px;
padding: 16px;
margin: 5px;
font-size: 14px;
cursor: pointer;
opacity: 0.9;
transition: all 0.3s ease-in;
}
.js-gantt-toastr:hover {
opacity: 1;
-moz-box-shadow: 0 0 12px #000000;
-webkit-box-shadow: 0 0 12px #000000;
box-shadow: 0 0 12px #000000;
}
.js-gantt-toastr p {
color: #fff;
font-weight: 400;
margin: 0;
}
.js-gantt-toastr p:first-child {
font-weight: 800;
}
.js-gantt-toastr.js-gantt-toastr-success {
background-color: #51a351;
}
.js-gantt-toastr.js-gantt-toastr-error {
background-color: #bd362f;
}
.js-gantt-toastr.js-gantt-toastr-info {
background-color: #2f96b4;
}
.js-gantt-toastr.js-gantt-toastr-warning {
background-color: #f89406;
}
.js-gantt-toastr.js-gantt-toastr-show {
visibility: visible;
-webkit-animation: fadein 0.5s;
animation: fadein 0.5s;
}
.js-gantt-toastr.js-gantt-toastr-hide {
visibility: visible;
-webkit-animation: fadeout 0.5s;
animation: fadeout 0.5s;
}
@-webkit-keyframes fadein {
from {
margin-top: 0;
opacity: 0;
}
to {
margin-top: 5px;
opacity: 0.9;
}
}
@keyframes fadein {
from {
margin-top: 0;
opacity: 0;
}
to {
margin-top: 5px;
opacity: 0.9;
}
}
@-webkit-keyframes fadeout {
from {
margin-top: 5px;
opacity: 0.9;
}
to {
margin-top: 0;
opacity: 0;
}
}
@keyframes fadeout {
from {
margin-top: 5px;
opacity: 0.9;
}
to {
margin-top: 0;
opacity: 0;
}
}
/* toastr css end */
.js-gantt-task-color-picker {
visibility: hidden;
position: absolute;
right: 0;
top: 0;
height: 100%;
width: 50px;
margin-right: -50px;
}
.js-gantt-bar-task:hover .js-gantt-task-color-picker,
.js-gantt-bar-task:hover .js-gantt-task-color-picker input {
visibility: visible;
}
.js-gantt-task-color-picker input {
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
visibility: hidden;
width: 25px;
height: 100%;
background-color: transparent;
border: none;
cursor: pointer;
position: absolute;
top: 0;
}
.js-gantt-task-color-picker input::-webkit-color-swatch {
border-radius: 2px;
border: none;
}
.js-gantt-task-color-picker input::-moz-color-swatch {
border-radius: 2px;
border: none;
}
.js-gantt-bar-milestone .js-gantt-task-color-picker {
left: 0;
margin-left: -50px;
margin-right: 0;
}
.js-gantt-bar-milestone .js-gantt-task-color-picker input {
margin-left: -25px;
}
.head-cell .js-gantt-sort {
position: absolute;
right: 5px;
top: 50%;
width: 7px;
height: 13px;
background-repeat: no-repeat;
background-position: 50%;
transform: translateY(-50%);
}
.head-cell .js-gantt-sort.js-gantt-asc {
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAANCAYAAABlyXS1AAAARUlEQVR4nGNgQAKGxib/GbABkIS7b8B/DAUwCRiGK0CXwFBAb1DfP/U/LszwHwi2X7qFgUEArBtdAVwCBmAKMCSQFSDzAWXXaOHsXeqkAAAAAElFTkSuQmCC);
}
.head-cell .js-gantt-sort.js-gantt-desc {
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAANCAYAAABlyXS1AAAARUlEQVR42mNgQAL1/VP/M2ADIIntF2/9x1AAlrh0C47hCmA60DFYwX88gIFGwNDY5D8uDFbg7hvwHx2jmIBTAlkB0e4BAEjlaNtBWJPnAAAAAElFTkSuQmCC);
}
.js-gantt-inline-editor-wraper {
position: absolute;
}
.js-gantt-inline-editor-wraper > input,
.js-gantt-inline-editor-wraper > select {
height: 100%;
width: 100%;
}
.drop-area {
position: absolute;
z-index: -1;
width: 100%;
border: 1px solid var(--task-area-border);
background: var(--task-area-background);
transition: all 0.2s ease;
opacity: 0;
}
.js-gantt-timeline-data:has(.task-dragging) .drop-area {
z-index: 101;
opacity: 1;
}