Merge branch 'sentry' of github.com:brkcvn/akaunting into sentry
This commit is contained in:
commit
d45ad10641
@ -91,7 +91,7 @@ abstract class Notification extends BaseNotification implements ShouldQueue
|
|||||||
|
|
||||||
public function getFooter()
|
public function getFooter()
|
||||||
{
|
{
|
||||||
$url = 'https://akaunting.com/lp/accounting-software?utm_source=email&utm_medium=footer&utm_campaign=plg&utm_content=' . $this->template->alias;
|
$url = 'https://akaunting.com/accounting-software?utm_source=email&utm_medium=footer&utm_campaign=plg&utm_content=' . $this->template->alias;
|
||||||
|
|
||||||
$get_started = '<a href="' . $url . '" style="color: #676ba2; text-decoration: none;">' . trans('footer.get_started') . '</a>';
|
$get_started = '<a href="' . $url . '" style="color: #676ba2; text-decoration: none;">' . trans('footer.get_started') . '</a>';
|
||||||
|
|
||||||
|
@ -188,7 +188,11 @@ trait Recurring
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return $schedule->current()->getStart();
|
if (! $current = $schedule->current()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $current->getStart();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getNextRecurring()
|
public function getNextRecurring()
|
||||||
@ -210,7 +214,11 @@ trait Recurring
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return $schedule->first()->getStart();
|
if (! $first = $schedule->first()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $first->getStart();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getLastRecurring()
|
public function getLastRecurring()
|
||||||
@ -219,6 +227,10 @@ trait Recurring
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return $schedule->last()->getStart();
|
if (! $last = $schedule->last()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $last->getStart();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -282,7 +282,7 @@ class DeleteLink extends Component
|
|||||||
|
|
||||||
protected function getClass($class)
|
protected function getClass($class)
|
||||||
{
|
{
|
||||||
$default_class = 'w-full flex items-center text-purple px-2 h-9 leading-9 whitespace-nowrap';
|
$default_class = 'w-full flex items-center text-red sm:text-purple px-2 h-9 leading-9 whitespace-nowrap';
|
||||||
|
|
||||||
$explode = explode(',', $this->override);
|
$explode = explode(',', $this->override);
|
||||||
|
|
||||||
|
70
public/akaunting-js/generalAction.js
vendored
70
public/akaunting-js/generalAction.js
vendored
@ -11,7 +11,7 @@ document.querySelectorAll("[data-table-list]").forEach((row) => {
|
|||||||
|
|
||||||
//redirect edit or show page for table row click
|
//redirect edit or show page for table row click
|
||||||
document.querySelectorAll("[data-table-body]").forEach((table) => {
|
document.querySelectorAll("[data-table-body]").forEach((table) => {
|
||||||
if (document.body.clientWidth >= 991) {
|
if (document.body.clientWidth < 768 || document.body.clientWidth > 1200) {
|
||||||
let rows = table.querySelectorAll("tr");
|
let rows = table.querySelectorAll("tr");
|
||||||
|
|
||||||
rows.forEach((row) => {
|
rows.forEach((row) => {
|
||||||
@ -27,7 +27,13 @@ document.querySelectorAll("[data-table-body]").forEach((table) => {
|
|||||||
if (row_href) {
|
if (row_href) {
|
||||||
for (let i = first_selector; i < td.length - 1; i++) {
|
for (let i = first_selector; i < td.length - 1; i++) {
|
||||||
let td_item = td[i];
|
let td_item = td[i];
|
||||||
td_item.addEventListener("click", () => {
|
|
||||||
|
td_item.addEventListener("click", (event) => {
|
||||||
|
// click disabled when preview dialog is open
|
||||||
|
if (event.target.closest('[data-tooltip-target]')) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// click disabled when preview dialog is open
|
||||||
window.location.href = row_href;
|
window.location.href = row_href;
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -42,6 +48,20 @@ document.querySelectorAll("[data-table-body]").forEach((table) => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (document.body.clientWidth <= 768) {
|
||||||
|
table.querySelectorAll('[data-table-list]').forEach((actions) => {
|
||||||
|
actions.querySelector('[data-mobile-actions]').addEventListener('click', function() {
|
||||||
|
this.closest('td').querySelector('[data-mobile-actions-modal]').classList.add('show');
|
||||||
|
this.closest('td').querySelector('[data-mobile-actions-modal]').classList.remove('opacity-0', 'invisible');
|
||||||
|
|
||||||
|
this.closest('td').querySelector('[data-mobile-actions-modal]').addEventListener('click', function() {
|
||||||
|
this.classList.add('opacity-0', 'invisible');
|
||||||
|
this.classList.remove('show');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
});
|
});
|
||||||
//redirect edit or show page for table row click
|
//redirect edit or show page for table row click
|
||||||
|
|
||||||
@ -368,7 +388,7 @@ function marqueeAnimation(truncate) {
|
|||||||
// offsetwidth = width of the text, clientWidth = width of parent text (div)
|
// offsetwidth = width of the text, clientWidth = width of parent text (div)
|
||||||
// because some index page has icons, we use two time parent element
|
// because some index page has icons, we use two time parent element
|
||||||
|
|
||||||
if (truncate.children.length < 1 && truncate.offsetWidth > truncate.parentElement.clientWidth || truncate.offsetWidth > truncate.parentElement.parentElement.parentElement.clientWidth) {
|
if (truncate.children.length < 1 && truncate.offsetWidth > truncate.parentElement.clientWidth || truncate.offsetWidth > truncate.parentElement.parentElement.parentElement.clientWidth) {
|
||||||
truncate.addEventListener('mouseover', function () {
|
truncate.addEventListener('mouseover', function () {
|
||||||
truncate.parentElement.style.animationPlayState = 'running';
|
truncate.parentElement.style.animationPlayState = 'running';
|
||||||
|
|
||||||
@ -429,6 +449,7 @@ document.querySelectorAll('[data-index-icon]').forEach((defaultText) => {
|
|||||||
|
|
||||||
if (icon_parents_element.classList.contains('flex')) {
|
if (icon_parents_element.classList.contains('flex')) {
|
||||||
icon_parents_element.appendChild(defaultText);
|
icon_parents_element.appendChild(defaultText);
|
||||||
|
icon_parents_element.classList.remove('truncate');
|
||||||
} else {
|
} else {
|
||||||
if (icon_parents_element.classList.contains('overflow-x-hidden')) {
|
if (icon_parents_element.classList.contains('overflow-x-hidden')) {
|
||||||
icon_parents_element.parentElement.appendChild(defaultText);
|
icon_parents_element.parentElement.appendChild(defaultText);
|
||||||
@ -440,3 +461,46 @@ document.querySelectorAll('[data-index-icon]').forEach((defaultText) => {
|
|||||||
//disable/enable icons ejected from data-truncate-marquee
|
//disable/enable icons ejected from data-truncate-marquee
|
||||||
|
|
||||||
//margue animation for truncated text
|
//margue animation for truncated text
|
||||||
|
|
||||||
|
// set with for page header
|
||||||
|
document.querySelectorAll('[data-page-title-first]').forEach((first) => {
|
||||||
|
document.querySelectorAll('[data-page-title-second]').forEach((second) => {
|
||||||
|
let title_truncate = first.querySelector('[data-title-truncate]');
|
||||||
|
|
||||||
|
if (title_truncate !== null) {
|
||||||
|
if (first.clientWidth < title_truncate.clientWidth && second.clientHeight > 0) {
|
||||||
|
// added specific width styling for truncate text
|
||||||
|
title_truncate.style.width = first.clientWidth + 'px';
|
||||||
|
let subtract = title_truncate.clientWidth - 40;
|
||||||
|
title_truncate.style.width = subtract + 'px';
|
||||||
|
title_truncate.classList.add('truncate');
|
||||||
|
// added specific width styling for truncate text
|
||||||
|
|
||||||
|
// added specific width styling into the parent title element for truncate text
|
||||||
|
first.classList.add('w-full', 'sm:w-6/12');
|
||||||
|
// added specific width styling into the parent title element for truncate text
|
||||||
|
|
||||||
|
title_truncate.parentNode.classList.add('overflow-x-hidden', 'hide-scroll-bar');
|
||||||
|
|
||||||
|
// added truncate animation for truncated text
|
||||||
|
title_truncate.addEventListener('mouseover', function () {
|
||||||
|
this.classList.add('animate-marquee');
|
||||||
|
this.classList.remove('truncate');
|
||||||
|
this.style.animationPlayState = 'running';
|
||||||
|
});
|
||||||
|
|
||||||
|
title_truncate.addEventListener('mouseout', function () {
|
||||||
|
this.style.animationPlayState = 'paused';
|
||||||
|
this.classList.remove('animate-marquee');
|
||||||
|
this.classList.add('truncate');
|
||||||
|
});
|
||||||
|
// added truncate animation for truncated text
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// remove width class name for extend the right side
|
||||||
|
first.classList.remove('w-full', 'sm:w-6/12');
|
||||||
|
// remove width class name for extend the right side
|
||||||
|
});
|
||||||
|
});
|
||||||
|
// set with for page header
|
||||||
|
70
public/css/app.css
vendored
70
public/css/app.css
vendored
@ -1399,7 +1399,7 @@ input[type=file]::file-selector-button:hover{
|
|||||||
background-color: #DCE2F9;
|
background-color: #DCE2F9;
|
||||||
}
|
}
|
||||||
|
|
||||||
.menu-list a svg {
|
.menu-list ul svg {
|
||||||
width: 22px;
|
width: 22px;
|
||||||
height: 24px;
|
height: 24px;
|
||||||
fill: none;
|
fill: none;
|
||||||
@ -53411,6 +53411,9 @@ button, input, optgroup, select, textarea{
|
|||||||
border-bottom-left-radius: 0.5rem;
|
border-bottom-left-radius: 0.5rem;
|
||||||
border-right-width: 0px;
|
border-right-width: 0px;
|
||||||
}
|
}
|
||||||
|
.suggestion-buttons > a:first-child, .suggestion-buttons > button:first-child{
|
||||||
|
margin-top: 0.5rem;
|
||||||
|
}
|
||||||
[data-dropdown-actions] {
|
[data-dropdown-actions] {
|
||||||
-webkit-transform: unset !important;
|
-webkit-transform: unset !important;
|
||||||
transform: unset !important;
|
transform: unset !important;
|
||||||
@ -53467,6 +53470,27 @@ table thead a:hover{
|
|||||||
visibility: visible;
|
visibility: visible;
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
}
|
}
|
||||||
|
.notifications-menu ul li a {
|
||||||
|
border-bottom: 1px solid;
|
||||||
|
}
|
||||||
|
.avatar-attachment{
|
||||||
|
display: -webkit-inline-box;
|
||||||
|
display: -ms-inline-flexbox;
|
||||||
|
display: inline-flex;
|
||||||
|
-webkit-box-align: center;
|
||||||
|
-ms-flex-align: center;
|
||||||
|
align-items: center;
|
||||||
|
-webkit-box-pack: center;
|
||||||
|
-ms-flex-pack: center;
|
||||||
|
justify-content: center;
|
||||||
|
--tw-text-opacity: 1;
|
||||||
|
color: rgb(255 255 255 / var(--tw-text-opacity));
|
||||||
|
background-color: #adb5bd;
|
||||||
|
border-radius: .375rem;
|
||||||
|
font-size: 1rem;
|
||||||
|
height: 45px;
|
||||||
|
width: 45px;
|
||||||
|
}
|
||||||
/* index */
|
/* index */
|
||||||
|
|
||||||
|
|
||||||
@ -54059,6 +54083,14 @@ html[dir="rtl"] .lines-radius-border thead td:last-child {
|
|||||||
}
|
}
|
||||||
/* responsive for role mobile */
|
/* responsive for role mobile */
|
||||||
|
|
||||||
|
/* full-width for mobile. Some component use inline styling for width */
|
||||||
|
@media only screen and (max-width: 991px) {
|
||||||
|
.full-width-mobile {
|
||||||
|
width: 100% !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* full-width for mobile. Some component use inline styling for width */
|
||||||
|
|
||||||
[dir="ltr"] .ltr\:-right-57 {
|
[dir="ltr"] .ltr\:-right-57 {
|
||||||
right: -14.5rem;
|
right: -14.5rem;
|
||||||
}
|
}
|
||||||
@ -54080,6 +54112,17 @@ html[dir="rtl"] .lines-radius-border thead td:last-child {
|
|||||||
}
|
}
|
||||||
/* plans page accordion */
|
/* plans page accordion */
|
||||||
|
|
||||||
|
/* hidden scroll-bar */
|
||||||
|
.hide-scroll-bar::-webkit-scrollbar {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hide-scroll-bar {
|
||||||
|
-ms-overflow-style: none; /* IE and Edge */
|
||||||
|
scrollbar-width: none; /* Firefox */
|
||||||
|
}
|
||||||
|
/* hidden scroll-bar */
|
||||||
|
|
||||||
@media only screen and (max-width: 480px) {
|
@media only screen and (max-width: 480px) {
|
||||||
.small-table-width {
|
.small-table-width {
|
||||||
width: 550px;
|
width: 550px;
|
||||||
@ -54493,16 +54536,16 @@ body{
|
|||||||
background-color: rgb(255 255 255 / var(--tw-bg-opacity));
|
background-color: rgb(255 255 255 / var(--tw-bg-opacity));
|
||||||
}
|
}
|
||||||
|
|
||||||
.hover\:bg-gray-100:hover{
|
|
||||||
--tw-bg-opacity: 1;
|
|
||||||
background-color: rgb(243 244 246 / var(--tw-bg-opacity));
|
|
||||||
}
|
|
||||||
|
|
||||||
.hover\:bg-lilac-100:hover{
|
.hover\:bg-lilac-100:hover{
|
||||||
--tw-bg-opacity: 1;
|
--tw-bg-opacity: 1;
|
||||||
background-color: rgb(245 247 250 / var(--tw-bg-opacity));
|
background-color: rgb(245 247 250 / var(--tw-bg-opacity));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.hover\:bg-gray-100:hover{
|
||||||
|
--tw-bg-opacity: 1;
|
||||||
|
background-color: rgb(243 244 246 / var(--tw-bg-opacity));
|
||||||
|
}
|
||||||
|
|
||||||
.hover\:bg-gray-200:hover{
|
.hover\:bg-gray-200:hover{
|
||||||
--tw-bg-opacity: 1;
|
--tw-bg-opacity: 1;
|
||||||
background-color: rgb(229 231 235 / var(--tw-bg-opacity));
|
background-color: rgb(229 231 235 / var(--tw-bg-opacity));
|
||||||
@ -57019,6 +57062,12 @@ body{
|
|||||||
gap: 0px;
|
gap: 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.sm\:space-x-4 > :not([hidden]) ~ :not([hidden]){
|
||||||
|
--tw-space-x-reverse: 0;
|
||||||
|
margin-right: calc(1rem * var(--tw-space-x-reverse));
|
||||||
|
margin-left: calc(1rem * calc(1 - var(--tw-space-x-reverse)));
|
||||||
|
}
|
||||||
|
|
||||||
.sm\:space-y-2 > :not([hidden]) ~ :not([hidden]){
|
.sm\:space-y-2 > :not([hidden]) ~ :not([hidden]){
|
||||||
--tw-space-y-reverse: 0;
|
--tw-space-y-reverse: 0;
|
||||||
margin-top: calc(0.5rem * calc(1 - var(--tw-space-y-reverse)));
|
margin-top: calc(0.5rem * calc(1 - var(--tw-space-y-reverse)));
|
||||||
@ -57037,6 +57086,10 @@ body{
|
|||||||
border-left-width: calc(2px * calc(1 - var(--tw-divide-x-reverse)));
|
border-left-width: calc(2px * calc(1 - var(--tw-divide-x-reverse)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.sm\:p-7{
|
||||||
|
padding: 1.75rem;
|
||||||
|
}
|
||||||
|
|
||||||
.sm\:px-0{
|
.sm\:px-0{
|
||||||
padding-left: 0px;
|
padding-left: 0px;
|
||||||
padding-right: 0px;
|
padding-right: 0px;
|
||||||
@ -57052,6 +57105,11 @@ body{
|
|||||||
line-height: 2.75rem;
|
line-height: 2.75rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.sm\:text-purple{
|
||||||
|
--tw-text-opacity: 1;
|
||||||
|
color: rgb(85 88 139 / var(--tw-text-opacity));
|
||||||
|
}
|
||||||
|
|
||||||
[dir="ltr"] .sm\:ltr\:right-4{
|
[dir="ltr"] .sm\:ltr\:right-4{
|
||||||
right: 1rem;
|
right: 1rem;
|
||||||
}
|
}
|
||||||
|
54
public/css/print.css
vendored
54
public/css/print.css
vendored
@ -767,69 +767,63 @@ html[dir='rtl'] .print-heading {
|
|||||||
.classic-invoice {
|
.classic-invoice {
|
||||||
margin-top: 10px;
|
margin-top: 10px;
|
||||||
}
|
}
|
||||||
|
/*--Print --*/
|
||||||
|
|
||||||
.col-60
|
.col-60 {
|
||||||
{
|
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
width: 100%;
|
width: 60%;
|
||||||
vertical-align: top;
|
vertical-align: top;
|
||||||
}
|
}
|
||||||
|
|
||||||
.col-50
|
.col-50 {
|
||||||
{
|
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
width: 100%;
|
width: 50%;
|
||||||
vertical-align: top;
|
vertical-align: top;
|
||||||
}
|
}
|
||||||
|
|
||||||
.col-40
|
.col-40 {
|
||||||
{
|
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
width: 100%;
|
width: 40%;
|
||||||
vertical-align: top;
|
vertical-align: top;
|
||||||
}
|
}
|
||||||
.col-58
|
|
||||||
{
|
.col-58{
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
width: 58%;
|
width: 58%;
|
||||||
vertical-align: top;
|
vertical-align: top;
|
||||||
}
|
}
|
||||||
.col-42
|
|
||||||
{
|
.col-42 {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
width: 42%;
|
width: 42%;
|
||||||
vertical-align: top;
|
vertical-align: top;
|
||||||
}
|
}
|
||||||
.col-16
|
|
||||||
{
|
.col-16 {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
max-width: 16%;
|
max-width: 16%;
|
||||||
vertical-align: top;
|
vertical-align: top;
|
||||||
}
|
}
|
||||||
/*--Print --*/
|
|
||||||
|
|
||||||
@media (min-width: 991px) {
|
@media (max-width: 480px) {
|
||||||
.col-60
|
.col-60 {
|
||||||
{
|
|
||||||
display: inline-block;
|
|
||||||
width: 60%;
|
|
||||||
vertical-align: top;
|
|
||||||
}
|
|
||||||
|
|
||||||
.col-50
|
|
||||||
{
|
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
width: 50%;
|
width: 50%;
|
||||||
vertical-align: top;
|
vertical-align: top;
|
||||||
}
|
}
|
||||||
|
|
||||||
.col-40
|
.col-40 {
|
||||||
{
|
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
width: 40%;
|
width: 50%;
|
||||||
vertical-align: top;
|
vertical-align: top;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.mt-classic {
|
||||||
|
margin-top: -1px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 991px) {
|
||||||
.classic-invoice {
|
.classic-invoice {
|
||||||
margin-top: unset;
|
margin-top: unset;
|
||||||
}
|
}
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
|
|
||||||
<div class="gap-x-1 relative">
|
<div class="gap-x-1 relative">
|
||||||
<button data-dz-remove="true" class="absolute group right-0">
|
<button data-dz-remove="true" class="absolute group right-0">
|
||||||
<span class="material-icons text-base text-red px-1.5 py-1 rounded-lg group-hover:bg-gray-100">delete</span>
|
<span class="material-icons-outlined text-base text-gray-300 px-1.5 py-1 rounded-lg group-hover:bg-gray-100">delete</span>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -45,12 +45,12 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="gap-x-1">
|
<div class="flex flex-col gap-x-1">
|
||||||
<button data-dz-remove="true" class="group">
|
<button data-dz-remove="true" class="group">
|
||||||
<span class="material-icons text-base text-red px-1.5 py-1 rounded-lg group-hover:bg-gray-100">delete</span>
|
<span class="material-icons-outlined text-base text-gray-300 px-1.5 py-1 rounded-lg group-hover:bg-gray-100">delete</span>
|
||||||
</button>
|
</button>
|
||||||
<a href="#" type="button" class="group hidden" data-dz-download>
|
<a href="#" type="button" class="group hidden" data-dz-download>
|
||||||
<span class="material-icons-round text-base text-red px-1.5 py-1 rounded-lg group-hover:bg-gray-100">download</span>
|
<span class="material-icons text-base text-gray-300 px-1.5 py-1 rounded-lg group-hover:bg-gray-100">download</span>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -73,7 +73,7 @@
|
|||||||
:label="option.value"
|
:label="option.value"
|
||||||
:value="option.key">
|
:value="option.key">
|
||||||
<span class="float-left" :style="'padding-left: ' + (10 * option.level).toString() + 'px;'"><i v-if="option.level != 0" class="material-icons align-middle text-lg ltr:mr-2 rtl:ml-2">subdirectory_arrow_right</i>{{ option.value }}</span>
|
<span class="float-left" :style="'padding-left: ' + (10 * option.level).toString() + 'px;'"><i v-if="option.level != 0" class="material-icons align-middle text-lg ltr:mr-2 rtl:ml-2">subdirectory_arrow_right</i>{{ option.value }}</span>
|
||||||
<span class="badge badge-pill badge-success float-right mt-2" v-if="new_options[option.key]">{{ addNew.new_text }}</span>
|
<span class="new-badge absolute right-2 bg-green text-white px-2 py-1 rounded-md text-xs" v-if="new_options[option.key] || (option.mark_new)">{{ addNew.new_text }}</span>
|
||||||
</el-option>
|
</el-option>
|
||||||
|
|
||||||
<el-option-group
|
<el-option-group
|
||||||
@ -88,7 +88,7 @@
|
|||||||
:label="option.value"
|
:label="option.value"
|
||||||
:value="option.key">
|
:value="option.key">
|
||||||
<span class="float-left">{{ option.value }}</span>
|
<span class="float-left">{{ option.value }}</span>
|
||||||
<span class="badge badge-pill badge-success float-right mt-2" v-if="new_options[option.key]">{{ addNew.new_text }}</span>
|
<span class="new-badge absolute right-2 bg-green text-white px-2 py-1 rounded-md text-xs" v-if="new_options[option.key] || (option.mark_new)">{{ addNew.new_text }}</span>
|
||||||
</el-option>
|
</el-option>
|
||||||
</el-option-group>
|
</el-option-group>
|
||||||
|
|
||||||
@ -105,7 +105,7 @@
|
|||||||
|
|
||||||
<component v-bind:is="add_new_html" @submit="onSubmit" @cancel="onCancel"></component>
|
<component v-bind:is="add_new_html" @submit="onSubmit" @cancel="onCancel"></component>
|
||||||
|
|
||||||
<span slot="infoBlock" class="absolute right-8 top-3 bg-green text-white px-2 py-1 rounded-md text-xs" v-if="new_options[selected]">{{ addNew.new_text }}</span>
|
<span slot="infoBlock" class="absolute right-8 top-3 bg-green text-white px-2 py-1 rounded-md text-xs" v-if="new_options[selected] || (sorted_options[sorted_options.length - 1].mark_new && sorted_options[sorted_options.length - 1].key == selected)">{{ addNew.new_text }}</span>
|
||||||
|
|
||||||
<select :name="name" :id="name" class="hidden">
|
<select :name="name" :id="name" class="hidden">
|
||||||
<option v-for="option in sortedOptions" :key="option.key" :value="option.key">{{ option.value }}</option>
|
<option v-for="option in sortedOptions" :key="option.key" :value="option.key">{{ option.value }}</option>
|
||||||
@ -421,7 +421,8 @@ export default {
|
|||||||
values.push({
|
values.push({
|
||||||
key: key.toString(),
|
key: key.toString(),
|
||||||
value: value,
|
value: value,
|
||||||
level: 0
|
level: 0,
|
||||||
|
mark_new: false,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -437,14 +438,16 @@ export default {
|
|||||||
index: index,
|
index: index,
|
||||||
key: index.toString(),
|
key: index.toString(),
|
||||||
value: option,
|
value: option,
|
||||||
level: 0
|
level: 0,
|
||||||
|
mark_new: false,
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
this.sorted_options.push({
|
this.sorted_options.push({
|
||||||
index: index,
|
index: index,
|
||||||
key: option.id.toString(),
|
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.level) ? option.level : 0
|
level: (option.level) ? option.level : 0,
|
||||||
|
mark_new: (option.mark_new) ? option.mark_new : false,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}, this);
|
}, this);
|
||||||
@ -456,7 +459,8 @@ export default {
|
|||||||
this.sorted_options.push({
|
this.sorted_options.push({
|
||||||
key: key.toString(),
|
key: key.toString(),
|
||||||
value: value,
|
value: value,
|
||||||
level: 0
|
level: 0,
|
||||||
|
mark_new: false,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -466,14 +470,16 @@ export default {
|
|||||||
index: index,
|
index: index,
|
||||||
key: index.toString(),
|
key: index.toString(),
|
||||||
value: option,
|
value: option,
|
||||||
level: 0
|
level: 0,
|
||||||
|
mark_new: false,
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
this.sorted_options.push({
|
this.sorted_options.push({
|
||||||
index: index,
|
index: index,
|
||||||
key: option.id.toString(),
|
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.level) ? option.level : 0
|
level: (option.level) ? option.level : 0,
|
||||||
|
mark_new: (option.mark_new) ? option.mark_new : false,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}, this);
|
}, this);
|
||||||
|
@ -70,7 +70,7 @@
|
|||||||
:label="option.value"
|
:label="option.value"
|
||||||
:value="option.key">
|
:value="option.key">
|
||||||
<span class="float-left" :style="'padding-left: ' + (10 * option.level).toString() + 'px;'"><i v-if="option.level != 0" class="material-icons align-middle text-lg ltr:mr-2 rtl:ml-2">subdirectory_arrow_right</i>{{ option.value }}</span>
|
<span class="float-left" :style="'padding-left: ' + (10 * option.level).toString() + 'px;'"><i v-if="option.level != 0" class="material-icons align-middle text-lg ltr:mr-2 rtl:ml-2">subdirectory_arrow_right</i>{{ option.value }}</span>
|
||||||
<span class="badge badge-pill badge-success float-right mt-2" v-if="new_options[option.key]">{{ addNew.new_text }}</span>
|
<span class="new-badge absolute right-2 bg-green text-white px-2 py-1 rounded-md text-xs" v-if="new_options[option.key] || (option.mark_new)">{{ addNew.new_text }}</span>
|
||||||
</el-option>
|
</el-option>
|
||||||
|
|
||||||
<el-option-group
|
<el-option-group
|
||||||
@ -85,7 +85,7 @@
|
|||||||
:label="option.value"
|
:label="option.value"
|
||||||
:value="option.key">
|
:value="option.key">
|
||||||
<span class="float-left" :style="'padding-left: ' + (10 * option.level).toString() + 'px;'"><i v-if="option.level != 0" class="material-icons align-middle text-lg ltr:mr-2 rtl:ml-2">subdirectory_arrow_right</i>{{ option.value }}</span>
|
<span class="float-left" :style="'padding-left: ' + (10 * option.level).toString() + 'px;'"><i v-if="option.level != 0" class="material-icons align-middle text-lg ltr:mr-2 rtl:ml-2">subdirectory_arrow_right</i>{{ option.value }}</span>
|
||||||
<span class="badge badge-pill badge-success float-right mt-2" v-if="new_options[option.key]">{{ addNew.new_text }}</span>
|
<span class="new-badge absolute right-2 bg-green text-white px-2 py-1 rounded-md text-xs" v-if="new_options[option.key] || (option.mark_new)">{{ addNew.new_text }}</span>
|
||||||
</el-option>
|
</el-option>
|
||||||
</el-option-group>
|
</el-option-group>
|
||||||
|
|
||||||
@ -102,7 +102,7 @@
|
|||||||
|
|
||||||
<component v-bind:is="add_new_html" @submit="onSubmit" @cancel="onCancel"></component>
|
<component v-bind:is="add_new_html" @submit="onSubmit" @cancel="onCancel"></component>
|
||||||
|
|
||||||
<span slot="infoBlock" class="absolute right-8 top-3 bg-green text-white px-2 py-1 rounded-md text-xs" v-if="new_options[selected]">{{ addNew.new_text }}</span>
|
<span slot="infoBlock" class="absolute right-8 top-3 bg-green text-white px-2 py-1 rounded-md text-xs" v-if="new_options[selected] || (sorted_options[sorted_options.length - 1].mark_new && sorted_options[sorted_options.length - 1].key == selected)">{{ addNew.new_text }}</span>
|
||||||
|
|
||||||
<select :name="name" :id="name" class="hidden">
|
<select :name="name" :id="name" class="hidden">
|
||||||
<option v-for="option in sortedOptions" :key="option.key" :value="option.key">{{ option.value }}</option>
|
<option v-for="option in sortedOptions" :key="option.key" :value="option.key">{{ option.value }}</option>
|
||||||
@ -170,7 +170,7 @@
|
|||||||
:label="option.value"
|
:label="option.value"
|
||||||
:value="option.key">
|
:value="option.key">
|
||||||
<span class="float-left" :style="'padding-left: ' + (10 * option.level).toString() + 'px;'"><i v-if="option.level != 0" class="material-icons align-middle text-lg ltr:mr-2 rtl:ml-2">subdirectory_arrow_right</i>{{ option.value }}</span>
|
<span class="float-left" :style="'padding-left: ' + (10 * option.level).toString() + 'px;'"><i v-if="option.level != 0" class="material-icons align-middle text-lg ltr:mr-2 rtl:ml-2">subdirectory_arrow_right</i>{{ option.value }}</span>
|
||||||
<span class="badge badge-pill badge-success float-right mt-2" v-if="new_options[option.key]">{{ addNew.new_text }}</span>
|
<span class="new-badge absolute right-2 bg-green text-white px-2 py-1 rounded-md text-xs" v-if="new_options[option.key] || (option.mark_new)">{{ addNew.new_text }}</span>
|
||||||
</el-option>
|
</el-option>
|
||||||
|
|
||||||
<el-option-group
|
<el-option-group
|
||||||
@ -185,7 +185,7 @@
|
|||||||
:label="option.value"
|
:label="option.value"
|
||||||
:value="option.key">
|
:value="option.key">
|
||||||
<span class="float-left" :style="'padding-left: ' + (10 * option.level).toString() + 'px;'"><i v-if="option.level != 0" class="material-icons align-middle text-lg ltr:mr-2 rtl:ml-2">subdirectory_arrow_right</i>{{ option.value }}</span>
|
<span class="float-left" :style="'padding-left: ' + (10 * option.level).toString() + 'px;'"><i v-if="option.level != 0" class="material-icons align-middle text-lg ltr:mr-2 rtl:ml-2">subdirectory_arrow_right</i>{{ option.value }}</span>
|
||||||
<span class="badge badge-pill badge-success float-right mt-2" v-if="new_options[option.key]">{{ addNew.new_text }}</span>
|
<span class="new-badge absolute right-2 bg-green text-white px-2 py-1 rounded-md text-xs" v-if="new_options[option.key] || (option.mark_new)">{{ addNew.new_text }}</span>
|
||||||
</el-option>
|
</el-option>
|
||||||
</el-option-group>
|
</el-option-group>
|
||||||
|
|
||||||
@ -202,7 +202,7 @@
|
|||||||
|
|
||||||
<component v-bind:is="add_new_html" @submit="onSubmit" @cancel="onCancel"></component>
|
<component v-bind:is="add_new_html" @submit="onSubmit" @cancel="onCancel"></component>
|
||||||
|
|
||||||
<span slot="infoBlock" class="absolute right-8 top-3 bg-green text-white px-2 py-1 rounded-md text-xs" v-if="new_options[selected]">{{ addNew.new_text }}</span>
|
<span slot="infoBlock" class="absolute right-8 top-3 bg-green text-white px-2 py-1 rounded-md text-xs" v-if="new_options[selected] || (sorted_options[sorted_options.length - 1].mark_new && sorted_options[sorted_options.length - 1].key == selected)">{{ addNew.new_text }}</span>
|
||||||
|
|
||||||
<select :name="name" :id="name" v-model="selected" class="d-none">
|
<select :name="name" :id="name" v-model="selected" class="d-none">
|
||||||
<option v-for="option in sortedOptions" :key="option.key" :value="option.key">{{ option.value }}</option>
|
<option v-for="option in sortedOptions" :key="option.key" :value="option.key">{{ option.value }}</option>
|
||||||
|
74
resources/assets/js/mixins/global.js
vendored
74
resources/assets/js/mixins/global.js
vendored
@ -53,6 +53,8 @@ if (typeof exception_tracker != 'undefined') {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var BreakException = {};
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: {
|
components: {
|
||||||
AkauntingDropzoneFileUpload,
|
AkauntingDropzoneFileUpload,
|
||||||
@ -174,6 +176,78 @@ export default {
|
|||||||
prevEl: ".swiper-button-prev",
|
prevEl: ".swiper-button-prev",
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
//swiper slider for long tabs items
|
||||||
|
for (let [index, item] of document.querySelectorAll('[data-swiper]').entries()) {
|
||||||
|
if (item.clientWidth < item.querySelector('[data-tabs-swiper-wrapper]').clientWidth) {
|
||||||
|
let initial_slide = 0;
|
||||||
|
let hash_split = window.location.hash.split('#')[1];
|
||||||
|
let loop = 0;
|
||||||
|
let slides_view;
|
||||||
|
|
||||||
|
try {
|
||||||
|
item.querySelectorAll('[data-tabs-slide]').forEach((slide, index, arr) => {
|
||||||
|
loop += slide.clientWidth;
|
||||||
|
|
||||||
|
slide.classList.add('swiper-slide');
|
||||||
|
|
||||||
|
if (slide.getAttribute('data-tabs') == hash_split) {
|
||||||
|
initial_slide = index;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (loop > item.clientWidth) {
|
||||||
|
slides_view = index;
|
||||||
|
throw BreakException;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} catch (e) {
|
||||||
|
if (e !== BreakException) throw e;
|
||||||
|
}
|
||||||
|
|
||||||
|
item.querySelector('[data-tabs-swiper]').classList.add('swiper', 'swiper-links');
|
||||||
|
item.querySelector('[data-tabs-swiper-wrapper]').classList.add('swiper-wrapper');
|
||||||
|
|
||||||
|
let html = `
|
||||||
|
<div class="swiper-tabs-container">
|
||||||
|
${item.querySelector('[data-tabs-swiper]').innerHTML}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="swiper-button-next bg-body text-white flex items-center justify-center right-0">
|
||||||
|
<span class="material-icons text-purple text-4xl">chevron_right</span>
|
||||||
|
</div>
|
||||||
|
<div class="swiper-button-prev bg-body text-white flex items-center justify-center left-0">
|
||||||
|
<span class="material-icons text-purple text-4xl">chevron_left</span>
|
||||||
|
</div>
|
||||||
|
`;
|
||||||
|
|
||||||
|
item.querySelector('[data-tabs-swiper]').innerHTML = html;
|
||||||
|
slides_view = Number(item.getAttribute('data-swiper')) != 0 ? Number(item.getAttribute('data-swiper')) : slides_view;
|
||||||
|
item.setAttribute('data-swiper', slides_view);
|
||||||
|
|
||||||
|
new Swiper(item.querySelector('.swiper-tabs-container'), {
|
||||||
|
loop: true,
|
||||||
|
slidesPerView: slides_view,
|
||||||
|
pagination: {
|
||||||
|
el: '.swiper-pagination',
|
||||||
|
clickable: true
|
||||||
|
},
|
||||||
|
navigation: {
|
||||||
|
nextEl: '.swiper-button-next',
|
||||||
|
prevEl: '.swiper-button-prev',
|
||||||
|
},
|
||||||
|
initialSlide: initial_slide,
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
item.removeAttribute('data-swiper');
|
||||||
|
item.querySelector('[data-tabs-swiper]').removeAttribute('data-tabs-swiper');
|
||||||
|
item.querySelector('[data-tabs-swiper-wrapper]').removeAttribute('data-tabs-swiper-wrapper');
|
||||||
|
|
||||||
|
item.querySelectorAll('[data-tabs-slide]').forEach((slide) => {
|
||||||
|
slide.removeAttribute('data-tabs-slide');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//swiper slider for long tabs items
|
||||||
},
|
},
|
||||||
|
|
||||||
methods: {
|
methods: {
|
||||||
|
27
resources/assets/js/views/portal/apps.js
vendored
27
resources/assets/js/views/portal/apps.js
vendored
@ -66,33 +66,6 @@ const app = new Vue({
|
|||||||
if (typeof this.form.password !== 'undefined') {
|
if (typeof this.form.password !== 'undefined') {
|
||||||
this.form.password = '';
|
this.form.password = '';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (document.querySelector('[data-tabs-swiper]').childElementCount > 2) {
|
|
||||||
|
|
||||||
document.querySelectorAll('[data-tabs-slide]').forEach((item) => {
|
|
||||||
item.classList.add('swiper-slide');
|
|
||||||
});
|
|
||||||
|
|
||||||
document.querySelector('[data-tabs-swiper]').classList.add('swiper', 'swiper-links');
|
|
||||||
|
|
||||||
let html = `
|
|
||||||
<div class="swiper-wrapper">
|
|
||||||
${document.querySelector('[data-tabs-swiper]').innerHTML}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="swiper-button-next top-3 right-0">
|
|
||||||
<span class="material-icons">chevron_right</span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="swiper-button-prev top-3 left-0">
|
|
||||||
<span class="material-icons">chevron_left</span>
|
|
||||||
</div>
|
|
||||||
`;
|
|
||||||
|
|
||||||
document.querySelector('[data-tabs-swiper]').innerHTML = html;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
new Swiper(".swiper-links", {
|
new Swiper(".swiper-links", {
|
||||||
loop: false,
|
loop: false,
|
||||||
|
39
resources/assets/sass/app.css
vendored
39
resources/assets/sass/app.css
vendored
@ -21,6 +21,11 @@
|
|||||||
.index-actions {
|
.index-actions {
|
||||||
@apply ltr:[&:nth-child(2)]:border-l ltr:[&:nth-child(3)]:border-l-0 rtl:[&:nth-child(2)]:border-r rtl:[&:nth-child(3)]:border-r-0 ltr:[&:first-child]:rounded-tl-lg ltr:[&:first-child]:rounded-bl-lg ltr:[&:first-child]:border-r-0 rtl:[&:first-child]:rounded-tr-lg rtl:[&:first-child]:rounded-br-lg rtl:[&:first-child]:border-l-0 ltr:[&:last-child]:rounded-tr-lg ltr:[&:last-child]:rounded-br-lg ltr:[&:last-child]:border-l-0 rtl:[&:last-child]:rounded-tl-lg rtl:[&:last-child]:rounded-bl-lg rtl:[&:last-child]:border-r-0;
|
@apply ltr:[&:nth-child(2)]:border-l ltr:[&:nth-child(3)]:border-l-0 rtl:[&:nth-child(2)]:border-r rtl:[&:nth-child(3)]:border-r-0 ltr:[&:first-child]:rounded-tl-lg ltr:[&:first-child]:rounded-bl-lg ltr:[&:first-child]:border-r-0 rtl:[&:first-child]:rounded-tr-lg rtl:[&:first-child]:rounded-br-lg rtl:[&:first-child]:border-l-0 ltr:[&:last-child]:rounded-tr-lg ltr:[&:last-child]:rounded-br-lg ltr:[&:last-child]:border-l-0 rtl:[&:last-child]:rounded-tl-lg rtl:[&:last-child]:rounded-bl-lg rtl:[&:last-child]:border-r-0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.suggestion-buttons > a:first-child, .suggestion-buttons > button:first-child {
|
||||||
|
@apply mt-2;
|
||||||
|
}
|
||||||
|
|
||||||
[data-dropdown-actions] {
|
[data-dropdown-actions] {
|
||||||
transform: unset !important;
|
transform: unset !important;
|
||||||
}
|
}
|
||||||
@ -41,6 +46,19 @@
|
|||||||
.tabs-link:hover::before {
|
.tabs-link:hover::before {
|
||||||
@apply opacity-100 visible;
|
@apply opacity-100 visible;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.notifications-menu ul li a {
|
||||||
|
border-bottom: 1px solid;
|
||||||
|
}
|
||||||
|
|
||||||
|
.avatar-attachment {
|
||||||
|
@apply text-white inline-flex items-center justify-center;
|
||||||
|
background-color: #adb5bd;
|
||||||
|
border-radius: .375rem;
|
||||||
|
font-size: 1rem;
|
||||||
|
height: 45px;
|
||||||
|
width: 45px;
|
||||||
|
}
|
||||||
/* index */
|
/* index */
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -93,7 +111,7 @@
|
|||||||
background-color: #DCE2F9;
|
background-color: #DCE2F9;
|
||||||
}
|
}
|
||||||
|
|
||||||
.menu-list a svg {
|
.menu-list ul svg {
|
||||||
width: 22px;
|
width: 22px;
|
||||||
height: 24px;
|
height: 24px;
|
||||||
fill: none;
|
fill: none;
|
||||||
@ -572,6 +590,14 @@ html[dir="rtl"] .lines-radius-border thead td:last-child {
|
|||||||
}
|
}
|
||||||
/* responsive for role mobile */
|
/* responsive for role mobile */
|
||||||
|
|
||||||
|
/* full-width for mobile. Some component use inline styling for width */
|
||||||
|
@media only screen and (max-width: 991px) {
|
||||||
|
.full-width-mobile {
|
||||||
|
width: 100% !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* full-width for mobile. Some component use inline styling for width */
|
||||||
|
|
||||||
[dir="ltr"] .ltr\:-right-57 {
|
[dir="ltr"] .ltr\:-right-57 {
|
||||||
right: -14.5rem;
|
right: -14.5rem;
|
||||||
}
|
}
|
||||||
@ -592,6 +618,17 @@ html[dir="rtl"] .lines-radius-border thead td:last-child {
|
|||||||
}
|
}
|
||||||
/* plans page accordion */
|
/* plans page accordion */
|
||||||
|
|
||||||
|
/* hidden scroll-bar */
|
||||||
|
.hide-scroll-bar::-webkit-scrollbar {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hide-scroll-bar {
|
||||||
|
-ms-overflow-style: none; /* IE and Edge */
|
||||||
|
scrollbar-width: none; /* Firefox */
|
||||||
|
}
|
||||||
|
/* hidden scroll-bar */
|
||||||
|
|
||||||
@media only screen and (max-width: 480px) {
|
@media only screen and (max-width: 480px) {
|
||||||
.small-table-width {
|
.small-table-width {
|
||||||
width: 550px;
|
width: 550px;
|
||||||
|
@ -6,7 +6,17 @@
|
|||||||
<x-show.summary.left>
|
<x-show.summary.left>
|
||||||
@if (! $hideAvatar)
|
@if (! $hideAvatar)
|
||||||
<x-slot name="avatar">
|
<x-slot name="avatar">
|
||||||
{{ $contact->initials }}
|
@if ($contact->logo)
|
||||||
|
@if (is_object($contact->logo))
|
||||||
|
<img src="{{ Storage::url($contact->logo->id) }}" class="absolute w-12 h-12 rounded-full mr-2 hidden lg:block" alt="{{ $contact->name }}" title="{{ $contact->name }}">
|
||||||
|
@else
|
||||||
|
<img src="{{ asset('public/img/user.svg') }}" class="absolute w-12 h-12 rounded-full mr-2 hidden lg:block" alt="{{ $contact->name }}"/>
|
||||||
|
@endif
|
||||||
|
|
||||||
|
{{ $contact->initials }}
|
||||||
|
@else
|
||||||
|
{{ $contact->initials }}
|
||||||
|
@endif
|
||||||
</x-slot>
|
</x-slot>
|
||||||
@endif
|
@endif
|
||||||
|
|
||||||
@ -150,7 +160,7 @@
|
|||||||
id="transactions"
|
id="transactions"
|
||||||
name="{{ trans_choice('general.transactions', 2) }}"
|
name="{{ trans_choice('general.transactions', 2) }}"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
@stack('transactions_nav_end')
|
@stack('transactions_nav_end')
|
||||||
</x-slot>
|
</x-slot>
|
||||||
|
|
||||||
|
@ -1,10 +1,26 @@
|
|||||||
<x-button
|
@mobile
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
class="rw-full flex items-center text-red sm:text-purple px-2 h-9 leading-9"
|
||||||
|
@click="onDeleteViaConfirmation('delete-{{ $modelTable }}-{{ $id }}')"
|
||||||
|
override="class"
|
||||||
|
{{ $attributes }}
|
||||||
|
>
|
||||||
|
|
||||||
|
@if ($slot->isNotEmpty())
|
||||||
|
{!! $slot !!}
|
||||||
|
@else
|
||||||
|
<span class="w-full h-full flex items-center rounded-md px-2 text-sm hover:bg-lilac-100">{!! $label !!}</span>
|
||||||
|
@endif
|
||||||
|
@else
|
||||||
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
class="relative bg-white hover:bg-gray-100 border py-0.5 px-1 cursor-pointer group/tooltip index-actions"
|
class="relative bg-white hover:bg-gray-100 border py-0.5 px-1 cursor-pointer group/tooltip index-actions"
|
||||||
@click="onDeleteViaConfirmation('delete-{{ $modelTable }}-{{ $id }}')"
|
@click="onDeleteViaConfirmation('delete-{{ $modelTable }}-{{ $id }}')"
|
||||||
override="class"
|
override="class"
|
||||||
{{ $attributes }}
|
{{ $attributes }}
|
||||||
>
|
>
|
||||||
|
|
||||||
@if ($slot->isNotEmpty())
|
@if ($slot->isNotEmpty())
|
||||||
{!! $slot !!}
|
{!! $slot !!}
|
||||||
@else
|
@else
|
||||||
@ -14,6 +30,7 @@
|
|||||||
<div class="absolute w-2 h-2 -bottom-1 before:content-[' '] before:absolute before:w-2 before:h-2 before:bg-white before:border-gray-200 before:transform before:rotate-45 before:border before:border-t-0 before:border-l-0" data-popper-arrow></div>
|
<div class="absolute w-2 h-2 -bottom-1 before:content-[' '] before:absolute before:w-2 before:h-2 before:bg-white before:border-gray-200 before:transform before:rotate-45 before:border before:border-t-0 before:border-l-0" data-popper-arrow></div>
|
||||||
</div>
|
</div>
|
||||||
@endif
|
@endif
|
||||||
|
@endmobile
|
||||||
|
|
||||||
<x-form.input.hidden
|
<x-form.input.hidden
|
||||||
name="delete-{{ $modelTable }}-{{ $id }}"
|
name="delete-{{ $modelTable }}-{{ $id }}"
|
||||||
@ -25,4 +42,4 @@
|
|||||||
data-cancel="{!! $cancelText !!}"
|
data-cancel="{!! $cancelText !!}"
|
||||||
data-delete="{!! $deleteText !!}"
|
data-delete="{!! $deleteText !!}"
|
||||||
/>
|
/>
|
||||||
</x-button>
|
</button>
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
<div class="p-7 shadow-2xl rounded-2xl">
|
<div class="p-3 sm:p-7 shadow-2xl rounded-2xl">
|
||||||
@switch($documentTemplate)
|
@switch($documentTemplate)
|
||||||
@case('classic')
|
@case('classic')
|
||||||
<x-documents.template.classic
|
<x-documents.template.classic
|
||||||
|
@ -81,8 +81,8 @@
|
|||||||
|
|
||||||
<div class="row mt-2">
|
<div class="row mt-2">
|
||||||
<div class="col-33">
|
<div class="col-33">
|
||||||
<div class="invoice-classic-line mb-1 mt-4" style="background-color:{{ $backgroundColor }};"></div>
|
<div class="invoice-classic-line mb-1 mt-4" style="background-color:{{ $backgroundColor }}; -webkit-print-color-adjust: exact;"></div>
|
||||||
<div class="invoice-classic-line" style="background-color:{{ $backgroundColor }};"></div>
|
<div class="invoice-classic-line" style="background-color:{{ $backgroundColor }}; -webkit-print-color-adjust: exact;"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-33">
|
<div class="col-33">
|
||||||
@ -106,8 +106,8 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-33">
|
<div class="col-33">
|
||||||
<div class="invoice-classic-line mb-1 mt-4" style="background-color:{{ $backgroundColor }};"></div>
|
<div class="invoice-classic-line mb-1 mt-4" style="background-color:{{ $backgroundColor }}; -webkit-print-color-adjust: exact;"></div>
|
||||||
<div class="invoice-classic-line" style="background-color:{{ $backgroundColor }};"></div>
|
<div class="invoice-classic-line" style="background-color:{{ $backgroundColor }}; -webkit-print-color-adjust: exact;"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
@stack('header_start')
|
@stack('header_start')
|
||||||
|
|
||||||
<div id="header" class="xl:pt-6">
|
<div id="header" class="xl:pt-6 -mt-2">
|
||||||
<div class="flex flex-col sm:flex-row flex-wrap items-start justify-between hide-empty-page">
|
<div class="flex flex-col sm:flex-row items-start justify-between sm:space-x-4 hide-empty-page">
|
||||||
<div class="w-full sm:w-6/12 items-center mb-3 sm:mb-0">
|
<div data-page-title-first class="w-full sm:w-6/12 items-center mb-3 sm:mb-0">
|
||||||
<div class="flex items-center">
|
<div class="flex items-center">
|
||||||
<h1 class="flex items-center text-2xl xl:text-5xl text-black font-light -ml-0.5">
|
<h1 class="flex items-center text-2xl xl:text-5xl text-black font-light -ml-0.5 mt-2 whitespace-nowrap">
|
||||||
<x-title>
|
<x-title>
|
||||||
{!! $title !!}
|
{!! $title !!}
|
||||||
</x-title>
|
</x-title>
|
||||||
@ -24,20 +24,18 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="w-full sm:w-6/12">
|
<div data-page-title-second class="w-full flex flex-wrap flex-col sm:flex-row sm:items-center justify-end sm:space-x-2 sm:rtl:space-x-reverse space-y-2 suggestion-buttons">
|
||||||
<div class="flex flex-wrap flex-col sm:flex-row sm:items-center justify-end sm:space-x-2 sm:rtl:space-x-reverse">
|
@stack('header_button_start')
|
||||||
@stack('header_button_start')
|
|
||||||
|
|
||||||
{!! $buttons !!}
|
{!! $buttons !!}
|
||||||
|
|
||||||
@stack('header_button_end')
|
@stack('header_button_end')
|
||||||
|
|
||||||
<x-suggestions />
|
<x-suggestions />
|
||||||
|
|
||||||
@stack('header_suggestion_end')
|
@stack('header_suggestion_end')
|
||||||
|
|
||||||
{!! $moreButtons !!}
|
{!! $moreButtons !!}
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="my-10">
|
<div class="my-10">
|
||||||
<x-link href="https://akaunting.com/lp/accounting-software?utm_source=software&utm_medium=invoice_payment&utm_campaign=plg" class="bg-purple text-white px-3 py-1.5 mb-3 sm:mb-0 rounded-xl text-sm font-medium leading-6 hover:bg-purple-700" override="class">
|
<x-link href="https://akaunting.com/accounting-software?utm_source=software&utm_medium=invoice_payment&utm_campaign=plg" class="bg-purple text-white px-3 py-1.5 mb-3 sm:mb-0 rounded-xl text-sm font-medium leading-6 hover:bg-purple-700" override="class">
|
||||||
{{ trans('portal.get_started') }}
|
{{ trans('portal.get_started') }}
|
||||||
</x-link>
|
</x-link>
|
||||||
</div>
|
</div>
|
||||||
|
@ -1,11 +1,13 @@
|
|||||||
@stack('header_start')
|
@stack('header_start')
|
||||||
|
|
||||||
<div id="header" class="xl:pt-6">
|
<div id="header" class="xl:pt-6 -mt-2">
|
||||||
<div class="flex flex-col sm:flex-row flex-wrap items-start justify-between hide-empty-page">
|
<div class="flex flex-col sm:flex-row items-start justify-between space-x-4 hide-empty-page">
|
||||||
<div class="w-full sm:w-6/12 items-center mb-3 sm:mb-0">
|
<div data-page-title-first class="w-full sm:w-6/12 items-center mb-3 sm:mb-0">
|
||||||
<div class="flex items-center">
|
<div class="flex items-center">
|
||||||
<h1 class="flex items-center text-2xl xl:text-5xl text-black font-light -ml-0.5">
|
<h1 class="flex items-center text-2xl xl:text-5xl text-black font-light -ml-0.5 mt-2 whitespace-nowrap">
|
||||||
{!! $title !!}
|
<x-title>
|
||||||
|
{!! $title !!}
|
||||||
|
</x-title>
|
||||||
|
|
||||||
@yield('dashboard_action')
|
@yield('dashboard_action')
|
||||||
</h1>
|
</h1>
|
||||||
@ -22,16 +24,14 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="w-full sm:w-6/12">
|
<div data-page-title-second class="w-full flex flex-wrap flex-col sm:flex-row sm:items-center justify-end sm:space-x-2 sm:rtl:space-x-reverse space-y-2 suggestion-buttons">
|
||||||
<div class="flex flex-wrap flex-col sm:flex-row sm:items-center justify-end sm:space-x-2 sm:rtl:space-x-reverse">
|
@stack('header_button_start')
|
||||||
@stack('header_button_start')
|
|
||||||
|
|
||||||
{!! $buttons !!}
|
{!! $buttons !!}
|
||||||
|
|
||||||
@stack('header_button_end')
|
@stack('header_button_end')
|
||||||
|
|
||||||
{!! $moreButtons !!}
|
{!! $moreButtons !!}
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
@stack('header_start')
|
@stack('header_start')
|
||||||
|
|
||||||
<div id="header" class="xl:pt-6">
|
<div id="header" class="xl:pt-6 -mt-2">
|
||||||
<div class="flex flex-col sm:flex-row flex-wrap items-start justify-between hide-empty-page">
|
<div class="flex flex-col sm:flex-row items-start justify-between space-x-4 hide-empty-page">
|
||||||
<div class="w-full sm:w-6/12 items-center mb-3 sm:mb-0">
|
<div data-page-title-first class="w-full sm:w-6/12 items-center mb-3 sm:mb-0">
|
||||||
<div class="flex items-center">
|
<div class="flex items-center">
|
||||||
<h1 class="flex items-center text-2xl xl:text-5xl text-black font-light -ml-0.5">
|
<h1 class="flex items-center text-2xl xl:text-5xl text-black font-light -ml-0.5 mt-2 whitespace-nowrap">
|
||||||
<x-title>
|
<x-title>
|
||||||
{!! $title !!}
|
{!! $title !!}
|
||||||
</x-title>
|
</x-title>
|
||||||
@ -24,16 +24,14 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="w-full sm:w-6/12">
|
<div data-page-title-second class="w-full flex flex-wrap flex-col sm:flex-row sm:items-center justify-end sm:space-x-2 sm:rtl:space-x-reverse space-y-2 suggestion-buttons">
|
||||||
<div class="flex flex-wrap flex-col sm:flex-row sm:items-center justify-end sm:space-x-2 sm:rtl:space-x-reverse">
|
@stack('header_button_start')
|
||||||
@stack('header_button_start')
|
|
||||||
|
|
||||||
{!! $buttons !!}
|
{!! $buttons !!}
|
||||||
|
|
||||||
@stack('header_button_end')
|
@stack('header_button_end')
|
||||||
|
|
||||||
{!! $moreButtons !!}
|
{!! $moreButtons !!}
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
@stack('header_start')
|
@stack('header_start')
|
||||||
|
|
||||||
<div id="header" class="xl:pt-6">
|
<div id="header" class="xl:pt-6 -mt-2">
|
||||||
<div class="flex flex-col sm:flex-row flex-wrap items-start justify-between hide-empty-page">
|
<div lass="flex flex-col sm:flex-row items-start justify-between space-x-4 hide-empty-page">
|
||||||
<div class="w-full sm:w-6/12 items-center mb-3 sm:mb-0">
|
<div data-page-title-first class="w-full sm:w-6/12 items-center mb-3 sm:mb-0">
|
||||||
<div class="flex items-center">
|
<div class="flex items-center">
|
||||||
<h1 class="flex items-center text-2xl xl:text-5xl text-black font-light -ml-0.5">
|
<h1 class="flex items-center text-2xl xl:text-5xl text-black font-light -ml-0.5 mt-2 whitespace-nowrap">
|
||||||
<x-title>
|
<x-title>
|
||||||
{!! $title !!}
|
{!! $title !!}
|
||||||
</x-title>
|
</x-title>
|
||||||
@ -24,16 +24,14 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="w-full sm:w-6/12">
|
<div data-page-title-second class="w-full flex flex-wrap flex-col sm:flex-row sm:items-center justify-end sm:space-x-2 sm:rtl:space-x-reverse space-y-2 suggestion-buttons">
|
||||||
<div class="flex flex-wrap flex-col sm:flex-row sm:items-center justify-end sm:space-x-2 sm:rtl:space-x-reverse">
|
@stack('header_button_start')
|
||||||
@stack('header_button_start')
|
|
||||||
|
|
||||||
{!! $buttons !!}
|
{!! $buttons !!}
|
||||||
|
|
||||||
@stack('header_button_end')
|
@stack('header_button_end')
|
||||||
|
|
||||||
{!! $moreButtons !!}
|
{!! $moreButtons !!}
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -1,37 +1,43 @@
|
|||||||
<div class="flex items-center justify-between border-b py-4">
|
<div class="divide-y">
|
||||||
<div class="flex items-center">
|
<div class="flex items-center justify-between py-4 -mb-4">
|
||||||
@if ($file->aggregate_type == 'image')
|
<div class="flex items-center">
|
||||||
<span class="material-icons text-base">image</span>
|
@if ($file->aggregate_type == 'image')
|
||||||
@else
|
<div class="avatar-attachment">
|
||||||
<span class="material-icons text-base">attach_file</span>
|
<img src="{{ route('uploads.get', $file->id) }}" alt="{{ $file->basename }}" class="avatar-img h-full rounded object-cover">
|
||||||
@endif
|
</div>
|
||||||
|
@else
|
||||||
<div class="flex flex-col text-gray-500 ltr:ml-3 rtl:mr-3 gap-y-1">
|
<div class="avatar-attachment">
|
||||||
<span class="w-64 text-sm truncate">
|
<span class="material-icons text-base">attach_file</span>
|
||||||
{{ $file->basename }}
|
</div>
|
||||||
</span>
|
|
||||||
|
|
||||||
<span class="text-xs mb-0">
|
|
||||||
{{ $file->readableSize() }}
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="flex flex-row lg:flex-col gap-x-1">
|
|
||||||
@can('delete-common-uploads')
|
|
||||||
<x-link href="javascript:void();" id="remove-{{ $column_name }}" @click="onDeleteFile('{{ $file->id }}', '{{ route('uploads.destroy', $file->id) }}', '{{ trans('general.title.delete', ['type' => $column_name]) }}', '{{ trans('general.delete_confirm', ['name' => $file->basename, 'type' => $column_name]) }} ', '{{ trans('general.cancel') }}', '{{ trans('general.delete') }}')" type="button" class="group" override="class">
|
|
||||||
<span class="material-icons text-base text-red px-1.5 py-1 rounded-lg group-hover:bg-gray-100">delete</span>
|
|
||||||
</x-link>
|
|
||||||
|
|
||||||
@if ($options)
|
|
||||||
<input type="hidden" name="page_{{ $file->id}}" id="file-page-{{ $file->id}}" value="{{ $options['page'] }}" />
|
|
||||||
<input type="hidden" name="key_{{ $file->id}}" id="file-key-{{ $file->id}}" value="{{ $options['key'] }}" />
|
|
||||||
<input type="hidden" name="value_{{ $file->id}}" id="file-value-{{ $file->id}}" value="{{ $file->id }}" />
|
|
||||||
@endif
|
@endif
|
||||||
@endcan
|
|
||||||
|
|
||||||
<x-link href="{{ route('uploads.download', $file->id) }}" type="button" class="group" override="class">
|
<div class="flex flex-col text-gray-500 ltr:ml-3 rtl:mr-3 gap-y-1">
|
||||||
<span class="material-icons text-base text-purple px-1.5 py-1 rounded-lg group-hover:bg-gray-100">download</span>
|
<span class="w-64 text-sm truncate">
|
||||||
</x-link>
|
{{ $file->basename }}
|
||||||
|
</span>
|
||||||
|
|
||||||
|
<span class="text-xs mb-0">
|
||||||
|
{{ $file->readableSize() }}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="flex flex-row lg:flex-col gap-x-1">
|
||||||
|
@can('delete-common-uploads')
|
||||||
|
<x-link href="javascript:void();" id="remove-{{ $column_name }}" @click="onDeleteFile('{{ $file->id }}', '{{ route('uploads.destroy', $file->id) }}', '{{ trans('general.title.delete', ['type' => $column_name]) }}', '{{ trans('general.delete_confirm', ['name' => $file->basename, 'type' => $column_name]) }} ', '{{ trans('general.cancel') }}', '{{ trans('general.delete') }}')" type="button" class="group" override="class">
|
||||||
|
<span class="material-icons-outlined text-base text-gray-300 px-1.5 py-1 rounded-lg group-hover:bg-gray-100">delete</span>
|
||||||
|
</x-link>
|
||||||
|
|
||||||
|
@if ($options)
|
||||||
|
<input type="hidden" name="page_{{ $file->id}}" id="file-page-{{ $file->id}}" value="{{ $options['page'] }}" />
|
||||||
|
<input type="hidden" name="key_{{ $file->id}}" id="file-key-{{ $file->id}}" value="{{ $options['key'] }}" />
|
||||||
|
<input type="hidden" name="value_{{ $file->id}}" id="file-value-{{ $file->id}}" value="{{ $file->id }}" />
|
||||||
|
@endif
|
||||||
|
@endcan
|
||||||
|
|
||||||
|
<x-link href="{{ route('uploads.download', $file->id) }}" type="button" class="group" override="class">
|
||||||
|
<span class="material-icons text-base text-gray-300 px-1.5 py-1 rounded-lg group-hover:bg-gray-100">download</span>
|
||||||
|
</x-link>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -8,4 +8,4 @@
|
|||||||
>
|
>
|
||||||
{{ $suggestion->name }}
|
{{ $suggestion->name }}
|
||||||
</x-link>
|
</x-link>
|
||||||
@endforeach
|
@endforeach
|
150
resources/views/components/table/actions-mobile.blade.php
Normal file
150
resources/views/components/table/actions-mobile.blade.php
Normal file
@ -0,0 +1,150 @@
|
|||||||
|
@php
|
||||||
|
$count_buttons = 1;
|
||||||
|
$more_actions = [];
|
||||||
|
@endphp
|
||||||
|
|
||||||
|
<div
|
||||||
|
data-mobile-actions
|
||||||
|
class="absolute w-6 h-6 flex items-center justify-center ltr:right-0 rtl:left-0 -top-3 py-0.5 px-1 bg-white border rounded-full cursor-pointer hover:bg-gray-100"
|
||||||
|
>
|
||||||
|
<span class="material-icons-outlined text-lg">
|
||||||
|
more_horiz
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div
|
||||||
|
data-mobile-actions-modal
|
||||||
|
class="modal w-full h-full fixed flex top-0 left-0 right-0 justify-center items-center flex-wrap overflow-y-auto overflow-hidden z-50 opacity-0 invisible modal-background transition-opacity"
|
||||||
|
>
|
||||||
|
<div class="w-full my-10 m-auto flex flex-col px-2 sm:px-0 max-w-md">
|
||||||
|
<div class="p-2 bg-body rounded-lg">
|
||||||
|
@foreach ($actions as $action)
|
||||||
|
@if (! empty($action['permission']))
|
||||||
|
@can($action['permission'])
|
||||||
|
@endif
|
||||||
|
|
||||||
|
@if ($count_buttons > 3 && $loop->count > 4)
|
||||||
|
@break
|
||||||
|
@endif
|
||||||
|
|
||||||
|
@php
|
||||||
|
$type = ! empty($action['type']) ? $action['type'] : 'link';
|
||||||
|
@endphp
|
||||||
|
|
||||||
|
@switch($type)
|
||||||
|
@case('button')
|
||||||
|
<button type="button" class="w-full flex items-center text-purple px-2 h-9 leading-9" {!! $action['attributes'] ?? null !!}>
|
||||||
|
<div class="w-full h-full flex items-center rounded-md px-2 text-sm hover:bg-lilac-100">
|
||||||
|
<span class="material-icons-outlined text-purple text-lg mr-2 pointer-events-none">
|
||||||
|
{{ $action['icon'] }}
|
||||||
|
</span>
|
||||||
|
|
||||||
|
{{ $action['title'] }}
|
||||||
|
</div>
|
||||||
|
</button>
|
||||||
|
@break
|
||||||
|
|
||||||
|
@case('delete')
|
||||||
|
@php
|
||||||
|
$title = $action['title'] ?? null;
|
||||||
|
$modelId = ! empty($action['model-id']) ? $action['model-id'] : 'id';
|
||||||
|
$modelName = ! empty($action['model-name']) ? $action['model-name'] : 'name';
|
||||||
|
@endphp
|
||||||
|
|
||||||
|
<x-delete-button :model="$action['model']" :route="$action['route']" :text="$title" :model-id="$modelId" :model-name="$modelName" />
|
||||||
|
@break
|
||||||
|
|
||||||
|
@default
|
||||||
|
<a href="{{ $action['url'] }}" class="w-full flex items-center text-purple px-2 h-9 leading-9" {!! $action['attributes'] ?? null !!}>
|
||||||
|
<div class="w-full h-full flex items-center rounded-md px-2 text-sm hover:bg-lilac-100">
|
||||||
|
<span class="material-icons-outlined text-purple text-lg mr-2 pointer-events-none">
|
||||||
|
{{ $action['icon'] }}
|
||||||
|
</span>
|
||||||
|
|
||||||
|
{{ $action['title'] }}
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
@endswitch
|
||||||
|
|
||||||
|
@php
|
||||||
|
array_shift($actions);
|
||||||
|
|
||||||
|
$count_buttons++;
|
||||||
|
@endphp
|
||||||
|
|
||||||
|
@if (! empty($action['permission']))
|
||||||
|
@endcan
|
||||||
|
@endif
|
||||||
|
@endforeach
|
||||||
|
|
||||||
|
@foreach ($actions as $action)
|
||||||
|
@if (! empty($action['permission']))
|
||||||
|
@can($action['permission'])
|
||||||
|
@php $more_actions[] = $action; @endphp
|
||||||
|
@endcan
|
||||||
|
@else
|
||||||
|
@php $more_actions[] = $action; @endphp
|
||||||
|
@endif
|
||||||
|
@endforeach
|
||||||
|
|
||||||
|
@if ($more_actions)
|
||||||
|
@php $divider = false; @endphp
|
||||||
|
|
||||||
|
@foreach ($more_actions as $action)
|
||||||
|
@php
|
||||||
|
$type = ! empty($action['type']) ? $action['type'] : 'link';
|
||||||
|
@endphp
|
||||||
|
|
||||||
|
@switch($type)
|
||||||
|
@case('button')
|
||||||
|
@php $divider = false; @endphp
|
||||||
|
|
||||||
|
<button type="button" class="w-full flex items-center text-purple px-2 h-9 leading-9" {!! $action['attributes'] ?? null !!}>
|
||||||
|
<div class="w-full h-full flex items-center rounded-md px-2 text-sm hover:bg-lilac-100">
|
||||||
|
<span class="material-icons-outlined text-purple text-lg mr-2 pointer-events-none">
|
||||||
|
{{ $action['icon'] }}
|
||||||
|
</span>
|
||||||
|
|
||||||
|
{{ $action['title'] }}
|
||||||
|
</div>
|
||||||
|
</button>
|
||||||
|
@break
|
||||||
|
|
||||||
|
@case('delete')
|
||||||
|
@php $divider = false; @endphp
|
||||||
|
|
||||||
|
@php
|
||||||
|
$title = $action['title'] ?? null;
|
||||||
|
$modelId = ! empty($action['model-id']) ? $action['model-id'] : 'id';
|
||||||
|
$modelName = ! empty($action['model-name']) ? $action['model-name'] : 'name';
|
||||||
|
@endphp
|
||||||
|
<x-delete-link :model="$action['model']" :route="$action['route']" :text="$title" :model-id="$modelId" :model-name="$modelName" />
|
||||||
|
@break
|
||||||
|
|
||||||
|
@case('divider')
|
||||||
|
@if (! $divider)
|
||||||
|
@php $divider = true; @endphp
|
||||||
|
<div class="py-2 px-2">
|
||||||
|
<div class="w-full border-t border-gray-200"></div>
|
||||||
|
</div>
|
||||||
|
@endif
|
||||||
|
@break
|
||||||
|
|
||||||
|
@default
|
||||||
|
@php $divider = false; @endphp
|
||||||
|
|
||||||
|
<a href="{{ $action['url'] }}" class="w-full flex items-center text-purple px-2 h-9 leading-9" {!! $action['attributes'] ?? null !!}>
|
||||||
|
<div class="w-full h-full flex items-center rounded-md px-2 text-sm hover:bg-lilac-100">
|
||||||
|
<span class="material-icons-outlined text-purple text-lg mr-2 pointer-events-none">
|
||||||
|
{{ $action['icon'] }}
|
||||||
|
</span>
|
||||||
|
|
||||||
|
{{ $action['title'] }}
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
@endswitch
|
||||||
|
@endforeach
|
||||||
|
@endif
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
@ -3,132 +3,136 @@
|
|||||||
$more_actions = [];
|
$more_actions = [];
|
||||||
@endphp
|
@endphp
|
||||||
|
|
||||||
<div class="absolute ltr:right-12 rtl:left-12 -top-4 hidden items-center group-hover:flex">
|
@mobile
|
||||||
@foreach ($actions as $action)
|
<x-table.actions-mobile :actions="$actions" :model="$model" />
|
||||||
@if (! empty($action['permission']))
|
@else
|
||||||
@can($action['permission'])
|
<div class="absolute ltr:right-12 rtl:left-12 -top-4 hidden items-center group-hover:flex">
|
||||||
@endif
|
@foreach ($actions as $action)
|
||||||
|
@if (! empty($action['permission']))
|
||||||
|
@can($action['permission'])
|
||||||
|
@endif
|
||||||
|
|
||||||
@if ($count_buttons > 3 && $loop->count > 4)
|
@if ($count_buttons > 3 && $loop->count > 4)
|
||||||
@break
|
|
||||||
@endif
|
|
||||||
|
|
||||||
@php
|
|
||||||
$type = ! empty($action['type']) ? $action['type'] : 'link';
|
|
||||||
@endphp
|
|
||||||
|
|
||||||
@switch($type)
|
|
||||||
@case('button')
|
|
||||||
<button type="button" class="relative bg-white hover:bg-gray-100 border py-0.5 px-1 cursor-pointer index-actions group/tooltip" {!! $action['attributes'] ?? null !!}>
|
|
||||||
<span class="material-icons-outlined text-purple text-lg pointer-events-none">
|
|
||||||
{{ $action['icon'] }}
|
|
||||||
</span>
|
|
||||||
|
|
||||||
<div class="inline-block absolute invisible z-20 py-1 px-2 text-sm font-medium text-gray-900 bg-white rounded-lg border border-gray-200 shadow-sm whitespace-nowrap opacity-0 -top-10 -left-2 group-hover/tooltip:opacity-100 group-hover/tooltip:visible" data-tooltip-placement="top">
|
|
||||||
<span>{{ $action['title'] }}</span>
|
|
||||||
<div class="absolute w-2 h-2 -bottom-1 before:content-[' '] before:absolute before:w-2 before:h-2 before:bg-white before:border-gray-200 before:transform before:rotate-45 before:border before:border-t-0 before:border-l-0" data-popper-arrow></div>
|
|
||||||
</div>
|
|
||||||
</button>
|
|
||||||
@break
|
@break
|
||||||
|
@endif
|
||||||
|
|
||||||
@case('delete')
|
@php
|
||||||
@php
|
$type = ! empty($action['type']) ? $action['type'] : 'link';
|
||||||
$title = $action['title'] ?? null;
|
@endphp
|
||||||
$modelId = ! empty($action['model-id']) ? $action['model-id'] : 'id';
|
|
||||||
$modelName = ! empty($action['model-name']) ? $action['model-name'] : 'name';
|
|
||||||
@endphp
|
|
||||||
|
|
||||||
<x-delete-button :model="$action['model']" :route="$action['route']" :text="$title" :model-id="$modelId" :model-name="$modelName" />
|
@switch($type)
|
||||||
@break
|
@case('button')
|
||||||
|
<button type="button" class="relative bg-white hover:bg-gray-100 border py-0.5 px-1 cursor-pointer index-actions group/tooltip" {!! $action['attributes'] ?? null !!}>
|
||||||
|
<span class="material-icons-outlined text-purple text-lg pointer-events-none">
|
||||||
|
{{ $action['icon'] }}
|
||||||
|
</span>
|
||||||
|
|
||||||
@default
|
<div class="inline-block absolute invisible z-20 py-1 px-2 text-sm font-medium text-gray-900 bg-white rounded-lg border border-gray-200 shadow-sm whitespace-nowrap opacity-0 -top-10 -left-2 group-hover/tooltip:opacity-100 group-hover/tooltip:visible" data-tooltip-placement="top">
|
||||||
<a href="{{ $action['url'] }}" class="relative bg-white hover:bg-gray-100 border py-0.5 px-1 cursor-pointer index-actions group/tooltip" {!! $action['attributes'] ?? null !!}>
|
<span>{{ $action['title'] }}</span>
|
||||||
<span class="material-icons-outlined text-purple text-lg pointer-events-none">
|
<div class="absolute w-2 h-2 -bottom-1 before:content-[' '] before:absolute before:w-2 before:h-2 before:bg-white before:border-gray-200 before:transform before:rotate-45 before:border before:border-t-0 before:border-l-0" data-popper-arrow></div>
|
||||||
{{ $action['icon'] }}
|
</div>
|
||||||
</span>
|
</button>
|
||||||
|
@break
|
||||||
|
|
||||||
<div class="inline-block absolute invisible z-20 py-1 px-2 text-sm font-medium text-gray-900 bg-white rounded-lg border border-gray-200 shadow-sm whitespace-nowrap opacity-0 -top-10 -left-2 group-hover/tooltip:opacity-100 group-hover/tooltip:visible" data-tooltip-placement="top">
|
@case('delete')
|
||||||
<span>{{ $action['title'] }}</span>
|
|
||||||
<div class="absolute w-2 h-2 -bottom-1 before:content-[' '] before:absolute before:w-2 before:h-2 before:bg-white before:border-gray-200 before:transform before:rotate-45 before:border before:border-t-0 before:border-l-0" data-popper-arrow></div>
|
|
||||||
</div>
|
|
||||||
</a>
|
|
||||||
@endswitch
|
|
||||||
|
|
||||||
@php
|
|
||||||
array_shift($actions);
|
|
||||||
|
|
||||||
$count_buttons++;
|
|
||||||
@endphp
|
|
||||||
|
|
||||||
@if (! empty($action['permission']))
|
|
||||||
@endcan
|
|
||||||
@endif
|
|
||||||
@endforeach
|
|
||||||
|
|
||||||
@foreach ($actions as $action)
|
|
||||||
@if (! empty($action['permission']))
|
|
||||||
@can($action['permission'])
|
|
||||||
@php $more_actions[] = $action; @endphp
|
|
||||||
@endcan
|
|
||||||
@else
|
|
||||||
@php $more_actions[] = $action; @endphp
|
|
||||||
@endif
|
|
||||||
@endforeach
|
|
||||||
|
|
||||||
@if ($more_actions)
|
|
||||||
@php $divider = false; @endphp
|
|
||||||
|
|
||||||
<div class="relative bg-white hover:bg-gray-100 border py-0.5 px-1 cursor-pointer index-actions">
|
|
||||||
<button type="button" data-dropdown-toggle="dropdown-actions-{{ $loop->index }}" data-dropdown-placement="left" class="material-icons-outlined text-purple text-lg">more_horiz</button>
|
|
||||||
|
|
||||||
<div id="dropdown-actions-{{ $loop->index }}" data-dropdown-actions class="absolute py-2 bg-white rounded-md border border-gray-200 shadow-xl z-20 hidden !mt-[50px]" style="left:auto; min-width:10rem;">
|
|
||||||
@foreach ($more_actions as $action)
|
|
||||||
@php
|
@php
|
||||||
$type = ! empty($action['type']) ? $action['type'] : 'link';
|
$title = $action['title'] ?? null;
|
||||||
|
$modelId = ! empty($action['model-id']) ? $action['model-id'] : 'id';
|
||||||
|
$modelName = ! empty($action['model-name']) ? $action['model-name'] : 'name';
|
||||||
@endphp
|
@endphp
|
||||||
|
|
||||||
@switch($type)
|
<x-delete-button :model="$action['model']" :route="$action['route']" :text="$title" :model-id="$modelId" :model-name="$modelName" />
|
||||||
@case('button')
|
@break
|
||||||
@php $divider = false; @endphp
|
|
||||||
|
|
||||||
<div class="w-full flex items-center text-purple px-2 h-9 leading-9 whitespace-nowrap" {!! $action['attributes'] ?? null !!}>
|
@default
|
||||||
<button type="button" class="w-full h-full flex items-center rounded-md px-2 text-sm hover:bg-lilac-100">
|
<a href="{{ $action['url'] }}" class="relative bg-white hover:bg-gray-100 border py-0.5 px-1 cursor-pointer index-actions group/tooltip" {!! $action['attributes'] ?? null !!}>
|
||||||
{{ $action['title'] }}
|
<span class="material-icons-outlined text-purple text-lg pointer-events-none">
|
||||||
</button>
|
{{ $action['icon'] }}
|
||||||
</div>
|
</span>
|
||||||
@break
|
|
||||||
|
|
||||||
@case('delete')
|
<div class="inline-block absolute invisible z-20 py-1 px-2 text-sm font-medium text-gray-900 bg-white rounded-lg border border-gray-200 shadow-sm whitespace-nowrap opacity-0 -top-10 -left-2 group-hover/tooltip:opacity-100 group-hover/tooltip:visible" data-tooltip-placement="top">
|
||||||
@php $divider = false; @endphp
|
<span>{{ $action['title'] }}</span>
|
||||||
|
<div class="absolute w-2 h-2 -bottom-1 before:content-[' '] before:absolute before:w-2 before:h-2 before:bg-white before:border-gray-200 before:transform before:rotate-45 before:border before:border-t-0 before:border-l-0" data-popper-arrow></div>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
@endswitch
|
||||||
|
|
||||||
@php
|
@php
|
||||||
$title = $action['title'] ?? null;
|
array_shift($actions);
|
||||||
$modelId = ! empty($action['model-id']) ? $action['model-id'] : 'id';
|
|
||||||
$modelName = ! empty($action['model-name']) ? $action['model-name'] : 'name';
|
|
||||||
@endphp
|
|
||||||
<x-delete-link :model="$action['model']" :route="$action['route']" :text="$title" :model-id="$modelId" :model-name="$modelName" />
|
|
||||||
@break
|
|
||||||
|
|
||||||
@case('divider')
|
$count_buttons++;
|
||||||
@if (! $divider)
|
@endphp
|
||||||
@php $divider = true; @endphp
|
|
||||||
<div class="py-2 px-2">
|
@if (! empty($action['permission']))
|
||||||
<div class="w-full border-t border-gray-200"></div>
|
@endcan
|
||||||
|
@endif
|
||||||
|
@endforeach
|
||||||
|
|
||||||
|
@foreach ($actions as $action)
|
||||||
|
@if (! empty($action['permission']))
|
||||||
|
@can($action['permission'])
|
||||||
|
@php $more_actions[] = $action; @endphp
|
||||||
|
@endcan
|
||||||
|
@else
|
||||||
|
@php $more_actions[] = $action; @endphp
|
||||||
|
@endif
|
||||||
|
@endforeach
|
||||||
|
|
||||||
|
@if ($more_actions)
|
||||||
|
@php $divider = false; @endphp
|
||||||
|
|
||||||
|
<div class="relative bg-white hover:bg-gray-100 border py-0.5 px-1 cursor-pointer index-actions">
|
||||||
|
<button type="button" data-dropdown-toggle="dropdown-actions-{{ $loop->index }}" data-dropdown-placement="left" class="material-icons-outlined text-purple text-lg">more_horiz</button>
|
||||||
|
|
||||||
|
<div id="dropdown-actions-{{ $loop->index }}" data-dropdown-actions class="absolute py-2 bg-white rounded-md border border-gray-200 shadow-xl z-20 hidden !mt-[50px]" style="left:auto; min-width:10rem;">
|
||||||
|
@foreach ($more_actions as $action)
|
||||||
|
@php
|
||||||
|
$type = ! empty($action['type']) ? $action['type'] : 'link';
|
||||||
|
@endphp
|
||||||
|
|
||||||
|
@switch($type)
|
||||||
|
@case('button')
|
||||||
|
@php $divider = false; @endphp
|
||||||
|
|
||||||
|
<div class="w-full flex items-center text-purple px-2 h-9 leading-9 whitespace-nowrap" {!! $action['attributes'] ?? null !!}>
|
||||||
|
<button type="button" class="w-full h-full flex items-center rounded-md px-2 text-sm hover:bg-lilac-100">
|
||||||
|
{{ $action['title'] }}
|
||||||
|
</button>
|
||||||
</div>
|
</div>
|
||||||
@endif
|
@break
|
||||||
@break
|
|
||||||
|
|
||||||
@default
|
@case('delete')
|
||||||
@php $divider = false; @endphp
|
@php $divider = false; @endphp
|
||||||
|
|
||||||
<div class="w-full flex items-center text-purple px-2 h-9 leading-9 whitespace-nowrap" {!! $action['attributes'] ?? null !!}>
|
@php
|
||||||
<a href="{{ $action['url'] }}" class="w-full h-full flex items-center rounded-md px-2 text-sm hover:bg-lilac-100">
|
$title = $action['title'] ?? null;
|
||||||
{{ $action['title'] }}
|
$modelId = ! empty($action['model-id']) ? $action['model-id'] : 'id';
|
||||||
</a>
|
$modelName = ! empty($action['model-name']) ? $action['model-name'] : 'name';
|
||||||
</div>
|
@endphp
|
||||||
@endswitch
|
<x-delete-link :model="$action['model']" :route="$action['route']" :text="$title" :model-id="$modelId" :model-name="$modelName" />
|
||||||
@endforeach
|
@break
|
||||||
|
|
||||||
|
@case('divider')
|
||||||
|
@if (! $divider)
|
||||||
|
@php $divider = true; @endphp
|
||||||
|
<div class="py-2 px-2">
|
||||||
|
<div class="w-full border-t border-gray-200"></div>
|
||||||
|
</div>
|
||||||
|
@endif
|
||||||
|
@break
|
||||||
|
|
||||||
|
@default
|
||||||
|
@php $divider = false; @endphp
|
||||||
|
|
||||||
|
<div class="w-full flex items-center text-purple px-2 h-9 leading-9 whitespace-nowrap" {!! $action['attributes'] ?? null !!}>
|
||||||
|
<a href="{{ $action['url'] }}" class="w-full h-full flex items-center rounded-md px-2 text-sm hover:bg-lilac-100">
|
||||||
|
{{ $action['title'] }}
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
@endswitch
|
||||||
|
@endforeach
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
@endif
|
||||||
@endif
|
</div>
|
||||||
</div>
|
@endmobile
|
||||||
|
@ -1,8 +1,16 @@
|
|||||||
@props(['active'])
|
@props(['active'])
|
||||||
|
|
||||||
<div x-data="{ active: window.location.hash.split('#')[1] == undefined ? '{{ $active }}' : window.location.hash.split('#')[1] }">
|
@php
|
||||||
<div>
|
if (! empty($attributes['slides'])) {
|
||||||
<ul {{ ((! $attributes->has('override')) || ($attributes->has('override') && ! in_array('class', explode(',', $attributes->get('override'))))) ? $attributes->merge(['class' => 'flex items-center overflow-x-scroll lg:overflow-visible']) : $attributes }}>
|
$slides = $attributes['slides'];
|
||||||
|
} else {
|
||||||
|
$slides = null;
|
||||||
|
}
|
||||||
|
@endphp
|
||||||
|
|
||||||
|
<div data-swiper="{{ $slides }}" x-data="{ active: window.location.hash.split('#')[1] == undefined ? '{{ $active }}' : window.location.hash.split('#')[1] }">
|
||||||
|
<div data-tabs-swiper>
|
||||||
|
<ul data-tabs-swiper-wrapper {{ ((! $attributes->has('override')) || ($attributes->has('override') && ! in_array('class', explode(',', $attributes->get('override'))))) ? $attributes->merge(['class' => 'inline-flex']) : $attributes }}>
|
||||||
{!! $navs !!}
|
{!! $navs !!}
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
id="tab-{{ $id }}"
|
id="tab-{{ $id }}"
|
||||||
data-id="tab-{{ $id }}"
|
data-id="tab-{{ $id }}"
|
||||||
data-tabs="{{ $id }}"
|
data-tabs="{{ $id }}"
|
||||||
|
data-tabs-slide
|
||||||
x-bind:class="active != '{{ $id }}' ? 'text-black' : 'active-tabs text-purple border-purple transition-all after:absolute after:w-full after:h-0.5 after:left-0 after:right-0 after:bottom-0 after:bg-purple after:rounded-tl-md after:rounded-tr-md'"
|
x-bind:class="active != '{{ $id }}' ? 'text-black' : 'active-tabs text-purple border-purple transition-all after:absolute after:w-full after:h-0.5 after:left-0 after:right-0 after:bottom-0 after:bg-purple after:rounded-tl-md after:rounded-tr-md'"
|
||||||
{{ $attributes }}
|
{{ $attributes }}
|
||||||
>
|
>
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
id="tab-{{ $id }}"
|
id="tab-{{ $id }}"
|
||||||
data-id="tab-{{ $id }}"
|
data-id="tab-{{ $id }}"
|
||||||
data-tabs="{{ $id }}"
|
data-tabs="{{ $id }}"
|
||||||
|
data-tabs-slide
|
||||||
x-on:click="active = '{{ $id }}'"
|
x-on:click="active = '{{ $id }}'"
|
||||||
x-bind:class="active != '{{ $id }}' ? 'text-black' : 'active-tabs text-purple border-purple transition-all after:absolute after:w-full after:h-0.5 after:left-0 after:right-0 after:bottom-0 after:bg-purple after:rounded-tl-md after:rounded-tr-md'"
|
x-bind:class="active != '{{ $id }}' ? 'text-black' : 'active-tabs text-purple border-purple transition-all after:absolute after:w-full after:h-0.5 after:left-0 after:right-0 after:bottom-0 after:bg-purple after:rounded-tl-md after:rounded-tr-md'"
|
||||||
{{ $attributes }}
|
{{ $attributes }}
|
||||||
|
@ -4,12 +4,8 @@
|
|||||||
$slot_is_string = strval(strlen($slot));
|
$slot_is_string = strval(strlen($slot));
|
||||||
@endphp
|
@endphp
|
||||||
|
|
||||||
@if ($slot_is_string >= $textSize && ! $slot_isHtml)
|
<div>
|
||||||
<x-tooltip id="page-title" placement="bottom" message="{!! $slot !!}">
|
<div data-title-truncate>
|
||||||
<div class="truncate" style="width: 22rem;">
|
{!! $slot !!}
|
||||||
{!! $slot !!}
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</x-tooltip>
|
|
||||||
@else
|
|
||||||
{!! $slot !!}
|
|
||||||
@endif
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
<div class="p-7 shadow-2xl rounded-2xl">
|
<div class="p-3 sm:p-7 shadow-2xl rounded-2xl">
|
||||||
@switch($transactionTemplate)
|
@switch($transactionTemplate)
|
||||||
@case('classic')
|
@case('classic')
|
||||||
@break
|
@break
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="w-full lg:w-7/12">
|
<div class="w-full lg:w-7/12">
|
||||||
<div class="p-7 shadow-2xl rounded-2xl">
|
<div class="p-3 sm:p-7 shadow-2xl rounded-2xl">
|
||||||
<x-transfers.show.template :model="$transfer" />
|
<x-transfers.show.template :model="$transfer" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
<span
|
<span
|
||||||
id="{{ $favorited ? 'remove-from-favorite' : 'add-to-favorite' }}"
|
id="{{ $favorited ? 'remove-from-favorite' : 'add-to-favorite' }}"
|
||||||
@class([
|
@class([
|
||||||
'flex items-center text-purple text-2xl ltr:ml-2 rtl:mr-2 lg:mt-2 cursor-pointer',
|
'flex items-center text-purple text-2xl ltr:ml-2 rtl:mr-2 lg:mt-4 cursor-pointer',
|
||||||
'material-icons-outlined transform transition-all hover:scale-125' => ($favorited) ? false : true,
|
'material-icons-outlined transform transition-all hover:scale-125' => ($favorited) ? false : true,
|
||||||
'material-icons' => (! $favorited) ? false : true,
|
'material-icons' => (! $favorited) ? false : true,
|
||||||
])
|
])
|
||||||
|
@ -159,7 +159,7 @@
|
|||||||
|
|
||||||
<div class="my-10">
|
<div class="my-10">
|
||||||
<x-link
|
<x-link
|
||||||
href="https://akaunting.com/lp/accounting-software?utm_source=software&utm_medium=invoice_index&utm_campaign=plg"
|
href="https://akaunting.com/accounting-software?utm_source=software&utm_medium=invoice_index&utm_campaign=plg"
|
||||||
class="bg-purple text-white px-3 py-1.5 mb-3 sm:mb-0 rounded-xl text-sm font-medium leading-6 hover:bg-purple-700"
|
class="bg-purple text-white px-3 py-1.5 mb-3 sm:mb-0 rounded-xl text-sm font-medium leading-6 hover:bg-purple-700"
|
||||||
override="class"
|
override="class"
|
||||||
>
|
>
|
||||||
|
@ -28,23 +28,35 @@
|
|||||||
@php $is_active = true; @endphp
|
@php $is_active = true; @endphp
|
||||||
|
|
||||||
<x-slot name="navs">
|
<x-slot name="navs">
|
||||||
<div data-tabs-swiper class="w-full flex">
|
<div class="w-full flex {{ count($payment_methods) > 3 ? 'swiper swiper-links': 'w-full flex' }}">
|
||||||
@foreach ($payment_methods as $key => $name)
|
<div class="{{ count($payment_methods) > 3 ? 'swiper-wrapper' : 'w-full flex' }}">
|
||||||
@stack('invoice_{{ $key }}_tab_start')
|
@foreach ($payment_methods as $key => $name)
|
||||||
<div data-tabs-slide>
|
@stack('invoice_{{ $key }}_tab_start')
|
||||||
<x-tabs.nav
|
<div class="{{ count($payment_methods) > 3 ? 'swiper-slide': '' }}">
|
||||||
id="{{ $name }}"
|
<x-tabs.nav
|
||||||
@click="onChangePaymentMethodSigned('{{ $key }}')"
|
id="{{ $name }}"
|
||||||
>
|
@click="onChangePaymentMethodSigned('{{ $key }}')"
|
||||||
<div>
|
>
|
||||||
{{ $name }}
|
<div>
|
||||||
</div>
|
{{ $name }}
|
||||||
</x-tabs.nav>
|
</div>
|
||||||
</div>
|
</x-tabs.nav>
|
||||||
@stack('invoice_{{ $key }}_tab_end')
|
</div>
|
||||||
|
@stack('invoice_{{ $key }}_tab_end')
|
||||||
|
|
||||||
@php $is_active = false; @endphp
|
@php $is_active = false; @endphp
|
||||||
@endforeach
|
@endforeach
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@if (count($payment_methods) > 3)
|
||||||
|
<div class="swiper-button-next top-3 right-0">
|
||||||
|
<span class="material-icons">chevron_right</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="swiper-button-prev top-3 left-0">
|
||||||
|
<span class="material-icons">chevron_left</span>
|
||||||
|
</div>
|
||||||
|
@endif
|
||||||
</div>
|
</div>
|
||||||
</x-slot>
|
</x-slot>
|
||||||
</div>
|
</div>
|
||||||
|
@ -26,23 +26,35 @@
|
|||||||
@php $is_active = true; @endphp
|
@php $is_active = true; @endphp
|
||||||
|
|
||||||
<x-slot name="navs">
|
<x-slot name="navs">
|
||||||
<div data-tabs-swiper class="w-full flex">
|
<div class="w-full flex {{ count($payment_methods) > 3 ? 'swiper swiper-links': 'w-full flex' }}">
|
||||||
@foreach ($payment_methods as $key => $name)
|
<div class="{{ count($payment_methods) > 3 ? 'swiper-wrapper' : 'w-full flex' }}">
|
||||||
@stack('invoice_{{ $key }}_tab_start')
|
@foreach ($payment_methods as $key => $name)
|
||||||
<div data-tabs-slide>
|
@stack('invoice_{{ $key }}_tab_start')
|
||||||
<x-tabs.nav
|
<div class="{{ count($payment_methods) > 3 ? 'swiper-slide': '' }}">
|
||||||
id="{{ $name }}"
|
<x-tabs.nav
|
||||||
@click="onChangePaymentMethod('{{ $key }}')"
|
id="{{ $name }}"
|
||||||
>
|
@click="onChangePaymentMethodSigned('{{ $key }}')"
|
||||||
<div>
|
>
|
||||||
{{ $name }}
|
<div>
|
||||||
</div>
|
{{ $name }}
|
||||||
</x-tabs.nav>
|
</div>
|
||||||
</div>
|
</x-tabs.nav>
|
||||||
@stack('invoice_{{ $key }}_tab_end')
|
</div>
|
||||||
|
@stack('invoice_{{ $key }}_tab_end')
|
||||||
|
|
||||||
@php $is_active = false; @endphp
|
@php $is_active = false; @endphp
|
||||||
@endforeach
|
@endforeach
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@if (count($payment_methods) > 3)
|
||||||
|
<div class="swiper-button-next top-3 right-0">
|
||||||
|
<span class="material-icons">chevron_right</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="swiper-button-prev top-3 left-0">
|
||||||
|
<span class="material-icons">chevron_left</span>
|
||||||
|
</div>
|
||||||
|
@endif
|
||||||
</div>
|
</div>
|
||||||
</x-slot>
|
</x-slot>
|
||||||
</div>
|
</div>
|
||||||
|
@ -35,23 +35,35 @@
|
|||||||
@php $is_active = true; @endphp
|
@php $is_active = true; @endphp
|
||||||
|
|
||||||
<x-slot name="navs">
|
<x-slot name="navs">
|
||||||
<div data-tabs-swiper class="w-full flex">
|
<div class="w-full flex {{ count($payment_methods) > 3 ? 'swiper swiper-links': 'w-full flex' }}">
|
||||||
@foreach ($payment_methods as $key => $name)
|
<div class="{{ count($payment_methods) > 3 ? 'swiper-wrapper' : 'w-full flex' }}">
|
||||||
@stack('invoice_{{ $key }}_tab_start')
|
@foreach ($payment_methods as $key => $name)
|
||||||
<div data-tabs-slide>
|
@stack('invoice_{{ $key }}_tab_start')
|
||||||
<x-tabs.nav
|
<div class="{{ count($payment_methods) > 3 ? 'swiper-slide': '' }}">
|
||||||
id="{{ $name }}"
|
<x-tabs.nav
|
||||||
@click="onChangePaymentMethodSigned('{{ $key }}')"
|
id="{{ $name }}"
|
||||||
>
|
@click="onChangePaymentMethodSigned('{{ $key }}')"
|
||||||
<div>
|
>
|
||||||
{{ $name }}
|
<div>
|
||||||
</div>
|
{{ $name }}
|
||||||
</x-tabs.nav>
|
</div>
|
||||||
</div>
|
</x-tabs.nav>
|
||||||
@stack('invoice_{{ $key }}_tab_end')
|
</div>
|
||||||
|
@stack('invoice_{{ $key }}_tab_end')
|
||||||
|
|
||||||
@php $is_active = false; @endphp
|
@php $is_active = false; @endphp
|
||||||
@endforeach
|
@endforeach
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@if (count($payment_methods) > 3)
|
||||||
|
<div class="swiper-button-next top-3 right-0">
|
||||||
|
<span class="material-icons">chevron_right</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="swiper-button-prev top-3 left-0">
|
||||||
|
<span class="material-icons">chevron_left</span>
|
||||||
|
</div>
|
||||||
|
@endif
|
||||||
</div>
|
</div>
|
||||||
</x-slot>
|
</x-slot>
|
||||||
</div>
|
</div>
|
||||||
|
@ -67,7 +67,7 @@
|
|||||||
|
|
||||||
<div class="my-10">
|
<div class="my-10">
|
||||||
<x-link
|
<x-link
|
||||||
href="https://akaunting.com/lp/accounting-software?utm_source=software&utm_medium=payment_index&utm_campaign=plg"
|
href="https://akaunting.com/accounting-software?utm_source=software&utm_medium=payment_index&utm_campaign=plg"
|
||||||
class="bg-purple text-white px-3 py-1.5 mb-3 sm:mb-0 rounded-xl text-sm font-medium leading-6 hover:bg-purple-700"
|
class="bg-purple text-white px-3 py-1.5 mb-3 sm:mb-0 rounded-xl text-sm font-medium leading-6 hover:bg-purple-700"
|
||||||
override="class"
|
override="class"
|
||||||
>
|
>
|
||||||
|
@ -24,7 +24,7 @@
|
|||||||
</x-slot>
|
</x-slot>
|
||||||
|
|
||||||
<x-slot name="content">
|
<x-slot name="content">
|
||||||
<x-contacts.show.content type="vendor" :model="$vendor" />
|
<x-contacts.show.content type="vendor" :model="$vendor" hide-user />
|
||||||
</x-slot>
|
</x-slot>
|
||||||
|
|
||||||
<x-contacts.script type="vendor" />
|
<x-contacts.script type="vendor" />
|
||||||
|
@ -16,8 +16,11 @@ sm:rtl:left-4
|
|||||||
sm:w-500
|
sm:w-500
|
||||||
sm:min-h-500
|
sm:min-h-500
|
||||||
sm:max-w-4xl
|
sm:max-w-4xl
|
||||||
|
sm:space-x-4
|
||||||
|
sm:text-purple
|
||||||
md:grid-cols-2
|
md:grid-cols-2
|
||||||
lg:mt-2
|
lg:mt-2
|
||||||
|
lg:mt-4
|
||||||
lg:pl-24
|
lg:pl-24
|
||||||
lg:my-12
|
lg:my-12
|
||||||
lg:mt-4
|
lg:mt-4
|
||||||
|
Loading…
x
Reference in New Issue
Block a user