Merge branch 'master' of github.com:akaunting/akaunting

This commit is contained in:
Cüneyt Şentürk 2022-10-24 17:42:35 +03:00
commit ed58115d9f
26 changed files with 417 additions and 165 deletions

View File

@ -150,7 +150,7 @@ abstract class Report
public function applySearchStringFilter($event)
{
$input = request('search');
$input = request('search', '');
// Remove year as it's handled based on financial start
$search_year = 'year:' . $this->getSearchStringValue('year', '', $input);

View File

@ -56,6 +56,10 @@ abstract class Report
public $loaded = false;
public $bar_formatter_type = 'money';
public $donut_formatter_type = 'percent';
public $chart = [
'bar' => [
'colors' => [
@ -310,12 +314,12 @@ abstract class Report
continue;
}
$this->chart[$table_key]['bar']['yaxis']['labels']['formatter'] = $this->getChartLabelFormatter();
$this->chart[$table_key]['donut']['yaxis']['labels']['formatter'] = $this->getChartLabelFormatter('percent');
$this->chart[$table_key]['bar']['yaxis']['labels']['formatter'] = $this->getChartLabelFormatter($this->bar_formatter_type);
$this->chart[$table_key]['donut']['yaxis']['labels']['formatter'] = $this->getChartLabelFormatter($this->donut_formatter_type);
}
} else {
$this->chart['bar']['yaxis']['labels']['formatter'] = $this->getChartLabelFormatter();
$this->chart['donut']['yaxis']['labels']['formatter'] = $this->getChartLabelFormatter('percent');
$this->chart['bar']['yaxis']['labels']['formatter'] = $this->getChartLabelFormatter($this->bar_formatter_type);
$this->chart['donut']['yaxis']['labels']['formatter'] = $this->getChartLabelFormatter($this->donut_formatter_type);
}
}

View File

@ -8,16 +8,12 @@ trait SearchString
* Get the value of a name in search string
* Example: search=type:customer year:2020 account_id:20
* Example: issued_at>=2021-02-01 issued_at<=2021-02-10 account_id:49
*
* @return string|array
*/
public function getSearchStringValue($name, $default = '', $input = null)
public function getSearchStringValue(string $name, string $default = '', string $input = ''): string|array
{
$value = $default;
if (is_null($input)) {
$input = request('search');
}
$input = $input ?: request('search', '');
// $manager = $this->getSearchStringManager();
// $parsed = $manager->parse($input);
@ -37,7 +33,7 @@ trait SearchString
break;
}
if (!is_array($value)) {
if (! is_array($value)) {
$value = [];
}

12
presets.js vendored
View File

@ -231,6 +231,14 @@ module.exports = {
'0%': { boxShadow: '0 28px 0 -28px #55588b' },
'100%': { boxShadow: '0 28px 0 #55588b' },
},
marquee: {
'0%': { transform: 'translateX(0%)' },
'100%': { transform: 'translateX(-100%)' },
},
marquee_long: {
'0%': { transform: 'translateX(0%)' },
'100%': { transform: 'translateX(-350%)' },
}
},
animation: {
@ -239,7 +247,9 @@ module.exports = {
pulsate: 'pulsate 1500ms ease infinite;',
spin: 'spin 1000ms infinite',
submit: 'submit 0.7s ease alternate infinite',
submit_second: 'submit_second 0.7s ease alternate infinite'
submit_second: 'submit_second 0.7s ease alternate infinite',
marquee: 'marquee 9s linear infinite',
marquee_long: 'marquee_long 14s linear infinite'
},
transitionProperty: {

View File

@ -357,3 +357,83 @@ if (navigator.userAgent.search("Firefox") >= 0) {
}
}
//Firefox show modal for icon set
//margue animation for truncated text
function marqueeAnimation(truncate) {
if (truncate.closest('[disable-marquee]') !== null) {
truncate.parentElement.classList.add('truncate');
truncate.closest('[disable-marquee]').setAttribute('disable-marquee', 'data-disable-marquee');
return;
}
// offsetwidth = width of the text, clientWidth = width of parent text (div)
// because some index page has icons, we use two time parent element
if (truncate.offsetWidth > truncate.parentElement.clientWidth || truncate.offsetWidth > truncate.parentElement.parentElement.parentElement.clientWidth) {
truncate.addEventListener('mouseover', function () {
truncate.parentElement.style.animationPlayState = 'running';
if (truncate.offsetWidth > 400 && truncate.parentElement.clientWidth < 150) {
truncate.parentElement.classList.remove('animate-marquee');
truncate.parentElement.classList.add('animate-marquee_long');
} else {
truncate.parentElement.classList.remove('animate-marquee_long');
truncate.parentElement.classList.add('animate-marquee');
}
if (truncate.parentElement.classList.contains('truncate')) {
truncate.parentElement.classList.remove('truncate');
}
});
truncate.addEventListener('mouseout', function () {
truncate.parentElement.style.animationPlayState = 'paused';
truncate.parentElement.classList.remove('animate-marquee');
truncate.parentElement.classList.remove('animate-marquee_long');
truncate.parentElement.classList.add('truncate');
});
truncate.classList.add('truncate');
// if truncate has truncate class, text marquee animate doesn't pretty work
if (truncate.querySelector('.truncate') !== null && truncate.querySelector('.truncate').classList.contains('truncate')) {
let old_element = truncate.querySelector('.truncate');
let parent = old_element.parentNode;
let new_element = document.createElement('span');
new_element.innerHTML = old_element.innerHTML;
new_element.classList = old_element.classList;
parent.replaceChild(new_element, old_element);
}
// if truncate has truncate class, text marquee animate doesn't pretty work
// There needs to be two div for disable/enable icons. If I don't create this div, animation will work with disable/enable icons.-->
let animate_element = document.createElement('div');
animate_element.classList.add('truncate');
truncate.parentElement.append(animate_element);
animate_element.append(truncate);
// There needs to be two div for disable/enable icons. If I don't create this div, animation will work with disable/enable icons.-->
//there is overflow class for the animation does not overflow the width
truncate.parentElement.parentElement.classList.add('overflow-x-hidden');
}
}
document.querySelectorAll('[data-truncate-marquee]').forEach((truncate) => {
marqueeAnimation(truncate);
});
//disable/enable icons ejected from data-truncate-marquee, HTML of icons ejected from parent element (data-truncate-marquee)
document.querySelectorAll('[data-index-icon]').forEach((defaultText) => {
let icon_parents_element = defaultText.parentElement.parentElement.parentElement;
if (icon_parents_element.classList.contains('flex')) {
icon_parents_element.appendChild(defaultText);
} else {
icon_parents_element.parentElement.appendChild(defaultText);
}
// defaultText.parentElement.parentElement.parentElement.parentElement.appendChild(defaultText);
});
//disable/enable icons ejected from data-truncate-marquee
//margue animation for truncated text

306
public/css/app.css vendored
View File

@ -1618,6 +1618,36 @@ input[type="date"]::-webkit-inner-spin-button,
height: 4rem;
}
/* widget container name will change as lg:px-12 on database. When container class name change on database, this code will clean */
.dashboard .px-12{
padding-left: 0px;
padding-right: 0px;
}
@media (min-width: 1024px){
.dashboard .px-12{
padding-left: 3rem;
padding-right: 3rem;
}
}
.dashboard .px-6{
padding-left: 0px;
padding-right: 0px;
}
@media (min-width: 1024px){
.dashboard .px-6{
padding-left: 1.5rem;
padding-right: 1.5rem;
}
}
/* widget container name will change as lg:px-12 on database. When container class name change on database, this code will clean */
*, ::before, ::after{
--tw-translate-x: 0;
--tw-translate-y: 0;
@ -10011,6 +10041,62 @@ input[type="date"]::-webkit-inner-spin-button,
-webkit-animation: submit_second 0.7s ease alternate infinite;
animation: submit_second 0.7s ease alternate infinite;
}
@-webkit-keyframes marquee{
0%{
-webkit-transform: translateX(0%);
transform: translateX(0%);
}
100%{
-webkit-transform: translateX(-100%);
transform: translateX(-100%);
}
}
@keyframes marquee{
0%{
-webkit-transform: translateX(0%);
transform: translateX(0%);
}
100%{
-webkit-transform: translateX(-100%);
transform: translateX(-100%);
}
}
.animate-marquee{
-webkit-animation: marquee 9s linear infinite;
animation: marquee 9s linear infinite;
}
@-webkit-keyframes marquee_long{
0%{
-webkit-transform: translateX(0%);
transform: translateX(0%);
}
100%{
-webkit-transform: translateX(-350%);
transform: translateX(-350%);
}
}
@keyframes marquee_long{
0%{
-webkit-transform: translateX(0%);
transform: translateX(0%);
}
100%{
-webkit-transform: translateX(-350%);
transform: translateX(-350%);
}
}
.animate-marquee_long{
-webkit-animation: marquee_long 14s linear infinite;
animation: marquee_long 14s linear infinite;
}
.cursor-auto{
cursor: auto;
}
@ -49475,6 +49561,12 @@ body{
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
[dir="rtl"] .rtl\:-scale-x-100{
--tw-scale-x: -1;
-webkit-transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
[dir="rtl"] .rtl\:space-x-reverse > :not([hidden]) ~ :not([hidden]){
--tw-space-x-reverse: 1;
}
@ -49937,425 +50029,449 @@ body{
}
@media (min-width: 1024px){
.dashboard .lg\:px-12{
padding-left: 0px;
padding-right: 0px;
}
@media (min-width: 1024px){
.lg\:absolute{
.dashboard .lg\:px-12{
padding-left: 3rem;
padding-right: 3rem;
}
}
.dashboard .lg\:px-6{
padding-left: 0px;
padding-right: 0px;
}
@media (min-width: 1024px){
.dashboard .lg\:px-6{
padding-left: 1.5rem;
padding-right: 1.5rem;
}
}
.lg\:absolute{
position: absolute;
}
.lg\:relative{
.lg\:relative{
position: relative;
}
.lg\:right-0{
.lg\:right-0{
right: 0px;
}
.lg\:right-24{
.lg\:right-24{
right: 6rem;
}
.lg\:top-2{
.lg\:top-2{
top: 0.5rem;
}
.lg\:col-span-5{
.lg\:col-span-5{
grid-column: span 5 / span 5;
}
.lg\:my-12{
.lg\:my-12{
margin-top: 3rem;
margin-bottom: 3rem;
}
.lg\:-mx-12{
.lg\:-mx-12{
margin-left: -3rem;
margin-right: -3rem;
}
.lg\:my-0{
.lg\:my-0{
margin-top: 0px;
margin-bottom: 0px;
}
.lg\:mt-2{
.lg\:mt-2{
margin-top: 0.5rem;
}
.lg\:mt-4{
.lg\:mt-4{
margin-top: 1rem;
}
.lg\:mt-11{
.lg\:mt-11{
margin-top: 2.75rem;
}
.lg\:mt-60{
.lg\:mt-60{
margin-top: 15rem;
}
.lg\:mt-8{
.lg\:mt-8{
margin-top: 2rem;
}
.lg\:mt-0{
.lg\:mt-0{
margin-top: 0px;
}
.lg\:-mt-16{
.lg\:-mt-16{
margin-top: -4rem;
}
.lg\:mb-0{
.lg\:mb-0{
margin-bottom: 0px;
}
.lg\:mt-20{
.lg\:mt-20{
margin-top: 5rem;
}
.lg\:block{
.lg\:block{
display: block;
}
.lg\:flex{
.lg\:flex{
display: -webkit-box;
display: -ms-flexbox;
display: flex;
}
.lg\:hidden{
.lg\:hidden{
display: none;
}
.lg\:h-64{
.lg\:h-64{
height: 16rem;
}
.lg\:h-auto{
.lg\:h-auto{
height: auto;
}
.lg\:h-48{
.lg\:h-48{
height: 12rem;
}
.lg\:h-60{
.lg\:h-60{
height: 15rem;
}
.lg\:h-4{
.lg\:h-4{
height: 1rem;
}
.lg\:h-12{
.lg\:h-12{
height: 3rem;
}
.lg\:w-9{
.lg\:w-9{
width: 2.25rem;
}
.lg\:w-96{
.lg\:w-96{
width: 24rem;
}
.lg\:w-1\/2{
.lg\:w-1\/2{
width: 50%;
}
.lg\:w-11\/12{
.lg\:w-11\/12{
width: 91.666667%;
}
.lg\:w-1\/12{
.lg\:w-1\/12{
width: 8.333333%;
}
.lg\:w-3\/12{
.lg\:w-3\/12{
width: 25%;
}
.lg\:w-2\/12{
.lg\:w-2\/12{
width: 16.666667%;
}
.lg\:w-80{
.lg\:w-80{
width: 20rem;
}
.lg\:w-8\/12{
.lg\:w-8\/12{
width: 66.666667%;
}
.lg\:w-46{
.lg\:w-46{
width: 46.875rem;
}
.lg\:w-4\/5{
.lg\:w-4\/5{
width: 80%;
}
.lg\:w-3\/5{
.lg\:w-3\/5{
width: 60%;
}
.lg\:w-7\/12{
.lg\:w-7\/12{
width: 58.333333%;
}
.lg\:w-5\/12{
.lg\:w-5\/12{
width: 41.666667%;
}
.lg\:w-full{
.lg\:w-full{
width: 100%;
}
.lg\:w-1\/3{
.lg\:w-1\/3{
width: 33.333333%;
}
.lg\:w-2\/3{
.lg\:w-2\/3{
width: 66.666667%;
}
.lg\:w-auto{
.lg\:w-auto{
width: auto;
}
.lg\:w-1\/4{
.lg\:w-1\/4{
width: 25%;
}
.lg\:w-6\/12{
.lg\:w-6\/12{
width: 50%;
}
.lg\:w-4\/12{
.lg\:w-4\/12{
width: 33.333333%;
}
.lg\:w-4{
.lg\:w-4{
width: 1rem;
}
.lg\:w-2\/4{
.lg\:w-2\/4{
width: 50%;
}
.lg\:w-3\/4{
.lg\:w-3\/4{
width: 75%;
}
.lg\:max-w-7xl{
.lg\:max-w-7xl{
max-width: 80rem;
}
.lg\:max-w-6xl{
.lg\:max-w-6xl{
max-width: 72rem;
}
.lg\:flex-row{
.lg\:flex-row{
-webkit-box-orient: horizontal;
-webkit-box-direction: normal;
-ms-flex-direction: row;
flex-direction: row;
}
.lg\:flex-row-reverse{
.lg\:flex-row-reverse{
-webkit-box-orient: horizontal;
-webkit-box-direction: reverse;
-ms-flex-direction: row-reverse;
flex-direction: row-reverse;
}
.lg\:flex-col{
.lg\:flex-col{
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-ms-flex-direction: column;
flex-direction: column;
}
.lg\:flex-nowrap{
.lg\:flex-nowrap{
-ms-flex-wrap: nowrap;
flex-wrap: nowrap;
}
.lg\:items-center{
.lg\:items-center{
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
}
.lg\:justify-end{
.lg\:justify-end{
-webkit-box-pack: end;
-ms-flex-pack: end;
justify-content: flex-end;
}
.lg\:justify-center{
.lg\:justify-center{
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
}
.lg\:justify-around{
.lg\:justify-around{
-ms-flex-pack: distribute;
justify-content: space-around;
}
.lg\:gap-16{
.lg\:gap-16{
gap: 4rem;
}
.lg\:space-y-0 > :not([hidden]) ~ :not([hidden]){
.lg\:space-y-0 > :not([hidden]) ~ :not([hidden]){
--tw-space-y-reverse: 0;
margin-top: calc(0px * calc(1 - var(--tw-space-y-reverse)));
margin-bottom: calc(0px * var(--tw-space-y-reverse));
}
.lg\:space-x-24 > :not([hidden]) ~ :not([hidden]){
.lg\:space-x-24 > :not([hidden]) ~ :not([hidden]){
--tw-space-x-reverse: 0;
margin-right: calc(6rem * var(--tw-space-x-reverse));
margin-left: calc(6rem * calc(1 - var(--tw-space-x-reverse)));
}
.lg\:divide-y-0 > :not([hidden]) ~ :not([hidden]){
.lg\:divide-y-0 > :not([hidden]) ~ :not([hidden]){
--tw-divide-y-reverse: 0;
border-top-width: calc(0px * calc(1 - var(--tw-divide-y-reverse)));
border-bottom-width: calc(0px * var(--tw-divide-y-reverse));
}
.lg\:divide-x > :not([hidden]) ~ :not([hidden]){
.lg\:divide-x > :not([hidden]) ~ :not([hidden]){
--tw-divide-x-reverse: 0;
border-right-width: calc(1px * var(--tw-divide-x-reverse));
border-left-width: calc(1px * calc(1 - var(--tw-divide-x-reverse)));
}
.lg\:overflow-visible{
.lg\:overflow-visible{
overflow: visible;
}
.lg\:border-r{
.lg\:border-r{
border-right-width: 1px;
}
.lg\:px-3{
.lg\:px-3{
padding-left: 0.75rem;
padding-right: 0.75rem;
}
.lg\:px-4{
.lg\:px-4{
padding-left: 1rem;
padding-right: 1rem;
}
.lg\:px-6{
.lg\:px-6{
padding-left: 1.5rem;
padding-right: 1.5rem;
}
.lg\:px-12{
.lg\:px-12{
padding-left: 3rem;
padding-right: 3rem;
}
.lg\:px-24{
.lg\:px-24{
padding-left: 6rem;
padding-right: 6rem;
}
.lg\:py-0{
.lg\:py-0{
padding-top: 0px;
padding-bottom: 0px;
}
.lg\:pl-24{
.lg\:pl-24{
padding-left: 6rem;
}
.lg\:pl-6{
.lg\:pl-6{
padding-left: 1.5rem;
}
.lg\:pl-12{
.lg\:pl-12{
padding-left: 3rem;
}
.lg\:pt-0{
.lg\:pt-0{
padding-top: 0px;
}
.lg\:pl-8{
.lg\:pl-8{
padding-left: 2rem;
}
.lg\:pr-0{
.lg\:pr-0{
padding-right: 0px;
}
.lg\:text-8xl{
.lg\:text-8xl{
font-size: 3rem;
line-height: 3.25rem;
}
.lg\:text-7xl{
.lg\:text-7xl{
font-size: 2.75rem;
line-height: 3rem;
}
.lg\:text-2xl{
.lg\:text-2xl{
font-size: 1.375rem;
line-height: 1.5rem;
}
.lg\:text-5xl{
.lg\:text-5xl{
font-size: 2.25rem;
line-height: 2.5rem;
}
.lg\:text-lg{
.lg\:text-lg{
font-size: 1.125rem;
line-height: 1.75rem;
}
[dir="ltr"] .lg\:ltr\:right-0{
[dir="ltr"] .lg\:ltr\:right-0{
right: 0px;
}
[dir="ltr"] .lg\:ltr\:pr-12{
[dir="ltr"] .lg\:ltr\:pr-12{
padding-right: 3rem;
}
[dir="ltr"] .lg\:ltr\:pl-12{
[dir="ltr"] .lg\:ltr\:pl-12{
padding-left: 3rem;
}
[dir="ltr"] .ltr\:lg\:pl-8{
[dir="ltr"] .ltr\:lg\:pl-8{
padding-left: 2rem;
}
[dir="ltr"] .lg\:ltr\:pl-24{
[dir="ltr"] .lg\:ltr\:pl-24{
padding-left: 6rem;
}
[dir="rtl"] .lg\:rtl\:left-0{
[dir="rtl"] .lg\:rtl\:left-0{
left: 0px;
}
[dir="rtl"] .lg\:rtl\:pl-12{
[dir="rtl"] .lg\:rtl\:pl-12{
padding-left: 3rem;
}
[dir="rtl"] .lg\:rtl\:pr-12{
[dir="rtl"] .lg\:rtl\:pr-12{
padding-right: 3rem;
}
[dir="rtl"] .rtl\:lg\:pr-8{
[dir="rtl"] .rtl\:lg\:pr-8{
padding-right: 2rem;
}
[dir="rtl"] .lg\:rtl\:pr-24{
[dir="rtl"] .lg\:rtl\:pr-24{
padding-right: 6rem;
}
}

View File

@ -842,7 +842,8 @@ export default {
if (!check) {
this.sorted_options.push({
key: option.id.toString(),
value: (option.title) ? option.title : (option.display_name) ? option.display_name : option.name
value: (option.title) ? option.title : (option.display_name) ? option.display_name : option.name,
level: (option.parent_id) ? 1 : 0 // 0: parent, 1: child. Level data get 0 via backend. This control will refactor.
});
}

View File

@ -165,19 +165,19 @@ export default {
widthOptions: [
{
label: '25%',
value: 'w-full lg:w-1/4 px-6'
value: 'w-full lg:w-1/4 lg:px-6'
},
{
label: '33%',
value: 'w-full lg:w-1/3 px-6'
value: 'w-full lg:w-1/3 lg:px-6'
},
{
label: '50%',
value: 'w-full lg:w-2/4 px-12'
value: 'w-full lg:w-2/4 lg:px-12'
},
{
label: '100%',
value: 'w-full px-12'
value: 'w-full lg:px-12'
}
],
form: {

View File

@ -203,6 +203,15 @@
overflow: hidden;
height: 4rem;
}
/* widget container name will change as lg:px-12 on database. When container class name change on database, this code will clean */
.dashboard .px-12 {
@apply px-0 lg:pl-12 lg:pr-12;
}
.dashboard .px-6 {
@apply px-0 lg:pl-6 lg:pr-6;
}
/* widget container name will change as lg:px-12 on database. When container class name change on database, this code will clean */
}
/* menu */

View File

@ -58,11 +58,11 @@
<x-table.td class="w-4/12 sm:w-5/12">
<div class="flex items-center space-x-2">
@if (setting('default.use_gravatar', '0') == '1')
<img src="{{ $item->picture }}" class="w-6 h-6 rounded-full mr-2 hidden lg:block" title="{{ $item->name }}" alt="{{ $item->name }}">
<img src="{{ $item->picture }}" class="w-6 h-6 rounded-full mr-2 hidden lg:block text-transparent" title="{{ $item->name }}" alt="{{ $item->name }}">
@elseif (is_object($item->picture))
<img src="{{ Storage::url($item->picture->id) }}" class="w-6 h-6 rounded-full mr-2 hidden lg:block" alt="{{ $item->name }}" title="{{ $item->name }}">
<img src="{{ Storage::url($item->picture->id) }}" class="w-6 h-6 rounded-full mr-2 hidden lg:block text-transparent" alt="{{ $item->name }}" title="{{ $item->name }}">
@else
<img src="{{ asset('public/img/user.svg') }}" class="w-6 h-6 rounded-full mr-2 hidden lg:block" alt="{{ $item->name }}"/>
<img src="{{ asset('public/img/user.svg') }}" class="w-6 h-6 rounded-full mr-2 hidden lg:block text-transparent" alt="{{ $item->name }}"/>
@endif
{{ !empty($item->name) ? $item->name : trans('general.na') }}

View File

@ -64,9 +64,7 @@
<x-table.td class="w-6/12 sm:w-5/12">
<x-slot name="first" class="flex font-bold">
<div class="truncate">
{{ $item->name }}
</div>
{{ $item->name }}
@if (! $item->enabled)
<x-index.disable text="{{ trans_choice('general.accounts', 1) }}" />

View File

@ -84,16 +84,14 @@
</x-table.td>
<x-table.td class="w-6/12 sm:w-4/12">
<x-slot name="first" class="flex items-center font-bold" override="class">
<div class="truncate">
{{ $item->name }}
</div>
<x-slot name="first" class="font-bold" override="class">
{{ $item->name }}
@if (! $item->enabled)
<x-index.disable text="{{ trans_choice('general.items', 1) }}" />
@endif
</x-slot>
<x-slot name="second" class="font-normal truncate" override="class">
<x-slot name="second" class="font-normal" override="class">
{{ $item->description }}
</x-slot>
</x-table.td>

View File

@ -3,10 +3,10 @@
<div class="overflow-y-hidden py-6">
<table id="totals" class="float-right">
<colgroup>
<col style="width: 47.5%;">
<col style="width: 30%;">
<col style="width: 18%;">
<col style="width: 50px;">
<col class="small-col" style="width: 47.5%;">
<col class="small-col" style="width: 30%;">
<col class="small-col" style="width: 18%;">
<col class="small-col" style="width: 50px;">
</colgroup>
<tbody id="invoice-total-rows">

View File

@ -139,6 +139,10 @@
@visible-change="{{ $attributes['visible-change'] }}"
@endif
@if (! empty($attributes['clear']))
@clear="{{ $attributes['clear'] }}($event)"
@endif
@if (isset($attributes['readonly']))
:readonly="{{ $attributes['readonly'] }}"
@endif

View File

@ -1,9 +1,11 @@
<span @class([
'w-3 h-3 rounded-full ltr:mr-1 rtl:ml-1', $backgroundColor, $textColor
])
@if (! empty($backgroundStyle))
style="background-color: {{ $backgroundStyle }}"
@endif
>
</span>
<span class="w-24 truncate">{{ $name }}</span>
<div class="flex items-center">
<span @class([
'w-3 h-3 rounded-full ltr:mr-1 rtl:ml-1', $backgroundColor, $textColor
])
@if (! empty($backgroundStyle))
style="background-color: {{ $backgroundStyle }}"
@endif
>
</span>
<span class="w-24 truncate">{{ $name }}</span>
</div>

View File

@ -1,5 +1,7 @@
<x-tooltip id="{{ $id }}" placement="{{ $position }}" message="{{ $text }}">
<span class="material-icons{{ $iconType }} text-purple text-sm ml-2">
{{ $icon }}
</span>
</x-tooltip>
<div data-index-icon>
<x-tooltip id="{{ $id }}" placement="{{ $position }}" message="{{ $text }}">
<span class="material-icons{{ $iconType }} text-purple text-sm ml-2">
{{ $icon }}
</span>
</x-tooltip>
</div>

View File

@ -1,5 +1,7 @@
<x-tooltip id="{{ $id }}" placement="{{ $position }}" message="{{ $disableText }}">
<span class="material-icons{{ $iconType }} text-red text-sm ml-2">
{{ $icon }}
</span>
</x-tooltip>
<div data-index-icon>
<x-tooltip id="{{ $id }}" placement="{{ $position }}" message="{{ $disableText }}">
<span class="material-icons{{ $iconType }} text-red text-sm ml-2">
{{ $icon }}
</span>
</x-tooltip>
</div>

View File

@ -40,9 +40,9 @@
</span>
@if (setting('default.use_gravatar', '0') == '1')
<img src="{{ user()->picture }}" alt="{{ user()->name }}" class="w-8 h-8 m-auto rounded-full" alt="{{ user()->name }}" title="{{ user()->name }}">
<img src="{{ user()->picture }}" alt="{{ user()->name }}" class="w-8 h-8 m-auto rounded-full text-transparent" alt="{{ user()->name }}" title="{{ user()->name }}">
@elseif (is_object(user()->picture))
<img src="{{ Storage::url(user()->picture->id) }}" class="w-8 h-8 m-auto rounded-full" alt="{{ user()->name }}" title="{{ user()->name }}">
<img src="{{ Storage::url(user()->picture->id) }}" class="w-8 h-8 m-auto rounded-full text-transparent" alt="{{ user()->name }}" title="{{ user()->name }}">
@else
<span id="menu-profile-icon" name="account_circle" class="material-icons-outlined text-purple w-8 h-8 flex items-center justify-center text-center text-2xl pointer-events-none" alt="{{ user()->name }}" title="{{ user()->name }}">
account_circle

View File

@ -24,9 +24,9 @@
</span>
@if (setting('default.use_gravatar', '0') == '1')
<img src="{{ user()->picture }}" alt="{{ user()->name }}" class="w-8 h-8 m-auto rounded-full" alt="{{ user()->name }}" title="{{ user()->name }}">
<img src="{{ user()->picture }}" alt="{{ user()->name }}" class="w-8 h-8 m-auto rounded-full text-transparent" alt="{{ user()->name }}" title="{{ user()->name }}">
@elseif (is_object(user()->picture))
<img src="{{ Storage::url(user()->picture->id) }}" class="w-8 h-8 m-auto rounded-full" alt="{{ user()->name }}" title="{{ user()->name }}">
<img src="{{ Storage::url(user()->picture->id) }}" class="w-8 h-8 m-auto rounded-full text-transparent" alt="{{ user()->name }}" title="{{ user()->name }}">
@else
<span name="account_circle" class="material-icons-outlined text-purple w-8 h-8 flex items-center justify-center text-center text-2xl pointer-events-none" alt="{{ user()->name }}" title="{{ user()->name }}">
account_circle

View File

@ -1,6 +1,6 @@
<div class="overflow-x-visible">
<div class="py-2 align-middle">
<table class="flex flex-col divide-y divide-gray-200">
<table class="flex flex-col divide-y divide-gray-200" {{ $attributes }}>
{{ $slot }}
</table>
</div>

View File

@ -8,7 +8,13 @@
}
@endphp
<div {{ $first_attributes }}>
{!! $first !!}
<!--so that the animation does not overflow the width. With javascript will add (overflow-x-hidden) class name-->
<div>
<!-- this tag use for calculate width of text and parent element -->
<span data-truncate-marquee>
{!! $first !!}
</span>
</div>
</div>
@endif
@ -21,9 +27,18 @@
}
@endphp
<div {{ $second_attributes }}>
{!! $second !!}
<div>
<span data-truncate-marquee>
{!! $second !!}
</span>
</div>
</div>
@endif
{{ $slot }}
<div>
<span data-truncate-marquee>
{{ $slot }}
</span>
</div>
</td>

View File

@ -8,7 +8,13 @@
}
@endphp
<div {{ $first_attributes }}>
{!! $first !!}
<!--so that the animation does not overflow the width. With javascript will add (overflow-x-hidden) class name-->
<div>
<!-- this tag use for calculate width of text and parent element -->
<span data-truncate-marquee>
{!! $first !!}
</span>
</div>
</div>
@endif
@ -21,9 +27,17 @@
}
@endphp
<div {{ $second_attributes }}>
{!! $second !!}
<div>
<span data-truncate-marquee>
{!! $second !!}
</span>
</div>
</div>
@endif
{{ $slot }}
<div>
<span data-truncate-marquee>
{{ $slot }}
</span>
</div>
</th>

View File

@ -15,7 +15,7 @@
<x-slot name="content">
<div class="flex flex-col space-y-16 py-4">
<div class="flex flex-col lg:flex-row w-full space-x-16 space-y-0">
<div class="flex flex-col lg:flex-row w-full space-x-16 rtl:space-x-reverse space-y-0">
<div class="w-full lg:w-7/12 flex flex-col space-x-2 banner">
@foreach ($module->files as $file)
@if ($loop->first)

View File

@ -57,7 +57,7 @@
</x-table.td>
<x-table.td class="w-6/12 sm:w-4/12">
<x-slot name="first" class="flex" override="class">
<x-slot name="first" class="flex font-bold" override="class">
<div class="font-bold truncate">
{{ $item->name }}
</div>

View File

@ -17,7 +17,7 @@
</div>
<div class="relative flex justify-end -mt-28">
<img src="https://assets.akaunting.com/software/admin/bank-feeds.png" alt="Bank Feeds" />
<img src="https://assets.akaunting.com/software/admin/bank-feeds.png" class="rtl:-scale-x-100" alt="Bank Feeds" />
</div>
</div>
@endif

View File

@ -16,3 +16,4 @@ lg:right-0
lg:justify-around
ltr:-right-1.5
rtl:-left-1.5
rtl:-scale-x-100