@import "../../scss/variables"; /* classes attached to */ .fc-not-allowed { /* override events' custom cursors */ cursor: not-allowed; .fc-event { /* override events' custom cursors */ cursor: not-allowed; } } .fc-unselectable { -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; -webkit-touch-callout: none; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); } .fc { /* layout of immediate children */ display: flex; flex-direction: column; font-size: 1em; table { border-collapse: collapse; border-spacing: 0; font-size: 1em; /* normalize cross-browser */ } th { text-align: center; vertical-align: top; padding: 0; } td { vertical-align: top; padding: 0; } a[data-navlink] { cursor: pointer; &:hover { text-decoration: underline; } } } .fc-direction-ltr { direction: ltr; text-align: left; } .fc-direction-rtl { direction: rtl; text-align: right; } .fc-theme-standard { td, th { border: 1px solid #ebf1ff; } } /* for FF, which doesn't expand a 100% div within a table cell. use absolute positioning */ /* inner-wrappers are responsible for being absolute */ /* TODO: best place for this? */ .fc-liquid-hack { td, th { position: relative; } } @font-face { font-family: "fcicons"; src: url("data:application/x-font-ttf;charset=utf-8;base64,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") format("truetype"); font-weight: normal; font-style: normal; } .fc-icon { /* added for fc */ display: inline-block; width: 1em; height: 1em; text-align: center; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; /* use !important to prevent issues with browser extensions that change fonts */ font-family: "fcicons" !important; speak-as: none; font-style: normal; font-weight: normal; font-variant: normal; text-transform: none; line-height: 1; /* Better Font Rendering =========== */ -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } .fc-icon-chevron-left:before { content: "\e900"; } .fc-icon-chevron-right:before { content: "\e901"; } .fc-icon-chevrons-left:before { content: "\e902"; } .fc-icon-chevrons-right:before { content: "\e903"; } .fc-icon-minus-square:before { content: "\e904"; } .fc-icon-plus-square:before { content: "\e905"; } .fc-icon-x:before { content: "\e906"; } /* Lots taken from Flatly (MIT): https://bootswatch.com/4/flatly/bootstrap.css These styles only apply when the standard-theme is activated. When it's NOT activated, the fc-button classes won't even be in the DOM. */ .fc { .fc-button { border-radius: 0; overflow: visible; text-transform: none; margin: 0; font-family: inherit; font-size: inherit; line-height: inherit; &:focus { outline: 1px dotted; outline: 5px auto -webkit-focus-ring-color; } -webkit-appearance: button; &:not(:disabled) { cursor: pointer; } &::-moz-focus-inner { padding: 0; border-style: none; } display: inline-block; font-weight: 400; text-align: center; vertical-align: middle; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; background-color: transparent; border: 1px solid transparent; padding: 0.4em 0.65em; font-size: 1em; line-height: 1.5; border-radius: 0.25em; &:hover { text-decoration: none; } &:focus { outline: 0; } &:disabled { opacity: 0.65; } } .fc-button-primary { color: $white; background-color: $primary; border-color: $primary; &:hover { color: $white; background-color: #362e94; border-color: #362e94; } &:disabled { /* not DRY */ color: $white; background-color: $primary; border-color: $primary; } &:not(:disabled) { &:active, &.fc-button-active { color: $white; background-color: #399b71; border-color: #399b71; } } } .fc-button .fc-icon { vertical-align: middle; font-size: 1.5em; /* bump up the size (but don't make it bigger than line-height of button, which is 1.5em also) */ } .fc-button-group { position: relative; display: inline-flex; vertical-align: middle; > .fc-button { position: relative; flex: 1 1 auto; &:hover, &:focus, &:active, &.fc-button-active { z-index: 1; } } } } .fc-direction-ltr .fc-button-group > .fc-button { &:not(:first-child) { margin-left: -1px; border-top-left-radius: 0; border-bottom-left-radius: 0; } &:not(:last-child) { border-top-right-radius: 0; border-bottom-right-radius: 0; } } .fc-direction-rtl .fc-button-group > .fc-button { &:not(:first-child) { margin-right: -1px; border-top-right-radius: 0; border-bottom-right-radius: 0; } &:not(:last-child) { border-top-left-radius: 0; border-bottom-left-radius: 0; } } .fc { .fc-toolbar { display: flex; justify-content: space-between; align-items: center; &.fc-header-toolbar { margin-bottom: 1.5em; } &.fc-footer-toolbar { margin-top: 1.5em; } } .fc-toolbar-title { font-size: 1.75em; margin: 0; } } .fc-direction-ltr .fc-toolbar > * > :not(:first-child) { margin-left: 0.75em; /* space between */ } .fc-direction-rtl { .fc-toolbar > * > :not(:first-child) { margin-right: 0.75em; /* space between */ } .fc-toolbar-ltr { /* when the toolbar-chunk positioning system is explicitly left-to-right */ flex-direction: row-reverse; } } .fc { .fc-scroller { -webkit-overflow-scrolling: touch; position: relative; /* for abs-positioned elements within */ } .fc-scroller-liquid { height: 100%; } .fc-scroller-liquid-absolute { position: absolute; top: 0; right: 0; left: 0; bottom: 0; } .fc-scroller-harness { position: relative; overflow: hidden; direction: ltr; /* hack for chrome computing the scroller's right/left wrong for rtl. undone below... */ /* TODO: demonstrate in codepen */ } .fc-scroller-harness-liquid { height: 100%; } } .fc-direction-rtl .fc-scroller-harness > .fc-scroller { /* undo above hack */ direction: rtl; } .fc-theme-standard .fc-scrollgrid { border: 1px solid #ebf1ff; } .fc { .fc-scrollgrid { /* all tables (self included) */ width: 100%; /* because tables don't normally do this */ table-layout: fixed; table { /* all tables (self included) */ width: 100%; /* because tables don't normally do this */ table-layout: fixed; /* inner tables */ border-top-style: hidden; border-left-style: hidden; border-right-style: hidden; } border-collapse: separate; border-right-width: 0; border-bottom-width: 0; } .fc-scrollgrid-liquid { height: 100%; } .fc-scrollgrid-section { /* a */ height: 1px; > td { height: 1px; /* needs a height so inner div within grow. better than 0, for firefox */ } table { height: 1px; /* for most browsers, if a height isn't set on the table, can't do liquid-height within cells */ /* serves as a min-height. harmless */ } } .fc-scrollgrid-section-liquid { height: auto; > td { height: 100%; /* better than `auto`, for firefox */ } } .fc-scrollgrid-section > * { border-top-width: 0; border-left-width: 0; } .fc-scrollgrid-section-header > *, .fc-scrollgrid-section-footer > * { border-bottom-width: 0; } .fc-scrollgrid-section-body table, .fc-scrollgrid-section-footer table { border-bottom-style: hidden; /* head keeps its bottom border tho */ } .fc-scrollgrid-section-sticky > * { background: $white; background: var(--fc-page-bg-color, $white); position: -webkit-sticky; position: sticky; z-index: 2; /* TODO: var */ /* TODO: box-shadow when sticking */ } .fc-scrollgrid-section-header.fc-scrollgrid-section-sticky > * { top: 0; /* because border-sharing causes a gap at the top */ /* TODO: give safari -1. has bug */ } .fc-scrollgrid-section-footer.fc-scrollgrid-section-sticky > * { bottom: 0; /* known bug: bottom-stickiness doesn't work in safari */ } .fc-scrollgrid-sticky-shim { /* for horizontal scrollbar */ height: 1px; /* needs height to create scrollbars */ margin-bottom: -1px; } } .fc-sticky { /* no .fc wrap because used as child of body */ position: -webkit-sticky; position: sticky; } .fc { .fc-view-harness { flex-grow: 1; /* because this harness is WITHIN the .fc's flexbox */ position: relative; } .fc-view-harness-active > .fc-view { position: absolute; top: 0; right: 0; bottom: 0; left: 0; } .fc-col-header-cell-cushion { display: inline-block; /* x-browser for when sticky (when multi-tier header) */ padding: 2px 4px; } .fc-bg-event, .fc-non-business, .fc-highlight { /* will always have a harness with position:relative/absolute, so absolutely expand */ position: absolute; top: 0; left: 0; right: 0; bottom: 0; } .fc-non-business { background: #f7f6fd; } .fc-bg-event { background: rgb(4, 179, 114, 0.3); opacity: 0.3; .fc-event-title { margin: 0.5em; font-size: 0.85em; font-style: italic; } } .fc-highlight { background: rgba(188, 232, 241, 0.3); } .fc-cell-shaded, .fc-day-disabled { background: rgba(208, 208, 208, 0.3); } } /* link resets */ /* ---------------------------------------------------------------------------------------------------- */ a.fc-event { text-decoration: none; &:hover { text-decoration: none; } } /* cursor */ .fc-event { &[href], &.fc-event-draggable { cursor: pointer; } .fc-event-main { position: relative; z-index: 1; padding: 1px 6px; } } /* event text content */ /* ---------------------------------------------------------------------------------------------------- */ /* dragging */ /* ---------------------------------------------------------------------------------------------------- */ .fc-event-dragging { &:not(.fc-event-selected) { /* MOUSE */ opacity: 0.75; } &.fc-event-selected { /* TOUCH */ box-shadow: 0 2px 7px $black-3; } } /* resizing */ /* ---------------------------------------------------------------------------------------------------- */ /* (subclasses should hone positioning for touch and non-touch) */ .fc-event { .fc-event-resizer { display: none; position: absolute; z-index: 4; } &:hover .fc-event-resizer { display: block; } } .fc-event-selected { .fc-event-resizer { display: block; border-radius: 4px; border-radius: calc(var(--fc-event-resizer-dot-total-width, 8px) / 2); border-width: 1px; border-width: var(--fc-event-resizer-dot-border-width, 1px); width: 8px; width: var(--fc-event-resizer-dot-total-width, 8px); height: 8px; height: var(--fc-event-resizer-dot-total-width, 8px); border-style: solid; border-color: inherit; background: $white; background: var(--fc-page-bg-color, $white); &:before { content: ""; position: absolute; top: -20px; left: -20px; right: -20px; bottom: -20px; } } box-shadow: 0 2px 5px $black-2; &:before { content: ""; position: absolute; z-index: 3; top: 0; left: 0; right: 0; bottom: 0; } &:after { content: ""; background: rgba(0, 0, 0, 0.25); background: var(--fc-event-selected-overlay-color, rgba(0, 0, 0, 0.25)); position: absolute; z-index: 1; /* assume there's a border on all sides. overcome it. */ /* sometimes there's NOT a border, in which case the dimmer will go over */ /* an adjacent border, which looks fine. */ top: -1px; left: -1px; right: -1px; bottom: -1px; } } /* selecting (always TOUCH) */ /* ---------------------------------------------------------------------------------------------------- */ /* A HORIZONTAL event */ .fc-h-event { /* allowed to be top-level */ display: block; border: 1px solid $primary; border: 1px solid $primary; background-color: $primary; background-color: $primary; .fc-event-main { color: $white; color: var(--fc-event-text-color, $white); } .fc-event-main-frame { display: flex; /* for make fc-event-title-container expand */ } .fc-event-time { max-width: 100%; /* clip overflow on this element */ overflow: hidden; } .fc-event-title-container { /* serves as a container for the sticky cushion */ flex-grow: 1; flex-shrink: 1; min-width: 0; /* important for allowing to shrink all the way */ } .fc-event-title { display: inline-block; /* need this to be sticky cross-browser */ vertical-align: top; /* for not messing up line-height */ left: 0; /* for sticky */ right: 0; /* for sticky */ max-width: 100%; /* clip overflow on this element */ overflow: hidden; } &.fc-event-selected:before { /* expand hit area */ top: -10px; bottom: -10px; } } /* adjust border and border-radius (if there is any) for non-start/end */ .fc-direction-ltr .fc-daygrid-block-event:not(.fc-event-start), .fc-direction-rtl .fc-daygrid-block-event:not(.fc-event-end) { border-top-left-radius: 0; border-bottom-left-radius: 0; border-left-width: 0; } .fc-direction-ltr .fc-daygrid-block-event:not(.fc-event-end), .fc-direction-rtl .fc-daygrid-block-event:not(.fc-event-start) { border-top-right-radius: 0; border-bottom-right-radius: 0; border-right-width: 0; } /* resizers */ .fc-h-event:not(.fc-event-selected) .fc-event-resizer { top: 0; bottom: 0; width: 8px; width: var(--fc-event-resizer-thickness, 8px); } .fc-direction-ltr .fc-h-event:not(.fc-event-selected) .fc-event-resizer-start, .fc-direction-rtl .fc-h-event:not(.fc-event-selected) .fc-event-resizer-end { cursor: w-resize; left: -4px; left: calc(var(--fc-event-resizer-thickness, 8px) / -2); } .fc-direction-ltr .fc-h-event:not(.fc-event-selected) .fc-event-resizer-end, .fc-direction-rtl .fc-h-event:not(.fc-event-selected) .fc-event-resizer-start { cursor: e-resize; right: -4px; right: calc(var(--fc-event-resizer-thickness, 8px) / -2); } /* resizers for TOUCH */ .fc-h-event.fc-event-selected .fc-event-resizer { top: 50%; margin-top: -4px; margin-top: calc(var(--fc-event-resizer-dot-total-width, 8px) / -2); } .fc-direction-ltr .fc-h-event.fc-event-selected .fc-event-resizer-start, .fc-direction-rtl .fc-h-event.fc-event-selected .fc-event-resizer-end { left: -4px; left: calc(var(--fc-event-resizer-dot-total-width, 8px) / -2); } .fc-direction-ltr .fc-h-event.fc-event-selected .fc-event-resizer-end, .fc-direction-rtl .fc-h-event.fc-event-selected .fc-event-resizer-start { right: -4px; right: calc(var(--fc-event-resizer-dot-total-width, 8px) / -2); } :root { --fc-daygrid-event-dot-width: 8px; } .fc { .fc-popover { position: fixed; top: 0; /* for when not positioned yet */ box-shadow: 0 2px 6px rgba(0, 0, 0, 0.15); } .fc-popover-header { display: flex; flex-direction: row; justify-content: space-between; align-items: center; padding: 3px 4px; } .fc-popover-title { margin: 0 2px; } .fc-popover-close { cursor: pointer; opacity: 0.65; font-size: 1.1em; } } .fc-theme-standard { .fc-popover { border: 1px solid #ebf1ff; background: $white; } .fc-popover-header { background: rgba(208, 208, 208, 0.3); } } .fc-daygrid-day-frame:before, .fc-daygrid-day-events:before, .fc-daygrid-event-harness:before, .fc-daygrid-day-frame:after, .fc-daygrid-day-events:after, .fc-daygrid-event-harness:after { content: ""; clear: both; display: table; } .fc { .fc-daygrid-body { /* a
that wraps the table */ position: relative; z-index: 1; /* container inner z-index's because s can't do it */ } .fc-daygrid-day.fc-day-today { background-color: rgba(238, 241, 249); } .fc-daygrid-day-frame { position: relative; min-height: 100%; /* seems to work better than `height` because sets height after rows/cells naturally do it */ } .fc-daygrid-day-top { display: flex; flex-direction: row-reverse; } .fc-day-other .fc-daygrid-day-top { opacity: 0.3; } .fc-daygrid-day-number { position: relative; z-index: 4; padding: 4px; } .fc-daygrid-day-events { margin-top: 1px; /* needs to be margin, not padding, so that available cell height can be computed */ } .fc-daygrid-body-balanced .fc-daygrid-day-events { position: absolute; left: 0; right: 0; } .fc-daygrid-body-unbalanced .fc-daygrid-day-events { position: relative; /* for containing abs positioned event harnesses */ min-height: 2em; /* in addition to being a min-height during natural height, equalizes the heights a little bit */ } .fc-daygrid-body-natural .fc-daygrid-day-events { margin-bottom: 1em; } .fc-daygrid-event-harness { position: relative; } .fc-daygrid-event-harness-abs { position: absolute; top: 0; /* fallback coords for when cannot yet be computed */ left: 0; /* */ right: 0; /* */ } .fc-daygrid-bg-harness { position: absolute; top: 0; bottom: 0; } .fc-daygrid-day-bg { .fc-non-business { z-index: 1; } .fc-bg-event { z-index: 2; } .fc-highlight { z-index: 3; } } .fc-daygrid-event { z-index: 6; margin-top: 1px; &.fc-event-mirror { z-index: 7; } } .fc-daygrid-day-bottom { font-size: 0.85em; margin: 2px 3px 0; } .fc-daygrid-more-link { position: relative; z-index: 4; cursor: pointer; } .fc-daygrid-week-number { position: absolute; z-index: 5; top: 0; padding: 2px; min-width: 1.5em; text-align: center; background-color: rgba(208, 208, 208, 0.3); background-color: var(--fc-neutral-bg-color, rgba(208, 208, 208, 0.3)); color: #808080; color: var(--fc-neutral-text-color, #808080); } .fc-more-popover { z-index: 8; .fc-popover-body { min-width: 220px; padding: 10px; } } } .fc-direction-ltr .fc-daygrid-event.fc-event-start, .fc-direction-rtl .fc-daygrid-event.fc-event-end { margin-left: 2px; } .fc-direction-ltr .fc-daygrid-event.fc-event-end, .fc-direction-rtl .fc-daygrid-event.fc-event-start { margin-right: 2px; } .fc-direction-ltr .fc-daygrid-week-number { left: 0; border-radius: 0 0 3px 0; } .fc-direction-rtl .fc-daygrid-week-number { right: 0; border-radius: 0 0 0 3px; } .fc-liquid-hack .fc-daygrid-day-frame { position: static; /* will cause inner absolute stuff to expand to */ } .fc-daygrid-event { /* make root-level, because will be dragged-and-dropped outside of a component root */ position: relative; /* for z-indexes assigned later */ white-space: nowrap; border-radius: 3px; /* dot event needs this to when selected */ font-size: 0.85em; font-size: var(--fc-small-font-size, 0.85em); } /* --- the rectangle ("block") style of event --- */ .fc-daygrid-block-event { .fc-event-time { font-weight: bold; padding: 1px; } .fc-event-title { padding: 1px; } } /* --- the dot style of event --- */ .fc-daygrid-dot-event { display: flex; align-items: center; padding: 2px 0; .fc-event-title { flex-grow: 1; flex-shrink: 1; min-width: 0; /* important for allowing to shrink all the way */ overflow: hidden; font-weight: bold; } &:hover, &.fc-event-mirror { background: $black-1; } &.fc-event-selected:before { /* expand hit area */ top: -10px; bottom: -10px; } } .fc-daygrid-event-dot { /* the actual dot */ margin: 0 4px; box-sizing: content-box; width: 0; height: 0; border: 4px solid $primary; border: calc(var(--fc-daygrid-event-dot-width, 8px) / 2) solid var(--fc-event-border-color, $primary); border-radius: 4px; border-radius: calc(var(--fc-daygrid-event-dot-width, 8px) / 2); } /* --- spacing between time and title --- */ .fc-direction-ltr .fc-daygrid-event .fc-event-time { margin-right: 3px; } .fc-direction-rtl .fc-daygrid-event .fc-event-time { margin-left: 3px; } /* A VERTICAL event */ .fc-v-event { /* allowed to be top-level */ display: block; border: 1px solid $primary; border: 1px solid var(--fc-event-border-color, $primary); background-color: $primary; background-color: var(--fc-event-bg-color, $primary); .fc-event-main { color: $white; color: var(--fc-event-text-color, $white); height: 100%; } .fc-event-main-frame { height: 100%; display: flex; flex-direction: column; } .fc-event-time { flex-grow: 0; flex-shrink: 0; max-height: 100%; overflow: hidden; } .fc-event-title-container { /* a container for the sticky cushion */ flex-grow: 1; flex-shrink: 1; min-height: 0; /* important for allowing to shrink all the way */ } .fc-event-title { /* will have fc-sticky on it */ top: 0; bottom: 0; max-height: 100%; /* clip overflow */ overflow: hidden; } &:not(.fc-event-start) { border-top-width: 0; border-top-left-radius: 0; border-top-right-radius: 0; } &:not(.fc-event-end) { border-bottom-width: 0; border-bottom-left-radius: 0; border-bottom-right-radius: 0; } &.fc-event-selected:before { /* expand hit area */ left: -10px; right: -10px; } .fc-event-resizer-start { cursor: n-resize; } .fc-event-resizer-end { cursor: s-resize; } &:not(.fc-event-selected) { .fc-event-resizer { height: 8px; height: var(--fc-event-resizer-thickness, 8px); left: 0; right: 0; } .fc-event-resizer-start { top: -4px; top: calc(var(--fc-event-resizer-thickness, 8px) / -2); } .fc-event-resizer-end { bottom: -4px; bottom: calc(var(--fc-event-resizer-thickness, 8px) / -2); } } &.fc-event-selected { .fc-event-resizer { left: 50%; margin-left: -4px; margin-left: calc(var(--fc-event-resizer-dot-total-width, 8px) / -2); } .fc-event-resizer-start { top: -4px; top: calc(var(--fc-event-resizer-dot-total-width, 8px) / -2); } .fc-event-resizer-end { bottom: -4px; bottom: calc(var(--fc-event-resizer-dot-total-width, 8px) / -2); } } } .fc { .fc-timegrid .fc-daygrid-body { /* the all-day daygrid within the timegrid view */ z-index: 2; /* put above the timegrid-body so that more-popover is above everything. TODO: better solution */ } .fc-timegrid-divider { padding: 0 0 2px; /* browsers get confused when you set height. use padding instead */ } .fc-timegrid-body { position: relative; z-index: 1; /* scope the z-indexes of slots and cols */ min-height: 100%; /* fill height always, even when slat table doesn't grow */ } .fc-timegrid-axis-chunk { /* for advanced ScrollGrid */ position: relative; > table { position: relative; z-index: 1; /* above the now-indicator-container */ } } .fc-timegrid-slots { position: relative; z-index: 1; } .fc-timegrid-slot { /* a */ height: 1.5em; border-bottom: 0; &:empty:before { content: "\00a0"; /* make sure there's at least an empty space to create height for height syncing */ } } .fc-timegrid-slot-minor { border-top-style: dotted; } .fc-timegrid-slot-label-cushion { display: inline-block; white-space: nowrap; } .fc-timegrid-slot-label { vertical-align: middle; /* vertical align the slots */ } .fc-timegrid-axis-cushion, .fc-timegrid-slot-label-cushion { padding: 0 4px; } .fc-timegrid-axis-frame-liquid { height: 100%; /* will need liquid-hack in FF */ } .fc-timegrid-axis-frame { overflow: hidden; display: flex; align-items: center; /* vertical align */ justify-content: flex-end; /* horizontal align. matches text-align below */ } .fc-timegrid-axis-cushion { max-width: 60px; /* limits the width of the "all-day" text */ flex-shrink: 0; /* allows text to expand how it normally would, regardless of constrained width */ } } .fc-direction-ltr .fc-timegrid-slot-label-frame { text-align: right; } .fc-direction-rtl .fc-timegrid-slot-label-frame { text-align: left; } .fc-liquid-hack .fc-timegrid-axis-frame-liquid { height: auto; position: absolute; top: 0; right: 0; bottom: 0; left: 0; } .fc { .fc-timegrid-col.fc-day-today { background-color: rgba(255, 220, 40, 0.15); background-color: var(--fc-today-bg-color, rgba(255, 220, 40, 0.15)); } .fc-timegrid-col-frame { min-height: 100%; /* liquid-hack is below */ position: relative; } } .fc-liquid-hack .fc-timegrid-col-frame { height: auto; position: absolute; top: 0; right: 0; bottom: 0; left: 0; } .fc-media-screen { .fc-timegrid-cols { position: absolute; /* no z-index. children will decide and go above slots */ top: 0; left: 0; right: 0; bottom: 0; > table { height: 100%; } } .fc-timegrid-col-bg, .fc-timegrid-col-events, .fc-timegrid-now-indicator-container { position: absolute; top: 0; left: 0; right: 0; } .fc-timegrid-event-harness { position: absolute; /* top/left/right/bottom will all be set by JS */ } } .fc { .fc-timegrid-col-bg { z-index: 2; /* TODO: kill */ .fc-non-business { z-index: 1; } .fc-bg-event { z-index: 2; } .fc-highlight { z-index: 3; } } .fc-timegrid-bg-harness { position: absolute; /* top/bottom will be set by JS */ left: 0; right: 0; } .fc-timegrid-col-events { z-index: 3; /* child event segs have z-indexes that are scoped within this div */ } .fc-timegrid-now-indicator-container { bottom: 0; overflow: hidden; /* don't let overflow of lines/arrows cause unnecessary scrolling */ /* z-index is set on the individual elements */ } } .fc-direction-ltr .fc-timegrid-col-events { margin: 0 2.5% 0 2px; } .fc-direction-rtl .fc-timegrid-col-events { margin: 0 2px 0 2.5%; } .fc-timegrid-event-harness-inset .fc-timegrid-event { box-shadow: 0px 0px 0px 1px $white; box-shadow: 0px 0px 0px 1px var(--fc-page-bg-color, $white); } .fc-timegrid-event { &.fc-event-mirror { box-shadow: 0px 0px 0px 1px $white; box-shadow: 0px 0px 0px 1px var(--fc-page-bg-color, $white); } /* events need to be root */ font-size: 0.85em; font-size: var(--fc-small-font-size, 0.85em); border-radius: 3px; .fc-event-main { padding: 1px 1px 0; } .fc-event-time { white-space: nowrap; font-size: 0.85em; font-size: var(--fc-small-font-size, 0.85em); margin-bottom: 1px; } } .fc-timegrid-event-condensed { .fc-event-main-frame { flex-direction: row; overflow: hidden; } .fc-event-time:after { content: "\00a0-\00a0"; /* dash surrounded by non-breaking spaces */ } .fc-event-title { font-size: 0.85em; font-size: var(--fc-small-font-size, 0.85em); } } .fc-media-screen .fc-timegrid-event { position: absolute; /* absolute WITHIN the harness */ top: 0; bottom: 1px; /* stay away from bottom slot line */ left: 0; right: 0; } .fc { .fc-timegrid-now-indicator-line { position: absolute; z-index: 4; left: 0; right: 0; border-style: solid; border-color: red; border-color: var(--fc-now-indicator-color, red); border-width: 1px 0 0; } .fc-timegrid-now-indicator-arrow { position: absolute; z-index: 4; margin-top: -5px; /* vertically center on top coordinate */ border-style: solid; border-color: red; } } .fc-direction-ltr .fc-timegrid-now-indicator-arrow { left: 0; /* triangle pointing right. TODO: mixin */ border-width: 5px 0 5px 6px; border-top-color: transparent; border-bottom-color: transparent; } .fc-direction-rtl .fc-timegrid-now-indicator-arrow { right: 0; /* triangle pointing left. TODO: mixin */ border-width: 5px 6px 5px 0; border-top-color: transparent; border-bottom-color: transparent; } :root { --fc-list-event-dot-width: 10px; --fc-list-event-hover-bg-color: #f1f5ff; } .fc-theme-standard .fc-list { border: 1px solid #ebf1ff; } .fc { .fc-list-empty { background-color: #f6f6f9; height: 100%; display: flex; justify-content: center; align-items: center; /* vertically aligns fc-list-empty-inner */ } .fc-list-empty-cushion { margin: 5em 0; } .fc-list-table { width: 100%; border-style: hidden; /* kill outer border on theme */ tr > * { border-left: 0; border-right: 0; } } .fc-list-sticky .fc-list-day > * { /* the cells */ position: -webkit-sticky; position: sticky; top: 0; background: $white; background: var(--fc-page-bg-color, $white); /* for when headers are styled to be transparent and sticky */ } .fc-list-table { th { padding: 0; /* uses an inner-wrapper instead... */ } td { padding: 8px 14px; } } .fc-list-day-cushion { padding: 8px 14px; &:after { content: ""; clear: both; display: table; /* clear floating */ } } } .fc-theme-standard .fc-list-day-cushion { background-color: #f6f6f9; } .fc-direction-ltr .fc-list-day-text, .fc-direction-rtl .fc-list-day-side-text { float: left; } .fc-direction-ltr .fc-list-day-side-text, .fc-direction-rtl .fc-list-day-text { float: right; } /* make the dot closer to the event title */ .fc-direction-ltr .fc-list-table .fc-list-event-graphic { padding-right: 0; } .fc-direction-rtl .fc-list-table .fc-list-event-graphic { padding-left: 0; } .fc { .fc-list-event { &.fc-event-forced-url { cursor: pointer; /* whole row will seem clickable */ } &:hover td { background-color: #f1f5ff; color: $primary; } } .fc-list-event-graphic, .fc-list-event-time { white-space: nowrap; width: 1px; } .fc-list-event-dot { display: inline-block; box-sizing: content-box; width: 0; height: 0; border: 5px solid $primary; border: calc(var(--fc-list-event-dot-width, 10px) / 2) solid var(--fc-event-border-color, $primary); border-radius: 5px; border-radius: calc(var(--fc-list-event-dot-width, 10px) / 2); } .fc-list-event-title a { color: inherit; text-decoration: none; } .fc-list-event.fc-event-forced-url:hover a { text-decoration: underline; } } .fc-theme-bootstrap a:not([href]) { color: inherit; /* natural color for navlinks */ } #external-events { height: 10%; margin-top: 3.5rem; padding: 0 20px; border: 1px solid #ece9fb; background: #f7f6fd; text-align: left; border-radius: 5px; h4 { font-size: 16px; margin-top: 0; padding-top: 1em; } .fc-event { margin: 11px 0; cursor: move; } p { margin: 1.5em 0; font-size: 11px; color: #666; input { margin: 0; vertical-align: middle; } } } .fc-daygrid-day-number { color: $color; } @media (max-width: 669px) { .fc .fc-toolbar { display: block !important; text-align: center; } .fc-toolbar-chunk { margin: 17px 0; } } @media (max-width: 1200px) { #external-events { margin-top: 0 !important; margin-bottom: 1rem; } }