Merge branch 'akaunting:master' into master

This commit is contained in:
Burak Civan 2022-06-07 18:17:29 +03:00 committed by GitHub
commit 586db83514
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
20 changed files with 374 additions and 69 deletions

View File

@ -603,20 +603,18 @@ abstract class Form extends Component
return $textCreateNewContact; return $textCreateNewContact;
} }
/*
$default_key = Str::plural(config('type.document.' . $type . '.contact_type'), 2); $default_key = Str::plural(config('type.document.' . $type . '.contact_type'), 2);
$translation = $this->getTextFromConfig($type, 'create_new_contact', $default_key, 'trans_choice'); $translation = $this->getTextFromConfig($type, 'create_new_contact', $default_key, 'trans_choice');
if (!empty($translation)) { if (!empty($translation)) {
return [ return [
'general.form.add_new', 'general.title.new',
$translation, $translation,
]; ];
} }
*/
return 'general.add_new'; return 'general.title.add';
} }
protected function getTextEditContact($type, $textEditContact) protected function getTextEditContact($type, $textEditContact)

View File

@ -132,8 +132,8 @@ class Contact extends Component
protected function getTextCreateNewContact($type, $textCreateNewContact) protected function getTextCreateNewContact($type, $textCreateNewContact)
{ {
if (!empty($textCreateNewContact)) { if (!empty($textCreateNewContact) && is_array($textCreateNewContact)) {
return $textCreateNewContact; return trans($textCreateNewContact[0], ['type' => trans_choice($textCreateNewContact[1], 1)]);
} }
switch ($type) { switch ($type) {

View File

@ -8,6 +8,18 @@ class Country extends Form
{ {
public $type = 'country'; public $type = 'country';
/** @var string */
public $formGroupClass;
/**
* Create a new component instance.
*
* @return void
*/
public function __construct(string $formGroupClass = 'sm:col-span-3') {
$this->formGroupClass = $formGroupClass;
}
/** /**
* Get the view / contents that represent the component. * Get the view / contents that represent the component.
* *

View File

@ -46,8 +46,9 @@
</div> </div>
</ul> </ul>
<div class="flex items-center justify-center h-11 text-center text-purple font-bold border border-l-0 border-r-0 border-b-0 rounded-bl-lg rounded-br-lg hover:bg-gray-100 cursor-pointer" tabindex="0" @click="onContactCreate"> <div class="flex items-center justify-center h-11 text-sm text-center text-purple font-bold border border-l-0 border-r-0 border-b-0 rounded-bl-lg rounded-br-lg hover:bg-gray-100 cursor-pointer" tabindex="0" @click="onContactCreate">
<span class="text-sm"> {{ createNewContactText }} </span> <span class="material-icons text-lg font-bold mr-1 mt-1">add</span>
{{ createNewContactText }}
</div> </div>
</div> </div>
</div> </div>
@ -367,7 +368,7 @@ export default {
this.add_new_html = Vue.component('add-new-component', function (resolve, reject) { this.add_new_html = Vue.component('add-new-component', function (resolve, reject) {
resolve({ resolve({
template: '<div><akaunting-modal-add-new :show="add_new.show" @submit="onSubmit" @cancel="onCancel" :buttons="add_new.buttons" :title="add_new.text" :is_component=true :message="add_new.html"></akaunting-modal-add-new></div>', template: '<div><akaunting-modal-add-new modal-dialog-class="max-w-md" modal-position-top :show="add_new.show" @submit="onSubmit" @cancel="onCancel" :buttons="add_new.buttons" :title="add_new.text" :is_component=true :message="add_new.html"></akaunting-modal-add-new></div>',
components: { components: {
[Select.name]: Select, [Select.name]: Select,
@ -426,7 +427,7 @@ export default {
this.add_new_html = Vue.component('add-new-component', function (resolve, reject) { this.add_new_html = Vue.component('add-new-component', function (resolve, reject) {
resolve({ resolve({
template: '<div><akaunting-modal-add-new :show="add_new.show" @submit="onSubmit" @cancel="onCancel" :buttons="add_new.buttons" :title="add_new.text" :is_component=true :message="add_new.html"></akaunting-modal-add-new></div>', template: '<div><akaunting-modal-add-new modal-dialog-class="max-w-md" modal-position-top :show="add_new.show" @submit="onSubmit" @cancel="onCancel" :buttons="add_new.buttons" :title="add_new.text" :is_component=true :message="add_new.html"></akaunting-modal-add-new></div>',
components: { components: {
[Select.name]: Select, [Select.name]: Select,

View File

@ -1,8 +1,8 @@
<template> <template>
<SlideYUpTransition :duration="animationDuration"> <SlideYUpTransition :duration="animationDuration">
<div class="modal fade w-full h-full fixed top-0 left-0 right-0 z-50 overflow-y-auto overflow-hidden modal-add-new fade items-center justify-center" <div class="modal fade w-full h-full fixed top-0 left-0 right-0 z-50 overflow-y-auto overflow-hidden modal-add-new fade justify-center"
@click.self="closeModal" @click.self="closeModal"
:class="[{'show flex flex-wrap modal-background': show}, {'hidden': !show}]" :class="[modalPositionTop ? 'items-start' : 'items-center', {'show flex flex-wrap modal-background': show}, {'hidden': !show}]"
v-show="show" v-show="show"
tabindex="-1" tabindex="-1"
role="dialog" role="dialog"
@ -103,6 +103,11 @@ export default {
default: 800, default: 800,
description: "Modal transition duration" description: "Modal transition duration"
}, },
modalPositionTop: {
type: Boolean,
default: false,
description: "Modal Body position Class"
},
}, },
data() { data() {

View File

@ -1,8 +1,8 @@
<template> <template>
<SlideYUpTransition :duration="animationDuration"> <SlideYUpTransition :duration="animationDuration">
<div class="modal w-full h-full fixed top-0 left-0 right-0 z-50 overflow-y-auto overflow-hidden modal-add-new fade items-center justify-center" <div class="modal w-full h-full fixed top-0 left-0 right-0 z-50 overflow-y-auto overflow-hidden modal-add-new fade justify-center"
@click.self="closeModal" @click.self="closeModal"
:class="[{'show flex flex-wrap modal-background': show}, {'hidden': !show}]" :class="[modalPositionTop ? 'items-start' : 'items-center', {'show flex flex-wrap modal-background': show}, {'hidden': !show}]"
v-show="show" v-show="show"
tabindex="-1" tabindex="-1"
role="dialog" role="dialog"
@ -91,19 +91,16 @@ export default {
props: { props: {
show: Boolean, show: Boolean,
is_component: Boolean, is_component: Boolean,
title: { title: {
type: String, type: String,
default: '', default: '',
description: "Modal header title" description: "Modal header title"
}, },
message: { message: {
type: String, type: String,
default: '', default: '',
description: "Modal body message" description: "Modal body message"
}, },
buttons: { buttons: {
type: Object, type: Object,
default: function () { default: function () {
@ -120,18 +117,21 @@ export default {
}, },
description: "Modal footer button" description: "Modal footer button"
}, },
animationDuration: { animationDuration: {
type: Number, type: Number,
default: 800, default: 800,
description: "Modal transition duration" description: "Modal transition duration"
}, },
modalDialogClass: {
modalDialogClass: {
type: String, type: String,
default: '', default: '',
description: "Modal Body size Class" description: "Modal Body size Class"
}, },
modalPositionTop: {
type: Boolean,
default: false,
description: "Modal Body position Class"
},
}, },
data() { data() {

View File

@ -583,7 +583,7 @@ export default {
this.add_new_html = Vue.component('add-new-component', function (resolve, reject) { this.add_new_html = Vue.component('add-new-component', function (resolve, reject) {
resolve({ resolve({
template: '<div><akaunting-modal-add-new :show="add_new.show" @submit="onSubmit" @cancel="onCancel" :buttons="add_new.buttons" :title="add_new.text" :is_component=true :message="add_new.html"></akaunting-modal-add-new></div>', template: '<div><akaunting-modal-add-new modal-dialog-class="max-w-md" :show="add_new.show" @submit="onSubmit" @cancel="onCancel" :buttons="add_new.buttons" :title="add_new.text" :is_component=true :message="add_new.html"></akaunting-modal-add-new></div>',
components: { components: {
AkauntingModalAddNew, AkauntingModalAddNew,

View File

@ -585,7 +585,7 @@ const app = new Vue({
this.component = Vue.component('add-new-component', (resolve, reject) => { this.component = Vue.component('add-new-component', (resolve, reject) => {
resolve({ resolve({
template: '<div id="dynamic-payment-component"><akaunting-modal-add-new modal-dialog-class="max-w-md" :show="payment.modal" @submit="onSubmit" @cancel="onCancel" :buttons="payment.buttons" :title="payment.title" :is_component=true :message="payment.html"></akaunting-modal-add-new></div>', template: '<div id="dynamic-payment-component"><akaunting-modal-add-new modal-dialog-class="max-w-md" modal-position-top :show="payment.modal" @submit="onSubmit" @cancel="onCancel" :buttons="payment.buttons" :title="payment.title" :is_component=true :message="payment.html"></akaunting-modal-add-new></div>',
mixins: [ mixins: [
Global Global
@ -703,7 +703,7 @@ const app = new Vue({
this.component = Vue.component('add-new-component', (resolve, reject) => { this.component = Vue.component('add-new-component', (resolve, reject) => {
resolve({ resolve({
template: '<div id="dynamic-payment-component"><akaunting-modal-add-new modal-dialog-class="max-w-screen-lg" :show="payment.modal" @submit="onSubmit" @cancel="onCancel" :buttons="payment.buttons" :title="payment.title" :is_component=true :message="payment.html"></akaunting-modal-add-new></div>', template: '<div id="dynamic-payment-component"><akaunting-modal-add-new modal-dialog-class="max-w-md" modal-position-top :show="payment.modal" @submit="onSubmit" @cancel="onCancel" :buttons="payment.buttons" :title="payment.title" :is_component=true :message="payment.html"></akaunting-modal-add-new></div>',
mixins: [ mixins: [
Global Global

View File

@ -14,7 +14,7 @@
choose-different-contact-text="{{ is_array($textChooseDifferentContact) ? trans($textChooseDifferentContact[0], ['field' => Str::lower(trans_choice($textChooseDifferentContact[1], 1))]) : trans($textChooseDifferentContact) }}" choose-different-contact-text="{{ is_array($textChooseDifferentContact) ? trans($textChooseDifferentContact[0], ['field' => Str::lower(trans_choice($textChooseDifferentContact[1], 1))]) : trans($textChooseDifferentContact) }}"
:add-new="{{ json_encode([ :add-new="{{ json_encode([
'status' => true, 'status' => true,
'text' => trans('general.add_new'), 'text' => is_array($textCreateNewContact) ? trans($textCreateNewContact[0], ['field' => trans_choice($textCreateNewContact[1], 1)]) : trans($textCreateNewContact),
'new_text' => trans('modules.new'), 'new_text' => trans('modules.new'),
'buttons' => [ 'buttons' => [
'cancel' => [ 'cancel' => [

View File

@ -9,5 +9,5 @@
:search-char-limit="{{ $searchCharLimit }}" :search-char-limit="{{ $searchCharLimit }}"
@item="onSelectedItem($event)" @item="onSelectedItem($event)"
add-item-text="{{ trans('general.form.add_an', ['field' => trans_choice('general.items', 1)]) }}" add-item-text="{{ trans('general.form.add_an', ['field' => trans_choice('general.items', 1)]) }}"
create-new-item-text="{{ trans('general.title.create', ['type' => trans_choice('general.items', 1)]) }}" create-new-item-text="{{ trans('general.title.new', ['type' => trans_choice('general.items', 1)]) }}"
></akaunting-item-button> ></akaunting-item-button>

View File

@ -350,7 +350,7 @@
:value="tax_id" :value="tax_id"
:add-new="{{ json_encode([ :add-new="{{ json_encode([
'status' => true, 'status' => true,
'text' => trans('general.add_new'), 'text' => trans('general.title.new', ['type' => trans_choice('general.taxes', 1)]),
'path' => route('modals.taxes.create'), 'path' => route('modals.taxes.create'),
'type' => 'modal', 'type' => 'modal',
'field' => [ 'field' => [

View File

@ -5,4 +5,5 @@
:selected="setting('company.country')" :selected="setting('company.country')"
not-required not-required
model="form.country" model="form.country"
form-group-class="{{ $formGroupClass }}"
/> />

View File

@ -74,7 +74,7 @@
@if (! empty($addNew)) @if (! empty($addNew))
:add-new="{{ json_encode([ :add-new="{{ json_encode([
'status' => true, 'status' => true,
'text' => trans('general.add_new'), 'text' => trans('general.title.new', ['type' => $label ?? '']),
'path' => isset($attributes['path']) ? $attributes['path']: false, 'path' => isset($attributes['path']) ? $attributes['path']: false,
'type' => isset($attributes['type']) ? $attributes['type'] : 'modal', 'type' => isset($attributes['type']) ? $attributes['type'] : 'modal',
'field' => [ 'field' => [

View File

@ -1,10 +1,10 @@
<x-form id="form-create-currency" route="modals.currencies.store"> <x-form id="form-create-currency" route="modals.currencies.store">
<div class="grid sm:grid-cols-6 gap-x-8 gap-y-6 my-3.5"> <div class="grid sm:grid-cols-6 gap-x-8 gap-y-6 my-3.5">
<x-form.group.text name="name" label="{{ trans('general.name') }}" /> <x-form.group.text name="name" label="{{ trans('general.name') }}" form-group-class="col-span-6" />
<x-form.group.select name="code" label="{{ trans('currencies.code') }}" :options="$codes" /> <x-form.group.select name="code" label="{{ trans('currencies.code') }}" :options="$codes" form-group-class="col-span-6" />
<x-form.group.text name="rate" label="{{ trans('currencies.rate') }}" @input="onChangeRate" /> <x-form.group.text name="rate" label="{{ trans('currencies.rate') }}" @input="onChangeRate" form-group-class="col-span-6" />
<x-form.input.hidden name="enabled" value="1" /> <x-form.input.hidden name="enabled" value="1" />
<x-form.input.hidden name="symbol_first" value="1" /> <x-form.input.hidden name="symbol_first" value="1" />

View File

@ -1,18 +1,90 @@
<x-form id="form-create-customer" route="customers.store"> <x-form id="form-create-customer" route="customers.store">
<div class="grid sm:grid-cols-6 gap-x-8 gap-y-6 my-3.5"> <div x-data="{ active: 'general' }">
<x-form.group.text name="name" label="{{ trans('general.name') }}" /> <div>
<div>
<ul class="grid grid-cols-6">
<li class="relative px-8 text-sm text-black text-center pb-2 cursor-pointer transition-all border-b tabs-link col-span-2"
id="tab-general"
data-id="tab-general"
data-tabs="general"
x-on:click="active = 'general'"
x-bind:class="active != 'general' ? '' : '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'"
>
{{ trans('general.general') }}
<x-form.group.text name="email" label="{{ trans('general.email') }}" not-required /> <span class="invalid-feedback block text-xs text-red whitespace-normal" v-if="form.errors.has('name')||form.errors.has('email')||form.errors.has('phone')||form.errors.has('tax_number')||form.errors.has('currency_code')">
{{ trans('general.validation_error') }}
</span>
</li>
<x-form.group.text name="tax_number" label="{{ trans('general.tax_number') }}" not-required /> <li class="relative px-8 text-sm text-black text-center pb-2 cursor-pointer transition-all border-b tabs-link col-span-2"
id="tab-address"
data-id="tab-address"
data-tabs="address"
x-on:click="active = 'address'"
x-bind:class="active != 'address' ? '' : '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'"
>
{{ trans('general.address') }}
<x-form.group.currency without-add-new /> <span class="invalid-feedback block text-xs text-red whitespace-normal" v-if="form.errors.has('address')||form.errors.has('city')||form.errors.has('zip_code')||form.errors.has('state')||form.errors.has('country')">
{{ trans('general.validation_error') }}
</span>
</li>
<x-form.group.textarea name="address" label="{{ trans('general.address') }}" /> <li class="relative px-8 text-sm text-black text-center pb-2 cursor-pointer transition-all border-b tabs-link col-span-2"
id="tab-other"
data-id="tab-other"
data-tabs="other"
x-on:click="active = 'other'"
x-bind:class="active != 'other' ? '' : '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'"
>
{{ trans_choice('general.others', 1) }}
<x-form.group.country /> <span class="invalid-feedback block text-xs text-red whitespace-normal" v-if="form.errors.has('website')||form.errors.has('reference')">
{{ trans('general.validation_error') }}
</span>
</li>
</ul>
</div>
</div>
<x-form.input.hidden name="type" value="customer" /> <div id="tab-general" data-tabs-content="general" x-show="active === 'general'">
<x-form.input.hidden name="enabled" value="1" /> <div class="grid sm:grid-cols-6 gap-x-8 gap-y-6 my-3.5">
<x-form.group.text name="name" label="{{ trans('general.name') }}" form-group-class="col-span-6" />
<x-form.group.text name="email" label="{{ trans('general.email') }}" form-group-class="col-span-6" not-required />
<x-form.group.text name="phone" label="{{ trans('general.phone') }}" form-group-class="col-span-6" not-required />
<x-form.group.text name="tax_number" label="{{ trans('general.tax_number') }}" form-group-class="col-span-6" not-required />
<x-form.group.currency without-add-new form-group-class="col-span-6" :add-new-text="trans_choice('general.currencies', 1)" />
</div>
</div>
<div id="tab-address" data-tabs-content="address" x-show="active === 'address'">
<div class="grid sm:grid-cols-6 gap-x-8 gap-y-6 my-3.5">
<x-form.group.textarea name="address" label="{{ trans('general.address') }}" form-group-class="col-span-6" rows=2 not-required />
<x-form.group.text name="city" label="{{ trans_choice('general.cities', 1) }}" form-group-class="col-span-6" not-required />
<x-form.group.text name="zip_code" label="{{ trans('general.zip_code') }}" form-group-class="col-span-6" not-required />
<x-form.group.text name="state" label="{{ trans('general.state') }}" form-group-class="col-span-6" not-required />
<x-form.group.country form-group-class="col-span-6 el-select-tags-pl-38" />
</div>
</div>
<div id="tab-other" data-tabs-content="other" x-show="active === 'other'">
<div class="grid sm:grid-cols-6 gap-x-8 gap-y-6 my-3.5">
<x-form.group.text name="website" label="{{ trans('general.website') }}" form-group-class="col-span-6" not-required />
<x-form.group.text name="reference" label="{{ trans('general.reference') }}" form-group-class="col-span-6" not-required />
<x-form.input.hidden name="type" value="customer" />
<x-form.input.hidden name="enabled" value="1" />
</div>
</div>
</div> </div>
</x-form> </x-form>

View File

@ -1,18 +1,90 @@
<x-form id="form-edit-customer" method="PATCH" :route="['customers.update', $customer->id]" :model="$customer"> <x-form id="form-edit-customer" method="PATCH" :route="['customers.update', $customer->id]" :model="$customer">
<div class="grid sm:grid-cols-6 gap-x-8 gap-y-6 my-3.5"> <div x-data="{ active: 'general' }">
<x-form.group.text name="name" label="{{ trans('general.name') }}" /> <div>
<div>
<ul class="grid grid-cols-6">
<li class="relative px-8 text-sm text-black text-center pb-2 cursor-pointer transition-all border-b tabs-link col-span-2"
id="tab-general"
data-id="tab-general"
data-tabs="general"
x-on:click="active = 'general'"
x-bind:class="active != 'general' ? '' : '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'"
>
{{ trans('general.general') }}
<x-form.group.text name="email" label="{{ trans('general.email') }}" not-required /> <span class="invalid-feedback block text-xs text-red whitespace-normal" v-if="form.errors.has('name')||form.errors.has('email')||form.errors.has('phone')||form.errors.has('tax_number')||form.errors.has('currency_code')">
{{ trans('general.validation_error') }}
</span>
</li>
<x-form.group.text name="tax_number" label="{{ trans('general.tax_number') }}" not-required /> <li class="relative px-8 text-sm text-black text-center pb-2 cursor-pointer transition-all border-b tabs-link col-span-2"
id="tab-address"
data-id="tab-address"
data-tabs="address"
x-on:click="active = 'address'"
x-bind:class="active != 'address' ? '' : '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'"
>
{{ trans('general.address') }}
<x-form.group.currency without-add-new /> <span class="invalid-feedback block text-xs text-red whitespace-normal" v-if="form.errors.has('address')||form.errors.has('city')||form.errors.has('zip_code')||form.errors.has('state')||form.errors.has('country')">
{{ trans('general.validation_error') }}
</span>
</li>
<x-form.group.textarea name="address" label="{{ trans('general.address') }}" /> <li class="relative px-8 text-sm text-black text-center pb-2 cursor-pointer transition-all border-b tabs-link col-span-2"
id="tab-other"
data-id="tab-other"
data-tabs="other"
x-on:click="active = 'other'"
x-bind:class="active != 'other' ? '' : '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'"
>
{{ trans_choice('general.others', 1) }}
<x-form.group.country /> <span class="invalid-feedback block text-xs text-red whitespace-normal" v-if="form.errors.has('website')||form.errors.has('reference')">
{{ trans('general.validation_error') }}
</span>
</li>
</ul>
</div>
</div>
<x-form.input.hidden name="type" value="customer" /> <div id="tab-general" data-tabs-content="general" x-show="active === 'general'">
<x-form.input.hidden name="enabled" value="1" /> <div class="grid sm:grid-cols-6 gap-x-8 gap-y-6 my-3.5">
<x-form.group.text name="name" label="{{ trans('general.name') }}" form-group-class="col-span-6" />
<x-form.group.text name="email" label="{{ trans('general.email') }}" form-group-class="col-span-6" not-required />
<x-form.group.text name="phone" label="{{ trans('general.phone') }}" form-group-class="col-span-6" not-required />
<x-form.group.text name="tax_number" label="{{ trans('general.tax_number') }}" form-group-class="col-span-6" not-required />
<x-form.group.currency without-add-new form-group-class="col-span-6" />
</div>
</div>
<div id="tab-address" data-tabs-content="address" x-show="active === 'address'">
<div class="grid sm:grid-cols-6 gap-x-8 gap-y-6 my-3.5">
<x-form.group.textarea name="address" label="{{ trans('general.address') }}" form-group-class="col-span-6" not-required />
<x-form.group.text name="city" label="{{ trans_choice('general.cities', 1) }}" form-group-class="col-span-6" not-required />
<x-form.group.text name="zip_code" label="{{ trans('general.zip_code') }}" form-group-class="col-span-6" not-required />
<x-form.group.text name="state" label="{{ trans('general.state') }}" form-group-class="col-span-6" not-required />
<x-form.group.country form-group-class="col-span-6 el-select-tags-pl-38" />
</div>
</div>
<div id="tab-other" data-tabs-content="other" x-show="active === 'other'">
<div class="grid sm:grid-cols-6 gap-x-8 gap-y-6 my-3.5">
<x-form.group.text name="website" label="{{ trans('general.website') }}" form-group-class="col-span-6" not-required />
<x-form.group.text name="reference" label="{{ trans('general.reference') }}" form-group-class="col-span-6" not-required />
<x-form.input.hidden name="type" value="customer" />
<x-form.input.hidden name="enabled" value="1" />
</div>
</div>
</div> </div>
</x-form> </x-form>

View File

@ -52,7 +52,7 @@
<div id="tab-other" data-tabs-content="other" x-show="active === 'other'"> <div id="tab-other" data-tabs-content="other" x-show="active === 'other'">
<div class="grid sm:grid-cols-6 gap-x-8 gap-y-6 my-3.5"> <div class="grid sm:grid-cols-6 gap-x-8 gap-y-6 my-3.5">
<x-form.group.textarea name="description" label="{{ trans('general.description') }}" rows="3" not-required form-group-class="col-span-6" /> <x-form.group.textarea name="description" label="{{ trans('general.description') }}" rows="2" not-required form-group-class="col-span-6" />
<x-form.group.text name="number" label="{{ trans_choice('general.numbers', 1) }}" value="{{ $number }}" form-group-class="col-span-6" /> <x-form.group.text name="number" label="{{ trans_choice('general.numbers', 1) }}" value="{{ $number }}" form-group-class="col-span-6" />

View File

@ -1,9 +1,9 @@
<x-form id="form-create-tax" route="taxes.store"> <x-form id="form-create-tax" route="taxes.store">
<div class="grid sm:grid-cols-6 gap-x-8 gap-y-6 my-3.5"> <div class="grid sm:grid-cols-6 gap-x-8 gap-y-6 my-3.5">
<x-form.group.text name="name" label="{{ trans('general.name') }}" /> <x-form.group.text name="name" label="{{ trans('general.name') }}" form-group-class="col-span-6" />
<x-form.group.text name="rate" label="{{ trans('taxes.rate') }}" /> <x-form.group.text name="rate" label="{{ trans('taxes.rate') }}" form-group-class="col-span-6" />
<x-form.input.hidden name="type" value="normal" /> <x-form.input.hidden name="type" value="normal" />
<x-form.input.hidden name="enabled" value="1" /> <x-form.input.hidden name="enabled" value="1" />

View File

@ -1,18 +1,90 @@
<x-form id="form-create-vendor" route="vendors.store"> <x-form id="form-create-vendor" route="vendors.store">
<div class="grid sm:grid-cols-6 gap-x-8 gap-y-6 my-3.5"> <div x-data="{ active: 'general' }">
<x-form.group.text name="name" label="{{ trans('general.name') }}" /> <div>
<div>
<ul class="grid grid-cols-6">
<li class="relative px-8 text-sm text-black text-center pb-2 cursor-pointer transition-all border-b tabs-link col-span-2"
id="tab-general"
data-id="tab-general"
data-tabs="general"
x-on:click="active = 'general'"
x-bind:class="active != 'general' ? '' : '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'"
>
{{ trans('general.general') }}
<x-form.group.text name="email" label="{{ trans('general.email') }}" not-required /> <span class="invalid-feedback block text-xs text-red whitespace-normal" v-if="form.errors.has('name')||form.errors.has('email')||form.errors.has('phone')||form.errors.has('tax_number')||form.errors.has('currency_code')">
{{ trans('general.validation_error') }}
</span>
</li>
<x-form.group.text name="tax_number" label="{{ trans('general.tax_number') }}" not-required /> <li class="relative px-8 text-sm text-black text-center pb-2 cursor-pointer transition-all border-b tabs-link col-span-2"
id="tab-address"
data-id="tab-address"
data-tabs="address"
x-on:click="active = 'address'"
x-bind:class="active != 'address' ? '' : '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'"
>
{{ trans('general.address') }}
<x-form.group.currency without-add-new /> <span class="invalid-feedback block text-xs text-red whitespace-normal" v-if="form.errors.has('address')||form.errors.has('city')||form.errors.has('zip_code')||form.errors.has('state')||form.errors.has('country')">
{{ trans('general.validation_error') }}
</span>
</li>
<x-form.group.textarea name="address" label="{{ trans('general.address') }}" /> <li class="relative px-8 text-sm text-black text-center pb-2 cursor-pointer transition-all border-b tabs-link col-span-2"
id="tab-other"
data-id="tab-other"
data-tabs="other"
x-on:click="active = 'other'"
x-bind:class="active != 'other' ? '' : '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'"
>
{{ trans_choice('general.others', 1) }}
<x-form.group.country /> <span class="invalid-feedback block text-xs text-red whitespace-normal" v-if="form.errors.has('website')||form.errors.has('reference')">
{{ trans('general.validation_error') }}
</span>
</li>
</ul>
</div>
</div>
<x-form.input.hidden name="type" value="vendor" /> <div id="tab-general" data-tabs-content="general" x-show="active === 'general'">
<x-form.input.hidden name="enabled" value="1" /> <div class="grid sm:grid-cols-6 gap-x-8 gap-y-6 my-3.5">
<x-form.group.text name="name" label="{{ trans('general.name') }}" form-group-class="col-span-6" />
<x-form.group.text name="email" label="{{ trans('general.email') }}" form-group-class="col-span-6" not-required />
<x-form.group.text name="phone" label="{{ trans('general.phone') }}" form-group-class="col-span-6" not-required />
<x-form.group.text name="tax_number" label="{{ trans('general.tax_number') }}" form-group-class="col-span-6" not-required />
<x-form.group.currency without-add-new form-group-class="col-span-6" />
</div>
</div>
<div id="tab-address" data-tabs-content="address" x-show="active === 'address'">
<div class="grid sm:grid-cols-6 gap-x-8 gap-y-6 my-3.5">
<x-form.group.textarea name="address" label="{{ trans('general.address') }}" form-group-class="col-span-6" not-required />
<x-form.group.text name="city" label="{{ trans_choice('general.cities', 1) }}" form-group-class="col-span-6" not-required />
<x-form.group.text name="zip_code" label="{{ trans('general.zip_code') }}" form-group-class="col-span-6" not-required />
<x-form.group.text name="state" label="{{ trans('general.state') }}" form-group-class="col-span-6" not-required />
<x-form.group.country form-group-class="col-span-6 el-select-tags-pl-38" />
</div>
</div>
<div id="tab-other" data-tabs-content="other" x-show="active === 'other'">
<div class="grid sm:grid-cols-6 gap-x-8 gap-y-6 my-3.5">
<x-form.group.text name="website" label="{{ trans('general.website') }}" form-group-class="col-span-6" not-required />
<x-form.group.text name="reference" label="{{ trans('general.reference') }}" form-group-class="col-span-6" not-required />
<x-form.input.hidden name="type" value="vendor" />
<x-form.input.hidden name="enabled" value="1" />
</div>
</div>
</div> </div>
</x-form> </x-form>

View File

@ -1,18 +1,90 @@
<x-form id="form-edit-vendor" method="PATCH" :route="['vendors.update', $vendor->id]" :model="$vendor"> <x-form id="form-edit-vendor" method="PATCH" :route="['vendors.update', $vendor->id]" :model="$vendor">
<div class="grid sm:grid-cols-6 gap-x-8 gap-y-6 my-3.5"> <div x-data="{ active: 'general' }">
<x-form.group.text name="name" label="{{ trans('general.name') }}" /> <div>
<div>
<ul class="grid grid-cols-6">
<li class="relative px-8 text-sm text-black text-center pb-2 cursor-pointer transition-all border-b tabs-link col-span-2"
id="tab-general"
data-id="tab-general"
data-tabs="general"
x-on:click="active = 'general'"
x-bind:class="active != 'general' ? '' : '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'"
>
{{ trans('general.general') }}
<x-form.group.text name="email" label="{{ trans('general.email') }}" not-required /> <span class="invalid-feedback block text-xs text-red whitespace-normal" v-if="form.errors.has('name')||form.errors.has('email')||form.errors.has('phone')||form.errors.has('tax_number')||form.errors.has('currency_code')">
{{ trans('general.validation_error') }}
</span>
</li>
<x-form.group.text name="tax_number" label="{{ trans('general.tax_number') }}" not-required /> <li class="relative px-8 text-sm text-black text-center pb-2 cursor-pointer transition-all border-b tabs-link col-span-2"
id="tab-address"
data-id="tab-address"
data-tabs="address"
x-on:click="active = 'address'"
x-bind:class="active != 'address' ? '' : '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'"
>
{{ trans('general.address') }}
<x-form.group.currency without-add-new /> <span class="invalid-feedback block text-xs text-red whitespace-normal" v-if="form.errors.has('address')||form.errors.has('city')||form.errors.has('zip_code')||form.errors.has('state')||form.errors.has('country')">
{{ trans('general.validation_error') }}
</span>
</li>
<x-form.group.textarea name="address" label="{{ trans('general.address') }}" /> <li class="relative px-8 text-sm text-black text-center pb-2 cursor-pointer transition-all border-b tabs-link col-span-2"
id="tab-other"
data-id="tab-other"
data-tabs="other"
x-on:click="active = 'other'"
x-bind:class="active != 'other' ? '' : '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'"
>
{{ trans_choice('general.others', 1) }}
<x-form.group.country /> <span class="invalid-feedback block text-xs text-red whitespace-normal" v-if="form.errors.has('website')||form.errors.has('reference')">
{{ trans('general.validation_error') }}
</span>
</li>
</ul>
</div>
</div>
<x-form.input.hidden name="type" value="vendor" /> <div id="tab-general" data-tabs-content="general" x-show="active === 'general'">
<x-form.input.hidden name="enabled" value="1" /> <div class="grid sm:grid-cols-6 gap-x-8 gap-y-6 my-3.5">
<x-form.group.text name="name" label="{{ trans('general.name') }}" form-group-class="col-span-6" />
<x-form.group.text name="email" label="{{ trans('general.email') }}" form-group-class="col-span-6" not-required />
<x-form.group.text name="phone" label="{{ trans('general.phone') }}" form-group-class="col-span-6" not-required />
<x-form.group.text name="tax_number" label="{{ trans('general.tax_number') }}" form-group-class="col-span-6" not-required />
<x-form.group.currency without-add-new form-group-class="col-span-6" />
</div>
</div>
<div id="tab-address" data-tabs-content="address" x-show="active === 'address'">
<div class="grid sm:grid-cols-6 gap-x-8 gap-y-6 my-3.5">
<x-form.group.textarea name="address" label="{{ trans('general.address') }}" form-group-class="col-span-6" not-required />
<x-form.group.text name="city" label="{{ trans_choice('general.cities', 1) }}" form-group-class="col-span-6" not-required />
<x-form.group.text name="zip_code" label="{{ trans('general.zip_code') }}" form-group-class="col-span-6" not-required />
<x-form.group.text name="state" label="{{ trans('general.state') }}" form-group-class="col-span-6" not-required />
<x-form.group.country form-group-class="col-span-6 el-select-tags-pl-38" />
</div>
</div>
<div id="tab-other" data-tabs-content="other" x-show="active === 'other'">
<div class="grid sm:grid-cols-6 gap-x-8 gap-y-6 my-3.5">
<x-form.group.text name="website" label="{{ trans('general.website') }}" form-group-class="col-span-6" not-required />
<x-form.group.text name="reference" label="{{ trans('general.reference') }}" form-group-class="col-span-6" not-required />
<x-form.input.hidden name="type" value="vendor" />
<x-form.input.hidden name="enabled" value="1" />
</div>
</div>
</div> </div>
</x-form> </x-form>