Панель управления сверстанная и с встроенным jQuery.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

995 lines
14 KiB

3 years ago
/* ------------------------------------------------------------------------------
*
* # FullCalendar
*
* A JavaScript event calendar. Customizable and open source
*
* Version: 1.2
* Latest update: Mar 10, 2016
*
* ---------------------------------------------------------------------------- */
// Layout
// ------------------------------
// Container
.fc {
direction: ltr;
text-align: left;
}
// Calendar view
.fc-view {
> table {
min-width: @screen-sm;
}
}
// Events container
.fc-events-container {
background-color: #fcfcfc;
border: 1px solid @panel-inner-border;
padding: 10px;
border-radius: @border-radius-base;
.fc-event {
margin: 0;
padding: 4px @padding-small-horizontal;
+ .fc-event {
margin-top: 10px;
}
}
}
// Colors
// ------------------------------
// Default theme
.fc-unthemed {
th,
td,
hr,
thead,
tbody,
.fc-row,
.fc-popover {
border-color: @panel-default-border;
}
// Change bottom border color
thead,
thead td,
thead th {
border-bottom-color: @table-border-highlight;
}
// Horizontal rule
hr {
background-color: #f5f5f5;
}
// Popover
.fc-popover {
background-color: #fff;
border-radius: @border-radius-base;
.fc-header {
background-color: #f5f5f5;
}
}
// Highlight today's date
.fc-today {
background-color: @color-success-50;
}
}
// When user is selecting cells
.fc-highlight {
background-color: #e5e5e5;
.opacity(0.3);
}
// Default look for background events
.fc-bgevent {
background-color: @color-success-300;
.opacity(0.3);
}
// Default look for non-business-hours areas
.fc-nonbusiness {
background-color: #ccc;
}
// Icons
// ------------------------------
// Icon base
.fc-icon {
display: block;
// Icon base
&:after {
display: inline-block;
font-family: "icomoon";
line-height: 1;
font-size: @icon-font-size;
vertical-align: middle;
position: relative;
top: -1px;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
}
// Arrow icons
.fc-icon-left-single-arrow:after {
content: "\e9c0";
}
.fc-icon-right-single-arrow:after {
content: "\e9c3";
}
.fc-icon-left-double-arrow:after {
content: "\000AB";
}
.fc-icon-right-double-arrow:after {
content: "\000BB";
}
// X icon
.fc-icon-x:after {
content: "\ed6b";
font-size: @font-size-small;
display: block;
}
// Buttons
// ------------------------------
// Base, identical to .btn-default
.fc-button {
margin: 0;
border: 1px solid @btn-default-border;
padding: @padding-base-vertical @padding-base-horizontal;
white-space: nowrap;
cursor: pointer;
outline: 0;
// Firefox has an annoying inner border
&::-moz-focus-inner {
margin: 0;
padding: 0;
}
}
//
// Button states
//
// Default
.fc-state-default {
border: 1px solid @btn-default-border;
background-color: @btn-default-bg;
&.fc-corner-left {
.border-left-radius(@border-radius-base);
}
&.fc-corner-right {
.border-right-radius(@border-radius-base);
}
}
// Hover
.fc-state-hover {
background-color: #f8f8f8;
}
// Active
.fc-state-down,
.fc-state-active {
background-color: #f5f5f5;
.fc-button& {
border-color: @btn-default-border;
.box-shadow(0 1px 3px fade(#000, 5%) inset);
}
}
// Disabled
.fc-state-disabled {
color: @text-muted;
cursor: @cursor-disabled;
.opacity(0.65);
.box-shadow(none);
}
//
// Button groups
//
.fc-button-group {
display: inline-block;
.fc & {
> * {
float: left;
margin: 0 0 0 -1px;
}
> :first-child {
margin-left: 0;
}
}
}
// Popover
// ------------------------------
.fc-popover {
position: absolute;
border: 1px solid @panel-default-border;
.box-shadow(0 1px 5px fade(#000, 5%));
// Header
.fc-header {
padding: 10px;
.fc-close {
cursor: pointer;
}
}
.fc-ltr & {
.fc-header {
.fc-title {
float: left;
}
.fc-close {
float: right;
}
}
}
// Unthemed
.fc-unthemed & {
.fc-header .fc-close {
margin-top: 2px;
.opacity(0.6);
&:hover {
.opacity(1);
}
}
}
}
// Misc reusable components
// ------------------------------
.fc hr {
height: 0;
margin: 0;
padding: 0 0 2px; // height is unreliable across browsers, so use padding
border-style: solid;
border-width: 1px 0;
}
// Clear helper
.fc-clear {
clear: both;
}
.fc-bg,
.fc-bgevent-skeleton,
.fc-highlight-skeleton,
.fc-helper-skeleton {
position: absolute;
top: 0;
left: 0;
right: 0;
}
.fc-bg {
bottom: 0; // strech bg to bottom edge
table {
height: 100%; // strech bg to bottom edge
}
}
// Tables
// ------------------------------
.fc {
table {
width: 100%;
table-layout: fixed;
border-collapse: collapse;
border-spacing: 0;
}
th,
td {
border-style: solid;
border-width: 1px;
padding: 0;
vertical-align: top;
}
th {
padding: @table-cell-padding;
font-weight: 500;
text-align: center;
}
td.fc-today {
border-style: double; // overcome neighboring borders
}
}
// Fake table rows
// ------------------------------
.fc-row {
border-style: solid;
border-width: 0;
position: relative;
table {
border-left: 0 hidden transparent;
border-right: 0 hidden transparent;
border-bottom: 0 hidden transparent;
}
&:first-child table {
border-top: 0 hidden transparent; // no top border on first row
}
}
// Day row
// ------------------------------
.fc-row {
.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-color: transparent;
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 {
overflow-y: scroll;
overflow-x: hidden;
// We expect an immediate inner element
> * {
position: relative;
width: 100%;
overflow: hidden;
}
}
// Global event styles
// ------------------------------
.fc-event {
position: relative; // for resize handle and other inner positioning
display: block; // make the <a> tag block
border: 1px solid @color-blue-600; // default BORDER color
background-color: @color-blue-600; // default BACKGROUND color
font-weight: normal;
border-radius: @border-radius-small;
&,
&:hover {
color: #fff; // default TEXT color
text-decoration: none; // if <a> has an href
}
// Give events with links and draggable events a hand mouse pointer
&[href],
&.fc-draggable {
cursor: pointer;
}
}
// Override an event's custom cursor
.fc-not-allowed {
&,
.fc-event {
cursor: @cursor-disabled;
}
}
// DayGrid events
// ------------------------------
.fc-day-grid-event {
margin: 0 5px 5px 5px;
padding: 4px 8px;
// force events to be one-line tall
> .fc-content {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
// make the time semibold
.fc-time {
font-weight: 500;
}
// resize handle
.fc-resizer {
position: absolute;
top: 0;
bottom: 0;
width: 7px;
}
// LTR
.fc-ltr & {
.fc-resizer {
right: -3px;
cursor: e-resize;
}
}
@media (min-width: @screen-lg-min) {
> .fc-content {
background-color: inherit;
}
.fc-time {
float: right;
padding-left: 5px;
display: inline-block;
z-index: 2;
position: relative;
background-color: inherit;
}
.fc-title {
z-index: 1;
position: relative;
}
}
}
// Event limiting
// ------------------------------
// "More" link
a.fc-more {
margin: 1px 5px;
background-color: #fafafa;
display: block;
padding: 5px;
text-align: center;
border-radius: @border-radius-base;
color: @gray-light;
font-size: @font-size-small;
&:hover {
background-color: #f5f5f5;
color: @text-color;
}
}
// 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: 220px;
.fc-event-container {
padding: 10px 5px;
}
}
// Toolbar
// ------------------------------
.fc-toolbar {
text-align: center;
margin-bottom: @line-height-computed;
// Title text
h2 {
margin: 5px 0;
font-size: @font-size-h5;
}
// 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: 10px;
}
}
// 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-left: 1px solid @panel-default-border;
border-right: 1px solid @panel-default-border;
overflow: auto;
max-width: 100%;
// 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;
}
}
}
// Change box sizing
* {
&,
&:before,
&:after {
.box-sizing(content-box);
}
}
}
// Scope positioning and z-index's
.fc-view {
&,
> table {
position: relative;
z-index: 1;
}
}
// BasicView
// ------------------------------
// Day row structure
.fc-basicWeek-view,
.fc-basicDay-view {
.fc-content-skeleton {
padding-top: 5px;
padding-bottom: 10px;
}
}
// Rows
.fc-basic-view tbody .fc-row {
min-height: 100px; // ensure that all rows are at least this tall
min-width: 100px;
}
// 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-week-number,
.fc-day-number {
padding: 10px;
}
// Week number only
.fc-week-number {
text-align: center;
span {
display: inline-block;
min-width: 1.25em;
}
}
// Day number only
.fc-day-number {
text-align: right;
&.fc-other-month {
.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: 5px;
padding-bottom: 0;
}
}
}
}
// TimeGrid axis
// ------------------------------
.fc-axis {
text-align: right;
.fc & {
vertical-align: middle;
padding: 10px;
white-space: nowrap;
}
}
// TimeGrid structure
// ------------------------------
.fc-time-grid-container,
.fc-time-grid {
position: relative;
z-index: 1;
}
.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-bgevent-skeleton,
.fc-content-skeleton {
position: absolute;
top: 0;
left: 0;
right: 0;
}
.fc-bgevent-skeleton {
z-index: 3;
}
.fc-highlight-skeleton {
z-index: 4;
}
.fc-content-skeleton {
z-index: 5;
}
.fc-helper-skeleton {
z-index: 6;
}
}
// TimeGrid slats
// ------------------------------
.fc-slats {
td {
border-bottom: 0;
}
.fc-minor td {
border-top-style: dotted;
}
}
// TimeGrid highlighting slots
// ------------------------------
.fc-time-grid {
.fc-highlight-container {
position: relative;
}
.fc-highlight {
position: absolute;
left: 0;
right: 0;
}
}
// TimeGrid event containment
// ------------------------------
.fc-time-grid {
.fc-event-container,
.fc-bgevent-container {
position: relative;
}
.fc-event,
.fc-bgevent {
position: absolute;
z-index: 1;
margin: 5px;
padding: 10px;
min-height: 45px;
.box-shadow(0 0 0 1px #fff);
}
.fc-bgevent {
left: 0;
right: 0;
}
}
// TimeGrid event styling
// ------------------------------
.fc-time-grid-event {
overflow: hidden;
// Events that are continuing from another day
&.fc-not-start {
border-top-width: 0;
padding-top: 1px;
.border-top-radius(0);
}
&.fc-not-end {
border-bottom-width: 0;
padding-bottom: 1px;
.border-bottom-radius(0);
}
// Contains the time and title, but no bg and resizer
> .fc-content {
position: relative;
z-index: 2;
}
// Time font weight
.fc-time {
font-weight: 500;
}
// Short mode, where time and title are on the same line
&.fc-short {
.fc-content {
white-space: nowrap;
}
.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: .85em;
padding: 0;
}
}
// Resizer
.fc-resizer {
position: absolute;
z-index: 3;
left: 0;
right: 0;
bottom: 0;
height: 8px;
overflow: hidden;
line-height: 10px;
font-size: @font-size-small;
font-family: monospace;
text-align: center;
cursor: s-resize;
background-color: fade(#000, 5%);
padding: 1px;
&:hover {
background-color: fade(#000, 10%);
}
&:after {
content: "=";
}
}
}
// Responsive stuff
// ------------------------------
@media (max-width: @screen-xs-max) {
.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: 10px;
}
}
}