Files
exchange-2.0/resources/assets/sass/modules/_calendar.scss
T
2020-10-16 10:12:19 +08:00

719 lines
13 KiB
SCSS
Vendored

/*------------------------------------------------------------------
[21. Calendar App]
*/
$cell-height : 80;
body.overflow-hidden{
overflow: hidden;
}
/*
Calendar
--------------------------------------------------
Header / .calendar-header
Years / .years .year
Months / .months
Weeks / .weeks-wrapper .week
Grid / .calendar-container
Events / .event-container
*/
.calendar{
height: 100%;
.drager{
overflow: hidden;
.scroll-element{
display: none;
}
}
&.month{
padding-left:5px;
.options .date{
margin-bottom: 22px;
}
.week-dragger{
display: none;
}
.calendar-container{
border-top: 1px solid $color-master-light;
padding-top: 0;
height:calc(100% - 169px);
.view .tble{
width: 100%;
.thead .tcell .weekday{
margin-left: 10px;
}
}
}
}
.calendar-header{
height: 43px;
background-color:$color-master-lightest;
line-height: 43px;
padding-left:60px;
& > .drager{
width:calc(100% - 141px);
border-right:1px solid rgba(0, 0, 0, 0.33);
line-height: 35px;
}
.years{
width: auto;
list-style: none;
white-space: nowrap;
margin-top: 5px;
.year{
display: inline-block;
width: 69px;
text-align: center;
white-space: nowrap;
font-family: "Segoe UI","Helvetica Neue", Helvetica, Arial, sans-serif;
& > a{
color: rgba(0, 0, 0, 0.5);
position: relative;
&.active{
color: #000;
}
&.has-event{
&:before{
position: absolute;
content: '\25CF';
width: 100%;
font-size: 8px;
line-height: 6px;
text-align: center;
color: rgba(0, 0, 0, 0.44);
}
}
}
}
}
}
.options{
padding-left:60px;
margin-top: 15px;
.months{
width: auto;
white-space: nowrap;
height: 43px;
line-height: 43px;
.month{
min-width: 30px;
max-width: 100px;
padding: 0 10px;
display: inline-block;
& > a{
position: relative;
color: rgba(0, 0, 0, 0.28);
&:hover{
color: rgba(0, 0, 0, 0.33);
}
&.active{
color: rgba(0, 0, 0, 1);
}
&.has-event{
&:before{
position: absolute;
content: '\25CF';
top: -6px;
width: 100%;
font-size: 8px;
line-height: 6px;
text-align: center;
color: rgba(0, 0, 0, 0.33);
}
}
}
}
}
.date{
margin-bottom: 20px;
}
}
.week-dragger{
border-bottom: 1px solid #e6e6e6;
margin-left:-20px;
}
.weeks-wrapper{
width: auto;
white-space: nowrap;
padding-left:10px;
padding-bottom: 12px;
margin-bottom: 5px;
margin-left: 20px;
.week{
display: inline-block;
position: relative;
padding-left:30px;
padding-right:30px;
&:first-child{
padding-left:4px;
}
&:last-child{
padding-left:0px;
}
&:before{
content: '';
position: absolute;
right:-20px;
bottom: 6px;
height: 20px;
width: 20px;
border-left:1px dotted rgba(0, 0, 0, 0.3);
}
&.active{
.day-wrapper .week-date{
.day{
& > a{
color: rgba(0, 0, 0, 0.6);
}
}
}
}
.day-wrapper{
display: inline-block;
.week-date{
text-align: center;
width: 21px;
height: 21px;
margin: 6px;
border-radius:99px;
&.current-date{
background-color: $color-master-light;
}
&.active{
background-color: $color-success;
.day > a{
font-weight: bold;
opacity: 1;
color: #fff;
}
}
.day > a{
letter-spacing: -0.01em;
}
}
.week-day{
text-align: center;
}
.day{
display: inline-block;
text-align: center;
position: relative;
z-index: 10;
padding: 1px 0;
font-size: 12px;
color: rgba(0, 0, 0, 0.3);
& > a{
position: relative;
width: 100%;
display: block;
text-align: center;
color: rgba(0, 0, 0, 0.3);
opacity: 0.7;
font-weight: 600;
&.has-event{
&:before{
position: absolute;
content: '\25CF';
top: -10px;
width: 100%;
font-size: 8px;
line-height: 6px;
text-align: center;
color:$color-success;
}
}
}
&.week-header{
text-transform: uppercase;
text-align: center;
font-size: 10px;
letter-spacing: 0.06em;
font-size: 10.5px;
}
}
}
}
}
.calendar-container{
position: relative;
height: calc(100% - 200px);
padding-top: 10px;
.view{
&.month-view{
.tble .trow .tcell{
position: relative;
height: 20%;
clear: both;
.cell-inner{
.holder{
position: absolute;
top: 37px;
left: 0;
right: 0;
bottom: 0;
}
}
&.active{
background: #fff;
.cell-inner{
background-color: #fef8e7;
}
}
&.not{
background-color: $color-master-lightest;
}
&.drop-target{
.cell-inner{
background-color: $color-master-lightest;
}
}
.cell-inner:only-child, .cell-inner{
height: 100%;
border-bottom: 1px solid $color-master-light;
position: relative;
}
.month-date{
position: relative;
text-align: center;
margin-top: 10px;
margin-right: 6px;
width: 25px;
height: 25px;
padding-top: 2px;
margin: 6px;
float: right;
display: block;
z-index:1;
border-radius:99px;
&.current-date{
background-color: $color-master-light;
}
&.active{
background-color: $color-success;
font-weight: bold;
opacity: 1;
color: #fff;
}
}
.event-container{
height: 30px;
position: relative !important;
min-height: 30px !important;
.event-inner{
padding: 8px;
}
}
}
.ghost-element{
height: 30px;
position: relative;
width: 100%;
}
.grid .tble{
height: 100%;
width: 100%;
}
.event-container .event-title{
font-size: 12px;
}
}
&.day-view .tble{
white-space: nowrap;
.thead{
white-space: nowrap;
overflow: hidden;
display: inline-block;
}
.tcell{
display: none;
max-width: 100%;
width: 100%;
&.active{
display: inline-block;
}
}
.trow{
display: block;
height: 80px;
.tcell.active{
background-color:#fff;
}
}
}
width: 100%;
height: 100%;
white-space: nowrap;
-moz-user-select: none; -webkit-user-select: none; -ms-user-select:none; user-select:none;
//DEFAULT WEEKVIEW WITH 30 min Slot
.tble{
display: inline-table;
width: calc(100% - 50px);
vertical-align: top;
position: relative;
.thead{
display: table-row;
width: 100%;
background: #fff;
.tcell{
padding: 10px;
height: $cell-height/2 * 1px;
position: relative;
.weekday{
font-size: 12px;
display: inline-block;
color: rgba(0, 0, 0, 0.51);
}
.weekdate{
font-size: 14px;
display: inline-block;
margin-right:10px;
color: rgba(0, 0, 0, 0.77);
}
&.active{
.weekdate, .weekday{
color:rgba(0, 0, 0, 1);
}
}
&:before{
content: '';
border-bottom: 1px solid $color-master-light;
width: calc(100% - 18px);
position: absolute;
bottom: 0;
}
.event-bubble{
display: inline-block;
width: 8px;
height: 8px;
margin-left:5px;
float:right;
border-radius:30px;
}
}
}
.tcell{
display: table-cell;
height: $cell-height * 1px;
max-width: 14.2857%;
width: 14.2857%;
}
.trow{
display:table-row;
.tcell{
background: #fff;
padding: 0 10px;
.cell-inner{
height: $cell-height/2 * 1px;
position: relative;
&:first-child{
border-bottom: 1px dotted $color-master-light;
}
&:last-child{
border-bottom: 1px solid $color-master-light;
}
&:only-child{
height: 40px;
border-bottom: 0;
}
}
&.active{
background-color: #fef8e7;
& > *{
border-color: rgba(0, 0, 0, 0.1) !important;
}
}
&.disable{
background-color: $color-master-lightest;
}
}
}
.loading{
left: 10px;
}
}
}
.loading{
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
background-color: rgba(255, 255, 255, 0.5);
z-index: 100;
}
.pgn-wrapper{
position: absolute;
}
.even-holder{
position: absolute;
display: table;
width: calc(100% - 50px);
height: calc(100% - 25px);
.event-placeholder{
height: 100%;
width: 14.2857%;
display: table-cell;
}
}
.event-container{
width: 100%;
height: 40px;
position: absolute !important;
z-index: 10;
overflow: hidden;
margin-bottom: 5px;
min-height: 40px !important;
transition:width .16s ease;
.event-inner{
padding: 15px;
&:before{
position: absolute;
width: 8px;
height: 8px;
content: '';
background-color: rgba(255, 255, 255,0.8);
border-radius: 999px;
right:14px;
top: 11px;
}
}
.time-wrap{
line-height: 12px;
text-align:left;
color: rgba(0, 0, 0, 0.77);
overflow: hidden;
text-overflow: ellipsis;
}
.event-start-time, .event-end-time{
font-size: 12px;
color: rgba(0, 0, 0, 0.44);
}
.event-title{
font-size: 14px;
line-height: 15px;
margin-bottom: 8px;
overflow: hidden;
text-overflow: ellipsis;
}
.resizable-handle{
position: absolute;
opacity: 1;
z-index: 3;
left: 0;
right: 0;
bottom: 0;
height: 8px;
overflow: hidden;
line-height: 8px;
font-size: 11px;
font-family: monospace;
text-align: center;
cursor: s-resize;
&:after {
content: "=";
color: rgba(0, 0, 0, 0.44);
}
}
&.dragging{
z-index: 100;
}
}
.grid{
display: block;
overflow: scroll;
height: calc(100% - 40px);
-webkit-overflow-scrolling: touch;
//Time Slots
&.slot-60{
.tble .trow .tcell .cell-inner{
height: $cell-height * 1px;
border-bottom: 1px solid $color-master-light;
}
}
&.slot-15{
.tble .trow .tcell {
height: 100/4 * 1px;
.cell-inner{
height: 100/4 * 1px;
border-bottom: 1px dotted $color-master-light;
&:last-child{
border-bottom: 1px solid $color-master-light;
}
}
}
.time-slot-wrapper .time-slot{
height: 100px;
}
}
}
.allday-cell{
height: $cell-height/2 * 1px;
display: inline-block;
width: 50px;
float:left;
}
}
.time-slot-wrapper{
display: inline-block;
width: 50px;
float:left;
height: 100%;
.time-slot{
display: block;
height: $cell-height*1px;
width: 100%;
background: #fff;
&:first-child{
span{
display: none;
}
}
& > span{
float:right;
font-size: 12px;
position: relative;
top: -15%;
color: rgba(0, 0, 0, 0.46);
font-weight: bold;
font-size: 11px;
letter-spacing: 0.06em;
font-size: 10.5px;
font-family: 'Montserrat';
right:5px;
}
}
}
}
.calendar-event{
width: 330px;
right:-330px;
.scrollable{
height: 100%;
}
}
.date-selector{
cursor: pointer;
}
/*
Responsive Util
*/
@media (max-width: 991px) {
.calendar{
background-color: #fff;
.calendar-header{
display: none;
}
.options{
margin-top:0;
padding-left:10px;
.months{
line-height: 21px;
padding-top: 14px;
}
.date{
margin-bottom: 10px;
}
}
.calendar-container {
height:100%;
.view.week-view .tble{
white-space: nowrap;
.thead{
white-space: nowrap;
overflow: hidden;
display: inline-block;
}
.tcell{
display: none;
max-width: 100%;
width: 100%;
&.active{
display: inline-block;
background-color:#fff;
}
}
.trow{
display: block;
height: 80px;
}
}
.view.month-view {
.allday-cell{
display: none;
}
.grid .tble{
padding-left: 0;
}
.tble {
.thead .tcell{
padding: 3px;
padding-top: 10px;
}
.trow .tcell{
padding: 0 6px;
}
}
.tble .trow .tcell .event-container{
@include border-radius(99px);
position: absolute !important;
height: 16px !important;
width: 16px !important;
min-height: 16px !important;
margin: 0 auto;
left: 0;
right: 0;
.event-inner{
display: none;
}
}
}
&.month{
height: calc(100% - 101px);
}
}
.weeks-wrapper{
margin-bottom: 0;
}
&.month{
padding-left:0;
.calendar-container{
height: calc(100% - 108px);
}
}
}
.calendar-event{
width: 240px;
right:-240px;
}
.months-drager{
margin-left:16px;
margin-right:36px;
border-right:1px solid $color-master-light;
padding-top: 0;
}
.horizontal-app-menu {
.months-drager{
margin-left:0;
margin-right:0;
width: 100%;
}
}
}
@media (max-width: 640px) {
.calendar.month .calendar-container .view .tble .thead .tcell {
text-align: center;
&:before{
width: 100%;
}
.weekday{
width: 11px;
overflow: hidden;
letter-spacing: 4px;
font-weight: bold;
}
}
}