frontend update to tabler beta 19 (#4029)
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
|
||||
require('./sass/app.scss');
|
||||
require('./sass/_app.scss');
|
||||
|
||||
// ------ Kimai itself ------
|
||||
require('./js/KimaiWebLoader.js');
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
|
||||
require('./sass/export-pdf.scss');
|
||||
require('./sass/_export-pdf.scss');
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
|
||||
require('./sass/invoice-pdf.scss');
|
||||
require('./sass/_invoice-pdf.scss');
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
|
||||
require('./sass/invoice.scss');
|
||||
require('./sass/_invoice.scss');
|
||||
|
||||
@@ -194,7 +194,7 @@ export default class KimaiAlert extends KimaiPlugin {
|
||||
<div class="toast-body">
|
||||
` + icon + ' ' + message + `
|
||||
</div>
|
||||
<button type="button" class="btn-close btn-close-white me-2 m-auto" data-bs-dismiss="toast" aria-label="` + translation.get('close') + `"></button>
|
||||
<button type="button" class="btn-close me-2 m-auto" data-bs-dismiss="toast" aria-label="` + translation.get('close') + `"></button>
|
||||
</div>
|
||||
</div>`;
|
||||
|
||||
|
||||
37
assets/sass/_app.scss
Normal file
37
assets/sass/_app.scss
Normal file
@@ -0,0 +1,37 @@
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
@import "bootstrap/scss/functions";
|
||||
|
||||
@import "@tabler/core/src/scss/variables";
|
||||
@import "@tabler/core/src/scss/variables-dark";
|
||||
@import "@tabler/core/src/scss/mixins";
|
||||
|
||||
@import "bootstrap/scss/variables";
|
||||
@import "bootstrap/scss/variables-dark";
|
||||
@import "bootstrap/scss/maps";
|
||||
@import "bootstrap/scss/mixins";
|
||||
@import "bootstrap/scss/utilities";
|
||||
|
||||
@import "layout";
|
||||
@import "error-page";
|
||||
@import "print";
|
||||
@import "content";
|
||||
@import "loading-spinner";
|
||||
@import "tables";
|
||||
@import "calendar";
|
||||
@import "ticktac";
|
||||
@import "selectpicker";
|
||||
@import "forms";
|
||||
@import "modal";
|
||||
@import "progressbar";
|
||||
@import "avatar";
|
||||
@import "theme-dark";
|
||||
@import "pages";
|
||||
@import "tabler-fixes";
|
||||
@import "help";
|
||||
@import "rtl";
|
||||
@@ -7,15 +7,17 @@
|
||||
|
||||
@import "bootstrap/scss/functions";
|
||||
@import "bootstrap/scss/variables";
|
||||
@import "bootstrap/scss/variables-dark";
|
||||
@import "bootstrap/scss/maps";
|
||||
@import "bootstrap/scss/mixins";
|
||||
@import "bootstrap/scss/utilities";
|
||||
|
||||
@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";
|
||||
|
||||
body {
|
||||
font-family: $font-family-sans-serif;
|
||||
@@ -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.
|
||||
*/
|
||||
|
||||
@import 'variables';
|
||||
@import 'layout';
|
||||
@import 'error-page';
|
||||
@import 'print';
|
||||
@import 'content';
|
||||
@import 'loading-spinner';
|
||||
@import 'tables';
|
||||
@import 'calendar';
|
||||
@import 'ticktac';
|
||||
@import 'selectpicker';
|
||||
@import 'forms';
|
||||
@import 'modal';
|
||||
@import 'progressbar';
|
||||
@import 'avatar';
|
||||
@import 'theme-dark';
|
||||
@import 'pages';
|
||||
@import 'tabler-fixes';
|
||||
@import 'help';
|
||||
@import 'rtl';
|
||||
@@ -3,18 +3,18 @@ $avatar-base-size: 30;
|
||||
|
||||
.initials {
|
||||
font-weight: bold;
|
||||
font-size: ceil($avatar-base-size / 2 - 2)+px;
|
||||
font-size: ceil(calc($avatar-base-size / 2 - 2))+px;
|
||||
}
|
||||
|
||||
$avatarSizes: "xs" .75, "sm" 1.25, "md" 1.5, "lg" 2;
|
||||
|
||||
@each $avatarSizeName, $avatarBaseSize in $avatarSizes {
|
||||
.avatar-#{$avatarSizeName} {
|
||||
width: ceil($avatar-base-size * $avatarBaseSize)+px;
|
||||
height: ceil($avatar-base-size * $avatarBaseSize)+px;
|
||||
width: ceil(calc($avatar-base-size * $avatarBaseSize))+px;
|
||||
height: ceil(calc($avatar-base-size * $avatarBaseSize))+px;
|
||||
|
||||
.initials {
|
||||
font-size: ceil($avatar-base-size * $avatarBaseSize / 2 - 2)+px;
|
||||
font-size: ceil(calc($avatar-base-size * $avatarBaseSize / 2 - 2))+px;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -23,10 +23,10 @@ $avatarSizes: "xs" .75, "sm" 1.25, "md" 1.5, "lg" 2;
|
||||
border-radius: 50%;
|
||||
border: 3px solid #fff;
|
||||
.avatar {
|
||||
width: ceil($avatar-base-size * 2.75)+px;
|
||||
height: ceil($avatar-base-size * 2.75)+px;
|
||||
width: ceil(calc($avatar-base-size * 2.75))+px;
|
||||
height: ceil(calc($avatar-base-size * 2.75))+px;
|
||||
.initials {
|
||||
font-size: ceil($avatar-base-size * 2.75 / 2 - 2)+px;
|
||||
font-size: ceil(calc($avatar-base-size * 2.75 / 2 - 2))+px;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -39,3 +39,8 @@ table.dataTable.table > tbody > tr > td {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* decreases the margin between avatars, see https://github.com/tabler/tabler/issues/1567 */
|
||||
.avatar-list-stacked .avatar {
|
||||
margin-right: calc(var(--tblr-avatar-size)*-.1)!important;
|
||||
}
|
||||
@@ -5,6 +5,11 @@
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
/* used in security screens and other full-size pages */
|
||||
.page-center {
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
/* make sure that elements can be hidden without taking space (eg. hidden modals like the search or column visibility) */
|
||||
.hidden-no-space {
|
||||
margin: 0;
|
||||
@@ -33,11 +38,6 @@ td {
|
||||
}
|
||||
}
|
||||
|
||||
.label-gray {
|
||||
background-color: $gray-lte;
|
||||
color: #666;
|
||||
}
|
||||
|
||||
.open-edit {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
19
assets/sass/fontawesome.scss
vendored
19
assets/sass/fontawesome.scss
vendored
@@ -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.
|
||||
*/
|
||||
|
||||
$fa-font-path: "~@fortawesome/fontawesome-free/webfonts/";
|
||||
@import "@fortawesome/fontawesome-free/scss/fontawesome";
|
||||
@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;
|
||||
}
|
||||
@@ -38,3 +38,8 @@ h1.navbar-brand a {
|
||||
/* bootstrap thead.sticky-top has z-index 1020 and the reporting form dropdowns hide behind that */
|
||||
z-index: 1021;
|
||||
}
|
||||
|
||||
/* reduce the default font size for the brand header */
|
||||
.navbar {
|
||||
--tblr-navbar-brand-font-size: 1rem;
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
z-index: 50;
|
||||
z-index: 1021;
|
||||
background: rgba(255, 255, 255, 0.7);
|
||||
> .fas {
|
||||
position: absolute;
|
||||
|
||||
@@ -1,23 +1,22 @@
|
||||
@import "tom-select/dist/scss/tom-select.bootstrap5";
|
||||
|
||||
/* bootstrap thead.sticky-top has z-index 1020 and tomselect dropdowns often hide behind that */
|
||||
.ts-dropdown {
|
||||
z-index: 1021;
|
||||
}
|
||||
|
||||
/* can be removed if no error is reported. it is unknown why this was added */
|
||||
/*
|
||||
.ts-control {
|
||||
> input {
|
||||
min-width: unset;
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
.ts-dropdown {
|
||||
.optgroup-header {
|
||||
background-color: #eee;
|
||||
color: #000;
|
||||
font-weight: 600;
|
||||
}
|
||||
[data-selectable].option {
|
||||
padding-left: 20px;
|
||||
.optgroup {
|
||||
[data-selectable].option {
|
||||
padding-left: 20px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
@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,7 +4,6 @@
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
@import "variables";
|
||||
|
||||
table.dataTable {
|
||||
clear: both;
|
||||
@@ -93,7 +92,7 @@ table.dataTable {
|
||||
&.summary td {
|
||||
font-weight: bold;
|
||||
border: 0;
|
||||
background-color: var(--tblr-table-striped-bg);
|
||||
background-color: var(--tblr-bg-surface-secondary);
|
||||
}
|
||||
th.multiCheckbox {
|
||||
width: 15px;
|
||||
@@ -118,30 +117,17 @@ table.dataTable {
|
||||
padding: .3em .6em .3em;
|
||||
line-height: 24px;
|
||||
}
|
||||
span.label-activity,
|
||||
span.label-project,
|
||||
span.label-customer {
|
||||
a {
|
||||
color: unset;
|
||||
padding-bottom: 2px;
|
||||
border-bottom: 1px dotted $gray-lte;
|
||||
&:hover {
|
||||
border-bottom: 1px dotted darken($gray-lte, 20);
|
||||
}
|
||||
}
|
||||
}
|
||||
span.label-invisible {
|
||||
opacity: 0.8;
|
||||
opacity: 0.6;
|
||||
}
|
||||
}
|
||||
th.weekend,
|
||||
td.weekend {
|
||||
background-color: #f9f9f9;
|
||||
background-color: var(--tblr-bg-surface-secondary);
|
||||
}
|
||||
/* order is important, "today” should overwrite "weekend" therefor later in the file */
|
||||
th.today,
|
||||
td.today {
|
||||
background-color: $highlight-today;
|
||||
th.today {
|
||||
background-color: var(--tblr-highlight-bg);
|
||||
}
|
||||
th.total,
|
||||
td.total {
|
||||
|
||||
@@ -1,48 +1,7 @@
|
||||
@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;
|
||||
}
|
||||
|
||||
@include color-mode(dark, true) {
|
||||
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;
|
||||
}
|
||||
th.today {
|
||||
color: var(--tblr-muted);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -50,7 +9,7 @@
|
||||
background: rgba(0, 0, 0, 0.5);
|
||||
|
||||
> .fas {
|
||||
color: $dark-mode-text;
|
||||
color: var(--tblr-white);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -37,8 +37,6 @@
|
||||
@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,30 +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.
|
||||
*/
|
||||
|
||||
@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;
|
||||
|
||||
$red: #dd4b39;
|
||||
$green: #00a65a;
|
||||
$yellow: #f0ad4e;
|
||||
$blue: #0073b7;
|
||||
|
||||
$gray-lte: #d2d6de;
|
||||
$kimai-default: $gray-lte;
|
||||
|
||||
$box-border-radius: 3px;
|
||||
|
||||
$dark-mode-today: var(--tblr-blue);
|
||||
$dark-mode-weekend: lighten($dark, 5%) !default;
|
||||
@@ -34,7 +34,7 @@
|
||||
"friendsofsymfony/rest-bundle": "^3.0",
|
||||
"gedmo/doctrine-extensions": "^3.6",
|
||||
"jms/serializer-bundle": "^5.0",
|
||||
"kevinpapst/tabler-bundle": "^0.15",
|
||||
"kevinpapst/tabler-bundle": "^0.16",
|
||||
"league/csv": "^9.4",
|
||||
"mpdf/mpdf": "^8.0",
|
||||
"nelmio/api-doc-bundle": "^4.0",
|
||||
|
||||
14
composer.lock
generated
14
composer.lock
generated
@@ -4,7 +4,7 @@
|
||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "276b8b25218c04ae6527eccfec7f1464",
|
||||
"content-hash": "26d6641fd4c8f977b0a50cab05e1df87",
|
||||
"packages": [
|
||||
{
|
||||
"name": "bacon/bacon-qr-code",
|
||||
@@ -2416,16 +2416,16 @@
|
||||
},
|
||||
{
|
||||
"name": "kevinpapst/tabler-bundle",
|
||||
"version": "0.15",
|
||||
"version": "0.16",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/kevinpapst/TablerBundle.git",
|
||||
"reference": "570cdda287a49127217f0f2aa4425d3174073bdb"
|
||||
"reference": "c5986daa3595fc5163f7d0cb15f69dc5f696b987"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/kevinpapst/TablerBundle/zipball/570cdda287a49127217f0f2aa4425d3174073bdb",
|
||||
"reference": "570cdda287a49127217f0f2aa4425d3174073bdb",
|
||||
"url": "https://api.github.com/repos/kevinpapst/TablerBundle/zipball/c5986daa3595fc5163f7d0cb15f69dc5f696b987",
|
||||
"reference": "c5986daa3595fc5163f7d0cb15f69dc5f696b987",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -2474,7 +2474,7 @@
|
||||
"description": "Admin/Backend theme bundle for Symfony based on Tabler.io",
|
||||
"support": {
|
||||
"issues": "https://github.com/kevinpapst/TablerBundle/issues",
|
||||
"source": "https://github.com/kevinpapst/TablerBundle/tree/0.15"
|
||||
"source": "https://github.com/kevinpapst/TablerBundle/tree/0.16"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -2486,7 +2486,7 @@
|
||||
"type": "github"
|
||||
}
|
||||
],
|
||||
"time": "2023-04-06T16:30:28+00:00"
|
||||
"time": "2023-05-15T12:01:30+00:00"
|
||||
},
|
||||
{
|
||||
"name": "laminas/laminas-escaper",
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
"@fullcalendar/interaction": "^5.11",
|
||||
"@fullcalendar/timegrid": "^5.11",
|
||||
"@symfony/webpack-encore": "^4.0",
|
||||
"@tabler/core": "1.0.0-beta16",
|
||||
"@tabler/core": "1.0.0-beta18",
|
||||
"chart.js": "^3.9",
|
||||
"core-js": "^3.6",
|
||||
"eslint": "^8.0",
|
||||
@@ -44,9 +44,9 @@
|
||||
"gridstack": "^7.1",
|
||||
"litepicker": "^2.0",
|
||||
"luxon": "^3.3",
|
||||
"node-sass": "^8.0",
|
||||
"sass": "^1.62.1",
|
||||
"sass-loader": "^13.2",
|
||||
"tom-select": "^2.0",
|
||||
"tom-select": "^2.2",
|
||||
"webpack": "^5.74.0",
|
||||
"webpack-cli": "^4.10.0",
|
||||
"webpack-notifier": "^1.13"
|
||||
|
||||
1
public/build/app.80fb16e8.css
Normal file
1
public/build/app.80fb16e8.css
Normal file
File diff suppressed because one or more lines are too long
2
public/build/app.bed7a1bf.js
Normal file
2
public/build/app.bed7a1bf.js
Normal file
File diff suppressed because one or more lines are too long
@@ -1,6 +1,6 @@
|
||||
/*!
|
||||
* Bootstrap v5.2.2 (https://getbootstrap.com/)
|
||||
* Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
||||
* Bootstrap v5.3.0-alpha3 (https://getbootstrap.com/)
|
||||
* Copyright 2011-2023 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
||||
*/
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,6 +1,6 @@
|
||||
/*!
|
||||
* Bootstrap v5.2.2 (https://getbootstrap.com/)
|
||||
* Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
||||
* Bootstrap v5.3.0-alpha3 (https://getbootstrap.com/)
|
||||
* Copyright 2011-2023 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
||||
*/
|
||||
|
||||
@@ -3,16 +3,16 @@
|
||||
"app": {
|
||||
"js": [
|
||||
"/build/runtime.f0079159.js",
|
||||
"/build/app.c61734af.js"
|
||||
"/build/app.bed7a1bf.js"
|
||||
],
|
||||
"css": [
|
||||
"/build/app.d3ccebf5.css"
|
||||
"/build/app.80fb16e8.css"
|
||||
]
|
||||
},
|
||||
"export-pdf": {
|
||||
"js": [
|
||||
"/build/runtime.f0079159.js",
|
||||
"/build/export-pdf.587575e7.js"
|
||||
"/build/export-pdf.d367a32e.js"
|
||||
],
|
||||
"css": [
|
||||
"/build/export-pdf.d8a6c23b.css"
|
||||
@@ -21,16 +21,16 @@
|
||||
"invoice": {
|
||||
"js": [
|
||||
"/build/runtime.f0079159.js",
|
||||
"/build/invoice.c8ae95ad.js"
|
||||
"/build/invoice.2604495e.js"
|
||||
],
|
||||
"css": [
|
||||
"/build/invoice.d0ae14e1.css"
|
||||
"/build/invoice.5bea118e.css"
|
||||
]
|
||||
},
|
||||
"invoice-pdf": {
|
||||
"js": [
|
||||
"/build/runtime.f0079159.js",
|
||||
"/build/invoice-pdf.d86b82ee.js"
|
||||
"/build/invoice-pdf.ce9aace0.js"
|
||||
],
|
||||
"css": [
|
||||
"/build/invoice-pdf.2b749265.css"
|
||||
@@ -45,7 +45,7 @@
|
||||
"calendar": {
|
||||
"js": [
|
||||
"/build/runtime.f0079159.js",
|
||||
"/build/calendar.8577d9cd.js"
|
||||
"/build/calendar.198a5c2b.js"
|
||||
],
|
||||
"css": [
|
||||
"/build/calendar.bb473428.css"
|
||||
@@ -63,16 +63,16 @@
|
||||
},
|
||||
"integrity": {
|
||||
"/build/runtime.f0079159.js": "sha384-H22sAW1aTvyIPqvHOvGXWSWTxf0y6mptp+MsVmyXCfjx/WJjBbhX9gbUZ+qIuihV",
|
||||
"/build/app.c61734af.js": "sha384-EP0ldSWtoYJlwRuaj2IjQCncdMT5rlz4cfZgDzciCd0i2pGn6MEijujB4bUU0PCP",
|
||||
"/build/app.d3ccebf5.css": "sha384-9ufQd+D9ebk0tkPhQvGxswVMeHGES5GgJGK5lsDFS9+dQmdKbxwB/58ZSCVA3N/2",
|
||||
"/build/export-pdf.587575e7.js": "sha384-J50GStmmfVwUTN4dIRQ02eg9hyzGFPSzpTtpPody92j0V6zCqw+s5l8+ZhVTugeW",
|
||||
"/build/app.bed7a1bf.js": "sha384-OCg9guQNr23augSqlruX0IK2FWrKO1MWMx0sBRIzAkKgg561U4stZRHfxQbrwJeG",
|
||||
"/build/app.80fb16e8.css": "sha384-kDryvDuNVyJAdIyQEuF5NpT1duQ4VmScmUNtha3B0ssQyzLuQdWBz/G3m70wao12",
|
||||
"/build/export-pdf.d367a32e.js": "sha384-Z5baqnzjI636nYFs4g63ViIKBZKRW4Jhv/7PQmTEQlqhfA7eK0vUMUtiyy0R5A9u",
|
||||
"/build/export-pdf.d8a6c23b.css": "sha384-ztepocHE4rnGE9eKZ4kL6jTKaePUyiwiB9TjJjstjpf/ckcKg1HedrEOOk/8ElJg",
|
||||
"/build/invoice.c8ae95ad.js": "sha384-2eVY7MBiMQxo1vhfizU+fYfEZbz9bYUdzqxnpTQhxpYiLaxeSV4WnaObq2G7/Pks",
|
||||
"/build/invoice.d0ae14e1.css": "sha384-DZ9f2EsTAIOVoFBZe4jMaW3R6yNVGCtcn3Dq3hxZnWRDdFzhyt1O1iQqRZUyQFTM",
|
||||
"/build/invoice-pdf.d86b82ee.js": "sha384-A0HJqP+MvEqQr1uG8wViCeEWxBRKyS6l8D+Ao4pFYHUA12gCC1gRYhk9I+SJPvZq",
|
||||
"/build/invoice.2604495e.js": "sha384-D6JvhGSqlx7z72b/qD3nF3QDXPy+XsCSRGtWfs1icjDKOcd2UzuXwuSa/E1Fg2TJ",
|
||||
"/build/invoice.5bea118e.css": "sha384-KNyGdZSTXnAi8Tn2WqrxJnCP18yRK7BrZTHKCAGAEtl5/4S/XAe4IHKpM5gfsmB7",
|
||||
"/build/invoice-pdf.ce9aace0.js": "sha384-mtZkXrpsXFMX2YvmmTlCm91QgsTlZLzLJnDAFcTuBDtDZ7TNkqLYkfCeLzFLVfwb",
|
||||
"/build/invoice-pdf.2b749265.css": "sha384-DXXgkz2WWnrWnfBnXX5fmfPQSPb98upMnWxYKwTGYS04EhrPIWfDCutB2unIrWh7",
|
||||
"/build/chart.f5becfac.js": "sha384-GSqETm8wULiVXyizvwRompfwu63r/C0Qd/AvrHDE4cqAKiIGCssb3QyBtGu1WN+W",
|
||||
"/build/calendar.8577d9cd.js": "sha384-1qlF+4tr7/zve+wvZef7sVcbUxhK0/yEm5Hbuct8K/ZV4JtENdNY7YRLqOcZ/8Y3",
|
||||
"/build/calendar.198a5c2b.js": "sha384-Rx1eiPfZeAO2iapu94+f3xx4tjj7xbtkUaZwycaxMU+v/bYLjAJIL+VSjiBPYnTg",
|
||||
"/build/calendar.bb473428.css": "sha384-900W9o8666Qpw21rLP7hn5Ql8tWd40k0IcE3QpFm7E7V6bKva7xQgGlyzVuuh4GK",
|
||||
"/build/dashboard.6774a712.js": "sha384-lBwkNqUPv+IBbznagiFakY2BOIueq/Bg89wHO2XeM9YAZ51rPkrvdMd+XmFupHsM",
|
||||
"/build/dashboard.18f5a8b7.css": "sha384-PBD8ftb2yBoSjRe2sN5Xb4dEz045kOEUfcIufdSis+tWoWdAx5j4Yic+F/6CYbrP"
|
||||
|
||||
@@ -1 +1 @@
|
||||
(self.webpackChunkkimai2=self.webpackChunkkimai2||[]).push([[185],{8810:function(i,n,u){u(8568)},8568:function(i,n,u){"use strict";u.r(n)}},function(i){var n;n=8810,i(i.s=n)}]);
|
||||
(self.webpackChunkkimai2=self.webpackChunkkimai2||[]).push([[185],{8810:function(i,n,u){u(9508)},9508:function(i,n,u){"use strict";u.r(n)}},function(i){var n;n=8810,i(i.s=n)}]);
|
||||
1
public/build/invoice-pdf.ce9aace0.js
Normal file
1
public/build/invoice-pdf.ce9aace0.js
Normal file
@@ -0,0 +1 @@
|
||||
(self.webpackChunkkimai2=self.webpackChunkkimai2||[]).push([[266],{35:function(i,n,u){u(6197)},6197:function(i,n,u){"use strict";u.r(n)}},function(i){var n;n=35,i(i.s=n)}]);
|
||||
@@ -1 +0,0 @@
|
||||
(self.webpackChunkkimai2=self.webpackChunkkimai2||[]).push([[266],{35:function(i,n,u){u(297)},297:function(i,n,u){"use strict";u.r(n)}},function(i){var n;n=35,i(i.s=n)}]);
|
||||
@@ -1 +1 @@
|
||||
(self.webpackChunkkimai2=self.webpackChunkkimai2||[]).push([[149],{474:function(i,n,u){u(3648)},3648:function(i,n,u){"use strict";u.r(n)}},function(i){var n;n=474,i(i.s=n)}]);
|
||||
(self.webpackChunkkimai2=self.webpackChunkkimai2||[]).push([[149],{474:function(i,n,u){u(9822)},9822:function(i,n,u){"use strict";u.r(n)}},function(i){var n;n=474,i(i.s=n)}]);
|
||||
1
public/build/invoice.5bea118e.css
Normal file
1
public/build/invoice.5bea118e.css
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,15 +1,15 @@
|
||||
{
|
||||
"build/app.css": "/build/app.d3ccebf5.css",
|
||||
"build/app.js": "/build/app.c61734af.js",
|
||||
"build/app.css": "/build/app.80fb16e8.css",
|
||||
"build/app.js": "/build/app.bed7a1bf.js",
|
||||
"build/export-pdf.css": "/build/export-pdf.d8a6c23b.css",
|
||||
"build/export-pdf.js": "/build/export-pdf.587575e7.js",
|
||||
"build/invoice.css": "/build/invoice.d0ae14e1.css",
|
||||
"build/invoice.js": "/build/invoice.c8ae95ad.js",
|
||||
"build/export-pdf.js": "/build/export-pdf.d367a32e.js",
|
||||
"build/invoice.css": "/build/invoice.5bea118e.css",
|
||||
"build/invoice.js": "/build/invoice.2604495e.js",
|
||||
"build/invoice-pdf.css": "/build/invoice-pdf.2b749265.css",
|
||||
"build/invoice-pdf.js": "/build/invoice-pdf.d86b82ee.js",
|
||||
"build/invoice-pdf.js": "/build/invoice-pdf.ce9aace0.js",
|
||||
"build/chart.js": "/build/chart.f5becfac.js",
|
||||
"build/calendar.css": "/build/calendar.bb473428.css",
|
||||
"build/calendar.js": "/build/calendar.8577d9cd.js",
|
||||
"build/calendar.js": "/build/calendar.198a5c2b.js",
|
||||
"build/dashboard.css": "/build/dashboard.18f5a8b7.css",
|
||||
"build/dashboard.js": "/build/dashboard.6774a712.js",
|
||||
"build/runtime.js": "/build/runtime.f0079159.js"
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
namespace App\EventSubscriber;
|
||||
|
||||
use App\Configuration\LocaleService;
|
||||
use App\Constants;
|
||||
use App\Entity\User;
|
||||
use App\Entity\UserPreference;
|
||||
use KevinPapst\TablerBundle\Helper\ContextHelper;
|
||||
@@ -41,6 +42,8 @@ final class ThemeOptionsSubscriber implements EventSubscriberInterface
|
||||
return;
|
||||
}
|
||||
|
||||
$this->helper->setAssetVersion((string) Constants::VERSION_ID);
|
||||
|
||||
if ($this->localeService->isRightToLeft(\Locale::getDefault())) {
|
||||
$this->helper->setIsRightToLeft(true);
|
||||
}
|
||||
@@ -66,8 +69,7 @@ final class ThemeOptionsSubscriber implements EventSubscriberInterface
|
||||
$this->helper->setIsCondensedUserMenu(false);
|
||||
$this->helper->setIsCondensedNavbar(false);
|
||||
$this->helper->setIsNavbarOverlapping(false);
|
||||
if (!$this->helper->isDarkMode()) {
|
||||
$this->helper->setIsNavbarDark(true);
|
||||
}
|
||||
$this->helper->setIsNavbarDark(true);
|
||||
$this->helper->setIsHeaderDark($this->helper->isDarkMode());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,27 +12,27 @@
|
||||
<h3 class="m-0 mb-1">
|
||||
<a href="{{ constant('App\\Constants::HOMEPAGE') }}" target="_blank">{{ constant('App\\Constants::SOFTWARE') }}</a>
|
||||
</h3>
|
||||
<div class="text-muted">
|
||||
<div class="text-body-secondary">
|
||||
{{ constant('App\\Constants::VERSION') }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="d-flex">
|
||||
<a href="{{ ''|docu_link }}" target="_blank" class="card-btn">
|
||||
<i class="me-2 text-muted {{ 'help'|icon(false) }}"></i>
|
||||
<i class="me-2 text-body-secondary {{ 'help'|icon(false) }}"></i>
|
||||
{{ 'help'|trans({}, 'about') }}
|
||||
</a>
|
||||
<a href="{{ constant('App\\Constants::GITHUB') }}discussions" target="_blank" class="card-btn">
|
||||
<i class="me-2 text-muted {{ 'fab fa-github'|icon(false) }}"></i>
|
||||
<i class="me-2 text-body-secondary {{ 'fab fa-github'|icon(false) }}"></i>
|
||||
{{ 'support'|trans({}, 'about') }}
|
||||
</a>
|
||||
</div>
|
||||
<div class="d-flex">
|
||||
<a href="{{ constant('App\\Constants::HOMEPAGE') }}" target="_blank" class="card-btn">
|
||||
<i class="me-2 text-muted {{ 'home'|icon(false) }}"></i>
|
||||
<i class="me-2 text-body-secondary {{ 'home'|icon(false) }}"></i>
|
||||
{{ 'website'|trans({}, 'about') }}
|
||||
</a>
|
||||
<a href="{{ constant('App\\Constants::HOMEPAGE') }}/donate/" target="_blank" class="card-btn">
|
||||
<i class="me-2 text-muted {{ 'fas fa-hand-holding-heart'|icon(false) }}"></i>
|
||||
<i class="me-2 text-body-secondary {{ 'fas fa-hand-holding-heart'|icon(false) }}"></i>
|
||||
{{ 'donate'|trans({}, 'about') }}
|
||||
</a>
|
||||
</div>
|
||||
@@ -92,11 +92,11 @@
|
||||
<i class="fa-2x fas fa-balance-scale"></i>
|
||||
</div>
|
||||
<div>
|
||||
<small class="text-muted">{{ constant('\\App\\Constants::SOFTWARE') }} is licensed under the</small>
|
||||
<small class="text-body-secondary">{{ constant('\\App\\Constants::SOFTWARE') }} is licensed under the</small>
|
||||
<h3 class="lh-1">GNU Affero General Public License v3.0</h3>
|
||||
</div>
|
||||
</div>
|
||||
<div class="text-muted mb-3">
|
||||
<div class="text-body-secondary mb-3">
|
||||
Permissions of this strongest copyleft license are conditioned on making available complete source code of licensed works and modifications,
|
||||
which include larger works using a licensed work, under the same license.
|
||||
Copyright and license notices must be preserved. Contributors provide an express grant of patent rights.
|
||||
|
||||
@@ -157,7 +157,7 @@
|
||||
{% if block('table_actions') is defined %}
|
||||
{{ block('table_actions') }}
|
||||
{% elseif block('breadcrumb') is defined %}
|
||||
<div class="text-muted mt-1">
|
||||
<div class="text-body-secondary mt-1">
|
||||
{{ block('breadcrumb') }}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
{% if source.blockInclude is not null and entry.blockName is not null and block(entry.blockName, source.blockInclude) is defined %}
|
||||
{{ block(entry.blockName, source.blockInclude) }}
|
||||
{% else %}
|
||||
<span class="d-block text-muted text-truncate mt-n1">{{ entry.title }}</span>
|
||||
<span class="d-block text-body-secondary text-truncate mt-n1">{{ entry.title }}</span>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -2,6 +2,6 @@
|
||||
{% import "macros/widgets.html.twig" as widgets %}
|
||||
{{ title }}
|
||||
{% if project is not null %}
|
||||
<small class="d-block text-muted text-truncate mt-n1">{{ project }}{% if customer is not null %}, {{ customer }}{% endif %}</small>
|
||||
<small class="d-block text-body-secondary text-truncate mt-n1">{{ project }}{% if customer is not null %}, {{ customer }}{% endif %}</small>
|
||||
{% endif %}
|
||||
{% endmacro %}
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
</h5>
|
||||
<button type="button" class="btn-close{% if tabler_bundle.isDarkMode() %} btn-close-white{% endif %}" data-bs-dismiss="modal" aria-label="{{ 'action.close'|trans }}"></button>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="{{ 'action.close'|trans }}"></button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
{% block modal_body %}
|
||||
|
||||
@@ -106,7 +106,7 @@
|
||||
{%- elseif '.ERROR' in logLine -%}
|
||||
{%- set logLineClass = 'text-warning text-bold' -%}
|
||||
{%- elseif '.DEBUG' in logLine -%}
|
||||
{%- set logLineClass = 'text-muted' -%}
|
||||
{%- set logLineClass = 'text-body-secondary' -%}
|
||||
{%- endif -%}
|
||||
<span class="{{ logLineClass }}">{{- logLine -}}</span>
|
||||
{%- endfor %}</pre>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<div class="text-truncate">
|
||||
<strong>{{ widgets.username(comment.createdBy) }}</strong>
|
||||
</div>
|
||||
<div class="text-muted">{{ comment.createdAt|date_time }}</div>
|
||||
<div class="text-body-secondary">{{ comment.createdAt|date_time }}</div>
|
||||
</div>
|
||||
<div class="col-auto align-self-center">
|
||||
{% if route_pin is not null %}
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
{% block box_attributes %}id="team_listing_box"{% endblock %}
|
||||
{% block box_title %}
|
||||
{{ 'permissions'|trans({}, 'actions') }}
|
||||
{% if teams|length > 0 %}<small class="text-muted d-none d-sm-inline ms-1">{{ 'team.visibility_restricted'|trans({}, 'teams') }}</small>{% endif %}
|
||||
{% if teams|length > 0 %}<small class="text-body-secondary d-none d-sm-inline ms-1">{{ 'team.visibility_restricted'|trans({}, 'teams') }}</small>{% endif %}
|
||||
{% endblock %}
|
||||
{% block box_body_class %}{% if teams|length > 0 %}p-0{% endif %}{% endblock %}
|
||||
{% block box_body %}
|
||||
|
||||
@@ -103,9 +103,9 @@
|
||||
{{ form_errors(form.user) }}
|
||||
</div>
|
||||
{% if user is not null %}
|
||||
<div class="text-muted">{{- form.vars.data.user.title -}}</div>
|
||||
<div class="text-body-secondary">{{- form.vars.data.user.title -}}</div>
|
||||
{% else %}
|
||||
<div class="text-muted">__TITLE__</div>
|
||||
<div class="text-body-secondary">__TITLE__</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
{% import "invoice/actions.html.twig" as actions %}
|
||||
|
||||
{% block datatable_row %}
|
||||
<tr class="modal-ajax-form open-edit{% if entry.canceled %} warning text-muted{% endif %}" data-href="{{ path('admin_invoice_edit', {'id': entry.id}) }}">
|
||||
<tr class="modal-ajax-form open-edit{% if entry.canceled %} text-body-secondary{% endif %}" data-href="{{ path('admin_invoice_edit', {'id': entry.id}) }}">
|
||||
<td class="{{ tables.class(dataTable, 'avatar') }}">{{ widgets.user_avatar(entry.user) }}</td>
|
||||
<td class="{{ tables.class(dataTable, 'date') }}">{{ entry.createdAt|date_short }}</td>
|
||||
<td class="{{ tables.class(dataTable, 'user') }}">{{ widgets.label_user(entry.user) }}</td>
|
||||
|
||||
@@ -262,7 +262,7 @@
|
||||
{{ form_end(multi_update_form) }}
|
||||
{% endif %}
|
||||
{% if route is not empty and entries is not null %}
|
||||
<p class="d-none d-sm-block m-0 text-muted multi_update_form_hide">
|
||||
<p class="d-none d-sm-block m-0 text-body-secondary multi_update_form_hide">
|
||||
{{ 'pagination'|trans({'%start%': entries.getCurrentPageOffsetStart(), '%end%': entries.getCurrentPageOffsetEnd(), '%total%': entries.getNbResults()}) }}
|
||||
</p>
|
||||
{% set options = { 'css_container_class': 'pagination m-0 ms-auto d-print-none' } %}
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
{% endblock %}
|
||||
|
||||
{% block login_actions %}
|
||||
<div class="text-center text-muted mt-3">
|
||||
<div class="text-center text-body-secondary mt-3">
|
||||
<a href="{{ path('homepage') }}">
|
||||
{{ 'Show homepage'|trans({}, 'TablerBundle') }}
|
||||
</a>
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
{% block login_box_msg %}{{ 'security.unlock.title'|trans }}{% endblock %}
|
||||
|
||||
{% block login_form %}
|
||||
<p class="text-muted text-center mb-4">
|
||||
<p class="text-body-secondary text-center mb-4">
|
||||
{% block unlock_title %}{{ 'security.unlock.intro'|trans }}{% endblock %}
|
||||
</p>
|
||||
<div class="mb-4 text-center">
|
||||
@@ -15,7 +15,7 @@
|
||||
{{ user_avatar(app.user, false, 'avatar-xl mb-3') }}
|
||||
<h3>{{ username(app.user) }}</h3>
|
||||
{% if app.user.title is not empty %}
|
||||
<p class="text-muted">{{ app.user.title }}</p>
|
||||
<p class="text-body-secondary">{{ app.user.title }}</p>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% block unlock_form %}
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
{% for section in sorted|sort((a, b) => a.name <=> b.name) %}
|
||||
<a class="list-group-item d-flex" href="#conf_{{ section.id }}">
|
||||
{{ section.name }}
|
||||
<small class="text-muted ms-auto">{{ section.counter }}</small>
|
||||
<small class="text-body-secondary ms-auto">{{ section.counter }}</small>
|
||||
</a>
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
<div class="col" style="min-width: 100px">
|
||||
<h4 class="card-title m-0">{{ widgets.username(user) }}</h4>
|
||||
{% if user.title is not empty %}
|
||||
<div class="text-muted">
|
||||
<div class="text-body-secondary">
|
||||
{{ user.title }}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
<div class="font-weight-medium">
|
||||
{{ title|trans }}
|
||||
</div>
|
||||
<div class="text-muted">
|
||||
<div class="text-body-secondary">
|
||||
{% block widget_data %}
|
||||
{{ data }}
|
||||
{% endblock %}
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
{{ title|trans }}
|
||||
</a>
|
||||
</div>
|
||||
<div class="text-muted">
|
||||
<div class="text-body-secondary">
|
||||
{% if data is iterable %}
|
||||
{{ 'Invalid data' }}
|
||||
{% else %}
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<div class="card-body text-center py-4 p-sm-5">
|
||||
<img src="{{ asset('wizard/done.png') }}" height="120" class="mb-n2" alt="Illustration by Katerina Limpitsouni from https://undraw.co/">
|
||||
<h1 class="mt-5">{{ 'wizard.done.title'|trans({}, 'wizard') }}</h1>
|
||||
<p class="text-muted">{{ 'wizard.done.description'|trans({}, 'wizard') }}</p>
|
||||
<p class="text-body-secondary">{{ 'wizard.done.description'|trans({}, 'wizard') }}</p>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
|
||||
@@ -4,6 +4,6 @@
|
||||
<div class="card-body text-center py-4 p-sm-5">
|
||||
<img src="{{ asset('wizard/time-management.png') }}" height="120" class="mb-n2" alt="Illustration by Katerina Limpitsouni from https://undraw.co/">
|
||||
<h1 class="mt-5">{{ 'wizard.intro.title'|trans({}, 'wizard') }}</h1>
|
||||
<p class="text-muted">{{ 'wizard.intro.description'|trans({}, 'wizard') }}</p>
|
||||
<p class="text-body-secondary">{{ 'wizard.intro.description'|trans({}, 'wizard') }}</p>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
{% block wizard_content %}
|
||||
<div class="card-body text-center py-4 p-sm-5">
|
||||
<h1 class="mt-2">{{ 'wizard.profile.title'|trans({}, 'wizard') }}</h1>
|
||||
<p class="text-muted">{{ 'wizard.profile.description'|trans({}, 'wizard') }}</p>
|
||||
<p class="text-body-secondary">{{ 'wizard.profile.description'|trans({}, 'wizard') }}</p>
|
||||
</div>
|
||||
<div class="hr-text hr-text-center hr-text-spaceless">{{ 'wizard.separator'|trans({}, 'wizard') }}</div>
|
||||
<div class="card-body">
|
||||
|
||||
Reference in New Issue
Block a user