MINI Sh3ll
/* ------------------------------------------------------------------------------
*
* # FullCalendar
*
* Styles for fullcalendar.min.js - JavaScript event calendar
*
* ---------------------------------------------------------------------------- */
// Check if component is enabled
@if $enable-fullcalendar {
// Layout
// ------------------------------
// Container
.fc {
direction: ltr;
text-align: left;
}
// Events container
.fc-events-container {
background-color: $gray-100;
border: $border-width solid $border-color;
padding: map-get($spacers, 2);
@include border-radius($border-radius);
.fc-event {
// margin: 0;
padding: $fullcalendar-event-padding-y $fullcalendar-event-padding-x;
+ .fc-event {
margin-top: ($spacer / 2);
}
}
}
// Colors
// ------------------------------
// Default theme
.fc-unthemed {
th,
td,
thead,
tbody,
.fc-divider,
.fc-row,
.fc-content,
.fc-popover,
.fc-list-view,
.fc-list-heading td {
border-color: $table-border-color;
}
// Change bottom border color
thead,
thead td,
thead th {
border-bottom-color: $table-head-border-color;
}
// Popover
.fc-popover {
background-color: $popover-bg;
@include border-radius($border-radius);
}
// Highlight today's date
td.fc-today {
background-color: $fullcalendar-today-bg;
}
}
// When user is selecting cells
.fc-highlight {
background-color: $fullcalendar-highlight-bg;
}
// Default look for background events
.fc-bgevent {
background-color: $fullcalendar-bgevent-bg;
opacity: 0.3;
}
// Default look for non-business-hours areas
// Will inherit .fc-bgevent's styles
.fc-nonbusiness {
background-color: $fullcalendar-nonbusiness-bg;
}
// Icons
// ------------------------------
// Icon base
.fc-icon {
display: block;
user-select: none;
@include transition(all ease-in-out $component-transition-timer);
// Icon base
&:after {
display: inline-block;
font-family: $icon-font-family;
line-height: 1;
font-size: $icon-font-size;
vertical-align: middle;
position: relative;
top: ($font-size-base - $icon-font-size) / 2;
@include ll-font-smoothing();
}
}
// Arrow icons
.fc-icon-left-single-arrow:after {
@if $direction == 'LTR' {
content: '\e9c0';
}
@else {
content: '\e9c3';
}
.fc-rtl & {
content: '\e9c0';
}
}
.fc-icon-right-single-arrow:after {
@if $direction == 'LTR' {
content: '\e9c3';
}
@else {
content: '\e9c0';
}
.fc-rtl & {
content: '\e9c3';
}
}
.fc-icon-left-double-arrow:after {
@if $direction == 'LTR' {
content: '\000AB';
}
@else {
content: '\000BB';
}
.fc-rtl & {
content: '\000AB';
}
}
.fc-icon-right-double-arrow:after {
@if $direction == 'LTR' {
content: '\000BB';
}
@else {
content: '\000AB';
}
.fc-rtl & {
content: '\000BB';
}
}
// Close popover icon
.fc-icon-x:after {
content: '\ed6a';
font-size: $font-size-base;
display: block;
margin-top: ($line-height-computed - $font-size-base) / 2;
top: 0;
}
// Buttons
// ------------------------------
// Base, identical to .btn-light
.fc-button {
margin: 0;
padding: $btn-padding-y $btn-padding-x;
white-space: nowrap;
cursor: pointer;
@include transition(all ease-in-out $component-transition-timer);
// Focus state
&:focus {
outline: 0;
}
// Firefox has an annoying inner border
&::-moz-focus-inner {
margin: 0;
padding: 0;
}
}
//
// Button states
//
// Default
.fc-state-default {
color: $btn-light-color;
background-color: $btn-light-bg;
border: $btn-border-width solid $btn-light-border-color;
// Left rounded corders
&.fc-corner-left {
@include border-left-radius($btn-border-radius);
}
// Right rounded corners
&.fc-corner-right {
@include border-right-radius($btn-border-radius);
}
}
// Hover
.fc-state-down,
.fc-state-hover {
color: $btn-light-hover-color;
background-color: $btn-light-hover-bg;
border-color: $btn-light-hover-border-color;
}
// Active
.fc-state-active {
background-image: none;
color: $btn-light-active-color;
background-color: $btn-light-active-bg;
border-color: $btn-light-active-border-color;
}
// Disabled
.fc-state-disabled {
cursor: $cursor-disabled;
opacity: $btn-disabled-opacity;
}
//
// Button groups
//
.fc-button-group {
display: inline-block;
.fc & {
> * {
float: left;
margin: 0;
margin-left: -($btn-border-width);
}
> :first-child {
margin-left: 0;
}
}
}
// Popover
// ------------------------------
.fc-popover {
position: absolute;
border: $popover-border-width solid $popover-border-color;
z-index: $zindex-popover;
@include box-shadow($popover-box-shadow);
// Header
.fc-header {
padding: $popover-header-padding-y $popover-header-padding-x;
// Title
.fc-title {
float: left;
}
// Close button
.fc-close {
cursor: pointer;
float: right;
margin-left: $element-spacer-x;
}
}
// Unthemed
.fc-unthemed & {
.fc-header .fc-close {
opacity: 0.6;
@include transition(opacity ease-in-out $component-transition-timer);
// Hover state
@include hover {
opacity: 1;
}
}
}
}
// Misc reusable components
// ------------------------------
// Divider
.fc-divider {
border-style: solid;
border-width: $table-border-width;
}
hr.fc-divider {
height: 0;
margin: 0;
padding: 0;
border-width: $table-border-width 0;
}
// Clear helper
.fc-clear {
clear: both;
}
// Element positioning
.fc-bg,
.fc-bgevent-skeleton,
.fc-highlight-skeleton,
.fc-helper-skeleton {
position: absolute;
top: 0;
left: 0;
right: 0;
}
// General background
.fc-bg {
bottom: 0;
table {
height: 100%;
}
}
// Tables
// ------------------------------
.fc {
table {
width: 100%;
table-layout: fixed;
border-collapse: collapse;
border-spacing: 0;
box-sizing: border-box;
}
th,
td {
border-style: solid;
border-width: $table-border-width;
padding: 0;
vertical-align: top;
}
th {
padding: $table-cell-padding;
padding-left: 0;
padding-right: 0;
font-weight: $font-weight-semibold;
text-align: center;
}
td.fc-today {
border-style: double;
}
}
// Internal Nav Links
// ------------------------------
a[data-goto] {
cursor: pointer;
color: $body-color;
}
// Fake table rows
// ------------------------------
.fc-row {
border-style: solid;
border-width: 0;
position: relative;
table {
border-left: 0;
border-right: 0;
border-bottom: 0;
}
&:first-child table {
border-top: 0;
}
}
// Day row (used within the header and the DayGrid)
// ------------------------------
.fc-row {
// Main background
.fc-bg {
z-index: 1;
}
// Highlighting cells & background event skeleton
.fc-bgevent-skeleton,
.fc-highlight-skeleton {
bottom: 0;
table {
height: 100%;
}
td {
border-color: transparent;
border: 0;
}
}
.fc-bgevent-skeleton {
z-index: 2;
}
.fc-highlight-skeleton {
z-index: 3;
}
// Row content
.fc-content-skeleton,
.fc-helper-skeleton {
td {
background: none;
border-bottom: 0;
}
// Cells with events inside (so NOT the day number cell)
tbody td {
border-top: 0;
}
}
.fc-content-skeleton {
position: relative;
z-index: 4;
}
.fc-helper-skeleton {
z-index: 5;
}
}
// Scrolling container
// ------------------------------
.fc-scroller {
-webkit-overflow-scrolling: touch;
// Timing grids
> .fc-day-grid,
> .fc-time-grid {
position: relative;
width: 100%;
}
}
// Global event styles
// ------------------------------
.fc-event {
position: relative;
display: block;
border: $fullcalendar-event-border-width solid $fullcalendar-event-border-color;
color: $fullcalendar-event-color!important;
@include border-radius($border-radius);
// Give events with links and draggable events a hand mouse pointer
&[href],
&.fc-draggable {
cursor: pointer;
}
// Event background
.fc-bg {
z-index: 1;
}
// Event content
.fc-content {
position: relative;
z-index: 2;
}
//
// Resizer
//
// Base
.fc-resizer {
position: absolute;
z-index: 4;
display: none;
}
// Show resizer
&.fc-allow-mouse-resize .fc-resizer,
&.fc-selected .fc-resizer {
display: block;
}
// Hit area
&.fc-selected .fc-resizer:before {
content: "";
position: absolute;
z-index: $zindex-tooltip;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
@include size(($fullcalendar-event-padding-y * 2) + $line-height-computed);
}
//
// Event selection (only for touch devices)
//
.fc-event {
&.fc-selected {
z-index: $zindex-tooltip !important;
}
}
}
// Backgrounds
.fc-event,
.fc-event-dot {
background-color: $fullcalendar-event-bg;
}
// Override an event's custom cursor
.fc-not-allowed {
&,
.fc-event {
cursor: $cursor-disabled;
}
}
// Horizontal events
// ------------------------------
.fc-h-event {
//
// Resizer
//
// End
.fc-end-resizer {
cursor: e-resize;
right: -($fullcalendar-event-border-width);
}
// In selected event
&.fc-selected {
.fc-end-resizer {
margin-right: calc(-#{$fullcalendar-event-resizer-size-h / 2} - #{$fullcalendar-event-border-width});
}
}
// Resizer (mouse devices)
&.fc-allow-mouse-resize .fc-resizer {
width: $fullcalendar-event-padding-x;
top: -($fullcalendar-event-border-width);
bottom: -($fullcalendar-event-border-width);
}
// Resizer (touch devices)
&.fc-selected .fc-resizer {
border-width: $fullcalendar-event-border-width;
border-style: solid;
border-color: inherit;
background-color: $fullcalendar-event-color;
top: 50%;
transform: translateY(-50%);
@include border-radius($border-radius-circle);
@include size($fullcalendar-event-resizer-size-h);
}
}
// DayGrid events
// ------------------------------
.fc-day-grid-event {
margin: $fullcalendar-event-spacer;
margin-top: 0;
padding: $fullcalendar-event-padding-y $fullcalendar-event-padding-x;
// Darken selected event
&.fc-selected:after {
content: "";
position: absolute;
z-index: 1;
top: -($fullcalendar-event-border-width);
right: -($fullcalendar-event-border-width);
bottom: -($fullcalendar-event-border-width);
left: -($fullcalendar-event-border-width);
background-color: rgba($black, 0.15);
@include border-radius($border-radius);
}
// Force events to be one-line tall
> .fc-content {
@include text-truncate();
}
// Make the time semibold
.fc-time {
font-weight: $font-weight-semibold;
}
// Resizer
&.fc-allow-mouse-resize {
.fc-end-resizer {
margin-right: -($fullcalendar-event-border-width);
}
}
// Desktop view
@include media-breakpoint-up(md) {
// Time
.fc-time {
float: right;
padding-left: $element-spacer-x;
display: inline-block;
z-index: 2;
position: relative;
background-color: inherit;
}
// Title
.fc-title {
z-index: 1;
position: relative;
}
}
}
// Event limiting
// ------------------------------
// "More" link
a.fc-more {
margin: 0 $fullcalendar-event-spacer;
background-color: $gray-200;
display: block;
padding: $fullcalendar-event-padding-y $fullcalendar-event-padding-x;
text-align: center;
font-size: $font-size-sm;
line-height: $line-height-sm;
cursor: pointer;
@include border-radius($border-radius);
@include transition(all ease-in-out $component-transition-timer);
@include hover {
background-color: $gray-300;
}
}
// Rows and cells that are hidden because of a "more" link
.fc-limited {
display: none;
}
// Popover that appears when "more" link is clicked
.fc-day-grid .fc-row {
z-index: 1;
}
.fc-more-popover {
z-index: 2;
width: 15rem;
.fc-event-container {
padding: $popover-body-padding-y $popover-body-padding-x;
padding-top: 0;
}
}
// Utilities
// ------------------------------
// Now indicator
.fc-now-indicator {
position: absolute;
}
// Not selectable
.fc-unselectable {
-webkit-touch-callout: none;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
user-select: none;
}
// Toolbar
// ------------------------------
.fc-toolbar {
text-align: center;
// Header toolbar
&.fc-header-toolbar {
margin-bottom: $spacer;
}
// Footer toolbar
&.fc-footer-toolbar {
margin-top: $spacer;
}
// Title text
h2 {
margin: ((($btn-padding-y * 2) + $line-height-computed + rem-calc($btn-border-width * 2) - ($h5-font-size * $headings-line-height)) / 2) 0;
font-size: $h5-font-size;
}
// Left
.fc-left {
float: left;
width: 33%;
}
// Right
.fc-right {
float: right;
width: 33%;
.fc-button-group {
float: right;
}
}
// Left/right buttons
.fc-left,
.fc-right {
> .fc-button {
margin-left: $element-spacer-x;
}
}
// Center
.fc-center {
display: inline-block;
vertical-align: middle;
}
// The things within each left/right/center section
> * {
> * {
float: left;
}
// The first thing within each left/center/right section
> :first-child {
margin-left: 0;
}
}
// Button layering (for border precedence)
button {
position: relative;
&:focus {
z-index: 5;
}
}
// States
.fc-state-hover,
.ui-state-hover {
z-index: 2;
}
.fc-state-down {
z-index: 3;
}
.fc-state-active,
.ui-state-active {
z-index: 4;
}
}
// View structure
// ------------------------------
.fc-view-container {
border: $card-border-width solid $card-border-color;
@include border-radius($card-border-radius);
// Remove borders from table cells
.fc-view > table {
// Right border
th,
td {
border-right-width: 0;
}
// Left border from first cell
tr:first-child {
th:first-child,
td:first-child {
border-left-width: 0;
}
}
.fc-head {
tr:first-child {
> th,
> td {
border-top: 0;
}
}
}
.fc-head-container {
border-top: 0;
border-bottom: 0;
.fc-widget-header {
border-top: 0;
}
}
.fc-body {
> tr:first-child {
> th,
> td {
border-top: 0;
}
}
> tr:last-child {
> th,
> td {
border-bottom: 0;
}
}
.fc-row:first-child {
tr:first-child {
td,
th {
border-top: 0;
}
}
}
}
}
// Change box sizing
* {
&,
&:before,
&:after {
box-sizing: content-box;
}
}
}
// Scope positioning and z-index's
.fc-view {
&,
> table {
position: relative;
z-index: 1;
}
}
// Basic view
// ------------------------------
// Day row structure
.fc-basicWeek-view,
.fc-basicDay-view {
.fc-content-skeleton {
padding-top: $fullcalendar-event-spacer;
padding-bottom: $fullcalendar-event-spacer;
}
}
// Rows
.fc-basic-view tbody .fc-row {
min-height: 6em;
}
// A "rigid" row will take up a constant amount of height
// because content-skeleton is absolute
.fc-row.fc-rigid {
overflow: hidden;
.fc-content-skeleton {
position: absolute;
top: 0;
left: 0;
right: 0;
}
}
// Week and day number styling
.fc-basic-view {
// Week and day
.fc-day-number {
padding: $fullcalendar-event-spacer;
}
.fc-week-number {
color: $fullcalendar-weekday-color;
}
td.fc-week-number,
th.fc-week-number {
padding: $table-cell-padding;
background-color: $fullcalendar-weekday-bg;
}
// Week number only
td.fc-week-number {
font-size: $font-size-sm;
padding-top: $fullcalendar-event-spacer;
padding-bottom: $fullcalendar-event-spacer;
}
span.fc-week-number {
display: inline-block;
font-size: $font-size-sm;
padding: $fullcalendar-event-spacer;
}
// Day number only
.fc-day-number {
text-align: right;
}
// Top date
.fc-day-top {
// Day number
.fc-day-number {
float: right;
}
}
}
// Other month
.fc-other-month {
&.fc-day-top,
&.fc-day-number {
opacity: 0.3;
}
}
// AgendaView all-day area
// ------------------------------
.fc-agenda-view {
.fc-day-grid {
position: relative;
z-index: 2;
.fc-row {
min-height: 3em;
.fc-content-skeleton {
padding-top: $fullcalendar-event-spacer;
padding-bottom: 0;
}
}
}
}
// TimeGrid axis
// ------------------------------
.fc-axis {
text-align: right;
.fc & {
vertical-align: middle;
padding: 0 $fullcalendar-event-padding-x;
height: (($fullcalendar-event-padding-x * 2) + $line-height-computed);
white-space: nowrap;
}
}
// TimeGrid structure
// ------------------------------
// Base
.fc-time-grid-container,
.fc-time-grid {
position: relative;
z-index: 1;
}
// Grid
.fc-time-grid {
min-height: 100%;
table {
border: 0 hidden transparent;
}
> .fc-bg {
z-index: 1;
}
.fc-slats,
> hr {
position: relative;
z-index: 2;
}
.fc-content-col {
position: relative;
}
// Containers
.fc-content-skeleton {
position: absolute;
top: 0;
left: 0;
right: 0;
z-index: 3;
}
.fc-business-container {
position: relative;
z-index: 1;
}
.fc-bgevent-container {
position: relative;
z-index: 2;
}
.fc-highlight-container {
position: relative;
z-index: 3;
}
.fc-event-container {
position: relative;
z-index: 4;
}
.fc-now-indicator-line {
z-index: 5;
}
.fc-helper-container {
position: relative;
z-index: 6;
}
//
// TimeGrid slats
//
.fc-slats {
td {
border-bottom: 0;
}
.fc-minor td {
border-top-style: dotted;
}
}
//
// TimeGrid highlighting slots
//
// Container
.fc-highlight-container {
position: relative;
}
// Highlight
.fc-highlight {
position: absolute;
left: 0;
right: 0;
}
//
// TimeGrid event containment
//
// Containers
.fc-event-container,
.fc-bgevent-container {
position: relative;
}
// Blue event container
.fc-event {
box-shadow: 0 0 0 $fullcalendar-event-border-width $white;
}
// Events
.fc-event,
.fc-bgevent {
position: absolute;
z-index: 1;
padding: $fullcalendar-event-padding-x;
}
// Background event
.fc-bgevent {
left: 0;
right: 0;
}
}
// Generic Vertical Event
// ------------------------------
.fc-v-event {
// Events that are continuing from another day
&.fc-not-start {
@include border-top-radius(0);
}
// Replace space made by the top border with padding
&.fc-not-end {
@include border-bottom-radius(0);
}
}
// TimeGrid event styling
// ------------------------------
.fc-time-grid-event {
overflow: hidden;
// Need to allow touch resizers to extend outside event's bounding box
&.fc-selected {
overflow: visible;
// Hide semi-white background, to appear darker
.fc-bg {
display: none;
}
}
// Contains the time and title, but no bg and resizer
.fc-content {
position: relative;
overflow: hidden;
}
// Time font weight
.fc-time {
font-weight: $font-weight-semibold;
}
// Short mode, where time and title are on the same line
&.fc-short {
// Content
.fc-content {
white-space: nowrap;
}
// Time and title
.fc-time,
.fc-title {
display: inline-block;
vertical-align: top;
}
.fc-time {
&:before {
content: attr(data-start);
}
&:after {
content: "\000A0-\000A0";
}
span {
display: none;
}
}
.fc-title {
font-size: $font-size-sm;
padding: 0;
}
}
//
// Resizer
//
.fc-resizer {
}
// Cursor device
&.fc-allow-mouse-resize {
.fc-resizer {
z-index: 3;
left: 0;
right: 0;
bottom: 0;
overflow: hidden;
line-height: 1;
text-align: center;
cursor: s-resize;
background-color: rgba($black, 0.1);
// Small icon
&:after {
content: "=";
display: inline-block;
vertical-align: middle;
}
}
}
// Touch devide
&.fc-selected .fc-resizer {
border-width: $fullcalendar-event-border-width;
border-style: solid;
border-color: inherit;
background-color: $fullcalendar-event-color;
left: 50%;
bottom: 0;
margin-bottom: calc(-#{$fullcalendar-event-resizer-size-h / 2} - #{$fullcalendar-event-border-width});
transform: translateX(-50%);
@include size($fullcalendar-event-resizer-size-v);
@include border-radius($border-radius-circle);
}
}
// Now indicator
// ------------------------------
.fc-time-grid {
// Line
.fc-now-indicator-line {
border-top-width: $table-border-width;
left: 0;
right: 0;
}
// Arrow
.fc-now-indicator-arrow {
left: 0;
margin-top: -$tooltip-arrow-width;
border-width: $tooltip-arrow-width 0 $tooltip-arrow-width $tooltip-arrow-width;
border-top-color: transparent;
border-bottom-color: transparent;
}
}
// List view
// ------------------------------
// Event dot
.fc-event-dot {
display: inline-block;
@include size($badge-mark-size);
@include border-radius($border-radius-circle);
}
// List view base
.fc-list-view {
border-width: 0;
border-style: solid;
direction: ltr;
}
//
// Table resets
//
.fc-list-table {
.fc & {
table-layout: auto;
}
td {
border-width: $table-border-width 0 0;
padding: $table-cell-padding;
}
tr:first-child td {
border-top-width: 0;
}
}
//
// Day headings with the list
//
.fc-list-heading {
border-bottom-width: $table-border-width;
td {
font-weight: $font-weight-semibold;
}
}
.fc-list-heading-main {
float: left;
}
.fc-list-heading-alt {
float: right;
}
//
// Event list items
//
// Item
.fc-list-item {
td {
@include transition(all ease-in-out $component-transition-timer);
}
&.fc-has-url {
cursor: pointer;
}
// Change bg on hover
@include hover {
td {
background-color: $table-hover-bg;
}
}
}
// Markers
.fc-list-item-marker,
.fc-list-item-time {
white-space: nowrap;
width: 1px;
}
// Make the dot closer to the event title
.fc-list-item-marker {
padding-right: 0;
}
// Title
.fc-list-item-title a {
text-decoration: none;
color: inherit;
}
//
// Message when no events
//
.fc-list-empty-wrap2 {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
}
.fc-list-empty-wrap1 {
display: table;
@include size(100%);
}
.fc-list-empty {
display: table-cell;
vertical-align: middle;
text-align: center;
}
.fc-unthemed .fc-list-empty { /* theme will provide own background */
background-color: $fullcalendar-nonbusiness-bg;
}
// Responsive stuff
// ------------------------------
@include media-breakpoint-down(sm) {
.fc-toolbar {
.fc-left,
.fc-left > .fc-button,
.fc-right,
.fc-right > .fc-button,
.fc-left .fc-button-group,
.fc-right .fc-button-group {
float: none;
width: auto;
vertical-align: top;
}
.fc-left,
.fc-right {
display: block;
margin-bottom: ($spacer / 2);
}
}
}
}
OHA YOOOO