306 lines
5.9 KiB
CSS
306 lines
5.9 KiB
CSS
@import './dark.css';
|
|
|
|
:root {
|
|
--bar-color: #fff;
|
|
--bar-color-important: #94c4f4;
|
|
--bar-stroke: #fff;
|
|
--dark-stroke-color: #e0e0e0;
|
|
--stroke-color: #ebeef0;
|
|
--light-bg: #f5f5f5;
|
|
--light-border-color: #ebeff2;
|
|
--light-yellow: #f6e796;
|
|
--holiday-color: #f9fafa;
|
|
--text-muted: #666;
|
|
--text-grey: #98a1a9;
|
|
--text-light: #fff;
|
|
--text-dark: #111;
|
|
--progress: #ebeef0;
|
|
--handle-color: #dcdce4;
|
|
--handle-color-important: #94c4f4;
|
|
--light-blue: #c4c4e9;
|
|
--middle-blue: #62b2f9;
|
|
--dark-blue: #2c94ec;
|
|
}
|
|
|
|
.gantt-container {
|
|
line-height: 14.5px;
|
|
position: relative;
|
|
overflow: auto;
|
|
font-size: 12px;
|
|
height: 500px;
|
|
width: fit-content;
|
|
|
|
& .popup-wrapper {
|
|
position: absolute;
|
|
top: 0;
|
|
left: 0;
|
|
background: #171b1f;
|
|
padding: 10px;
|
|
border-radius: 5px;
|
|
width: max-content;
|
|
|
|
&.hidden {
|
|
opacity: 0 !important;
|
|
}
|
|
|
|
& .title {
|
|
margin-bottom: 5px;
|
|
text-align: -webkit-center;
|
|
text-align: center;
|
|
color: var(--text-light);
|
|
}
|
|
|
|
& .subtitle {
|
|
color: var(--text-grey);
|
|
}
|
|
|
|
& .pointer {
|
|
position: absolute;
|
|
height: 5px;
|
|
margin: 0 0 0 -5px;
|
|
border: 5px solid transparent;
|
|
border-bottom-color: rgba(0, 0, 0, 0.8);
|
|
}
|
|
}
|
|
|
|
& .grid-header {
|
|
background-color: #ffffff;
|
|
position: sticky;
|
|
top: 0;
|
|
left: 0;
|
|
z-index: 10;
|
|
}
|
|
|
|
& .lower-text,
|
|
& .upper-text {
|
|
text-anchor: middle;
|
|
color: var(--text-dark);
|
|
}
|
|
|
|
& .upper-header {
|
|
height: 40px;
|
|
}
|
|
|
|
& .lower-header {
|
|
height: 30px;
|
|
}
|
|
|
|
& .lower-text {
|
|
font-size: 14px;
|
|
position: absolute;
|
|
width: fit-content;
|
|
transform: translateX(-50%);
|
|
}
|
|
|
|
& .upper-text {
|
|
position: absolute;
|
|
width: fit-content;
|
|
font-weight: 500;
|
|
font-size: 16px;
|
|
}
|
|
|
|
& .current-upper {
|
|
position: fixed;
|
|
}
|
|
|
|
& .side-header {
|
|
position: fixed;
|
|
padding: 0 10px;
|
|
margin-right: 10px;
|
|
background: white;
|
|
line-height: 20px;
|
|
font-weight: 400;
|
|
}
|
|
|
|
& .today-button,
|
|
& .viewmode-select {
|
|
background: #f4f5f6;
|
|
text-align: -webkit-center;
|
|
text-align: center;
|
|
height: 25px;
|
|
border-radius: 8px;
|
|
border: none;
|
|
color: var(--text-dark);
|
|
padding: 4px 10px;
|
|
border-radius: 8px;
|
|
height: 25px;
|
|
}
|
|
|
|
& .viewmode-select {
|
|
outline: none !important;
|
|
padding: 4px 8px;
|
|
margin-right: 4px;
|
|
|
|
/* -webkit-appearance: none; */
|
|
/* -moz-appearance: none; */
|
|
text-indent: 1px;
|
|
text-overflow: '';
|
|
}
|
|
|
|
& .date-highlight {
|
|
background-color: var(--progress);
|
|
border-radius: 12px;
|
|
position: absolute;
|
|
display: none;
|
|
}
|
|
|
|
& .current-highlight {
|
|
position: absolute;
|
|
background: var(--dark-blue);
|
|
width: 1px;
|
|
}
|
|
|
|
& .current-date-highlight {
|
|
background: var(--dark-blue);
|
|
color: var(--text-light);
|
|
padding: 4px 8px;
|
|
border-radius: 200px;
|
|
}
|
|
}
|
|
|
|
.gantt {
|
|
user-select: none;
|
|
-webkit-user-select: none;
|
|
position: absolute;
|
|
|
|
& .grid-background {
|
|
fill: none;
|
|
}
|
|
|
|
& .grid-row {
|
|
fill: #ffffff;
|
|
}
|
|
|
|
& .row-line {
|
|
stroke: var(--light-border-color);
|
|
}
|
|
|
|
& .tick {
|
|
stroke: var(--stroke-color);
|
|
stroke-width: 0.4;
|
|
|
|
&.thick {
|
|
stroke: var(--dark-stroke-color);
|
|
stroke-width: 0.7;
|
|
}
|
|
}
|
|
|
|
& .holiday-highlight {
|
|
fill: var(--holiday-color);
|
|
}
|
|
|
|
& .arrow {
|
|
fill: none;
|
|
stroke: #9fa9b1;
|
|
stroke-width: 1;
|
|
}
|
|
|
|
& .bar-wrapper .bar {
|
|
fill: var(--bar-color);
|
|
stroke: var(--bar-stroke);
|
|
stroke-width: 0;
|
|
transition: stroke-width 0.3s ease;
|
|
}
|
|
|
|
& .bar-progress {
|
|
fill: var(--progress);
|
|
}
|
|
|
|
& .bar-expected-progress {
|
|
fill: var(--light-blue);
|
|
}
|
|
|
|
& .bar-invalid {
|
|
fill: transparent;
|
|
stroke: var(--bar-stroke);
|
|
stroke-width: 1;
|
|
stroke-dasharray: 5;
|
|
|
|
& ~ .bar-label {
|
|
fill: var(--text-light);
|
|
}
|
|
}
|
|
|
|
& .bar-label {
|
|
fill: var(--text-dark);
|
|
dominant-baseline: central;
|
|
font-family: Helvetica;
|
|
font-size: 13px;
|
|
font-weight: 400;
|
|
|
|
&.big {
|
|
fill: var(--text-dark);
|
|
text-anchor: start;
|
|
}
|
|
}
|
|
|
|
& .bar-wrapper.important {
|
|
& .bar {
|
|
fill: var(--bar-color-important);
|
|
}
|
|
|
|
& .bar-progress {
|
|
fill: var(--dark-blue);
|
|
}
|
|
|
|
& .bar-label {
|
|
fill: var(--text-light);
|
|
}
|
|
|
|
& .handle {
|
|
fill: var(--handle-color-important);
|
|
}
|
|
|
|
& .handle.progress {
|
|
fill: var(--text-light);
|
|
}
|
|
}
|
|
|
|
& .handle {
|
|
fill: var(--handle-color);
|
|
cursor: ew-resize;
|
|
opacity: 0;
|
|
visibility: hidden;
|
|
transition: opacity 0.3s ease;
|
|
}
|
|
|
|
& .handle.progress {
|
|
fill: var(--text-muted);
|
|
}
|
|
|
|
& .bar-wrapper {
|
|
cursor: pointer;
|
|
|
|
&.active {
|
|
& .handle {
|
|
visibility: visible;
|
|
opacity: 1;
|
|
}
|
|
}
|
|
|
|
& .bar {
|
|
-webkit-filter: drop-shadow(3px 3px 2px rgba(0, 0, 0, 0.7));
|
|
filter: drop-shadow(0 0 2px rgba(17, 43, 66, 0.16));
|
|
border-radius: 3px;
|
|
}
|
|
|
|
& .bar.safari {
|
|
outline: 1px solid black;
|
|
}
|
|
|
|
&:hover {
|
|
.bar {
|
|
transition: transform 0.3s ease;
|
|
}
|
|
|
|
.date-highlight {
|
|
display: block;
|
|
}
|
|
}
|
|
}
|
|
|
|
& .hide {
|
|
display: none;
|
|
}
|
|
}
|