Merge branch 'master' of github.com:akaunting/akaunting
This commit is contained in:
commit
ed58115d9f
@ -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);
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
|
12
presets.js
vendored
12
presets.js
vendored
@ -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: {
|
||||
|
80
public/akaunting-js/generalAction.js
vendored
80
public/akaunting-js/generalAction.js
vendored
@ -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
|
||||
|
116
public/css/app.css
vendored
116
public/css/app.css
vendored
@ -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,6 +50029,30 @@ body{
|
||||
}
|
||||
|
||||
@media (min-width: 1024px){
|
||||
.dashboard .lg\:px-12{
|
||||
padding-left: 0px;
|
||||
padding-right: 0px;
|
||||
}
|
||||
@media (min-width: 1024px){
|
||||
|
||||
.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;
|
||||
|
@ -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.
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -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: {
|
||||
|
9
resources/assets/sass/app.css
vendored
9
resources/assets/sass/app.css
vendored
@ -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 */
|
||||
|
@ -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') }}
|
||||
|
@ -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>
|
||||
|
||||
@if (! $item->enabled)
|
||||
<x-index.disable text="{{ trans_choice('general.accounts', 1) }}" />
|
||||
|
@ -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">
|
||||
<x-slot name="first" class="font-bold" override="class">
|
||||
{{ $item->name }}
|
||||
</div>
|
||||
|
||||
@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>
|
||||
|
@ -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">
|
||||
|
@ -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
|
||||
|
@ -1,3 +1,4 @@
|
||||
<div class="flex items-center">
|
||||
<span @class([
|
||||
'w-3 h-3 rounded-full ltr:mr-1 rtl:ml-1', $backgroundColor, $textColor
|
||||
])
|
||||
@ -7,3 +8,4 @@
|
||||
>
|
||||
</span>
|
||||
<span class="w-24 truncate">{{ $name }}</span>
|
||||
</div>
|
||||
|
@ -1,5 +1,7 @@
|
||||
<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>
|
||||
|
@ -1,5 +1,7 @@
|
||||
<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>
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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>
|
||||
|
@ -8,7 +8,13 @@
|
||||
}
|
||||
@endphp
|
||||
<div {{ $first_attributes }}>
|
||||
<!--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 }}>
|
||||
<div>
|
||||
<span data-truncate-marquee>
|
||||
{!! $second !!}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<div>
|
||||
<span data-truncate-marquee>
|
||||
{{ $slot }}
|
||||
</span>
|
||||
</div>
|
||||
</td>
|
||||
|
@ -8,7 +8,13 @@
|
||||
}
|
||||
@endphp
|
||||
<div {{ $first_attributes }}>
|
||||
<!--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 }}>
|
||||
<div>
|
||||
<span data-truncate-marquee>
|
||||
{!! $second !!}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<div>
|
||||
<span data-truncate-marquee>
|
||||
{{ $slot }}
|
||||
</span>
|
||||
</div>
|
||||
</th>
|
||||
|
@ -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)
|
||||
|
@ -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>
|
||||
|
@ -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
|
||||
|
@ -16,3 +16,4 @@ lg:right-0
|
||||
lg:justify-around
|
||||
ltr:-right-1.5
|
||||
rtl:-left-1.5
|
||||
rtl:-scale-x-100
|
Loading…
x
Reference in New Issue
Block a user