Next major version 2 with PHP 8.1, Symfony 6, Tabler UI, 2FA ... (#2902)
This commit is contained in:
@@ -10,25 +10,18 @@
|
||||
@import 'error-page';
|
||||
@import 'print';
|
||||
@import 'content';
|
||||
@import 'box';
|
||||
@import 'content-header';
|
||||
@import 'toolbar';
|
||||
@import 'sidebar';
|
||||
@import 'footer';
|
||||
@import 'datatable';
|
||||
@import 'datatable-extensions';
|
||||
@import 'loading-spinner';
|
||||
@import 'tables';
|
||||
@import 'calendar';
|
||||
@import 'dashboard';
|
||||
@import 'navbar';
|
||||
@import 'daterangepicker';
|
||||
@import 'skins';
|
||||
@import 'ticktac';
|
||||
@import 'sweetalert';
|
||||
@import 'autocomplete';
|
||||
@import 'selectpicker';
|
||||
@import 'reporting';
|
||||
@import 'forms';
|
||||
@import 'modal';
|
||||
@import 'progressbar';
|
||||
@import 'avatar';
|
||||
@import 'security';
|
||||
@import 'tabs';
|
||||
@import 'theme-dark';
|
||||
@import 'pages';
|
||||
@import 'tabler-fixes';
|
||||
@import 'help';
|
||||
@import 'rtl';
|
||||
|
||||
@@ -1,76 +0,0 @@
|
||||
/*
|
||||
* This file is part of the Kimai time-tracking app.
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
.ui-widget {
|
||||
font-size: 1em/*{fsDefault}*/;
|
||||
}
|
||||
|
||||
.ui-widget.ui-widget-content {
|
||||
border: 1px solid #c5c5c5/*{borderColorDefault}*/;
|
||||
}
|
||||
|
||||
.ui-widget-content {
|
||||
border: 1px solid #dddddd/*{borderColorContent}*/;
|
||||
background: #ffffff/*{bgColorContent}*/ /*{bgImgUrlContent}*/ /*{bgContentXPos}*/ /*{bgContentYPos}*/ /*{bgContentRepeat}*/;
|
||||
color: #333333/*{fcContent}*/;
|
||||
}
|
||||
|
||||
.ui-menu {
|
||||
list-style: none;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
display: block;
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
.ui-menu .ui-menu-item {
|
||||
margin: 0;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.ui-autocomplete {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
.ui-front {
|
||||
z-index: 1200;
|
||||
}
|
||||
|
||||
.ui-menu .ui-menu-item-wrapper {
|
||||
position: relative;
|
||||
padding: 3px 1em 3px .4em;
|
||||
}
|
||||
.ui-menu .ui-state-focus,
|
||||
.ui-menu .ui-state-active {
|
||||
margin: -1px;
|
||||
}
|
||||
|
||||
.ui-state-active,
|
||||
.ui-widget-content .ui-state-active,
|
||||
.ui-widget-header .ui-state-active,
|
||||
a.ui-button:active,
|
||||
.ui-button:active,
|
||||
.ui-button.ui-state-active:hover {
|
||||
border: 1px solid #003eff/*{borderColorActive}*/;
|
||||
background: #007fff/*{bgColorActive}*/ /*{bgImgUrlActive}*/ /*{bgActiveXPos}*/ /*{bgActiveYPos}*/ /*{bgActiveRepeat}*/;
|
||||
font-weight: normal/*{fwDefault}*/;
|
||||
color: #ffffff/*{fcActive}*/;
|
||||
}
|
||||
.ui-icon-background,
|
||||
.ui-state-active .ui-icon-background {
|
||||
border: #003eff/*{borderColorActive}*/;
|
||||
background-color: #ffffff/*{fcActive}*/;
|
||||
}
|
||||
.ui-state-active a,
|
||||
.ui-state-active a:link,
|
||||
.ui-state-active a:visited {
|
||||
color: #ffffff/*{fcActive}*/;
|
||||
text-decoration: none;
|
||||
}
|
||||
@@ -1,22 +1,9 @@
|
||||
|
||||
$avatar-base-size: 30;
|
||||
|
||||
.avatar {
|
||||
text-align: center;
|
||||
background-color: #d2d6de;
|
||||
border-radius: 50%;
|
||||
display: inline-block;
|
||||
height: ($avatar-base-size)+px;
|
||||
width: ($avatar-base-size)+px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.initials {
|
||||
line-height: 1;
|
||||
position: relative;
|
||||
font-weight: bold;
|
||||
font-size: ceil($avatar-base-size / 2 - 2)+px;
|
||||
top: floor($avatar-base-size / 4 - 1)+px;
|
||||
}
|
||||
|
||||
$avatarSizes: "xs" .75, "sm" 1.25, "md" 1.5, "lg" 2;
|
||||
@@ -28,7 +15,6 @@ $avatarSizes: "xs" .75, "sm" 1.25, "md" 1.5, "lg" 2;
|
||||
|
||||
.initials {
|
||||
font-size: ceil($avatar-base-size * $avatarBaseSize / 2 - 2)+px;
|
||||
top: ceil($avatar-base-size * $avatarBaseSize / 4 - 1)+px;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -41,7 +27,6 @@ $avatarSizes: "xs" .75, "sm" 1.25, "md" 1.5, "lg" 2;
|
||||
height: ceil($avatar-base-size * 2.75)+px;
|
||||
.initials {
|
||||
font-size: ceil($avatar-base-size * 2.75 / 2 - 2)+px;
|
||||
top: ceil($avatar-base-size * 2.75 / 4 - 1)+px;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -54,7 +39,3 @@ table.dataTable.table > tbody > tr > td {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.avatar.teamlead {
|
||||
box-shadow: 0px 0px 5px 1px rgba(0,0,0,.4),0 0px 3px 0 rgba(0,0,0,0.3);
|
||||
}
|
||||
@@ -1,22 +0,0 @@
|
||||
.box {
|
||||
/* used on detail pages for: customer, project and activity */
|
||||
.box-body.no-padding div.comment,
|
||||
.box-body.no-padding .box-padding {
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.box-tools {
|
||||
/* a button that is directly connected with a pagination element inside the box tools (eg. project list on customer detail page) */
|
||||
.btn-pager {
|
||||
float: left;
|
||||
margin-right: 5px;
|
||||
}
|
||||
}
|
||||
}
|
||||
#customer_details_box,
|
||||
#project_details_box,
|
||||
#activity_details_box {
|
||||
th {
|
||||
width: 30%;
|
||||
}
|
||||
}
|
||||
@@ -1,51 +1,15 @@
|
||||
.popover-content {
|
||||
.calendar-entry {
|
||||
ul {
|
||||
padding: 0;
|
||||
list-style-type: none;
|
||||
}
|
||||
.calendar-entry {
|
||||
ul {
|
||||
padding: 0;
|
||||
list-style-type: none;
|
||||
}
|
||||
}
|
||||
|
||||
/* Drag and Drop events with styling */
|
||||
.external-events {
|
||||
.external-event {
|
||||
vertical-align: middle;
|
||||
padding: 0 !important;
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.subtitle {
|
||||
padding: 0 7px 4px 7px;
|
||||
display: block;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
font-size: 0.7em;
|
||||
}
|
||||
|
||||
.title {
|
||||
padding: 3px 7px 0;
|
||||
display: block;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
.draggable {
|
||||
cursor: grab;
|
||||
}
|
||||
|
||||
|
||||
.fc-bootstrap3 {
|
||||
.table-bordered > tbody > tr > td,
|
||||
.table-bordered > thead > tr > td,
|
||||
.table-bordered > thead > tr > th {
|
||||
border: 1px solid #ddd;
|
||||
}
|
||||
.fc-head {
|
||||
background-color: #fafafa;
|
||||
}
|
||||
td.fc-today {
|
||||
background-color: #fcf8e3!important;
|
||||
}
|
||||
}
|
||||
#timesheet_calendar {
|
||||
--bs-gray-400: var(--tblr-border-color);
|
||||
--bs-gray-200: var(--tblr-gray-200);
|
||||
}
|
||||
|
||||
@@ -1,65 +0,0 @@
|
||||
/*
|
||||
* This file is part of the Kimai time-tracking app.
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
.content-header {
|
||||
height: 50px;
|
||||
border-top: 1px solid rgba(0, 0, 0, 0.1);
|
||||
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1) !important;
|
||||
background-color: #fff !important;
|
||||
padding: 10px 0 0 10px;
|
||||
|
||||
h1 {
|
||||
padding-top: 3px;
|
||||
float: left;
|
||||
small {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Page based action buttons in the upper right corner of the content area */
|
||||
.content-header>.breadcrumb {
|
||||
position: absolute;
|
||||
float: right;
|
||||
background: transparent;
|
||||
top: 0;
|
||||
right: 0;
|
||||
padding-left: 10px;
|
||||
.btn {
|
||||
span.label {
|
||||
position: absolute;
|
||||
top: 1px;
|
||||
right: 1px;
|
||||
text-align: center;
|
||||
font-size: 9px;
|
||||
padding: 2px 3px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: $screen-md-max) {
|
||||
.content-header h1 {
|
||||
font-size: 1.5em;
|
||||
}
|
||||
.content-header>.breadcrumb {
|
||||
margin-top: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: $screen-sm-min) {
|
||||
.content-header>.breadcrumb {
|
||||
right: 10px;
|
||||
}
|
||||
|
||||
.content-header {
|
||||
h1 {
|
||||
small {
|
||||
display: inline-block;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -5,20 +5,16 @@
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
.content {
|
||||
padding: 15px 0;
|
||||
/* make sure that elements can be hidden without taking space (eg. hidden modals like the search or column visibility) */
|
||||
.hidden-no-space {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
@media (min-width: $screen-sm-min) {
|
||||
.content {
|
||||
padding: 15px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: $screen-lg-min) {
|
||||
.content {
|
||||
padding: 20px;
|
||||
}
|
||||
/* used at least in the duration dropdown */
|
||||
.pre-scrollable {
|
||||
max-height: 340px;
|
||||
overflow-y: scroll;
|
||||
}
|
||||
|
||||
td {
|
||||
@@ -30,16 +26,11 @@ td {
|
||||
margin: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* ABOUT SCREEN */
|
||||
.box-body .menu-icon {
|
||||
width: 35px;
|
||||
height: 35px;
|
||||
border-radius: 50%;
|
||||
text-align: center;
|
||||
line-height: 35px;
|
||||
margin-right: 15px;
|
||||
/* table cells that contain badges (like the team or timesheet view)
|
||||
and are multi-line entries the badges do not have margin between them */
|
||||
&.badges {
|
||||
line-height: 22px;
|
||||
}
|
||||
}
|
||||
|
||||
.label-gray {
|
||||
@@ -47,11 +38,6 @@ td {
|
||||
color: #666;
|
||||
}
|
||||
|
||||
/* Delete link in action dropdowns */
|
||||
.dropdown-menu > li.delete > a {
|
||||
color: #dd4b39;
|
||||
}
|
||||
|
||||
.open-edit {
|
||||
cursor: pointer;
|
||||
}
|
||||
@@ -66,17 +52,46 @@ table.dataTable thead > tr > th.hw-min {
|
||||
width: 1%;
|
||||
white-space: normal;
|
||||
}
|
||||
|
||||
.badge {
|
||||
font-weight: normal;
|
||||
color: #000;
|
||||
background-color: $kimai-default;
|
||||
/* If a table column contains ONLY avatar <img> it will collapse, so make it a defined width */
|
||||
.w-avatar {
|
||||
width: 40px;
|
||||
img.avatar {
|
||||
/* a weird bug in tables with real avatar <img> only causes them to collapse */
|
||||
max-width: 40px;
|
||||
}
|
||||
}
|
||||
|
||||
.label {
|
||||
font-weight: normal;
|
||||
.list-group-item{
|
||||
/* !important rules, because dark theme overwrites list-group-item */
|
||||
&.danger {
|
||||
padding-left: $list-group-item-padding-x - 0.2rem;
|
||||
border-left: 0.2rem solid $danger!important;
|
||||
}
|
||||
&.success {
|
||||
padding-left: $list-group-item-padding-x - 0.2rem;
|
||||
border-left: 0.2rem solid $success!important;;
|
||||
}
|
||||
}
|
||||
|
||||
a.link-black {
|
||||
color: #000;
|
||||
}
|
||||
/* Scrollable boxes (eg. widgets on dashboard) */
|
||||
.box-body-scrollable {
|
||||
overflow: auto;
|
||||
max-height: 340px;
|
||||
}
|
||||
|
||||
.card {
|
||||
.card-tools {
|
||||
/* a button that is directly connected with a pagination element inside the box tools (eg. project list on customer detail page) */
|
||||
.btn-pager {
|
||||
float: left;
|
||||
margin-right: 5px;
|
||||
}
|
||||
}
|
||||
}
|
||||
#customer_details_box,
|
||||
#project_details_box,
|
||||
#activity_details_box {
|
||||
th {
|
||||
width: 30%;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,20 +0,0 @@
|
||||
/*
|
||||
* This file is part of the Kimai time-tracking app.
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
section {
|
||||
&.dashboard {
|
||||
.info-box {
|
||||
.info-box-text {
|
||||
white-space: normal;
|
||||
}
|
||||
}
|
||||
}
|
||||
.box-body-scrollable {
|
||||
overflow: auto;
|
||||
max-height: 300px;
|
||||
}
|
||||
}
|
||||
@@ -1,265 +0,0 @@
|
||||
/*
|
||||
* This file is part of the Kimai time-tracking app.
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
/* Loading indicator: overwritten from AdminLTE for positioning and supporting fas classes */
|
||||
.box .overlay > .fas,
|
||||
section.content .overlay > .fas,
|
||||
.overlay-wrapper .overlay > .fas {
|
||||
position: absolute;
|
||||
top: 50vh;
|
||||
left: 50vw;
|
||||
margin-left: -15px;
|
||||
margin-top: -15px;
|
||||
color: #000;
|
||||
font-size: 30px;
|
||||
}
|
||||
|
||||
.box > .overlay,
|
||||
.overlay-wrapper > .overlay,
|
||||
section.content > .overlay,
|
||||
.box > .loading-img,
|
||||
.overlay-wrapper > .loading-img {
|
||||
position: fixed; /* see #1330 */
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
.box .overlay,
|
||||
section.content .overlay,
|
||||
.overlay-wrapper .overlay {
|
||||
z-index: 50;
|
||||
background: rgba(255, 255, 255, 0.7);
|
||||
border-radius: $box-border-radius;
|
||||
}
|
||||
.box .overlay.dark,
|
||||
section.content .overlay.dark,
|
||||
.overlay-wrapper .overlay.dark {
|
||||
background: rgba(0, 0, 0, 0.5);
|
||||
}
|
||||
|
||||
/*
|
||||
dataTables.bootstrap.css
|
||||
*/
|
||||
div.dataTables_length label {
|
||||
font-weight: normal;
|
||||
text-align: left;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
div.dataTables_length select {
|
||||
width: 75px;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
div.dataTables_filter {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
div.dataTables_filter label {
|
||||
font-weight: normal;
|
||||
white-space: nowrap;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
div.dataTables_filter input {
|
||||
margin-left: 0.5em;
|
||||
display: inline-block;
|
||||
width: auto;
|
||||
}
|
||||
|
||||
div.dataTables_info {
|
||||
padding-top: 8px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
div.dataTables_paginate {
|
||||
margin: 0;
|
||||
white-space: nowrap;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
div.dataTables_paginate ul.pagination {
|
||||
margin: 2px 0;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 767px) {
|
||||
div.dataTables_length,
|
||||
div.dataTables_filter,
|
||||
div.dataTables_info,
|
||||
div.dataTables_paginate {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
div.DTTT {
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
}
|
||||
|
||||
table.dataTable td,
|
||||
table.dataTable th {
|
||||
-webkit-box-sizing: content-box;
|
||||
-moz-box-sizing: content-box;
|
||||
box-sizing: content-box;
|
||||
}
|
||||
|
||||
table.dataTable {
|
||||
clear: both;
|
||||
/*margin-top: 6px !important;
|
||||
margin-bottom: 6px !important;*/
|
||||
margin-bottom: 0px !important;
|
||||
max-width: none !important;
|
||||
}
|
||||
|
||||
table.dataTable thead .sorting,
|
||||
table.dataTable thead .sorting_asc,
|
||||
table.dataTable thead .sorting_desc,
|
||||
table.dataTable thead .sorting_asc_disabled,
|
||||
table.dataTable thead .sorting_desc_disabled {
|
||||
cursor: pointer;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
table.dataTable thead .sorting_asc,
|
||||
table.dataTable thead .sorting_desc {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
table.dataTable thead .sorting:after,
|
||||
table.dataTable thead .sorting_asc:after,
|
||||
table.dataTable thead .sorting_desc:after {
|
||||
padding-left: 5px;
|
||||
font-family: 'Font Awesome 5 Free';
|
||||
opacity: 0.5;
|
||||
font-size: 12px;
|
||||
}
|
||||
table.dataTable thead .sorting:after {
|
||||
opacity: 0.2;
|
||||
content: "\f0dc"; /* sort */
|
||||
}
|
||||
table.dataTable thead .sorting_asc:after {
|
||||
content: "\f062";
|
||||
}
|
||||
table.dataTable thead .sorting_desc:after {
|
||||
content: "\f063";
|
||||
}
|
||||
div.dataTables_scrollBody table.dataTable thead .sorting:before,
|
||||
div.dataTables_scrollBody table.dataTable thead .sorting_asc:before,
|
||||
div.dataTables_scrollBody table.dataTable thead .sorting_desc:before {
|
||||
display: none;
|
||||
}
|
||||
|
||||
table.dataTable thead .sorting_asc_disabled:before,
|
||||
table.dataTable thead .sorting_desc_disabled:before {
|
||||
color: #eee;
|
||||
}
|
||||
|
||||
table.dataTable thead > tr > th {
|
||||
vertical-align: top;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
table.dataTable th:active {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
|
||||
/* Condensed */
|
||||
table.dataTable.table-condensed thead > tr > th {
|
||||
padding-right: 20px;
|
||||
}
|
||||
|
||||
table.dataTable.table-condensed thead .sorting:before,
|
||||
table.dataTable.table-condensed thead .sorting_asc:before,
|
||||
table.dataTable.table-condensed thead .sorting_desc:before {
|
||||
top: 6px;
|
||||
right: 6px;
|
||||
}
|
||||
|
||||
/* Scrolling */
|
||||
div.dataTables_scrollHead table {
|
||||
margin-bottom: 0 !important;
|
||||
border-bottom-left-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
}
|
||||
|
||||
div.dataTables_scrollHead table thead tr:last-child th:first-child,
|
||||
div.dataTables_scrollHead table thead tr:last-child td:first-child {
|
||||
border-bottom-left-radius: 0 !important;
|
||||
border-bottom-right-radius: 0 !important;
|
||||
}
|
||||
|
||||
div.dataTables_scrollBody table {
|
||||
border-top: none;
|
||||
margin-top: 0 !important;
|
||||
margin-bottom: 0 !important;
|
||||
}
|
||||
|
||||
div.dataTables_scrollBody tbody tr:first-child th,
|
||||
div.dataTables_scrollBody tbody tr:first-child td {
|
||||
border-top: none;
|
||||
}
|
||||
|
||||
div.dataTables_scrollFoot table {
|
||||
margin-top: 0 !important;
|
||||
border-top: none;
|
||||
}
|
||||
|
||||
/* Frustratingly the border-collapse:collapse used by Bootstrap makes the column
|
||||
width calculations when using scrolling impossible to align columns. We have
|
||||
to use separate
|
||||
*/
|
||||
table.table-bordered.dataTable {
|
||||
border-collapse: separate !important;
|
||||
}
|
||||
table.table-bordered thead th,
|
||||
table.table-bordered thead td {
|
||||
border-left-width: 0;
|
||||
border-top-width: 0;
|
||||
}
|
||||
table.table-bordered tbody th,
|
||||
table.table-bordered tbody td {
|
||||
border-left-width: 0;
|
||||
border-bottom-width: 0;
|
||||
}
|
||||
table.table-bordered tfoot th,
|
||||
table.table-bordered tfoot td {
|
||||
border-left-width: 0;
|
||||
border-bottom-width: 0;
|
||||
}
|
||||
table.table-bordered th:last-child,
|
||||
table.table-bordered td:last-child {
|
||||
border-right-width: 0;
|
||||
}
|
||||
div.dataTables_scrollHead table.table-bordered {
|
||||
border-bottom-width: 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* TableTools styles
|
||||
*/
|
||||
.table.dataTable tbody tr.active td,
|
||||
.table.dataTable tbody tr.active th {
|
||||
background-color: #08C;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.table.dataTable tbody tr.active:hover td,
|
||||
.table.dataTable tbody tr.active:hover th {
|
||||
background-color: #0075b0 !important;
|
||||
}
|
||||
|
||||
.table.dataTable tbody tr.active th > a,
|
||||
.table.dataTable tbody tr.active td > a {
|
||||
color: white;
|
||||
}
|
||||
|
||||
.table-striped.dataTable tbody tr.active:nth-child(odd) td,
|
||||
.table-striped.dataTable tbody tr.active:nth-child(odd) th {
|
||||
background-color: #017ebc;
|
||||
}
|
||||
@@ -1,13 +0,0 @@
|
||||
@import '~daterangepicker/daterangepicker.css';
|
||||
|
||||
.drp-calendar {
|
||||
.calendar-table {
|
||||
td.today:not(.active) {
|
||||
background-color: lighten(#357ebd, 40);
|
||||
color: #357ebd;
|
||||
}
|
||||
select.yearselect{
|
||||
width: unset;
|
||||
}
|
||||
}
|
||||
}
|
||||
62
assets/sass/export-pdf.scss
Normal file
62
assets/sass/export-pdf.scss
Normal file
@@ -0,0 +1,62 @@
|
||||
/*
|
||||
* This file is part of the Kimai time-tracking app.
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
body {
|
||||
font-family: sans-serif;
|
||||
font-size: 10pt;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
p {
|
||||
margin: 0;
|
||||
}
|
||||
table.items {
|
||||
border: 0.1mm solid #000000;
|
||||
width: 100%;
|
||||
font-size: 9pt;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
td, th {
|
||||
padding: 7px;
|
||||
}
|
||||
td {
|
||||
vertical-align: top;
|
||||
}
|
||||
.items td {
|
||||
border-left: 0.1mm solid #000000;
|
||||
border-right: 0.1mm solid #000000;
|
||||
}
|
||||
.items tr.even {
|
||||
background-color: #f5f5f5;
|
||||
}
|
||||
.items tr.summary {
|
||||
background-color: #efefef;
|
||||
}
|
||||
.items tr.summary td {
|
||||
font-weight: bold;
|
||||
border-top: 0.1mm solid #000000;
|
||||
border-bottom: 0.1mm solid #000000;
|
||||
}
|
||||
table thead th {
|
||||
background-color: #ececec;
|
||||
border: 0.1mm solid #000000;
|
||||
font-weight: bold;
|
||||
font-size: 10pt;
|
||||
text-align: left;
|
||||
}
|
||||
.items td.totals {
|
||||
font-weight: bold;
|
||||
border: 0.1mm solid #000000;
|
||||
}
|
||||
.items .center,
|
||||
.items td.duration,
|
||||
.items td.cost {
|
||||
text-align: center;
|
||||
}
|
||||
.text-nowrap {
|
||||
white-space: nowrap;
|
||||
}
|
||||
7
assets/sass/fontawesome.scss
vendored
7
assets/sass/fontawesome.scss
vendored
@@ -10,3 +10,10 @@ $fa-font-path: "~@fortawesome/fontawesome-free/webfonts/";
|
||||
@import '~@fortawesome/fontawesome-free/scss/regular';
|
||||
@import '~@fortawesome/fontawesome-free/scss/solid';
|
||||
@import '~@fortawesome/fontawesome-free/scss/brands';
|
||||
|
||||
/* all icon-buttons with fontawesome icons */
|
||||
.btn-icon i.icon {
|
||||
font-size: 16px;
|
||||
color: $text-muted;
|
||||
padding-top: 2px;
|
||||
}
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
/*
|
||||
* This file is part of the Kimai time-tracking app.
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
footer.main-footer {
|
||||
padding: 5px;
|
||||
font-size: 80%;
|
||||
}
|
||||
@@ -1,67 +1,38 @@
|
||||
/* Currently only used in batch-update form for timesheets, to highlight sections of combined fields */
|
||||
form .box-body fieldset {
|
||||
border-radius: $box-border-radius;
|
||||
padding: 10px;
|
||||
&:hover {
|
||||
background-color: $highlight-bg;
|
||||
/* bootstrap thead.sticky-top has z-index 1020 and the reporting form dropdowns hide behind that */
|
||||
.checkbox-menu.show {
|
||||
z-index: 1021;
|
||||
}
|
||||
|
||||
/* make sure that at least xx:yy fits into the widget */
|
||||
.duration-widget {
|
||||
.input-group {
|
||||
min-width: 110px;
|
||||
}
|
||||
input.duration-input {
|
||||
min-width: 55px;
|
||||
}
|
||||
}
|
||||
|
||||
/* To be used with .form-horizontal - to reduce the space between rows, eg. used in the search modals */
|
||||
form.form-narrow {
|
||||
.form-group {
|
||||
margin: 0 0 5px 0;
|
||||
#report-form {
|
||||
div.btn-list {
|
||||
width: 100%;
|
||||
div.selectpicker {
|
||||
min-width: 200px;
|
||||
max-width: 400px;
|
||||
}
|
||||
|
||||
li.dropdown-item {
|
||||
.form-check {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Mark as exported checkbox in export and invoice create screen */
|
||||
.form-horizontal {
|
||||
.checkbox {
|
||||
min-height: 20px;
|
||||
}
|
||||
}
|
||||
|
||||
/* bootstrap3 hack because the filter look plain ugly without it (see report: project month) */
|
||||
.checkbox-menu li label {
|
||||
display: block;
|
||||
padding: 5px 15px 5px 10px !important;
|
||||
clear: both;
|
||||
font-weight: normal;
|
||||
line-height: 1.42857143;
|
||||
color: #333;
|
||||
white-space: nowrap;
|
||||
margin:0;
|
||||
transition: background-color .4s ease;
|
||||
}
|
||||
.checkbox-menu li div.checkbox {
|
||||
display: block;
|
||||
width: 100%;
|
||||
}
|
||||
.checkbox-menu li div.radio {
|
||||
display: block;
|
||||
width: 100%;
|
||||
}
|
||||
.checkbox-menu li input {
|
||||
margin: 0 5px !important;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.checkbox-menu li.active label {
|
||||
background-color: #cbcbff;
|
||||
font-weight:bold;
|
||||
}
|
||||
|
||||
.checkbox-menu li label:hover,
|
||||
.checkbox-menu li label:focus {
|
||||
background-color: #f5f5f5;
|
||||
}
|
||||
|
||||
.checkbox-menu li.active label:hover,
|
||||
.checkbox-menu li.active label:focus {
|
||||
background-color: #b8b8ff;
|
||||
}
|
||||
|
||||
.duration-input {
|
||||
min-width:50px;
|
||||
padding: 6px;
|
||||
.color-choice-item {
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
display: inline-block;
|
||||
margin-right: 10px;
|
||||
border-radius: var(--tblr-border-radius);
|
||||
}
|
||||
36
assets/sass/help.scss
Normal file
36
assets/sass/help.scss
Normal file
@@ -0,0 +1,36 @@
|
||||
/*
|
||||
* This file is part of the Kimai time-tracking app.
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
.float-help {
|
||||
position: fixed;
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
border-radius: 50px;
|
||||
bottom: 20px;
|
||||
right: 20px;
|
||||
background-color: var(--tblr-body-color);
|
||||
text-align: center;
|
||||
z-index: 1021;
|
||||
/* box-shadow: 2px 2px 3px var(--tblr-body-color); */
|
||||
i {
|
||||
margin-top: 11px;
|
||||
color: var(--tblr-body-bg);
|
||||
font-size: 30px;
|
||||
}
|
||||
}
|
||||
|
||||
@include media-breakpoint-down(md) {
|
||||
.float-help {
|
||||
width: 36px;
|
||||
height: 36px;
|
||||
border-radius: 36px;
|
||||
i {
|
||||
margin-top: 8px;
|
||||
font-size: 20px;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -8,7 +8,7 @@
|
||||
body {
|
||||
font-family: sans-serif;
|
||||
font-size: 10pt;
|
||||
margin: 0;
|
||||
margin: 4px;
|
||||
padding: 0;
|
||||
}
|
||||
table, tr, td, th, p, h1, h2, h3, h4, h5 {
|
||||
@@ -44,14 +44,10 @@ p {
|
||||
white-space: nowrap;
|
||||
}
|
||||
.date {
|
||||
color: #666;
|
||||
font-size: 80%;
|
||||
text-align: right;
|
||||
padding-top: 6px;
|
||||
}
|
||||
.wrapper {
|
||||
margin: 4px;
|
||||
}
|
||||
table {
|
||||
width: 100%;
|
||||
border-spacing: 0;
|
||||
|
||||
@@ -5,19 +5,21 @@
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
@import "~bootstrap-sass/assets/stylesheets/bootstrap/variables";
|
||||
@import "~bootstrap-sass/assets/stylesheets/bootstrap/mixins";
|
||||
@import "~bootstrap-sass/assets/stylesheets/bootstrap/normalize";
|
||||
@import "~bootstrap-sass/assets/stylesheets/bootstrap/print";
|
||||
@import "~bootstrap-sass/assets/stylesheets/bootstrap/scaffolding";
|
||||
@import "~bootstrap-sass/assets/stylesheets/bootstrap/type";
|
||||
@import "~bootstrap-sass/assets/stylesheets/bootstrap/grid";
|
||||
@import "~bootstrap-sass/assets/stylesheets/bootstrap/tables";
|
||||
@import "~bootstrap-sass/assets/stylesheets/bootstrap/list-group";
|
||||
@import "~bootstrap-sass/assets/stylesheets/bootstrap/panels";
|
||||
@import "~bootstrap-sass/assets/stylesheets/bootstrap/wells";
|
||||
@import "~bootstrap-sass/assets/stylesheets/bootstrap/utilities";
|
||||
@import "~bootstrap-sass/assets/stylesheets/bootstrap/responsive-utilities";
|
||||
@import "~bootstrap/scss/functions";
|
||||
@import "~bootstrap/scss/variables";
|
||||
@import "~bootstrap/scss/maps";
|
||||
@import "~bootstrap/scss/mixins";
|
||||
//@import "~bootstrap/scss/normalize";
|
||||
//@import "~bootstrap/scss/print";
|
||||
//@import "~bootstrap/scss/scaffolding";
|
||||
@import "~bootstrap/scss/reboot";
|
||||
@import "~bootstrap/scss/type";
|
||||
@import "~bootstrap/scss/grid";
|
||||
@import "~bootstrap/scss/tables";
|
||||
@import "~bootstrap/scss/list-group";
|
||||
@import "~bootstrap/scss/card";
|
||||
@import "~bootstrap/scss/utilities";
|
||||
//@import "~bootstrap/scss/responsive-utilities";
|
||||
|
||||
body {
|
||||
font-family: $font-family-sans-serif;
|
||||
|
||||
@@ -1,8 +1,38 @@
|
||||
@media (max-width: $screen-sm-max) {
|
||||
.main-header .logo {
|
||||
display: none;
|
||||
.inline-search {
|
||||
max-width: 200px;
|
||||
/* the entire inline-search should actually use .input-group-flat, but that causes some weird css problems inside the dropdown menu */
|
||||
#searchTerm {
|
||||
border-right: 0;
|
||||
}
|
||||
.fixed .content-wrapper, .fixed .right-side, .control-sidebar, .main-sidebar {
|
||||
padding-top: 50px;
|
||||
}
|
||||
@media (min-width: 360px) {
|
||||
.inline-search {
|
||||
max-width: 235px;
|
||||
}
|
||||
}
|
||||
}
|
||||
@include media-breakpoint-up(md) {
|
||||
.inline-search {
|
||||
max-width: 325px;
|
||||
}
|
||||
.search-dropdown {
|
||||
width: 500px;
|
||||
}
|
||||
}
|
||||
|
||||
/* Format the company title in the left navigation, as Tabler is optimized for an image only */
|
||||
h1.navbar-brand a {
|
||||
span {
|
||||
display: inline-block;
|
||||
padding-top: 0.5rem;
|
||||
}
|
||||
&:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
}
|
||||
|
||||
.page-actions .dropdown-menu,
|
||||
#export-buttons .dropdown-menu,
|
||||
.inline-search .dropdown-menu {
|
||||
/* bootstrap thead.sticky-top has z-index 1020 and the reporting form dropdowns hide behind that */
|
||||
z-index: 1021;
|
||||
}
|
||||
|
||||
25
assets/sass/loading-spinner.scss
Normal file
25
assets/sass/loading-spinner.scss
Normal file
@@ -0,0 +1,25 @@
|
||||
/*
|
||||
* This file is part of the Kimai time-tracking app.
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
.overlay {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
z-index: 50;
|
||||
background: rgba(255, 255, 255, 0.7);
|
||||
> .fas {
|
||||
position: absolute;
|
||||
top: 50vh;
|
||||
left: 50vw;
|
||||
margin-left: -15px;
|
||||
margin-top: -15px;
|
||||
color: #000;
|
||||
font-size: 30px;
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,3 @@
|
||||
.modal-header,
|
||||
.modal-footer {
|
||||
padding-top: 10px;
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
.modal-content {
|
||||
border-radius: 3px;
|
||||
box-shadow: 0 10px 80px rgba(0, 0, 0, 0.6);
|
||||
}
|
||||
@@ -1,153 +0,0 @@
|
||||
/*
|
||||
* This file is part of the Kimai time-tracking app.
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
.navbar-custom-menu {
|
||||
.navbar-nav {
|
||||
li>.ddt-small {
|
||||
padding-top: 10px;
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.navbar-nav {
|
||||
.avatar {
|
||||
max-height: 30px;
|
||||
max-width: 30px;
|
||||
height: 30px;
|
||||
width: 30px;
|
||||
margin-top: 0;
|
||||
.initials {
|
||||
top: 5px;
|
||||
left: 0;
|
||||
}
|
||||
}
|
||||
li>.ddt-small {
|
||||
padding-top: 10px;
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
li.messages-menu ul.menu li {
|
||||
a:hover .pull-left i {
|
||||
color: #dd4b39;
|
||||
}
|
||||
a .pull-left i {
|
||||
color: #444;
|
||||
}
|
||||
}
|
||||
.messages-menu>.dropdown-menu>li .menu>li>a>p {
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
.messages-menu>.dropdown-menu>li .menu>li>a>h4>span {
|
||||
margin-right: 55px;
|
||||
}
|
||||
.dropdown-menu {
|
||||
box-shadow: 0 8px 17px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
|
||||
max-width: 90vw;
|
||||
width: unset !important;
|
||||
}
|
||||
.user-menu {
|
||||
ul {
|
||||
li {
|
||||
a {
|
||||
color: #444;
|
||||
&:hover {
|
||||
background-color: #f4f4f4;
|
||||
}
|
||||
i {
|
||||
padding-right: 10px;
|
||||
}
|
||||
}
|
||||
hr {
|
||||
margin: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@keyframes ticktac-blink {
|
||||
0% { opacity: 1; }
|
||||
5% { opacity: 0.95; }
|
||||
10% { opacity: 0.9; }
|
||||
15% { opacity: 0.85; }
|
||||
20% { opacity: 0.8; }
|
||||
25% { opacity: 0.75; }
|
||||
30% { opacity: 0.7; }
|
||||
35% { opacity: 0.65; }
|
||||
40% { opacity: 0.6; }
|
||||
45% { opacity: 0.65; }
|
||||
50% { opacity: 0.7; }
|
||||
55% { opacity: 0.75; }
|
||||
60% { opacity: 0.8; }
|
||||
65% { opacity: 0.85; }
|
||||
70% { opacity: 0.9; }
|
||||
75% { opacity: 0.95; }
|
||||
100% { opacity: 1; }
|
||||
}
|
||||
.ticktac-single {
|
||||
display: block;
|
||||
position: relative;
|
||||
padding-left: 15px;
|
||||
padding-right: 15px;
|
||||
i {
|
||||
animation: ticktac-blink 2s step-end infinite;
|
||||
}
|
||||
span {
|
||||
font-size: 1.8em;
|
||||
line-height: 1em;
|
||||
padding-left: 5px;
|
||||
padding-right: 0;
|
||||
}
|
||||
&:hover {
|
||||
background: rgba(0,0,0,.3);
|
||||
}
|
||||
}
|
||||
body.fixed {
|
||||
.navbar-nav {
|
||||
.user-menu {
|
||||
margin-right: 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: $screen-sm-max) {
|
||||
.navbar-custom-menu>.navbar-nav>li>.dropdown-menu {
|
||||
right: 0;
|
||||
}
|
||||
body.fixed {
|
||||
.navbar-nav {
|
||||
.user-menu {
|
||||
margin-right: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
.navbar-nav .user-menu.open .dropdown-menu > li > a {
|
||||
padding: 5px 25px 5px 25px
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: $screen-sm-max) {
|
||||
.ticktac-single {
|
||||
padding-left: 5px;
|
||||
padding-right: 5px;
|
||||
}
|
||||
.navbar-custom-menu .navbar-nav li>.ddt-small {
|
||||
padding-left: 5px;
|
||||
padding-right: 5px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: $screen-md-max) {
|
||||
.ticktac-single {
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
}
|
||||
.navbar-custom-menu .navbar-nav li>.ddt-small {
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
}
|
||||
}
|
||||
39
assets/sass/pages.scss
Normal file
39
assets/sass/pages.scss
Normal file
@@ -0,0 +1,39 @@
|
||||
/*
|
||||
* This file is part of the Kimai time-tracking app.
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
/*
|
||||
----------- This file contains rules that only page to certain pages -----------
|
||||
*/
|
||||
|
||||
/* weekly working times AKA quick-entries form */
|
||||
section.quick-entry-page {
|
||||
|
||||
#quick_entry_form {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* shrinks the dropdown elements for project and activity to fit into the table, instead of adjusting to the longest option element */
|
||||
.ts-wrapper {
|
||||
display: table;
|
||||
table-layout: fixed;
|
||||
}
|
||||
|
||||
/* make the duration field and dropdown smaller */
|
||||
#quick_entry_box {
|
||||
.duration-widget {
|
||||
.input-group {
|
||||
min-width: 85px;
|
||||
}
|
||||
.btn-duration-preset {
|
||||
padding: 7px 8px 7px 5px;
|
||||
}
|
||||
input {
|
||||
padding: 7px 3px 7px 7px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -12,7 +12,7 @@
|
||||
.col-print-12{
|
||||
width:100%;
|
||||
}
|
||||
.sidebar-mini.sidebar-collapse .content-wrapper, .sidebar-mini.sidebar-collapse .main-footer, .sidebar-mini.sidebar-collapse .right-side {
|
||||
.content-wrapper {
|
||||
margin: 0!important;
|
||||
}
|
||||
section.content {
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
.progress-number {
|
||||
display: inline-block;
|
||||
width: 98%;
|
||||
text-align: right;
|
||||
float: none;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
|
||||
.form-reporting .box-header .form-group {
|
||||
margin-right: 10px;
|
||||
label {
|
||||
font-size: $font-size-base;
|
||||
}
|
||||
}
|
||||
@@ -5,5 +5,12 @@
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
$icon-font-path: "~bootstrap-sass/assets/fonts/bootstrap/";
|
||||
@import '~bootstrap-sass/assets/stylesheets/bootstrap';
|
||||
html[dir=rtl] {
|
||||
.fa-chevron-left:before {
|
||||
content: "\f054";
|
||||
}
|
||||
|
||||
.fa-chevron-right:before {
|
||||
content: "\f053";
|
||||
}
|
||||
}
|
||||
@@ -1,35 +0,0 @@
|
||||
body.login-page {
|
||||
.alert {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
.login-box-body {
|
||||
text-align: center;
|
||||
padding: 30px 35px;
|
||||
box-shadow: 0 10px 30px 0 rgba(172, 168, 168, 0.43);
|
||||
.btn {
|
||||
padding: 7px;
|
||||
font-size: 115%;
|
||||
}
|
||||
}
|
||||
.login-head {
|
||||
margin-top: 0;
|
||||
}
|
||||
.login-actions a {
|
||||
display: block;
|
||||
}
|
||||
.form-group {
|
||||
input[type=password], input[type=text] {
|
||||
padding: 20px 15px;
|
||||
}
|
||||
}
|
||||
span.glyphicon {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
@media (max-width: $screen-sm-max) {
|
||||
body.login-page {
|
||||
.login-box-body {
|
||||
padding: 20px 27px;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,29 +1,26 @@
|
||||
@import '~select2/dist/css/select2.min.css';
|
||||
@import '~select2-bootstrap-theme/dist/select2-bootstrap.min.css';
|
||||
@import '~tom-select/dist/scss/tom-select.bootstrap5';
|
||||
|
||||
/* some labels were placed incorrect due to a margin-top: -4px */
|
||||
.select2-container .select2-selection--single .select2-selection__rendered {
|
||||
margin-top: 0;
|
||||
}
|
||||
/* make sure the border looks like all other form elements */
|
||||
.select2-container--bootstrap .select2-selection {
|
||||
border-radius: 0;
|
||||
}
|
||||
/* placeholder in multi-selects were cut off */
|
||||
.select2-search.select2-search--inline .select2-search__field {
|
||||
width: 100% !important;
|
||||
}
|
||||
/* make sure that <optgroup> elements are padded, to allow visual difference to global activities */
|
||||
.select2-container--bootstrap .select2-results__options.select2-results__options--nested li.select2-results__option {
|
||||
padding-left: 30px;
|
||||
}
|
||||
/* empty <option> were too small to be noticed as clickable element */
|
||||
.select2-container--bootstrap .select2-results__option {
|
||||
min-height: 30px;
|
||||
/* bootstrap thead.sticky-top has z-index 1020 and tomselect dropdowns often hide behind that */
|
||||
.ts-dropdown {
|
||||
z-index: 1021;
|
||||
}
|
||||
|
||||
/* Fixes the size on quick-entry form */
|
||||
.select2-container--bootstrap {
|
||||
display: table;
|
||||
table-layout: fixed;
|
||||
.ts-control {
|
||||
> input {
|
||||
min-width: unset;
|
||||
}
|
||||
.item {
|
||||
white-space: nowrap!important;
|
||||
}
|
||||
}
|
||||
|
||||
.ts-dropdown {
|
||||
.optgroup-header {
|
||||
background-color: #eee;
|
||||
color: #000;
|
||||
font-weight: 600;
|
||||
}
|
||||
[data-selectable].option {
|
||||
padding-left: 20px;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,19 +0,0 @@
|
||||
/*
|
||||
* This file is part of the Kimai time-tracking app.
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
@media (min-width: $screen-sm-min) {
|
||||
.sidebar-mini.sidebar-collapse .sidebar-menu li.header {
|
||||
border-top-width: 1px;
|
||||
border-top-style: solid;
|
||||
display: block !important;
|
||||
margin-top: 16px;
|
||||
opacity: 0.4;
|
||||
span {
|
||||
display: none !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,69 +0,0 @@
|
||||
|
||||
$skins:
|
||||
"blue" $yellow #fff $yellow $red,
|
||||
"black" $yellow #000 $green $red,
|
||||
"green" $yellow #fff $yellow $red,
|
||||
"purple" $yellow #fff $yellow $red,
|
||||
"red" $yellow #fff $yellow $yellow,
|
||||
"yellow" $blue #fff $green $red
|
||||
;
|
||||
|
||||
@each $skinColor, $navHighlight, $tickTacColor, $startButton, $stopButton in $skins {
|
||||
@each $prefix in (".skin-#{$skinColor}", ".skin-#{$skinColor}-light") {
|
||||
@media (max-width: $screen-sm-max) {
|
||||
#{$prefix} {
|
||||
.main-header .navbar .dropdown-menu li.divider {
|
||||
background-color: #ccc;
|
||||
}
|
||||
|
||||
.main-header .navbar .dropdown-menu li a {
|
||||
color: #444;
|
||||
}
|
||||
|
||||
.main-header .navbar .dropdown-menu li a:hover {
|
||||
background: #fff;
|
||||
}
|
||||
}
|
||||
}
|
||||
#{$prefix} {
|
||||
.navbar-nav {
|
||||
.user-menu {
|
||||
ul {
|
||||
li {
|
||||
a {
|
||||
&:hover {
|
||||
i {
|
||||
color: $navHighlight;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.notifications-menu > .dropdown-menu > li .menu > li > a:hover i {
|
||||
color: $navHighlight;
|
||||
}
|
||||
}
|
||||
.ticktac-single {
|
||||
i {
|
||||
color: $tickTacColor;
|
||||
}
|
||||
span {
|
||||
color: $tickTacColor;
|
||||
}
|
||||
&:hover {
|
||||
.ticktac-stop {
|
||||
i {
|
||||
color: $stopButton;
|
||||
}
|
||||
}
|
||||
.ticktac-start {
|
||||
i {
|
||||
color: $startButton;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
6
assets/sass/tabler-fixes.scss
Normal file
6
assets/sass/tabler-fixes.scss
Normal file
@@ -0,0 +1,6 @@
|
||||
@import '~@tabler/core/src/scss/variables';
|
||||
|
||||
/* fix for vertical labels in date-time pickers, if they are used in half-column forms, e.g. "create tasks" or "create expenses" */
|
||||
fieldset legend.col-form-label {
|
||||
padding-top: 0;
|
||||
}
|
||||
@@ -4,39 +4,82 @@
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
@import "variables";
|
||||
|
||||
table.dataTable.table > tbody > tr > td {
|
||||
vertical-align: middle;
|
||||
.img-circle {
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
margin-right: 0;
|
||||
&.teamlead {
|
||||
box-shadow: 0 0 5px 3px $gray-lte;
|
||||
}
|
||||
table.dataTable {
|
||||
clear: both;
|
||||
margin-bottom: 0 !important;
|
||||
max-width: none !important;
|
||||
|
||||
thead .sorting,
|
||||
thead .sorting_asc,
|
||||
thead .sorting_desc {
|
||||
cursor: pointer;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
thead .sorting_asc,
|
||||
thead .sorting_desc {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
thead .sorting:after,
|
||||
thead .sorting_asc:after,
|
||||
thead .sorting_desc:after {
|
||||
padding-left: 5px;
|
||||
font-family: 'Font Awesome 5 Free';
|
||||
opacity: 0.5;
|
||||
font-size: 12px;
|
||||
}
|
||||
thead .sorting:after {
|
||||
opacity: 0.2;
|
||||
content: "\f0dc"; /* sort */
|
||||
}
|
||||
thead .sorting_asc:after {
|
||||
content: "\f077";
|
||||
}
|
||||
thead .sorting_desc:after {
|
||||
content: "\f078";
|
||||
}
|
||||
|
||||
thead > tr > th {
|
||||
vertical-align: top;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
th:active {
|
||||
outline: none;
|
||||
}
|
||||
}
|
||||
|
||||
span.label-color,
|
||||
span.label-meta,
|
||||
span.label-tag,
|
||||
span.label-user,
|
||||
span.label-activity,
|
||||
span.label-project,
|
||||
span.label-customer {
|
||||
display: inline-block;
|
||||
.name {
|
||||
white-space: nowrap;
|
||||
.name-inner {
|
||||
white-space: normal;
|
||||
}
|
||||
table.table-bordered {
|
||||
thead th,
|
||||
thead td {
|
||||
border-left-width: 0;
|
||||
border-top-width: 0;
|
||||
}
|
||||
.dot {
|
||||
font-size: 9px;
|
||||
margin-right: 3px;
|
||||
color: $gray-lte;
|
||||
|
||||
tbody th,
|
||||
tbody td {
|
||||
border-left-width: 0;
|
||||
border-bottom-width: 0;
|
||||
}
|
||||
|
||||
tfoot th,
|
||||
tfoot td {
|
||||
border-left-width: 0;
|
||||
border-bottom-width: 0;
|
||||
}
|
||||
|
||||
th:last-child,
|
||||
td:last-child {
|
||||
border-right-width: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@include media-breakpoint-up(xl) {
|
||||
table.dataTable.table > tbody > tr > td {
|
||||
vertical-align: middle;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -46,17 +89,17 @@ table.dataTable {
|
||||
width: 40px;
|
||||
}
|
||||
tr {
|
||||
/* summary row - provided in the users own timesheet table */
|
||||
/* summary row - used in many tables to show rows with summarized values like durations or money */
|
||||
&.summary td {
|
||||
font-weight: bold;
|
||||
border-bottom: 1px solid #ccc;
|
||||
background-color: #eaeaea;
|
||||
border: 0;
|
||||
background-color: var(--tblr-table-striped-bg);
|
||||
}
|
||||
th.multiCheckbox {
|
||||
width: 15px;
|
||||
}
|
||||
&.overlapping {
|
||||
border-top: 2px solid rgba(255, 0, 0, 0.1);
|
||||
border-top: 2px solid rgba(214,57,57,.1);
|
||||
}
|
||||
&.exported {
|
||||
opacity: 0.7;
|
||||
@@ -91,15 +134,6 @@ table.dataTable {
|
||||
opacity: 0.8;
|
||||
}
|
||||
}
|
||||
tfoot {
|
||||
tr {
|
||||
/* overwritten if used in tfoot, to switch the border from below to top */
|
||||
&.summary td {
|
||||
border-top: 1px solid #ccc;
|
||||
border-bottom: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
th.weekend,
|
||||
td.weekend {
|
||||
background-color: #f9f9f9;
|
||||
@@ -1,3 +0,0 @@
|
||||
.tab-content {
|
||||
margin-top: 20px;
|
||||
}
|
||||
56
assets/sass/theme-dark.scss
Normal file
56
assets/sass/theme-dark.scss
Normal file
@@ -0,0 +1,56 @@
|
||||
@include dark-mode {
|
||||
.form-check-input {
|
||||
border-color: $input-border-color;
|
||||
}
|
||||
|
||||
/* selectpicker.scss / Tom Select */
|
||||
.ts-wrapper.form-select .ts-control,
|
||||
.ts-wrapper.form-select.single.input-active .ts-control {
|
||||
color: $dark-mode-text;
|
||||
}
|
||||
.ts-dropdown {
|
||||
background-color: $dark-mode-lighten;
|
||||
color: $dark-mode-text;
|
||||
}
|
||||
.ts-control {
|
||||
> input {
|
||||
min-width: unset;
|
||||
color: $dark-mode-text;
|
||||
}
|
||||
|
||||
.item {
|
||||
background-color: $dark;
|
||||
color: $dark-mode-text;
|
||||
}
|
||||
}
|
||||
.optgroup-header {
|
||||
background-color: $dropdown-dark-bg;
|
||||
color: $dark-mode-text;
|
||||
}
|
||||
|
||||
table.dataTable {
|
||||
th.weekend, td.weekend {
|
||||
background-color: $dark-mode-weekend;
|
||||
color: $dark-mode-text;
|
||||
}
|
||||
/* must be defined after weekend, to overwrite it */
|
||||
th.today, td.today {
|
||||
background-color: $dark-mode-today;
|
||||
color: $dark-mode-text;
|
||||
}
|
||||
|
||||
tr {
|
||||
&.summary td {
|
||||
background-color: $dark-mode-darken;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.overlay {
|
||||
background: rgba(0, 0, 0, 0.5);
|
||||
|
||||
> .fas {
|
||||
color: $dark-mode-text;
|
||||
}
|
||||
}
|
||||
}
|
||||
43
assets/sass/ticktac.scss
Normal file
43
assets/sass/ticktac.scss
Normal file
@@ -0,0 +1,43 @@
|
||||
/*
|
||||
* This file is part of the Kimai time-tracking app.
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
@keyframes ticktac-blink {
|
||||
0% { opacity: 1; }
|
||||
5% { opacity: 0.95; }
|
||||
10% { opacity: 0.9; }
|
||||
15% { opacity: 0.85; }
|
||||
20% { opacity: 0.8; }
|
||||
25% { opacity: 0.75; }
|
||||
30% { opacity: 0.7; }
|
||||
35% { opacity: 0.65; }
|
||||
40% { opacity: 0.6; }
|
||||
45% { opacity: 0.65; }
|
||||
50% { opacity: 0.7; }
|
||||
55% { opacity: 0.75; }
|
||||
60% { opacity: 0.8; }
|
||||
65% { opacity: 0.85; }
|
||||
70% { opacity: 0.9; }
|
||||
75% { opacity: 0.95; }
|
||||
100% { opacity: 1; }
|
||||
}
|
||||
|
||||
.ticktac-start,
|
||||
.ticktac-stop {
|
||||
i {
|
||||
animation: ticktac-blink 2s step-end infinite;
|
||||
}
|
||||
}
|
||||
|
||||
/* Full size with bright colors => navbar turns dark in small screens: button and color would still be white */
|
||||
@include media-breakpoint-down(lg) {
|
||||
aside.navbar .btn-outline-white,
|
||||
header.navbar .btn-outline-white {
|
||||
background-color: var(--tblr-body-color);
|
||||
border-color: hsla(0,0%,100%,.2);
|
||||
color: hsla(0,0%,100%,.7);
|
||||
}
|
||||
}
|
||||
@@ -1,26 +0,0 @@
|
||||
/*
|
||||
* This file is part of the Kimai time-tracking app.
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
@media (min-width: $screen-sm-min) {
|
||||
.toolbar {
|
||||
// @deprecated since 1.2 - using the navbar-form is deprecated and will be removed with 2.0
|
||||
form.navbar-form {
|
||||
font-size: $font-size-base;
|
||||
.form-control {
|
||||
display: inline-block;
|
||||
width: 100%;
|
||||
vertical-align: middle;
|
||||
}
|
||||
.control-label {
|
||||
width: 100%;
|
||||
}
|
||||
.input-group {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -5,129 +5,26 @@
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
@import "~bootstrap-sass/assets/stylesheets/bootstrap/variables";
|
||||
@import "~bootstrap/scss/functions";
|
||||
@import "~bootstrap/scss/variables";
|
||||
@import "~bootstrap/scss/mixins";
|
||||
|
||||
@import '~@tabler/core/src/scss/variables';
|
||||
@import '~@tabler/core/src/scss/mixins';
|
||||
|
||||
/* For highlighting rows, fieldsets and so on */
|
||||
$highlight-bg: #f5f5f5;
|
||||
$highlight-today: #fcf8e3;
|
||||
|
||||
/**
|
||||
* BELOW: A simple one to one clone of /node_modules/admin-lte/build/less/variables.less
|
||||
*/
|
||||
|
||||
// COLORS
|
||||
// --------------------------------------------------------
|
||||
// Primary
|
||||
//$light-blue: #3c8dbc;
|
||||
// Danger
|
||||
$red: #dd4b39;
|
||||
// Success
|
||||
$green: #00a65a;
|
||||
// Info
|
||||
//$aqua: #00c0ef;
|
||||
// Warning
|
||||
$yellow: #f0ad4e;
|
||||
$blue: #0073b7;
|
||||
//$navy: #001F3F;
|
||||
//$teal: #39CCCC;
|
||||
//$olive: #3D9970;
|
||||
//$lime: #01FF70;
|
||||
//$orange: #FF851B;
|
||||
//$fuchsia: #F012BE;
|
||||
//$purple: #605ca8;
|
||||
//$maroon: #D81B60;
|
||||
//$black: #111;
|
||||
|
||||
$gray-lte: #d2d6de;
|
||||
$kimai-default: $gray-lte;
|
||||
|
||||
// LAYOUT
|
||||
// --------------------------------------------------------
|
||||
//
|
||||
// Side bar and logo width
|
||||
//$sidebar-width: 230px;
|
||||
//
|
||||
// Link colors (Aka: <a> tags)
|
||||
//$link-color: $light-blue;
|
||||
//$link-hover-color: lighten($link-color, 15%);
|
||||
//
|
||||
// Body background (Affects main content background only)
|
||||
//$body-bg: #ecf0f5; // DEPRECATED
|
||||
//$content-bg: #ecf0f5;
|
||||
//
|
||||
// SIDEBAR SKINS
|
||||
// --------------------------------------------------------
|
||||
//
|
||||
// Dark sidebar
|
||||
//$sidebar-dark-bg: #222d32;
|
||||
//$sidebar-dark-hover-bg: darken($sidebar-dark-bg, 2%);
|
||||
//$sidebar-dark-color: lighten($sidebar-dark-bg, 60%);
|
||||
//$sidebar-dark-hover-color: #fff;
|
||||
//$sidebar-dark-submenu-bg: lighten($sidebar-dark-bg, 5%);
|
||||
//$sidebar-dark-submenu-color: lighten($sidebar-dark-submenu-bg, 40%);
|
||||
//$sidebar-dark-submenu-hover-color: #fff;
|
||||
//
|
||||
// Light sidebar
|
||||
//$sidebar-ligh//t-bg: #f9fafc;
|
||||
//$sidebar-light-hover-bg: lighten(#f0f0f1, 1.5%);
|
||||
//$sidebar-light-color: #444;
|
||||
//$sidebar-light-hover-color: #000;
|
||||
//$sidebar-light-submenu-bg: $sidebar-light-hover-bg;
|
||||
//$sidebar-light-submenu-color: #777;
|
||||
//$sidebar-light-submenu-hover-color: #000;
|
||||
//
|
||||
// sidebar-expanded-on-hover
|
||||
//$sidebar-expanded-shadow: 3px 0 8px rgba(0,0,0,.125);
|
||||
//
|
||||
// CONTROL SIDEBAR
|
||||
// --------------------------------------------------------
|
||||
//$control-sidebar-width: $sidebar-width;
|
||||
//
|
||||
// BOXES
|
||||
// --------------------------------------------------------
|
||||
//$box-border-color: #f4f4f4;
|
||||
$box-border-radius: 3px;
|
||||
//$box-footer-bg: #fff;
|
||||
//$box-boxshadow: 0 1px 1px rgba(0, 0, 0, .1);
|
||||
//$box-padding: 10px;
|
||||
//
|
||||
// Box variants
|
||||
//$box-default-border-top-color: #d2d6de;
|
||||
//
|
||||
// BUTTONS
|
||||
// --------------------------------------------------------
|
||||
//$btn-boxshadow: none;
|
||||
//
|
||||
// PROGRESS BARS
|
||||
// --------------------------------------------------------
|
||||
//$progress-bar-border-radius: 1px;
|
||||
//$progress-bar-sm-border-radius: 1px;
|
||||
//$progress-bar-xs-border-radius: 1px;
|
||||
//
|
||||
// FORMS
|
||||
// --------------------------------------------------------
|
||||
//$input-radius: 0;
|
||||
//
|
||||
// BUTTONS
|
||||
// --------------------------------------------------------
|
||||
//
|
||||
// Border radius for non flat buttons
|
||||
//$btn-border-radius: 3px;
|
||||
//
|
||||
// DIRECT CHAT
|
||||
// --------------------------------------------------------
|
||||
//$direct-chat-height: 250px;
|
||||
//$direct-chat-default-msg-bg: $gray-lte;
|
||||
//$direct-chat-default-font-color: #444;
|
||||
//$direct-chat-default-msg-border-color: $gray-lte;
|
||||
//
|
||||
// CHAT WIDGET
|
||||
// --------------------------------------------------------
|
||||
//$attachment-border-radius: 3px;
|
||||
//
|
||||
// TRANSITIONS SETTINGS
|
||||
// --------------------------------------------------------
|
||||
//
|
||||
// Transition global options
|
||||
//$transition-speed: .3s;
|
||||
//$transition-fn: ease-in-out;
|
||||
//
|
||||
|
||||
$dark-mode-today: var(--tblr-blue);
|
||||
$dark-mode-weekend: lighten($dark, 5%) !default;
|
||||
|
||||
Reference in New Issue
Block a user