ctrans() translator helper (#2621)

* Refactor  pivot table accessors

* Add select2 for client - country selector

* Fixes for client contact update

* implement ctrans() function across application

* Increase custom fields to 4 across the application

* Refactor: remove repos calling other repos, implement 4 custom values across application

* include querying the custom values in the client list

* Fix null custom value labels

* Scaffold for client - show view

* Working on Client Show
This commit is contained in:
David Bomba 2019-01-25 21:47:23 +11:00 committed by GitHub
parent 37e4b67ab9
commit cf1e65f1c0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
47 changed files with 42796 additions and 3737 deletions

View File

@ -29,6 +29,10 @@ class DefaultSettings
'client_created_at' => true,
'last_login' => true,
'balance' => true,
'custom_value1' => false,
'custom_value2' => true,
'custom_value3' => false,
'custom_value4' => false,
]
]
];

View File

@ -35,27 +35,7 @@ class ClientDatatable extends EntityDatatable
private function find(int $company_id, $userId = false)
{
/*
if(Auth::user()->account->customFieldsOption('client1_filter')) {
$query->addSelect('clients.custom_value1');
}
if(Auth::user()->account->customFieldsOption('client2_filter')) {
$query->addSelect('clients.custom_value2');
}
$this->applyFilters($query, ENTITY_CLIENT);
if(Auth::user()->account->customFieldsOption('client1_filter')) {
$query->orWhere('clients.custom_value1', 'like' , '%'.$filter.'%');
}
if(Auth::user()->account->customFieldsOption('client2_filter')) {
$query->orWhere('clients.custom_value2', 'like' , '%'.$filter.'%');
}
}
*/
return $query;
@ -109,14 +89,14 @@ class ClientDatatable extends EntityDatatable
{
return collect([
'multi_select' => [
['name' => trans('texts.active'), 'value' => 'active'],
['name' => trans('texts.archived'), 'value' => 'archived'],
['name' => trans('texts.deleted'), 'value' => 'deleted']
['name' => ctrans('texts.active'), 'value' => 'active'],
['name' => ctrans('texts.archived'), 'value' => 'archived'],
['name' => ctrans('texts.deleted'), 'value' => 'deleted']
],
'create_entity' => [
'create_permission' => auth()->user()->can('create', Client::class),
'url' => route('clients.create'),
'name' => trans('texts.new_client')
'name' => ctrans('texts.new_client')
]
]);
}
@ -130,6 +110,7 @@ class ClientDatatable extends EntityDatatable
{
$visible = auth()->user()->getColumnVisibility(Client::class);
$company = auth()->user()->company();
return collect([
'per_page' => 25,
@ -150,46 +131,74 @@ class ClientDatatable extends EntityDatatable
],
[
'name' => 'name',
'title' => trans('texts.name'),
'title' => ctrans('texts.name'),
'sortField' => 'name',
'visible' => $visible->name,
'dataClass' => 'center aligned'
],
[
'name' => 'contact',
'title' => trans('texts.contact'),
'title' => ctrans('texts.contact'),
'sortField' => 'contact',
'visible' => $visible->contact,
'dataClass' => 'center aligned'
],
[
'name' => 'email',
'title' => trans('texts.email'),
'title' => ctrans('texts.email'),
'sortField' => 'email',
'visible' => $visible->email,
'dataClass' => 'center aligned'
],
[
'name' => 'client_created_at',
'title' => trans('texts.date_created'),
'title' => ctrans('texts.date_created'),
'sortField' => 'client_created_at',
'visible' => $visible->client_created_at,
'dataClass' => 'center aligned'
],
[
'name' => 'last_login',
'title' => trans('texts.last_login'),
'title' => ctrans('texts.last_login'),
'sortField' => 'last_login',
'visible' => $visible->last_login,
'dataClass' => 'center aligned'
],
[
'name' => 'balance',
'title' => trans('texts.balance'),
'title' => ctrans('texts.balance'),
'sortField' => 'balance',
'visible' => $visible->balance,
'dataClass' => 'center aligned'
],
[
'name' => 'custom_value1',
'title' => $company->custom_client_label1 ?: '',
'sortField' => 'custom_value1',
'visible' => $visible->custom_value1,
'dataClass' => 'center aligned'
],
[
'name' => 'custom_value2',
'title' => $company->custom_client_label2 ?: '',
'sortField' => 'custom_value2',
'visible' => $visible->custom_value2,
'dataClass' => 'center aligned'
],
[
'name' => 'custom_value3',
'title' => $company->custom_client_label3 ?: '',
'sortField' => 'custom_value3',
'visible' => $visible->custom_value3,
'dataClass' => 'center aligned'
],
[
'name' => 'custom_value4',
'title' => $company->custom_client_label4 ?: '',
'sortField' => 'custom_value4',
'visible' => $visible->custom_value4,
'dataClass' => 'center aligned'
],
[
'name' => '__component:client-actions',
'title' => '',

View File

@ -17,13 +17,13 @@ trait MakesActionMenu
{
return collect([
['action' => 'view_client_client_id', 'permission' => 'view_client', 'route' => 'clients.show', 'key' => 'client_id', 'name' => trans('texts.view')],
['action' => 'edit_client_client_id', 'permission' => 'edit_client', 'route' => 'clients.edit', 'key' => 'client_id', 'name' => trans('texts.edit')],
['action' => 'create_task_client_id', 'permission' => 'create_task', 'route' => 'tasks.create', 'key' => 'client_id', 'name' => trans('texts.new_task')],
['action' => 'create_invoice_client_id', 'permission' => 'create_invoice', 'route' => 'invoices.create', 'key' => 'client_id', 'name' => trans('texts.new_invoice')],
['action' => 'enter_payment_client_id', 'permission' => 'create_payment', 'route' => 'payments.create', 'key' => 'client_id', 'name' => trans('texts.enter_payment')],
['action' => 'enter_credit_client_id', 'permission' => 'create_credit', 'route' => 'credits.create', 'key' => 'client_id', 'name' => trans('texts.enter_credit')],
['action' => 'enter_expense_client_id', 'permission' => 'create_expense', 'route' => 'expenses.create', 'key' => 'client_id', 'name' => trans('texts.enter_expense')]
['action' => 'view_client_client_id', 'permission' => 'view_client', 'route' => 'clients.show', 'key' => 'client_id', 'name' => ctrans('texts.view')],
['action' => 'edit_client_client_id', 'permission' => 'edit_client', 'route' => 'clients.edit', 'key' => 'client_id', 'name' => ctrans('texts.edit')],
['action' => 'create_task_client_id', 'permission' => 'create_task', 'route' => 'tasks.create', 'key' => 'client_id', 'name' => ctrans('texts.new_task')],
['action' => 'create_invoice_client_id', 'permission' => 'create_invoice', 'route' => 'invoices.create', 'key' => 'client_id', 'name' => ctrans('texts.new_invoice')],
['action' => 'enter_payment_client_id', 'permission' => 'create_payment', 'route' => 'payments.create', 'key' => 'client_id', 'name' => ctrans('texts.enter_payment')],
['action' => 'enter_credit_client_id', 'permission' => 'create_credit', 'route' => 'credits.create', 'key' => 'client_id', 'name' => ctrans('texts.enter_credit')],
['action' => 'enter_expense_client_id', 'permission' => 'create_expense', 'route' => 'expenses.create', 'key' => 'client_id', 'name' => ctrans('texts.enter_expense')]
]);
}

View File

@ -56,7 +56,11 @@ class ClientFilters extends QueryFilters
->orWhere('clients.id_number', 'like', '%'.$filter.'%')
->orWhere('client_contacts.first_name', 'like', '%'.$filter.'%')
->orWhere('client_contacts.last_name', 'like', '%'.$filter.'%')
->orWhere('client_contacts.email', 'like', '%'.$filter.'%');
->orWhere('client_contacts.email', 'like', '%'.$filter.'%')
->orWhere('clients.custom_value1', 'like' , '%'.$filter.'%')
->orWhere('clients.custom_value2', 'like' , '%'.$filter.'%')
->orWhere('clients.custom_value3', 'like' , '%'.$filter.'%')
->orWhere('clients.custom_value4', 'like' , '%'.$filter.'%');
});
}
@ -134,6 +138,10 @@ class ClientFilters extends QueryFilters
'clients.private_notes',
'client_contacts.first_name',
'client_contacts.last_name',
'clients.custom_value1',
'clients.custom_value2',
'clients.custom_value3',
'clients.custom_value4',
'clients.balance',
'clients.last_login',
'clients.created_at',
@ -146,16 +154,16 @@ class ClientFilters extends QueryFilters
'clients.id_number'
);
/**
* If the user does not have permissions to view all invoices
* limit the user to only the invoices they have created
*/
if (Gate::denies('view-list', Client::class)) {
$query->where('clients.user_id', '=', $user->id);
}
/**
* If the user does not have permissions to view all invoices
* limit the user to only the invoices they have created
*/
if (Gate::denies('view-list', Client::class)) {
$query->where('clients.user_id', '=', $user->id);
}
return $query;
return $query;
}
}

View File

@ -13,6 +13,7 @@ use App\Jobs\Client\UpdateClient;
use App\Jobs\Entity\ActionEntity;
use App\Models\Client;
use App\Models\ClientContact;
use App\Models\Country;
use App\Repositories\ClientRepository;
use App\Utils\Traits\MakesHash;
use App\Utils\Traits\MakesMenu;
@ -41,8 +42,7 @@ class ClientController extends Controller
public function index()
{
//dd(ctrans('texts.country_id'));
//dd(auth()->user());
;
if(request('page'))
return $this->clientDatatable->query(request(), $this->getCurrentCompanyId());
@ -75,7 +75,8 @@ class ClientController extends Controller
$data = [
'client' => $client,
'hashed_id' => ''
'hashed_id' => '',
'countries' => Country::all()
];
return view('client.create', $data);
@ -99,8 +100,9 @@ class ClientController extends Controller
'client' => $client,
'hashed_id' => $this->encodePrimarykey($client->id)
];
*/
Log::error(print_r($client,1));
*/
return response()->json($client, 200);
}
@ -114,7 +116,13 @@ class ClientController extends Controller
public function show(ShowClientRequest $request, Client $client)
{
return response()->json($client, 200);
$data = [
'client' => $client,
'company' => auth()->user()->company()
];
return view('client.show', $data);
}
/**
@ -129,7 +137,9 @@ class ClientController extends Controller
'client' => $client,
'settings' => [],
'pills' => $this->makeEntityTabMenu(Client::class),
'hashed_id' => $this->encodePrimarykey($client->id)
'hashed_id' => $this->encodePrimarykey($client->id),
'countries' => Country::all(),
'company' => auth()->user()->company()
];
return view('client.edit', $data);
@ -145,9 +155,9 @@ class ClientController extends Controller
public function update(UpdateClientRequest $request, Client $client)
{
$client = UpdateClient::dispatchNow($request, $client);
$client->load('contacts', 'primary_contact');
//$client->load('contacts', 'primary_contact');
return response()->json($client, 200);
return response()->json($client->fresh(), 200);
}

View File

@ -24,11 +24,11 @@ trait VerifiesUserEmail
Auth::loginUsingId($user->id, true);
return redirect()->route('dashboard.index')->with('message', trans('texts.security_confirmation'));
return redirect()->route('dashboard.index')->with('message', ctrans('texts.security_confirmation'));
}
return redirect()->route('login')->with('message', trans('texts.wrong_confirmation'));
return redirect()->route('login')->with('message', ctrans('texts.wrong_confirmation'));
}
}

View File

@ -37,9 +37,9 @@ class StoreClientRequest extends Request
public function messages()
{
return [
'unique' => trans('validation.unique', ['attribute' => 'email']),
'unique' => ctrans('validation.unique', ['attribute' => 'email']),
//'required' => trans('validation.required', ['attribute' => 'email']),
'contacts.*.email.required' => trans('validation.email', ['attribute' => 'email']),
'contacts.*.email.required' => ctrans('validation.email', ['attribute' => 'email']),
];
}

View File

@ -39,10 +39,10 @@ class UpdateClientRequest extends Request
public function messages()
{
return [
'unique' => trans('validation.unique', ['attribute' => 'email']),
'email' => trans('validation.email', ['attribute' => 'email']),
'name.required' =>trans('validation.required', ['attribute' => 'name']),
'required' => trans('validation.required', ['attribute' => 'email']),
'unique' => ctrans('validation.unique', ['attribute' => 'email']),
'email' => ctrans('validation.email', ['attribute' => 'email']),
'name.required' => ctrans('validation.required', ['attribute' => 'name']),
'required' => ctrans('validation.required', ['attribute' => 'email']),
];
}

View File

@ -2,27 +2,10 @@
namespace App\Http\Requests;
use App\Utils\Traits\MakesHash;
use Illuminate\Foundation\Http\FormRequest;
class Request extends FormRequest
{
use MakesHash;
public function entity($class, $encoded_primary_key)
{
return $class::findOrFail($this->decodePrimaryKey($encoded_primary_key));
}
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.

View File

@ -16,7 +16,7 @@ class UniqueUserRule implements Rule
public function message()
{
return trans('texts.email_already_register');
return ctrans('texts.email_already_register');
}
private function checkIfEmailExists($email) : bool

View File

@ -4,6 +4,7 @@ namespace App\Jobs\Client;
use App\Models\Client;
use App\Repositories\ClientContactRepository;
use App\Repositories\ClientRepository;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Http\Request;
@ -34,8 +35,10 @@ class StoreClient
*
* @return void
*/
public function handle(ClientRepository $clientRepo) : ?Client
public function handle(ClientRepository $clientRepo, ClientContactRepository $clientContactRepo) : ?Client
{
return $clientRepo->save($this->request, $this->client);
$client = $clientRepo->save($this->request, $this->client);
$contacts = $clientContactRepo->save($this->request->input('contacts'), $client);
}
}

View File

@ -7,7 +7,6 @@ use App\Models\Client;
use App\Repositories\ClientRepository;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Log;
class UpdateClient
{
@ -34,8 +33,10 @@ class UpdateClient
*
* @return void
*/
public function handle(ClientRepository $clientRepo) : ?Client
public function handle(ClientRepository $clientRepo, ClientContactRepository $clientContactRepo) : ?Client
{
return $clientRepo->save($this->request, $this->client);
$client = $clientRepo->save($this->request, $this->client);
$contacts = $clientContactRepo->save($this->request->input('contacts'), $client);
}
}

View File

@ -32,7 +32,7 @@ class VerifyUser extends Mailable implements ShouldQueue
{
return $this->from('turbo124@gmail.com') //todo
->subject(trans('texts.confirmation_subject'))
->subject(ctrans('texts.confirmation_subject'))
->markdown('email.auth.verify', ['user' => $this->user])
->text('email.auth.verify_text');
}

View File

@ -2,10 +2,11 @@
namespace App\Models;
use Laracasts\Presenter\PresentableTrait;
use Hashids\Hashids;
use App\Models\Company;
use App\Utils\Traits\MakesHash;
use Hashids\Hashids;
use Illuminate\Database\Eloquent\SoftDeletes;
use Laracasts\Presenter\PresentableTrait;
class Client extends BaseModel
{
@ -24,7 +25,8 @@ class Client extends BaseModel
'deleted_at',
'contacts',
'primary_contact',
'q'
'q',
'company'
];
protected $with = ['contacts', 'primary_contact'];
@ -38,7 +40,7 @@ class Client extends BaseModel
public function contacts()
{
return $this->hasMany(ClientContact::class);
return $this->hasMany(ClientContact::class)->orderBy('is_primary', 'desc');
}
public function primary_contact()
@ -46,4 +48,9 @@ class Client extends BaseModel
return $this->hasMany(ClientContact::class)->whereIsPrimary(true);
}
public function company()
{
return $this->belongsTo(Company::class);
}
}

View File

@ -2,7 +2,22 @@
namespace App\Models;
use App\Models\Account;
use App\Models\AccountGateway;
use App\Models\Client;
use App\Models\Country;
use App\Models\Currency;
use App\Models\Expense;
use App\Models\Industry;
use App\Models\Invoice;
use App\Models\Language;
use App\Models\Payment;
use App\Models\PaymentType;
use App\Models\Product;
use App\Models\TaxRate;
use App\Models\Timezone;
use App\Models\Traits\AccountTrait;
use App\Models\User;
use App\Utils\Traits\MakesHash;
use Illuminate\Database\Eloquent\Model;
use Laracasts\Presenter\PresentableTrait;

View File

@ -7,7 +7,7 @@ class CompanyPresenter extends EntityPresenter
public function name()
{
return $this->entity->name ?: trans('texts.untitled_account');
return $this->entity->name ?: ctrans('texts.untitled_account');
}
}

View File

@ -29,7 +29,7 @@ class User extends Authenticatable implements MustVerifyEmail
protected $presenter = 'App\Models\Presenters\UserPresenter';
protected $with = ['companies', 'user_companies'];
protected $with = ['companies'];
/**
* The attributes that are mass assignable.
*
@ -70,6 +70,16 @@ class User extends Authenticatable implements MustVerifyEmail
return $this->belongsToMany(Company::class)->withPivot('permissions', 'settings', 'is_admin', 'is_owner', 'is_locked');
}
/**
* Returns the current Company
*
* @return Collection
*/
public function company()
{
return $this->companies()->where('company_id', $this->getCurrentCompanyId())->first();
}
/**
* Returns the pivot tables for Company / User
*
@ -86,9 +96,23 @@ class User extends Authenticatable implements MustVerifyEmail
*
* @return Collection
*/
public function company()
public function user_company()
{
return $this->user_companies->where('company_id', $this->getCurrentCompanyId())->first();
return $this->user_companies()->where('company_id', $this->getCurrentCompanyId())->first();
}
/**
* Returns the currently set company id for the user
*
* @return int
*/
public function companyId() :int
{
return $this->getCurrentCompanyId();
}
/**
@ -99,7 +123,7 @@ class User extends Authenticatable implements MustVerifyEmail
public function permissions()
{
$permissions = json_decode($this->company()->permissions);
$permissions = json_decode($this->user_company()->permissions);
if (! $permissions)
return [];
@ -115,7 +139,7 @@ class User extends Authenticatable implements MustVerifyEmail
public function settings()
{
return json_decode($this->company()->settings);
return json_decode($this->user_company()->settings);
}
@ -127,7 +151,7 @@ class User extends Authenticatable implements MustVerifyEmail
public function isAdmin() : bool
{
return (bool) $this->company()->is_admin;
return (bool) $this->user_company()->is_admin;
}

View File

@ -39,8 +39,8 @@ class EntityPolicy
public function edit(User $user, $entity) : bool
{
return ($user->isAdmin() && $entity->company_id == $user->company()->company_id)
|| ($user->hasPermission('edit_' . strtolower(class_basename($entity))) && $entity->company_id == $user->company()->company_id)
return ($user->isAdmin() && $entity->company_id == $user->companyId())
|| ($user->hasPermission('edit_' . strtolower(class_basename($entity))) && $entity->company_id == $user->companyId())
|| $user->owns($entity);
}
@ -57,8 +57,8 @@ class EntityPolicy
public function view(User $user, $entity) : bool
{
return ($user->isAdmin() && $entity->company_id == $user->company()->company_id)
|| ($user->hasPermission('view_' . strtolower(class_basename($entity))) && $entity->company_id == $user->company()->company_id)
return ($user->isAdmin() && $entity->company_id == $user->companyId())
|| ($user->hasPermission('view_' . strtolower(class_basename($entity))) && $entity->company_id == $user->companyId())
|| $user->owns($entity);
}

View File

@ -37,7 +37,8 @@ class ClientContactRepository extends BaseRepository
['id' => $contact['id']],
[
'client_id' => $client->id,
'company_id' => $client->company_id
'company_id' => $client->company_id,
'user_id' => auth()->user()->id
]
);

View File

@ -28,8 +28,6 @@ class ClientRepository extends BaseRepository
$client->fill($request->input());
$client->save();
$this->clientContactRepo->save($request->input('contacts'), $client);
return $client;
}

40
composer.lock generated
View File

@ -865,16 +865,16 @@
},
{
"name": "laravel/framework",
"version": "v5.7.20",
"version": "v5.7.22",
"source": {
"type": "git",
"url": "https://github.com/laravel/framework.git",
"reference": "10cd20294b5668f90ba91996236834e71f7ff670"
"reference": "64a7749bd9e8df68addce1d01a54bcf606141f29"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/laravel/framework/zipball/10cd20294b5668f90ba91996236834e71f7ff670",
"reference": "10cd20294b5668f90ba91996236834e71f7ff670",
"url": "https://api.github.com/repos/laravel/framework/zipball/64a7749bd9e8df68addce1d01a54bcf606141f29",
"reference": "64a7749bd9e8df68addce1d01a54bcf606141f29",
"shasum": ""
},
"require": {
@ -1007,7 +1007,7 @@
"framework",
"laravel"
],
"time": "2019-01-08T14:39:11+00:00"
"time": "2019-01-22T15:08:35+00:00"
},
{
"name": "laravel/nexmo-notification-channel",
@ -1592,16 +1592,16 @@
},
{
"name": "nexmo/client",
"version": "1.6.0",
"version": "1.6.1",
"source": {
"type": "git",
"url": "https://github.com/Nexmo/nexmo-php.git",
"reference": "01809cc1e17a5af275913c49bb5d444eb6cc06d4"
"reference": "3dc03ca1dab726a23b757110897740e54304fc65"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Nexmo/nexmo-php/zipball/01809cc1e17a5af275913c49bb5d444eb6cc06d4",
"reference": "01809cc1e17a5af275913c49bb5d444eb6cc06d4",
"url": "https://api.github.com/repos/Nexmo/nexmo-php/zipball/3dc03ca1dab726a23b757110897740e54304fc65",
"reference": "3dc03ca1dab726a23b757110897740e54304fc65",
"shasum": ""
},
"require": {
@ -1636,7 +1636,7 @@
}
],
"description": "PHP Client for using Nexmo's API.",
"time": "2018-12-17T10:47:50+00:00"
"time": "2019-01-02T09:06:47+00:00"
},
{
"name": "nikic/php-parser",
@ -2473,16 +2473,16 @@
},
{
"name": "spatie/laravel-html",
"version": "2.19.9",
"version": "2.20.0",
"source": {
"type": "git",
"url": "https://github.com/spatie/laravel-html.git",
"reference": "8fc81b6026eb2515069b4806e875508d8f81d747"
"reference": "85ea814d6f8077eafd749e603547b9a4b368bb56"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/spatie/laravel-html/zipball/8fc81b6026eb2515069b4806e875508d8f81d747",
"reference": "8fc81b6026eb2515069b4806e875508d8f81d747",
"url": "https://api.github.com/repos/spatie/laravel-html/zipball/85ea814d6f8077eafd749e603547b9a4b368bb56",
"reference": "85ea814d6f8077eafd749e603547b9a4b368bb56",
"shasum": ""
},
"require": {
@ -2537,7 +2537,7 @@
"html",
"spatie"
],
"time": "2019-01-09T08:05:44+00:00"
"time": "2019-01-18T08:30:17+00:00"
},
{
"name": "swiftmailer/swiftmailer",
@ -5068,16 +5068,16 @@
},
{
"name": "phpunit/phpunit",
"version": "7.5.1",
"version": "7.5.2",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
"reference": "c23d78776ad415d5506e0679723cb461d71f488f"
"reference": "7c89093bd00f7d5ddf0ab81dee04f801416b4944"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/c23d78776ad415d5506e0679723cb461d71f488f",
"reference": "c23d78776ad415d5506e0679723cb461d71f488f",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/7c89093bd00f7d5ddf0ab81dee04f801416b4944",
"reference": "7c89093bd00f7d5ddf0ab81dee04f801416b4944",
"shasum": ""
},
"require": {
@ -5148,7 +5148,7 @@
"testing",
"xunit"
],
"time": "2018-12-12T07:20:32+00:00"
"time": "2019-01-15T08:19:08+00:00"
},
{
"name": "sebastian/code-unit-reverse-lookup",

View File

@ -21,8 +21,7 @@ $factory->define(App\Models\ClientContact::class, function (Faker $faker) {
'email_verified_at' => now(),
'email' => $faker->unique()->safeEmail,
'password' => bcrypt('password'),
'remember_token' => str_random(10),
'db' => config('database.default')
'remember_token' => str_random(10)
];
});

View File

@ -162,19 +162,35 @@ class CreateUsersTable extends Migration
$table->string('custom_client_label3')->nullable();
$table->string('custom_client_label4')->nullable();
$table->string('custom_client_contact_label1')->nullable();
$table->string('custom_client_contact_label2')->nullable();
$table->string('custom_client_contact_label3')->nullable();
$table->string('custom_client_contact_label4')->nullable();
$table->string('custom_invoice_label1')->nullable();
$table->string('custom_invoice_label2')->nullable();
$table->string('custom_invoice_label3')->nullable();
$table->string('custom_invoice_label4')->nullable();
$table->string('custom_product_label1')->nullable();
$table->string('custom_product_label2')->nullable();
$table->string('custom_product_label3')->nullable();
$table->string('custom_product_label4')->nullable();
$table->string('custom_task_label1')->nullable();
$table->string('custom_task_label2')->nullable();
$table->string('custom_task_label3')->nullable();
$table->string('custom_task_label4')->nullable();
$table->string('custom_expense_label1')->nullable();
$table->string('custom_expense_label2')->nullable();
$table->string('custom_expense_label3')->nullable();
$table->string('custom_expense_label4')->nullable();
$table->string('vat_number')->nullable();
$table->string('id_number')->nullable();
$table->text('translations')->nullable();
$table->unsignedInteger('language_id')->default(1);
@ -330,6 +346,8 @@ class CreateUsersTable extends Migration
$table->string('phone')->nullable();
$table->string('custom_value1')->nullable();
$table->string('custom_value2')->nullable();
$table->string('custom_value3')->nullable();
$table->string('custom_value4')->nullable();
$table->string('email',100);
$table->timestamp('email_verified_at')->nullable();
$table->string('confirmation_code')->nullable();
@ -344,7 +362,6 @@ class CreateUsersTable extends Migration
$table->unsignedInteger('avatar_width')->nullable();
$table->unsignedInteger('avatar_height')->nullable();
$table->unsignedInteger('avatar_size')->nullable();
$table->string('db', 100);
$table->string('password');
$table->rememberToken();
$table->timestamps();

511
public/css/ninja.css vendored
View File

@ -1,7 +1,7 @@
@charset "UTF-8";
/*!
* CoreUI - Open Source Dashboard UI Kit
* @version v2.0.18
* @version v2.1.4
* @link https://coreui.io
* Copyright (c) 2018 creativeLabs Łukasz Holeczek
* Licensed under MIT (https://coreui.io/license)
@ -10347,10 +10347,6 @@ a.text-dark:hover, a.text-dark:focus {
box-shadow: 0 0 0 0.2rem rgba(170, 212, 80, 0.5);
}
button {
cursor: pointer;
}
.btn-transparent {
color: #fff;
background-color: transparent;
@ -11699,6 +11695,28 @@ canvas {
background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 11 14'%3E%3Cpath fill='%23fff' d='M9.148 2.352l-4.148 4.148 4.148 4.148q0.148 0.148 0.148 0.352t-0.148 0.352l-1.297 1.297q-0.148 0.148-0.352 0.148t-0.352-0.148l-5.797-5.797q-0.148-0.148-0.148-0.352t0.148-0.352l5.797-5.797q0.148-0.148 0.352-0.148t0.352 0.148l1.297 1.297q0.148 0.148 0.148 0.352t-0.148 0.352z'/%3E%3C/svg%3E");
}
.sidebar .nav-link.disabled {
color: #b3b3b3;
cursor: default;
background: transparent;
}
.sidebar .nav-link.disabled .nav-icon {
color: #73818f;
}
.sidebar .nav-link.disabled:hover {
color: #b3b3b3;
}
.sidebar .nav-link.disabled:hover .nav-icon {
color: #73818f;
}
.sidebar .nav-link.disabled:hover.nav-dropdown-toggle::before {
background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 11 14'%3E%3Cpath fill='%23fff' d='M9.148 2.352l-4.148 4.148 4.148 4.148q0.148 0.148 0.148 0.352t-0.148 0.352l-1.297 1.297q-0.148 0.148-0.352 0.148t-0.352-0.148l-5.797-5.797q-0.148-0.148-0.148-0.352t0.148-0.352l5.797-5.797q0.148-0.148 0.352-0.148t0.352 0.148l1.297 1.297q0.148 0.148 0.148 0.352t-0.148 0.352z'/%3E%3C/svg%3E");
}
.sidebar .nav-link.nav-link-primary {
background: #20a8d8;
}
@ -11866,6 +11884,19 @@ canvas {
border-left: 0;
}
.sidebar .nav-dropdown.open .nav-link.disabled {
color: #b3b3b3;
background: transparent;
}
.sidebar .nav-dropdown.open .nav-link.disabled:hover {
color: #b3b3b3;
}
.sidebar .nav-dropdown.open .nav-link.disabled:hover .nav-icon {
color: #73818f;
}
.sidebar .nav-dropdown.open > .nav-dropdown-toggle::before {
-webkit-transform: rotate(-90deg);
transform: rotate(-90deg);
@ -11910,6 +11941,7 @@ canvas {
position: relative;
-ms-flex: 0 0 50px;
flex: 0 0 50px;
cursor: pointer;
background-color: rgba(0, 0, 0, 0.2);
border: 0;
}
@ -12022,6 +12054,19 @@ canvas {
.sidebar-minimized .sidebar .nav-item:hover > .nav-link .nav-icon {
color: #fff;
}
.sidebar-minimized .sidebar .nav-item:hover .nav-link.disabled,
.sidebar-minimized .sidebar .nav-item:hover .nav-link :disabled {
background: #2f353a;
}
.sidebar-minimized .sidebar .nav-item:hover .nav-link.disabled .nav-icon,
.sidebar-minimized .sidebar .nav-item:hover .nav-link :disabled .nav-icon {
color: #73818f;
}
.sidebar-minimized .sidebar section :not(.nav-dropdown-items) > .nav-item:last-child::after {
display: block;
margin-bottom: 50px;
content: "";
}
.sidebar-minimized .sidebar .nav-link {
position: relative;
padding-left: 0;
@ -12069,6 +12114,43 @@ canvas {
left: 50px;
display: inline;
}
*[dir="rtl"] .sidebar-minimized .sidebar .nav {
list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7");
}
*[dir="rtl"] .sidebar-minimized .sidebar .nav .divider {
height: 0;
}
*[dir="rtl"] .sidebar-minimized .sidebar .sidebar-minimizer::before {
width: 100%;
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
*[dir="rtl"] .sidebar-minimized .sidebar .nav-link {
padding-right: 0;
}
*[dir="rtl"] .sidebar-minimized .sidebar .nav-link .nav-icon {
float: right;
}
*[dir="rtl"] .sidebar-minimized .sidebar .nav-link .badge {
right: auto;
left: 15px;
}
*[dir="rtl"] .sidebar-minimized .sidebar .nav-link:hover .badge {
display: inline;
}
*[dir="rtl"] .sidebar-minimized .sidebar .nav > .nav-dropdown > .nav-dropdown-items {
display: none;
max-height: 1000px;
background: #2f353a;
}
*[dir="rtl"] .sidebar-minimized .sidebar .nav > .nav-dropdown:hover {
background: #20a8d8;
}
*[dir="rtl"] .sidebar-minimized .sidebar .nav > .nav-dropdown:hover > .nav-dropdown-items {
position: absolute;
left: 0;
display: inline;
}
}
*[dir="rtl"] .sidebar .nav-dropdown-toggle::before {
@ -12099,41 +12181,12 @@ canvas {
}
*[dir="rtl"] .sidebar .sidebar-minimizer::before {
right: unset;
right: auto;
left: 0;
-webkit-transform: rotate(180deg);
transform: rotate(180deg);
}
*[dir="rtl"] .sidebar-minimized .sidebar .nav {
list-style-type: disc;
}
*[dir="rtl"] .sidebar-minimized .sidebar .nav-link {
padding-right: 0;
}
*[dir="rtl"] .sidebar-minimized .sidebar .nav-link .nav-icon {
float: right;
padding: 0;
margin: 0;
}
*[dir="rtl"] .sidebar-minimized .sidebar .nav-link .badge {
right: auto;
left: 15px;
}
*[dir="rtl"] .sidebar-minimized .sidebar .nav-dropdown:hover > .nav-dropdown-items {
right: 50px;
left: 0;
}
*[dir="rtl"] .sidebar-minimized .sidebar .sidebar-minimizer::before {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
*[dir="rtl"] .sidebar-toggler {
margin-right: 0 !important;
}
@ -12838,94 +12891,26 @@ html[dir="rtl"] .aside-menu {
z-index: 1017;
}
html:not([dir="rtl"]) .sidebar-show .sidebar,
html:not([dir="rtl"]) .sidebar-show .sidebar {
margin-left: 0;
}
html:not([dir="rtl"]) .sidebar-show.sidebar-fixed .main,
html:not([dir="rtl"]) .sidebar-show.sidebar-fixed .app-footer {
margin-left: 200px;
}
html:not([dir="rtl"]) .sidebar-show.sidebar-fixed.sidebar-compact .main,
html:not([dir="rtl"]) .sidebar-show.sidebar-fixed.sidebar-compact .app-footer {
margin-left: 150px;
}
html:not([dir="rtl"]) .sidebar-show.sidebar-fixed.sidebar-minimized .main,
html:not([dir="rtl"]) .sidebar-show.sidebar-fixed.sidebar-minimized .app-footer {
margin-left: 50px;
}
html:not([dir="rtl"]) .sidebar-show.breadcrumb-fixed .breadcrumb {
left: 200px;
}
html:not([dir="rtl"]) .sidebar-show.breadcrumb-fixed.sidebar-compact .breadcrumb {
left: 150px;
}
html:not([dir="rtl"]) .sidebar-show.breadcrumb-fixed.sidebar-minimized .breadcrumb {
left: 50px;
}
html:not([dir="rtl"]) .aside-menu-show .aside-menu,
html:not([dir="rtl"]) .aside-menu-show .aside-menu {
margin-right: 0;
}
html:not([dir="rtl"]) .aside-menu-show.aside-menu-fixed .main,
html:not([dir="rtl"]) .aside-menu-show.aside-menu-fixed .app-footer {
margin-right: 250px;
}
html:not([dir="rtl"]) .aside-menu-show.breadcrumb-fixed .breadcrumb {
right: 250px;
}
html[dir="rtl"] .sidebar-show .sidebar,
html[dir="rtl"] .sidebar-show .sidebar {
margin-right: 0;
}
html[dir="rtl"] .sidebar-show.sidebar-fixed .main,
html[dir="rtl"] .sidebar-show.sidebar-fixed .app-footer {
margin-right: 200px;
}
html[dir="rtl"] .sidebar-show.sidebar-fixed.sidebar-compact .main,
html[dir="rtl"] .sidebar-show.sidebar-fixed.sidebar-compact .app-footer {
margin-right: 150px;
}
html[dir="rtl"] .sidebar-show.sidebar-fixed.sidebar-minimized .main,
html[dir="rtl"] .sidebar-show.sidebar-fixed.sidebar-minimized .app-footer {
margin-right: 50px;
}
html[dir="rtl"] .sidebar-show.breadcrumb-fixed .breadcrumb {
right: 200px;
}
html[dir="rtl"] .sidebar-show.breadcrumb-fixed.sidebar-compact .breadcrumb {
right: 150px;
}
html[dir="rtl"] .sidebar-show.breadcrumb-fixed.sidebar-minimized .breadcrumb {
right: 50px;
}
html[dir="rtl"] .aside-menu-show .aside-menu,
html[dir="rtl"] .aside-menu-show .aside-menu {
margin-left: 0;
}
html[dir="rtl"] .aside-menu-show.aside-menu-fixed .main,
html[dir="rtl"] .aside-menu-show.aside-menu-fixed .app-footer {
margin-left: 250px;
}
html[dir="rtl"] .aside-menu-show.breadcrumb-fixed .breadcrumb {
left: 250px;
}
@-webkit-keyframes opacity {
0% {
opacity: 0;
@ -12965,71 +12950,99 @@ html[dir="rtl"] .aside-menu-show.breadcrumb-fixed .breadcrumb {
}
@media (min-width: 576px) {
html:not([dir="rtl"]) .sidebar-sm-show .sidebar {
html:not([dir="rtl"]) .sidebar-sm-show .sidebar,
html:not([dir="rtl"]) .sidebar-show .sidebar {
margin-left: 0;
}
html:not([dir="rtl"]) .sidebar-sm-show.sidebar-fixed .main,
html:not([dir="rtl"]) .sidebar-sm-show.sidebar-fixed .app-footer {
html:not([dir="rtl"]) .sidebar-sm-show.sidebar-fixed .app-footer,
html:not([dir="rtl"]) .sidebar-show.sidebar-fixed .main,
html:not([dir="rtl"]) .sidebar-show.sidebar-fixed .app-footer {
margin-left: 200px;
}
html:not([dir="rtl"]) .sidebar-sm-show.sidebar-fixed.sidebar-compact .main,
html:not([dir="rtl"]) .sidebar-sm-show.sidebar-fixed.sidebar-compact .app-footer {
html:not([dir="rtl"]) .sidebar-sm-show.sidebar-fixed.sidebar-compact .app-footer,
html:not([dir="rtl"]) .sidebar-show.sidebar-fixed.sidebar-compact .main,
html:not([dir="rtl"]) .sidebar-show.sidebar-fixed.sidebar-compact .app-footer {
margin-left: 150px;
}
html:not([dir="rtl"]) .sidebar-sm-show.sidebar-fixed.sidebar-minimized .main,
html:not([dir="rtl"]) .sidebar-sm-show.sidebar-fixed.sidebar-minimized .app-footer {
margin-left: 50px;
html:not([dir="rtl"]) .sidebar-sm-show.sidebar-fixed.sidebar-minimized .app-footer,
html:not([dir="rtl"]) .sidebar-show.sidebar-fixed.sidebar-minimized .main,
html:not([dir="rtl"]) .sidebar-show.sidebar-fixed.sidebar-minimized .app-footer {
margin-left: 200px;
}
html:not([dir="rtl"]) .sidebar-sm-show.breadcrumb-fixed .breadcrumb {
html:not([dir="rtl"]) .sidebar-sm-show.breadcrumb-fixed .breadcrumb,
html:not([dir="rtl"]) .sidebar-show.breadcrumb-fixed .breadcrumb {
left: 200px;
}
html:not([dir="rtl"]) .sidebar-sm-show.breadcrumb-fixed.sidebar-compact .breadcrumb {
html:not([dir="rtl"]) .sidebar-sm-show.breadcrumb-fixed.sidebar-compact .breadcrumb,
html:not([dir="rtl"]) .sidebar-show.breadcrumb-fixed.sidebar-compact .breadcrumb {
left: 150px;
}
html:not([dir="rtl"]) .sidebar-sm-show.breadcrumb-fixed.sidebar-minimized .breadcrumb {
html:not([dir="rtl"]) .sidebar-sm-show.breadcrumb-fixed.sidebar-minimized .breadcrumb,
html:not([dir="rtl"]) .sidebar-show.breadcrumb-fixed.sidebar-minimized .breadcrumb {
left: 50px;
}
html:not([dir="rtl"]) .aside-menu-show .aside-menu,
html:not([dir="rtl"]) .aside-menu-sm-show .aside-menu {
margin-right: 0;
}
html:not([dir="rtl"]) .aside-menu-show.aside-menu-fixed .main,
html:not([dir="rtl"]) .aside-menu-show.aside-menu-fixed .app-footer,
html:not([dir="rtl"]) .aside-menu-sm-show.aside-menu-fixed .main,
html:not([dir="rtl"]) .aside-menu-sm-show.aside-menu-fixed .app-footer {
margin-right: 250px;
}
html:not([dir="rtl"]) .aside-menu-show.breadcrumb-fixed .breadcrumb,
html:not([dir="rtl"]) .aside-menu-sm-show.breadcrumb-fixed .breadcrumb {
right: 250px;
}
html[dir="rtl"] .sidebar-sm-show .sidebar {
html[dir="rtl"] .sidebar-sm-show .sidebar,
html[dir="rtl"] .sidebar-show .sidebar {
margin-right: 0;
}
html[dir="rtl"] .sidebar-sm-show.sidebar-fixed .main,
html[dir="rtl"] .sidebar-sm-show.sidebar-fixed .app-footer {
html[dir="rtl"] .sidebar-sm-show.sidebar-fixed .app-footer,
html[dir="rtl"] .sidebar-show.sidebar-fixed .main,
html[dir="rtl"] .sidebar-show.sidebar-fixed .app-footer {
margin-right: 200px;
}
html[dir="rtl"] .sidebar-sm-show.sidebar-fixed.sidebar-compact .main,
html[dir="rtl"] .sidebar-sm-show.sidebar-fixed.sidebar-compact .app-footer {
html[dir="rtl"] .sidebar-sm-show.sidebar-fixed.sidebar-compact .app-footer,
html[dir="rtl"] .sidebar-show.sidebar-fixed.sidebar-compact .main,
html[dir="rtl"] .sidebar-show.sidebar-fixed.sidebar-compact .app-footer {
margin-right: 150px;
}
html[dir="rtl"] .sidebar-sm-show.sidebar-fixed.sidebar-minimized .main,
html[dir="rtl"] .sidebar-sm-show.sidebar-fixed.sidebar-minimized .app-footer {
margin-right: 50px;
html[dir="rtl"] .sidebar-sm-show.sidebar-fixed.sidebar-minimized .app-footer,
html[dir="rtl"] .sidebar-show.sidebar-fixed.sidebar-minimized .main,
html[dir="rtl"] .sidebar-show.sidebar-fixed.sidebar-minimized .app-footer {
margin-right: 200px;
}
html[dir="rtl"] .sidebar-sm-show.breadcrumb-fixed .breadcrumb {
html[dir="rtl"] .sidebar-sm-show.breadcrumb-fixed .breadcrumb,
html[dir="rtl"] .sidebar-show.breadcrumb-fixed .breadcrumb {
right: 200px;
}
html[dir="rtl"] .sidebar-sm-show.breadcrumb-fixed.sidebar-compact .breadcrumb {
html[dir="rtl"] .sidebar-sm-show.breadcrumb-fixed.sidebar-compact .breadcrumb,
html[dir="rtl"] .sidebar-show.breadcrumb-fixed.sidebar-compact .breadcrumb {
right: 150px;
}
html[dir="rtl"] .sidebar-sm-show.breadcrumb-fixed.sidebar-minimized .breadcrumb {
html[dir="rtl"] .sidebar-sm-show.breadcrumb-fixed.sidebar-minimized .breadcrumb,
html[dir="rtl"] .sidebar-show.breadcrumb-fixed.sidebar-minimized .breadcrumb {
right: 50px;
}
html[dir="rtl"] .aside-menu-show .aside-menu,
html[dir="rtl"] .aside-menu-sm-show .aside-menu {
margin-left: 0;
}
html[dir="rtl"] .aside-menu-show.aside-menu-fixed .main,
html[dir="rtl"] .aside-menu-show.aside-menu-fixed .app-footer,
html[dir="rtl"] .aside-menu-sm-show.aside-menu-fixed .main,
html[dir="rtl"] .aside-menu-sm-show.aside-menu-fixed .app-footer {
margin-left: 250px;
}
html[dir="rtl"] .aside-menu-show.breadcrumb-fixed .breadcrumb,
html[dir="rtl"] .aside-menu-sm-show.breadcrumb-fixed .breadcrumb {
left: 250px;
}
@ -13051,92 +13064,100 @@ html[dir="rtl"] .aside-menu-show.breadcrumb-fixed .breadcrumb {
}
}
@media (min-width: 576px) and (max-width: 575.98px) {
.sidebar-sm-show .main,
.aside-menu-sm-show .main {
position: relative;
}
.sidebar-sm-show .main::before,
.aside-menu-sm-show .main::before {
position: absolute;
top: 0;
left: 0;
z-index: 1018;
width: 100%;
height: 100%;
content: "";
background: rgba(0, 0, 0, 0.7);
-webkit-animation: opacity 0.25s;
animation: opacity 0.25s;
}
}
@media (min-width: 768px) {
html:not([dir="rtl"]) .sidebar-md-show .sidebar {
html:not([dir="rtl"]) .sidebar-md-show .sidebar,
html:not([dir="rtl"]) .sidebar-show .sidebar {
margin-left: 0;
}
html:not([dir="rtl"]) .sidebar-md-show.sidebar-fixed .main,
html:not([dir="rtl"]) .sidebar-md-show.sidebar-fixed .app-footer {
html:not([dir="rtl"]) .sidebar-md-show.sidebar-fixed .app-footer,
html:not([dir="rtl"]) .sidebar-show.sidebar-fixed .main,
html:not([dir="rtl"]) .sidebar-show.sidebar-fixed .app-footer {
margin-left: 200px;
}
html:not([dir="rtl"]) .sidebar-md-show.sidebar-fixed.sidebar-compact .main,
html:not([dir="rtl"]) .sidebar-md-show.sidebar-fixed.sidebar-compact .app-footer {
html:not([dir="rtl"]) .sidebar-md-show.sidebar-fixed.sidebar-compact .app-footer,
html:not([dir="rtl"]) .sidebar-show.sidebar-fixed.sidebar-compact .main,
html:not([dir="rtl"]) .sidebar-show.sidebar-fixed.sidebar-compact .app-footer {
margin-left: 150px;
}
html:not([dir="rtl"]) .sidebar-md-show.sidebar-fixed.sidebar-minimized .main,
html:not([dir="rtl"]) .sidebar-md-show.sidebar-fixed.sidebar-minimized .app-footer {
margin-left: 50px;
html:not([dir="rtl"]) .sidebar-md-show.sidebar-fixed.sidebar-minimized .app-footer,
html:not([dir="rtl"]) .sidebar-show.sidebar-fixed.sidebar-minimized .main,
html:not([dir="rtl"]) .sidebar-show.sidebar-fixed.sidebar-minimized .app-footer {
margin-left: 200px;
}
html:not([dir="rtl"]) .sidebar-md-show.breadcrumb-fixed .breadcrumb {
html:not([dir="rtl"]) .sidebar-md-show.breadcrumb-fixed .breadcrumb,
html:not([dir="rtl"]) .sidebar-show.breadcrumb-fixed .breadcrumb {
left: 200px;
}
html:not([dir="rtl"]) .sidebar-md-show.breadcrumb-fixed.sidebar-compact .breadcrumb {
html:not([dir="rtl"]) .sidebar-md-show.breadcrumb-fixed.sidebar-compact .breadcrumb,
html:not([dir="rtl"]) .sidebar-show.breadcrumb-fixed.sidebar-compact .breadcrumb {
left: 150px;
}
html:not([dir="rtl"]) .sidebar-md-show.breadcrumb-fixed.sidebar-minimized .breadcrumb {
html:not([dir="rtl"]) .sidebar-md-show.breadcrumb-fixed.sidebar-minimized .breadcrumb,
html:not([dir="rtl"]) .sidebar-show.breadcrumb-fixed.sidebar-minimized .breadcrumb {
left: 50px;
}
html:not([dir="rtl"]) .aside-menu-show .aside-menu,
html:not([dir="rtl"]) .aside-menu-md-show .aside-menu {
margin-right: 0;
}
html:not([dir="rtl"]) .aside-menu-show.aside-menu-fixed .main,
html:not([dir="rtl"]) .aside-menu-show.aside-menu-fixed .app-footer,
html:not([dir="rtl"]) .aside-menu-md-show.aside-menu-fixed .main,
html:not([dir="rtl"]) .aside-menu-md-show.aside-menu-fixed .app-footer {
margin-right: 250px;
}
html:not([dir="rtl"]) .aside-menu-show.breadcrumb-fixed .breadcrumb,
html:not([dir="rtl"]) .aside-menu-md-show.breadcrumb-fixed .breadcrumb {
right: 250px;
}
html[dir="rtl"] .sidebar-md-show .sidebar {
html[dir="rtl"] .sidebar-md-show .sidebar,
html[dir="rtl"] .sidebar-show .sidebar {
margin-right: 0;
}
html[dir="rtl"] .sidebar-md-show.sidebar-fixed .main,
html[dir="rtl"] .sidebar-md-show.sidebar-fixed .app-footer {
html[dir="rtl"] .sidebar-md-show.sidebar-fixed .app-footer,
html[dir="rtl"] .sidebar-show.sidebar-fixed .main,
html[dir="rtl"] .sidebar-show.sidebar-fixed .app-footer {
margin-right: 200px;
}
html[dir="rtl"] .sidebar-md-show.sidebar-fixed.sidebar-compact .main,
html[dir="rtl"] .sidebar-md-show.sidebar-fixed.sidebar-compact .app-footer {
html[dir="rtl"] .sidebar-md-show.sidebar-fixed.sidebar-compact .app-footer,
html[dir="rtl"] .sidebar-show.sidebar-fixed.sidebar-compact .main,
html[dir="rtl"] .sidebar-show.sidebar-fixed.sidebar-compact .app-footer {
margin-right: 150px;
}
html[dir="rtl"] .sidebar-md-show.sidebar-fixed.sidebar-minimized .main,
html[dir="rtl"] .sidebar-md-show.sidebar-fixed.sidebar-minimized .app-footer {
margin-right: 50px;
html[dir="rtl"] .sidebar-md-show.sidebar-fixed.sidebar-minimized .app-footer,
html[dir="rtl"] .sidebar-show.sidebar-fixed.sidebar-minimized .main,
html[dir="rtl"] .sidebar-show.sidebar-fixed.sidebar-minimized .app-footer {
margin-right: 200px;
}
html[dir="rtl"] .sidebar-md-show.breadcrumb-fixed .breadcrumb {
html[dir="rtl"] .sidebar-md-show.breadcrumb-fixed .breadcrumb,
html[dir="rtl"] .sidebar-show.breadcrumb-fixed .breadcrumb {
right: 200px;
}
html[dir="rtl"] .sidebar-md-show.breadcrumb-fixed.sidebar-compact .breadcrumb {
html[dir="rtl"] .sidebar-md-show.breadcrumb-fixed.sidebar-compact .breadcrumb,
html[dir="rtl"] .sidebar-show.breadcrumb-fixed.sidebar-compact .breadcrumb {
right: 150px;
}
html[dir="rtl"] .sidebar-md-show.breadcrumb-fixed.sidebar-minimized .breadcrumb {
html[dir="rtl"] .sidebar-md-show.breadcrumb-fixed.sidebar-minimized .breadcrumb,
html[dir="rtl"] .sidebar-show.breadcrumb-fixed.sidebar-minimized .breadcrumb {
right: 50px;
}
html[dir="rtl"] .aside-menu-show .aside-menu,
html[dir="rtl"] .aside-menu-md-show .aside-menu {
margin-left: 0;
}
html[dir="rtl"] .aside-menu-show.aside-menu-fixed .main,
html[dir="rtl"] .aside-menu-show.aside-menu-fixed .app-footer,
html[dir="rtl"] .aside-menu-md-show.aside-menu-fixed .main,
html[dir="rtl"] .aside-menu-md-show.aside-menu-fixed .app-footer {
margin-left: 250px;
}
html[dir="rtl"] .aside-menu-show.breadcrumb-fixed .breadcrumb,
html[dir="rtl"] .aside-menu-md-show.breadcrumb-fixed .breadcrumb {
left: 250px;
}
@ -13158,92 +13179,100 @@ html[dir="rtl"] .aside-menu-show.breadcrumb-fixed .breadcrumb {
}
}
@media (min-width: 768px) and (max-width: 575.98px) {
.sidebar-md-show .main,
.aside-menu-md-show .main {
position: relative;
}
.sidebar-md-show .main::before,
.aside-menu-md-show .main::before {
position: absolute;
top: 0;
left: 0;
z-index: 1018;
width: 100%;
height: 100%;
content: "";
background: rgba(0, 0, 0, 0.7);
-webkit-animation: opacity 0.25s;
animation: opacity 0.25s;
}
}
@media (min-width: 992px) {
html:not([dir="rtl"]) .sidebar-lg-show .sidebar {
html:not([dir="rtl"]) .sidebar-lg-show .sidebar,
html:not([dir="rtl"]) .sidebar-show .sidebar {
margin-left: 0;
}
html:not([dir="rtl"]) .sidebar-lg-show.sidebar-fixed .main,
html:not([dir="rtl"]) .sidebar-lg-show.sidebar-fixed .app-footer {
html:not([dir="rtl"]) .sidebar-lg-show.sidebar-fixed .app-footer,
html:not([dir="rtl"]) .sidebar-show.sidebar-fixed .main,
html:not([dir="rtl"]) .sidebar-show.sidebar-fixed .app-footer {
margin-left: 200px;
}
html:not([dir="rtl"]) .sidebar-lg-show.sidebar-fixed.sidebar-compact .main,
html:not([dir="rtl"]) .sidebar-lg-show.sidebar-fixed.sidebar-compact .app-footer {
html:not([dir="rtl"]) .sidebar-lg-show.sidebar-fixed.sidebar-compact .app-footer,
html:not([dir="rtl"]) .sidebar-show.sidebar-fixed.sidebar-compact .main,
html:not([dir="rtl"]) .sidebar-show.sidebar-fixed.sidebar-compact .app-footer {
margin-left: 150px;
}
html:not([dir="rtl"]) .sidebar-lg-show.sidebar-fixed.sidebar-minimized .main,
html:not([dir="rtl"]) .sidebar-lg-show.sidebar-fixed.sidebar-minimized .app-footer {
html:not([dir="rtl"]) .sidebar-lg-show.sidebar-fixed.sidebar-minimized .app-footer,
html:not([dir="rtl"]) .sidebar-show.sidebar-fixed.sidebar-minimized .main,
html:not([dir="rtl"]) .sidebar-show.sidebar-fixed.sidebar-minimized .app-footer {
margin-left: 50px;
}
html:not([dir="rtl"]) .sidebar-lg-show.breadcrumb-fixed .breadcrumb {
html:not([dir="rtl"]) .sidebar-lg-show.breadcrumb-fixed .breadcrumb,
html:not([dir="rtl"]) .sidebar-show.breadcrumb-fixed .breadcrumb {
left: 200px;
}
html:not([dir="rtl"]) .sidebar-lg-show.breadcrumb-fixed.sidebar-compact .breadcrumb {
html:not([dir="rtl"]) .sidebar-lg-show.breadcrumb-fixed.sidebar-compact .breadcrumb,
html:not([dir="rtl"]) .sidebar-show.breadcrumb-fixed.sidebar-compact .breadcrumb {
left: 150px;
}
html:not([dir="rtl"]) .sidebar-lg-show.breadcrumb-fixed.sidebar-minimized .breadcrumb {
html:not([dir="rtl"]) .sidebar-lg-show.breadcrumb-fixed.sidebar-minimized .breadcrumb,
html:not([dir="rtl"]) .sidebar-show.breadcrumb-fixed.sidebar-minimized .breadcrumb {
left: 50px;
}
html:not([dir="rtl"]) .aside-menu-show .aside-menu,
html:not([dir="rtl"]) .aside-menu-lg-show .aside-menu {
margin-right: 0;
}
html:not([dir="rtl"]) .aside-menu-show.aside-menu-fixed .main,
html:not([dir="rtl"]) .aside-menu-show.aside-menu-fixed .app-footer,
html:not([dir="rtl"]) .aside-menu-lg-show.aside-menu-fixed .main,
html:not([dir="rtl"]) .aside-menu-lg-show.aside-menu-fixed .app-footer {
margin-right: 250px;
}
html:not([dir="rtl"]) .aside-menu-show.breadcrumb-fixed .breadcrumb,
html:not([dir="rtl"]) .aside-menu-lg-show.breadcrumb-fixed .breadcrumb {
right: 250px;
}
html[dir="rtl"] .sidebar-lg-show .sidebar {
html[dir="rtl"] .sidebar-lg-show .sidebar,
html[dir="rtl"] .sidebar-show .sidebar {
margin-right: 0;
}
html[dir="rtl"] .sidebar-lg-show.sidebar-fixed .main,
html[dir="rtl"] .sidebar-lg-show.sidebar-fixed .app-footer {
html[dir="rtl"] .sidebar-lg-show.sidebar-fixed .app-footer,
html[dir="rtl"] .sidebar-show.sidebar-fixed .main,
html[dir="rtl"] .sidebar-show.sidebar-fixed .app-footer {
margin-right: 200px;
}
html[dir="rtl"] .sidebar-lg-show.sidebar-fixed.sidebar-compact .main,
html[dir="rtl"] .sidebar-lg-show.sidebar-fixed.sidebar-compact .app-footer {
html[dir="rtl"] .sidebar-lg-show.sidebar-fixed.sidebar-compact .app-footer,
html[dir="rtl"] .sidebar-show.sidebar-fixed.sidebar-compact .main,
html[dir="rtl"] .sidebar-show.sidebar-fixed.sidebar-compact .app-footer {
margin-right: 150px;
}
html[dir="rtl"] .sidebar-lg-show.sidebar-fixed.sidebar-minimized .main,
html[dir="rtl"] .sidebar-lg-show.sidebar-fixed.sidebar-minimized .app-footer {
html[dir="rtl"] .sidebar-lg-show.sidebar-fixed.sidebar-minimized .app-footer,
html[dir="rtl"] .sidebar-show.sidebar-fixed.sidebar-minimized .main,
html[dir="rtl"] .sidebar-show.sidebar-fixed.sidebar-minimized .app-footer {
margin-right: 50px;
}
html[dir="rtl"] .sidebar-lg-show.breadcrumb-fixed .breadcrumb {
html[dir="rtl"] .sidebar-lg-show.breadcrumb-fixed .breadcrumb,
html[dir="rtl"] .sidebar-show.breadcrumb-fixed .breadcrumb {
right: 200px;
}
html[dir="rtl"] .sidebar-lg-show.breadcrumb-fixed.sidebar-compact .breadcrumb {
html[dir="rtl"] .sidebar-lg-show.breadcrumb-fixed.sidebar-compact .breadcrumb,
html[dir="rtl"] .sidebar-show.breadcrumb-fixed.sidebar-compact .breadcrumb {
right: 150px;
}
html[dir="rtl"] .sidebar-lg-show.breadcrumb-fixed.sidebar-minimized .breadcrumb {
html[dir="rtl"] .sidebar-lg-show.breadcrumb-fixed.sidebar-minimized .breadcrumb,
html[dir="rtl"] .sidebar-show.breadcrumb-fixed.sidebar-minimized .breadcrumb {
right: 50px;
}
html[dir="rtl"] .aside-menu-show .aside-menu,
html[dir="rtl"] .aside-menu-lg-show .aside-menu {
margin-left: 0;
}
html[dir="rtl"] .aside-menu-show.aside-menu-fixed .main,
html[dir="rtl"] .aside-menu-show.aside-menu-fixed .app-footer,
html[dir="rtl"] .aside-menu-lg-show.aside-menu-fixed .main,
html[dir="rtl"] .aside-menu-lg-show.aside-menu-fixed .app-footer {
margin-left: 250px;
}
html[dir="rtl"] .aside-menu-show.breadcrumb-fixed .breadcrumb,
html[dir="rtl"] .aside-menu-lg-show.breadcrumb-fixed .breadcrumb {
left: 250px;
}
@ -13265,92 +13294,100 @@ html[dir="rtl"] .aside-menu-show.breadcrumb-fixed .breadcrumb {
}
}
@media (min-width: 992px) and (max-width: 575.98px) {
.sidebar-lg-show .main,
.aside-menu-lg-show .main {
position: relative;
}
.sidebar-lg-show .main::before,
.aside-menu-lg-show .main::before {
position: absolute;
top: 0;
left: 0;
z-index: 1018;
width: 100%;
height: 100%;
content: "";
background: rgba(0, 0, 0, 0.7);
-webkit-animation: opacity 0.25s;
animation: opacity 0.25s;
}
}
@media (min-width: 1200px) {
html:not([dir="rtl"]) .sidebar-xl-show .sidebar {
html:not([dir="rtl"]) .sidebar-xl-show .sidebar,
html:not([dir="rtl"]) .sidebar-show .sidebar {
margin-left: 0;
}
html:not([dir="rtl"]) .sidebar-xl-show.sidebar-fixed .main,
html:not([dir="rtl"]) .sidebar-xl-show.sidebar-fixed .app-footer {
html:not([dir="rtl"]) .sidebar-xl-show.sidebar-fixed .app-footer,
html:not([dir="rtl"]) .sidebar-show.sidebar-fixed .main,
html:not([dir="rtl"]) .sidebar-show.sidebar-fixed .app-footer {
margin-left: 200px;
}
html:not([dir="rtl"]) .sidebar-xl-show.sidebar-fixed.sidebar-compact .main,
html:not([dir="rtl"]) .sidebar-xl-show.sidebar-fixed.sidebar-compact .app-footer {
html:not([dir="rtl"]) .sidebar-xl-show.sidebar-fixed.sidebar-compact .app-footer,
html:not([dir="rtl"]) .sidebar-show.sidebar-fixed.sidebar-compact .main,
html:not([dir="rtl"]) .sidebar-show.sidebar-fixed.sidebar-compact .app-footer {
margin-left: 150px;
}
html:not([dir="rtl"]) .sidebar-xl-show.sidebar-fixed.sidebar-minimized .main,
html:not([dir="rtl"]) .sidebar-xl-show.sidebar-fixed.sidebar-minimized .app-footer {
html:not([dir="rtl"]) .sidebar-xl-show.sidebar-fixed.sidebar-minimized .app-footer,
html:not([dir="rtl"]) .sidebar-show.sidebar-fixed.sidebar-minimized .main,
html:not([dir="rtl"]) .sidebar-show.sidebar-fixed.sidebar-minimized .app-footer {
margin-left: 50px;
}
html:not([dir="rtl"]) .sidebar-xl-show.breadcrumb-fixed .breadcrumb {
html:not([dir="rtl"]) .sidebar-xl-show.breadcrumb-fixed .breadcrumb,
html:not([dir="rtl"]) .sidebar-show.breadcrumb-fixed .breadcrumb {
left: 200px;
}
html:not([dir="rtl"]) .sidebar-xl-show.breadcrumb-fixed.sidebar-compact .breadcrumb {
html:not([dir="rtl"]) .sidebar-xl-show.breadcrumb-fixed.sidebar-compact .breadcrumb,
html:not([dir="rtl"]) .sidebar-show.breadcrumb-fixed.sidebar-compact .breadcrumb {
left: 150px;
}
html:not([dir="rtl"]) .sidebar-xl-show.breadcrumb-fixed.sidebar-minimized .breadcrumb {
html:not([dir="rtl"]) .sidebar-xl-show.breadcrumb-fixed.sidebar-minimized .breadcrumb,
html:not([dir="rtl"]) .sidebar-show.breadcrumb-fixed.sidebar-minimized .breadcrumb {
left: 50px;
}
html:not([dir="rtl"]) .aside-menu-show .aside-menu,
html:not([dir="rtl"]) .aside-menu-xl-show .aside-menu {
margin-right: 0;
}
html:not([dir="rtl"]) .aside-menu-show.aside-menu-fixed .main,
html:not([dir="rtl"]) .aside-menu-show.aside-menu-fixed .app-footer,
html:not([dir="rtl"]) .aside-menu-xl-show.aside-menu-fixed .main,
html:not([dir="rtl"]) .aside-menu-xl-show.aside-menu-fixed .app-footer {
margin-right: 250px;
}
html:not([dir="rtl"]) .aside-menu-show.breadcrumb-fixed .breadcrumb,
html:not([dir="rtl"]) .aside-menu-xl-show.breadcrumb-fixed .breadcrumb {
right: 250px;
}
html[dir="rtl"] .sidebar-xl-show .sidebar {
html[dir="rtl"] .sidebar-xl-show .sidebar,
html[dir="rtl"] .sidebar-show .sidebar {
margin-right: 0;
}
html[dir="rtl"] .sidebar-xl-show.sidebar-fixed .main,
html[dir="rtl"] .sidebar-xl-show.sidebar-fixed .app-footer {
html[dir="rtl"] .sidebar-xl-show.sidebar-fixed .app-footer,
html[dir="rtl"] .sidebar-show.sidebar-fixed .main,
html[dir="rtl"] .sidebar-show.sidebar-fixed .app-footer {
margin-right: 200px;
}
html[dir="rtl"] .sidebar-xl-show.sidebar-fixed.sidebar-compact .main,
html[dir="rtl"] .sidebar-xl-show.sidebar-fixed.sidebar-compact .app-footer {
html[dir="rtl"] .sidebar-xl-show.sidebar-fixed.sidebar-compact .app-footer,
html[dir="rtl"] .sidebar-show.sidebar-fixed.sidebar-compact .main,
html[dir="rtl"] .sidebar-show.sidebar-fixed.sidebar-compact .app-footer {
margin-right: 150px;
}
html[dir="rtl"] .sidebar-xl-show.sidebar-fixed.sidebar-minimized .main,
html[dir="rtl"] .sidebar-xl-show.sidebar-fixed.sidebar-minimized .app-footer {
html[dir="rtl"] .sidebar-xl-show.sidebar-fixed.sidebar-minimized .app-footer,
html[dir="rtl"] .sidebar-show.sidebar-fixed.sidebar-minimized .main,
html[dir="rtl"] .sidebar-show.sidebar-fixed.sidebar-minimized .app-footer {
margin-right: 50px;
}
html[dir="rtl"] .sidebar-xl-show.breadcrumb-fixed .breadcrumb {
html[dir="rtl"] .sidebar-xl-show.breadcrumb-fixed .breadcrumb,
html[dir="rtl"] .sidebar-show.breadcrumb-fixed .breadcrumb {
right: 200px;
}
html[dir="rtl"] .sidebar-xl-show.breadcrumb-fixed.sidebar-compact .breadcrumb {
html[dir="rtl"] .sidebar-xl-show.breadcrumb-fixed.sidebar-compact .breadcrumb,
html[dir="rtl"] .sidebar-show.breadcrumb-fixed.sidebar-compact .breadcrumb {
right: 150px;
}
html[dir="rtl"] .sidebar-xl-show.breadcrumb-fixed.sidebar-minimized .breadcrumb {
html[dir="rtl"] .sidebar-xl-show.breadcrumb-fixed.sidebar-minimized .breadcrumb,
html[dir="rtl"] .sidebar-show.breadcrumb-fixed.sidebar-minimized .breadcrumb {
right: 50px;
}
html[dir="rtl"] .aside-menu-show .aside-menu,
html[dir="rtl"] .aside-menu-xl-show .aside-menu {
margin-left: 0;
}
html[dir="rtl"] .aside-menu-show.aside-menu-fixed .main,
html[dir="rtl"] .aside-menu-show.aside-menu-fixed .app-footer,
html[dir="rtl"] .aside-menu-xl-show.aside-menu-fixed .main,
html[dir="rtl"] .aside-menu-xl-show.aside-menu-fixed .app-footer {
margin-left: 250px;
}
html[dir="rtl"] .aside-menu-show.breadcrumb-fixed .breadcrumb,
html[dir="rtl"] .aside-menu-xl-show.breadcrumb-fixed .breadcrumb {
left: 250px;
}
@ -13372,26 +13409,6 @@ html[dir="rtl"] .aside-menu-show.breadcrumb-fixed .breadcrumb {
}
}
@media (min-width: 1200px) and (max-width: 575.98px) {
.sidebar-xl-show .main,
.aside-menu-xl-show .main {
position: relative;
}
.sidebar-xl-show .main::before,
.aside-menu-xl-show .main::before {
position: absolute;
top: 0;
left: 0;
z-index: 1018;
width: 100%;
height: 100%;
content: "";
background: rgba(0, 0, 0, 0.7);
-webkit-animation: opacity 0.25s;
animation: opacity 0.25s;
}
}
.footer-fixed .app-footer {
position: fixed;
right: 0;

View File

@ -1,7 +1,7 @@
@charset "UTF-8";
/*!
* CoreUI - Open Source Dashboard UI Kit
* @version v2.0.18
* @version v2.1.4
* @link https://coreui.io
* Copyright (c) 2018 creativeLabs Łukasz Holeczek
* Licensed under MIT (https://coreui.io/license)
@ -10347,10 +10347,6 @@ a.text-dark:hover, a.text-dark:focus {
box-shadow: 0 0 0 0.2rem rgba(170, 212, 80, 0.5);
}
button {
cursor: pointer;
}
.btn-transparent {
color: #fff;
background-color: transparent;
@ -11699,6 +11695,28 @@ canvas {
background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 11 14'%3E%3Cpath fill='%23fff' d='M9.148 2.352l-4.148 4.148 4.148 4.148q0.148 0.148 0.148 0.352t-0.148 0.352l-1.297 1.297q-0.148 0.148-0.352 0.148t-0.352-0.148l-5.797-5.797q-0.148-0.148-0.148-0.352t0.148-0.352l5.797-5.797q0.148-0.148 0.352-0.148t0.352 0.148l1.297 1.297q0.148 0.148 0.148 0.352t-0.148 0.352z'/%3E%3C/svg%3E");
}
.sidebar .nav-link.disabled {
color: #b3b3b3;
cursor: default;
background: transparent;
}
.sidebar .nav-link.disabled .nav-icon {
color: #73818f;
}
.sidebar .nav-link.disabled:hover {
color: #b3b3b3;
}
.sidebar .nav-link.disabled:hover .nav-icon {
color: #73818f;
}
.sidebar .nav-link.disabled:hover.nav-dropdown-toggle::before {
background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 11 14'%3E%3Cpath fill='%23fff' d='M9.148 2.352l-4.148 4.148 4.148 4.148q0.148 0.148 0.148 0.352t-0.148 0.352l-1.297 1.297q-0.148 0.148-0.352 0.148t-0.352-0.148l-5.797-5.797q-0.148-0.148-0.148-0.352t0.148-0.352l5.797-5.797q0.148-0.148 0.352-0.148t0.352 0.148l1.297 1.297q0.148 0.148 0.148 0.352t-0.148 0.352z'/%3E%3C/svg%3E");
}
.sidebar .nav-link.nav-link-primary {
background: #20a8d8;
}
@ -11866,6 +11884,19 @@ canvas {
border-left: 0;
}
.sidebar .nav-dropdown.open .nav-link.disabled {
color: #b3b3b3;
background: transparent;
}
.sidebar .nav-dropdown.open .nav-link.disabled:hover {
color: #b3b3b3;
}
.sidebar .nav-dropdown.open .nav-link.disabled:hover .nav-icon {
color: #73818f;
}
.sidebar .nav-dropdown.open > .nav-dropdown-toggle::before {
-webkit-transform: rotate(-90deg);
transform: rotate(-90deg);
@ -11910,6 +11941,7 @@ canvas {
position: relative;
-ms-flex: 0 0 50px;
flex: 0 0 50px;
cursor: pointer;
background-color: rgba(0, 0, 0, 0.2);
border: 0;
}
@ -12022,6 +12054,19 @@ canvas {
.sidebar-minimized .sidebar .nav-item:hover > .nav-link .nav-icon {
color: #fff;
}
.sidebar-minimized .sidebar .nav-item:hover .nav-link.disabled,
.sidebar-minimized .sidebar .nav-item:hover .nav-link :disabled {
background: #2f353a;
}
.sidebar-minimized .sidebar .nav-item:hover .nav-link.disabled .nav-icon,
.sidebar-minimized .sidebar .nav-item:hover .nav-link :disabled .nav-icon {
color: #73818f;
}
.sidebar-minimized .sidebar section :not(.nav-dropdown-items) > .nav-item:last-child::after {
display: block;
margin-bottom: 50px;
content: "";
}
.sidebar-minimized .sidebar .nav-link {
position: relative;
padding-left: 0;
@ -12069,6 +12114,43 @@ canvas {
left: 50px;
display: inline;
}
*[dir="rtl"] .sidebar-minimized .sidebar .nav {
list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7");
}
*[dir="rtl"] .sidebar-minimized .sidebar .nav .divider {
height: 0;
}
*[dir="rtl"] .sidebar-minimized .sidebar .sidebar-minimizer::before {
width: 100%;
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
*[dir="rtl"] .sidebar-minimized .sidebar .nav-link {
padding-right: 0;
}
*[dir="rtl"] .sidebar-minimized .sidebar .nav-link .nav-icon {
float: right;
}
*[dir="rtl"] .sidebar-minimized .sidebar .nav-link .badge {
right: auto;
left: 15px;
}
*[dir="rtl"] .sidebar-minimized .sidebar .nav-link:hover .badge {
display: inline;
}
*[dir="rtl"] .sidebar-minimized .sidebar .nav > .nav-dropdown > .nav-dropdown-items {
display: none;
max-height: 1000px;
background: #2f353a;
}
*[dir="rtl"] .sidebar-minimized .sidebar .nav > .nav-dropdown:hover {
background: #20a8d8;
}
*[dir="rtl"] .sidebar-minimized .sidebar .nav > .nav-dropdown:hover > .nav-dropdown-items {
position: absolute;
left: 0;
display: inline;
}
}
*[dir="rtl"] .sidebar .nav-dropdown-toggle::before {
@ -12099,41 +12181,12 @@ canvas {
}
*[dir="rtl"] .sidebar .sidebar-minimizer::before {
right: unset;
right: auto;
left: 0;
-webkit-transform: rotate(180deg);
transform: rotate(180deg);
}
*[dir="rtl"] .sidebar-minimized .sidebar .nav {
list-style-type: disc;
}
*[dir="rtl"] .sidebar-minimized .sidebar .nav-link {
padding-right: 0;
}
*[dir="rtl"] .sidebar-minimized .sidebar .nav-link .nav-icon {
float: right;
padding: 0;
margin: 0;
}
*[dir="rtl"] .sidebar-minimized .sidebar .nav-link .badge {
right: auto;
left: 15px;
}
*[dir="rtl"] .sidebar-minimized .sidebar .nav-dropdown:hover > .nav-dropdown-items {
right: 50px;
left: 0;
}
*[dir="rtl"] .sidebar-minimized .sidebar .sidebar-minimizer::before {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
*[dir="rtl"] .sidebar-toggler {
margin-right: 0 !important;
}
@ -12838,94 +12891,26 @@ html[dir="rtl"] .aside-menu {
z-index: 1017;
}
html:not([dir="rtl"]) .sidebar-show .sidebar,
html:not([dir="rtl"]) .sidebar-show .sidebar {
margin-left: 0;
}
html:not([dir="rtl"]) .sidebar-show.sidebar-fixed .main,
html:not([dir="rtl"]) .sidebar-show.sidebar-fixed .app-footer {
margin-left: 200px;
}
html:not([dir="rtl"]) .sidebar-show.sidebar-fixed.sidebar-compact .main,
html:not([dir="rtl"]) .sidebar-show.sidebar-fixed.sidebar-compact .app-footer {
margin-left: 150px;
}
html:not([dir="rtl"]) .sidebar-show.sidebar-fixed.sidebar-minimized .main,
html:not([dir="rtl"]) .sidebar-show.sidebar-fixed.sidebar-minimized .app-footer {
margin-left: 50px;
}
html:not([dir="rtl"]) .sidebar-show.breadcrumb-fixed .breadcrumb {
left: 200px;
}
html:not([dir="rtl"]) .sidebar-show.breadcrumb-fixed.sidebar-compact .breadcrumb {
left: 150px;
}
html:not([dir="rtl"]) .sidebar-show.breadcrumb-fixed.sidebar-minimized .breadcrumb {
left: 50px;
}
html:not([dir="rtl"]) .aside-menu-show .aside-menu,
html:not([dir="rtl"]) .aside-menu-show .aside-menu {
margin-right: 0;
}
html:not([dir="rtl"]) .aside-menu-show.aside-menu-fixed .main,
html:not([dir="rtl"]) .aside-menu-show.aside-menu-fixed .app-footer {
margin-right: 250px;
}
html:not([dir="rtl"]) .aside-menu-show.breadcrumb-fixed .breadcrumb {
right: 250px;
}
html[dir="rtl"] .sidebar-show .sidebar,
html[dir="rtl"] .sidebar-show .sidebar {
margin-right: 0;
}
html[dir="rtl"] .sidebar-show.sidebar-fixed .main,
html[dir="rtl"] .sidebar-show.sidebar-fixed .app-footer {
margin-right: 200px;
}
html[dir="rtl"] .sidebar-show.sidebar-fixed.sidebar-compact .main,
html[dir="rtl"] .sidebar-show.sidebar-fixed.sidebar-compact .app-footer {
margin-right: 150px;
}
html[dir="rtl"] .sidebar-show.sidebar-fixed.sidebar-minimized .main,
html[dir="rtl"] .sidebar-show.sidebar-fixed.sidebar-minimized .app-footer {
margin-right: 50px;
}
html[dir="rtl"] .sidebar-show.breadcrumb-fixed .breadcrumb {
right: 200px;
}
html[dir="rtl"] .sidebar-show.breadcrumb-fixed.sidebar-compact .breadcrumb {
right: 150px;
}
html[dir="rtl"] .sidebar-show.breadcrumb-fixed.sidebar-minimized .breadcrumb {
right: 50px;
}
html[dir="rtl"] .aside-menu-show .aside-menu,
html[dir="rtl"] .aside-menu-show .aside-menu {
margin-left: 0;
}
html[dir="rtl"] .aside-menu-show.aside-menu-fixed .main,
html[dir="rtl"] .aside-menu-show.aside-menu-fixed .app-footer {
margin-left: 250px;
}
html[dir="rtl"] .aside-menu-show.breadcrumb-fixed .breadcrumb {
left: 250px;
}
@-webkit-keyframes opacity {
0% {
opacity: 0;
@ -12965,71 +12950,99 @@ html[dir="rtl"] .aside-menu-show.breadcrumb-fixed .breadcrumb {
}
@media (min-width: 576px) {
html:not([dir="rtl"]) .sidebar-sm-show .sidebar {
html:not([dir="rtl"]) .sidebar-sm-show .sidebar,
html:not([dir="rtl"]) .sidebar-show .sidebar {
margin-left: 0;
}
html:not([dir="rtl"]) .sidebar-sm-show.sidebar-fixed .main,
html:not([dir="rtl"]) .sidebar-sm-show.sidebar-fixed .app-footer {
html:not([dir="rtl"]) .sidebar-sm-show.sidebar-fixed .app-footer,
html:not([dir="rtl"]) .sidebar-show.sidebar-fixed .main,
html:not([dir="rtl"]) .sidebar-show.sidebar-fixed .app-footer {
margin-left: 200px;
}
html:not([dir="rtl"]) .sidebar-sm-show.sidebar-fixed.sidebar-compact .main,
html:not([dir="rtl"]) .sidebar-sm-show.sidebar-fixed.sidebar-compact .app-footer {
html:not([dir="rtl"]) .sidebar-sm-show.sidebar-fixed.sidebar-compact .app-footer,
html:not([dir="rtl"]) .sidebar-show.sidebar-fixed.sidebar-compact .main,
html:not([dir="rtl"]) .sidebar-show.sidebar-fixed.sidebar-compact .app-footer {
margin-left: 150px;
}
html:not([dir="rtl"]) .sidebar-sm-show.sidebar-fixed.sidebar-minimized .main,
html:not([dir="rtl"]) .sidebar-sm-show.sidebar-fixed.sidebar-minimized .app-footer {
margin-left: 50px;
html:not([dir="rtl"]) .sidebar-sm-show.sidebar-fixed.sidebar-minimized .app-footer,
html:not([dir="rtl"]) .sidebar-show.sidebar-fixed.sidebar-minimized .main,
html:not([dir="rtl"]) .sidebar-show.sidebar-fixed.sidebar-minimized .app-footer {
margin-left: 200px;
}
html:not([dir="rtl"]) .sidebar-sm-show.breadcrumb-fixed .breadcrumb {
html:not([dir="rtl"]) .sidebar-sm-show.breadcrumb-fixed .breadcrumb,
html:not([dir="rtl"]) .sidebar-show.breadcrumb-fixed .breadcrumb {
left: 200px;
}
html:not([dir="rtl"]) .sidebar-sm-show.breadcrumb-fixed.sidebar-compact .breadcrumb {
html:not([dir="rtl"]) .sidebar-sm-show.breadcrumb-fixed.sidebar-compact .breadcrumb,
html:not([dir="rtl"]) .sidebar-show.breadcrumb-fixed.sidebar-compact .breadcrumb {
left: 150px;
}
html:not([dir="rtl"]) .sidebar-sm-show.breadcrumb-fixed.sidebar-minimized .breadcrumb {
html:not([dir="rtl"]) .sidebar-sm-show.breadcrumb-fixed.sidebar-minimized .breadcrumb,
html:not([dir="rtl"]) .sidebar-show.breadcrumb-fixed.sidebar-minimized .breadcrumb {
left: 50px;
}
html:not([dir="rtl"]) .aside-menu-show .aside-menu,
html:not([dir="rtl"]) .aside-menu-sm-show .aside-menu {
margin-right: 0;
}
html:not([dir="rtl"]) .aside-menu-show.aside-menu-fixed .main,
html:not([dir="rtl"]) .aside-menu-show.aside-menu-fixed .app-footer,
html:not([dir="rtl"]) .aside-menu-sm-show.aside-menu-fixed .main,
html:not([dir="rtl"]) .aside-menu-sm-show.aside-menu-fixed .app-footer {
margin-right: 250px;
}
html:not([dir="rtl"]) .aside-menu-show.breadcrumb-fixed .breadcrumb,
html:not([dir="rtl"]) .aside-menu-sm-show.breadcrumb-fixed .breadcrumb {
right: 250px;
}
html[dir="rtl"] .sidebar-sm-show .sidebar {
html[dir="rtl"] .sidebar-sm-show .sidebar,
html[dir="rtl"] .sidebar-show .sidebar {
margin-right: 0;
}
html[dir="rtl"] .sidebar-sm-show.sidebar-fixed .main,
html[dir="rtl"] .sidebar-sm-show.sidebar-fixed .app-footer {
html[dir="rtl"] .sidebar-sm-show.sidebar-fixed .app-footer,
html[dir="rtl"] .sidebar-show.sidebar-fixed .main,
html[dir="rtl"] .sidebar-show.sidebar-fixed .app-footer {
margin-right: 200px;
}
html[dir="rtl"] .sidebar-sm-show.sidebar-fixed.sidebar-compact .main,
html[dir="rtl"] .sidebar-sm-show.sidebar-fixed.sidebar-compact .app-footer {
html[dir="rtl"] .sidebar-sm-show.sidebar-fixed.sidebar-compact .app-footer,
html[dir="rtl"] .sidebar-show.sidebar-fixed.sidebar-compact .main,
html[dir="rtl"] .sidebar-show.sidebar-fixed.sidebar-compact .app-footer {
margin-right: 150px;
}
html[dir="rtl"] .sidebar-sm-show.sidebar-fixed.sidebar-minimized .main,
html[dir="rtl"] .sidebar-sm-show.sidebar-fixed.sidebar-minimized .app-footer {
margin-right: 50px;
html[dir="rtl"] .sidebar-sm-show.sidebar-fixed.sidebar-minimized .app-footer,
html[dir="rtl"] .sidebar-show.sidebar-fixed.sidebar-minimized .main,
html[dir="rtl"] .sidebar-show.sidebar-fixed.sidebar-minimized .app-footer {
margin-right: 200px;
}
html[dir="rtl"] .sidebar-sm-show.breadcrumb-fixed .breadcrumb {
html[dir="rtl"] .sidebar-sm-show.breadcrumb-fixed .breadcrumb,
html[dir="rtl"] .sidebar-show.breadcrumb-fixed .breadcrumb {
right: 200px;
}
html[dir="rtl"] .sidebar-sm-show.breadcrumb-fixed.sidebar-compact .breadcrumb {
html[dir="rtl"] .sidebar-sm-show.breadcrumb-fixed.sidebar-compact .breadcrumb,
html[dir="rtl"] .sidebar-show.breadcrumb-fixed.sidebar-compact .breadcrumb {
right: 150px;
}
html[dir="rtl"] .sidebar-sm-show.breadcrumb-fixed.sidebar-minimized .breadcrumb {
html[dir="rtl"] .sidebar-sm-show.breadcrumb-fixed.sidebar-minimized .breadcrumb,
html[dir="rtl"] .sidebar-show.breadcrumb-fixed.sidebar-minimized .breadcrumb {
right: 50px;
}
html[dir="rtl"] .aside-menu-show .aside-menu,
html[dir="rtl"] .aside-menu-sm-show .aside-menu {
margin-left: 0;
}
html[dir="rtl"] .aside-menu-show.aside-menu-fixed .main,
html[dir="rtl"] .aside-menu-show.aside-menu-fixed .app-footer,
html[dir="rtl"] .aside-menu-sm-show.aside-menu-fixed .main,
html[dir="rtl"] .aside-menu-sm-show.aside-menu-fixed .app-footer {
margin-left: 250px;
}
html[dir="rtl"] .aside-menu-show.breadcrumb-fixed .breadcrumb,
html[dir="rtl"] .aside-menu-sm-show.breadcrumb-fixed .breadcrumb {
left: 250px;
}
@ -13051,92 +13064,100 @@ html[dir="rtl"] .aside-menu-show.breadcrumb-fixed .breadcrumb {
}
}
@media (min-width: 576px) and (max-width: 575.98px) {
.sidebar-sm-show .main,
.aside-menu-sm-show .main {
position: relative;
}
.sidebar-sm-show .main::before,
.aside-menu-sm-show .main::before {
position: absolute;
top: 0;
left: 0;
z-index: 1018;
width: 100%;
height: 100%;
content: "";
background: rgba(0, 0, 0, 0.7);
-webkit-animation: opacity 0.25s;
animation: opacity 0.25s;
}
}
@media (min-width: 768px) {
html:not([dir="rtl"]) .sidebar-md-show .sidebar {
html:not([dir="rtl"]) .sidebar-md-show .sidebar,
html:not([dir="rtl"]) .sidebar-show .sidebar {
margin-left: 0;
}
html:not([dir="rtl"]) .sidebar-md-show.sidebar-fixed .main,
html:not([dir="rtl"]) .sidebar-md-show.sidebar-fixed .app-footer {
html:not([dir="rtl"]) .sidebar-md-show.sidebar-fixed .app-footer,
html:not([dir="rtl"]) .sidebar-show.sidebar-fixed .main,
html:not([dir="rtl"]) .sidebar-show.sidebar-fixed .app-footer {
margin-left: 200px;
}
html:not([dir="rtl"]) .sidebar-md-show.sidebar-fixed.sidebar-compact .main,
html:not([dir="rtl"]) .sidebar-md-show.sidebar-fixed.sidebar-compact .app-footer {
html:not([dir="rtl"]) .sidebar-md-show.sidebar-fixed.sidebar-compact .app-footer,
html:not([dir="rtl"]) .sidebar-show.sidebar-fixed.sidebar-compact .main,
html:not([dir="rtl"]) .sidebar-show.sidebar-fixed.sidebar-compact .app-footer {
margin-left: 150px;
}
html:not([dir="rtl"]) .sidebar-md-show.sidebar-fixed.sidebar-minimized .main,
html:not([dir="rtl"]) .sidebar-md-show.sidebar-fixed.sidebar-minimized .app-footer {
margin-left: 50px;
html:not([dir="rtl"]) .sidebar-md-show.sidebar-fixed.sidebar-minimized .app-footer,
html:not([dir="rtl"]) .sidebar-show.sidebar-fixed.sidebar-minimized .main,
html:not([dir="rtl"]) .sidebar-show.sidebar-fixed.sidebar-minimized .app-footer {
margin-left: 200px;
}
html:not([dir="rtl"]) .sidebar-md-show.breadcrumb-fixed .breadcrumb {
html:not([dir="rtl"]) .sidebar-md-show.breadcrumb-fixed .breadcrumb,
html:not([dir="rtl"]) .sidebar-show.breadcrumb-fixed .breadcrumb {
left: 200px;
}
html:not([dir="rtl"]) .sidebar-md-show.breadcrumb-fixed.sidebar-compact .breadcrumb {
html:not([dir="rtl"]) .sidebar-md-show.breadcrumb-fixed.sidebar-compact .breadcrumb,
html:not([dir="rtl"]) .sidebar-show.breadcrumb-fixed.sidebar-compact .breadcrumb {
left: 150px;
}
html:not([dir="rtl"]) .sidebar-md-show.breadcrumb-fixed.sidebar-minimized .breadcrumb {
html:not([dir="rtl"]) .sidebar-md-show.breadcrumb-fixed.sidebar-minimized .breadcrumb,
html:not([dir="rtl"]) .sidebar-show.breadcrumb-fixed.sidebar-minimized .breadcrumb {
left: 50px;
}
html:not([dir="rtl"]) .aside-menu-show .aside-menu,
html:not([dir="rtl"]) .aside-menu-md-show .aside-menu {
margin-right: 0;
}
html:not([dir="rtl"]) .aside-menu-show.aside-menu-fixed .main,
html:not([dir="rtl"]) .aside-menu-show.aside-menu-fixed .app-footer,
html:not([dir="rtl"]) .aside-menu-md-show.aside-menu-fixed .main,
html:not([dir="rtl"]) .aside-menu-md-show.aside-menu-fixed .app-footer {
margin-right: 250px;
}
html:not([dir="rtl"]) .aside-menu-show.breadcrumb-fixed .breadcrumb,
html:not([dir="rtl"]) .aside-menu-md-show.breadcrumb-fixed .breadcrumb {
right: 250px;
}
html[dir="rtl"] .sidebar-md-show .sidebar {
html[dir="rtl"] .sidebar-md-show .sidebar,
html[dir="rtl"] .sidebar-show .sidebar {
margin-right: 0;
}
html[dir="rtl"] .sidebar-md-show.sidebar-fixed .main,
html[dir="rtl"] .sidebar-md-show.sidebar-fixed .app-footer {
html[dir="rtl"] .sidebar-md-show.sidebar-fixed .app-footer,
html[dir="rtl"] .sidebar-show.sidebar-fixed .main,
html[dir="rtl"] .sidebar-show.sidebar-fixed .app-footer {
margin-right: 200px;
}
html[dir="rtl"] .sidebar-md-show.sidebar-fixed.sidebar-compact .main,
html[dir="rtl"] .sidebar-md-show.sidebar-fixed.sidebar-compact .app-footer {
html[dir="rtl"] .sidebar-md-show.sidebar-fixed.sidebar-compact .app-footer,
html[dir="rtl"] .sidebar-show.sidebar-fixed.sidebar-compact .main,
html[dir="rtl"] .sidebar-show.sidebar-fixed.sidebar-compact .app-footer {
margin-right: 150px;
}
html[dir="rtl"] .sidebar-md-show.sidebar-fixed.sidebar-minimized .main,
html[dir="rtl"] .sidebar-md-show.sidebar-fixed.sidebar-minimized .app-footer {
margin-right: 50px;
html[dir="rtl"] .sidebar-md-show.sidebar-fixed.sidebar-minimized .app-footer,
html[dir="rtl"] .sidebar-show.sidebar-fixed.sidebar-minimized .main,
html[dir="rtl"] .sidebar-show.sidebar-fixed.sidebar-minimized .app-footer {
margin-right: 200px;
}
html[dir="rtl"] .sidebar-md-show.breadcrumb-fixed .breadcrumb {
html[dir="rtl"] .sidebar-md-show.breadcrumb-fixed .breadcrumb,
html[dir="rtl"] .sidebar-show.breadcrumb-fixed .breadcrumb {
right: 200px;
}
html[dir="rtl"] .sidebar-md-show.breadcrumb-fixed.sidebar-compact .breadcrumb {
html[dir="rtl"] .sidebar-md-show.breadcrumb-fixed.sidebar-compact .breadcrumb,
html[dir="rtl"] .sidebar-show.breadcrumb-fixed.sidebar-compact .breadcrumb {
right: 150px;
}
html[dir="rtl"] .sidebar-md-show.breadcrumb-fixed.sidebar-minimized .breadcrumb {
html[dir="rtl"] .sidebar-md-show.breadcrumb-fixed.sidebar-minimized .breadcrumb,
html[dir="rtl"] .sidebar-show.breadcrumb-fixed.sidebar-minimized .breadcrumb {
right: 50px;
}
html[dir="rtl"] .aside-menu-show .aside-menu,
html[dir="rtl"] .aside-menu-md-show .aside-menu {
margin-left: 0;
}
html[dir="rtl"] .aside-menu-show.aside-menu-fixed .main,
html[dir="rtl"] .aside-menu-show.aside-menu-fixed .app-footer,
html[dir="rtl"] .aside-menu-md-show.aside-menu-fixed .main,
html[dir="rtl"] .aside-menu-md-show.aside-menu-fixed .app-footer {
margin-left: 250px;
}
html[dir="rtl"] .aside-menu-show.breadcrumb-fixed .breadcrumb,
html[dir="rtl"] .aside-menu-md-show.breadcrumb-fixed .breadcrumb {
left: 250px;
}
@ -13158,92 +13179,100 @@ html[dir="rtl"] .aside-menu-show.breadcrumb-fixed .breadcrumb {
}
}
@media (min-width: 768px) and (max-width: 575.98px) {
.sidebar-md-show .main,
.aside-menu-md-show .main {
position: relative;
}
.sidebar-md-show .main::before,
.aside-menu-md-show .main::before {
position: absolute;
top: 0;
left: 0;
z-index: 1018;
width: 100%;
height: 100%;
content: "";
background: rgba(0, 0, 0, 0.7);
-webkit-animation: opacity 0.25s;
animation: opacity 0.25s;
}
}
@media (min-width: 992px) {
html:not([dir="rtl"]) .sidebar-lg-show .sidebar {
html:not([dir="rtl"]) .sidebar-lg-show .sidebar,
html:not([dir="rtl"]) .sidebar-show .sidebar {
margin-left: 0;
}
html:not([dir="rtl"]) .sidebar-lg-show.sidebar-fixed .main,
html:not([dir="rtl"]) .sidebar-lg-show.sidebar-fixed .app-footer {
html:not([dir="rtl"]) .sidebar-lg-show.sidebar-fixed .app-footer,
html:not([dir="rtl"]) .sidebar-show.sidebar-fixed .main,
html:not([dir="rtl"]) .sidebar-show.sidebar-fixed .app-footer {
margin-left: 200px;
}
html:not([dir="rtl"]) .sidebar-lg-show.sidebar-fixed.sidebar-compact .main,
html:not([dir="rtl"]) .sidebar-lg-show.sidebar-fixed.sidebar-compact .app-footer {
html:not([dir="rtl"]) .sidebar-lg-show.sidebar-fixed.sidebar-compact .app-footer,
html:not([dir="rtl"]) .sidebar-show.sidebar-fixed.sidebar-compact .main,
html:not([dir="rtl"]) .sidebar-show.sidebar-fixed.sidebar-compact .app-footer {
margin-left: 150px;
}
html:not([dir="rtl"]) .sidebar-lg-show.sidebar-fixed.sidebar-minimized .main,
html:not([dir="rtl"]) .sidebar-lg-show.sidebar-fixed.sidebar-minimized .app-footer {
html:not([dir="rtl"]) .sidebar-lg-show.sidebar-fixed.sidebar-minimized .app-footer,
html:not([dir="rtl"]) .sidebar-show.sidebar-fixed.sidebar-minimized .main,
html:not([dir="rtl"]) .sidebar-show.sidebar-fixed.sidebar-minimized .app-footer {
margin-left: 50px;
}
html:not([dir="rtl"]) .sidebar-lg-show.breadcrumb-fixed .breadcrumb {
html:not([dir="rtl"]) .sidebar-lg-show.breadcrumb-fixed .breadcrumb,
html:not([dir="rtl"]) .sidebar-show.breadcrumb-fixed .breadcrumb {
left: 200px;
}
html:not([dir="rtl"]) .sidebar-lg-show.breadcrumb-fixed.sidebar-compact .breadcrumb {
html:not([dir="rtl"]) .sidebar-lg-show.breadcrumb-fixed.sidebar-compact .breadcrumb,
html:not([dir="rtl"]) .sidebar-show.breadcrumb-fixed.sidebar-compact .breadcrumb {
left: 150px;
}
html:not([dir="rtl"]) .sidebar-lg-show.breadcrumb-fixed.sidebar-minimized .breadcrumb {
html:not([dir="rtl"]) .sidebar-lg-show.breadcrumb-fixed.sidebar-minimized .breadcrumb,
html:not([dir="rtl"]) .sidebar-show.breadcrumb-fixed.sidebar-minimized .breadcrumb {
left: 50px;
}
html:not([dir="rtl"]) .aside-menu-show .aside-menu,
html:not([dir="rtl"]) .aside-menu-lg-show .aside-menu {
margin-right: 0;
}
html:not([dir="rtl"]) .aside-menu-show.aside-menu-fixed .main,
html:not([dir="rtl"]) .aside-menu-show.aside-menu-fixed .app-footer,
html:not([dir="rtl"]) .aside-menu-lg-show.aside-menu-fixed .main,
html:not([dir="rtl"]) .aside-menu-lg-show.aside-menu-fixed .app-footer {
margin-right: 250px;
}
html:not([dir="rtl"]) .aside-menu-show.breadcrumb-fixed .breadcrumb,
html:not([dir="rtl"]) .aside-menu-lg-show.breadcrumb-fixed .breadcrumb {
right: 250px;
}
html[dir="rtl"] .sidebar-lg-show .sidebar {
html[dir="rtl"] .sidebar-lg-show .sidebar,
html[dir="rtl"] .sidebar-show .sidebar {
margin-right: 0;
}
html[dir="rtl"] .sidebar-lg-show.sidebar-fixed .main,
html[dir="rtl"] .sidebar-lg-show.sidebar-fixed .app-footer {
html[dir="rtl"] .sidebar-lg-show.sidebar-fixed .app-footer,
html[dir="rtl"] .sidebar-show.sidebar-fixed .main,
html[dir="rtl"] .sidebar-show.sidebar-fixed .app-footer {
margin-right: 200px;
}
html[dir="rtl"] .sidebar-lg-show.sidebar-fixed.sidebar-compact .main,
html[dir="rtl"] .sidebar-lg-show.sidebar-fixed.sidebar-compact .app-footer {
html[dir="rtl"] .sidebar-lg-show.sidebar-fixed.sidebar-compact .app-footer,
html[dir="rtl"] .sidebar-show.sidebar-fixed.sidebar-compact .main,
html[dir="rtl"] .sidebar-show.sidebar-fixed.sidebar-compact .app-footer {
margin-right: 150px;
}
html[dir="rtl"] .sidebar-lg-show.sidebar-fixed.sidebar-minimized .main,
html[dir="rtl"] .sidebar-lg-show.sidebar-fixed.sidebar-minimized .app-footer {
html[dir="rtl"] .sidebar-lg-show.sidebar-fixed.sidebar-minimized .app-footer,
html[dir="rtl"] .sidebar-show.sidebar-fixed.sidebar-minimized .main,
html[dir="rtl"] .sidebar-show.sidebar-fixed.sidebar-minimized .app-footer {
margin-right: 50px;
}
html[dir="rtl"] .sidebar-lg-show.breadcrumb-fixed .breadcrumb {
html[dir="rtl"] .sidebar-lg-show.breadcrumb-fixed .breadcrumb,
html[dir="rtl"] .sidebar-show.breadcrumb-fixed .breadcrumb {
right: 200px;
}
html[dir="rtl"] .sidebar-lg-show.breadcrumb-fixed.sidebar-compact .breadcrumb {
html[dir="rtl"] .sidebar-lg-show.breadcrumb-fixed.sidebar-compact .breadcrumb,
html[dir="rtl"] .sidebar-show.breadcrumb-fixed.sidebar-compact .breadcrumb {
right: 150px;
}
html[dir="rtl"] .sidebar-lg-show.breadcrumb-fixed.sidebar-minimized .breadcrumb {
html[dir="rtl"] .sidebar-lg-show.breadcrumb-fixed.sidebar-minimized .breadcrumb,
html[dir="rtl"] .sidebar-show.breadcrumb-fixed.sidebar-minimized .breadcrumb {
right: 50px;
}
html[dir="rtl"] .aside-menu-show .aside-menu,
html[dir="rtl"] .aside-menu-lg-show .aside-menu {
margin-left: 0;
}
html[dir="rtl"] .aside-menu-show.aside-menu-fixed .main,
html[dir="rtl"] .aside-menu-show.aside-menu-fixed .app-footer,
html[dir="rtl"] .aside-menu-lg-show.aside-menu-fixed .main,
html[dir="rtl"] .aside-menu-lg-show.aside-menu-fixed .app-footer {
margin-left: 250px;
}
html[dir="rtl"] .aside-menu-show.breadcrumb-fixed .breadcrumb,
html[dir="rtl"] .aside-menu-lg-show.breadcrumb-fixed .breadcrumb {
left: 250px;
}
@ -13265,92 +13294,100 @@ html[dir="rtl"] .aside-menu-show.breadcrumb-fixed .breadcrumb {
}
}
@media (min-width: 992px) and (max-width: 575.98px) {
.sidebar-lg-show .main,
.aside-menu-lg-show .main {
position: relative;
}
.sidebar-lg-show .main::before,
.aside-menu-lg-show .main::before {
position: absolute;
top: 0;
left: 0;
z-index: 1018;
width: 100%;
height: 100%;
content: "";
background: rgba(0, 0, 0, 0.7);
-webkit-animation: opacity 0.25s;
animation: opacity 0.25s;
}
}
@media (min-width: 1200px) {
html:not([dir="rtl"]) .sidebar-xl-show .sidebar {
html:not([dir="rtl"]) .sidebar-xl-show .sidebar,
html:not([dir="rtl"]) .sidebar-show .sidebar {
margin-left: 0;
}
html:not([dir="rtl"]) .sidebar-xl-show.sidebar-fixed .main,
html:not([dir="rtl"]) .sidebar-xl-show.sidebar-fixed .app-footer {
html:not([dir="rtl"]) .sidebar-xl-show.sidebar-fixed .app-footer,
html:not([dir="rtl"]) .sidebar-show.sidebar-fixed .main,
html:not([dir="rtl"]) .sidebar-show.sidebar-fixed .app-footer {
margin-left: 200px;
}
html:not([dir="rtl"]) .sidebar-xl-show.sidebar-fixed.sidebar-compact .main,
html:not([dir="rtl"]) .sidebar-xl-show.sidebar-fixed.sidebar-compact .app-footer {
html:not([dir="rtl"]) .sidebar-xl-show.sidebar-fixed.sidebar-compact .app-footer,
html:not([dir="rtl"]) .sidebar-show.sidebar-fixed.sidebar-compact .main,
html:not([dir="rtl"]) .sidebar-show.sidebar-fixed.sidebar-compact .app-footer {
margin-left: 150px;
}
html:not([dir="rtl"]) .sidebar-xl-show.sidebar-fixed.sidebar-minimized .main,
html:not([dir="rtl"]) .sidebar-xl-show.sidebar-fixed.sidebar-minimized .app-footer {
html:not([dir="rtl"]) .sidebar-xl-show.sidebar-fixed.sidebar-minimized .app-footer,
html:not([dir="rtl"]) .sidebar-show.sidebar-fixed.sidebar-minimized .main,
html:not([dir="rtl"]) .sidebar-show.sidebar-fixed.sidebar-minimized .app-footer {
margin-left: 50px;
}
html:not([dir="rtl"]) .sidebar-xl-show.breadcrumb-fixed .breadcrumb {
html:not([dir="rtl"]) .sidebar-xl-show.breadcrumb-fixed .breadcrumb,
html:not([dir="rtl"]) .sidebar-show.breadcrumb-fixed .breadcrumb {
left: 200px;
}
html:not([dir="rtl"]) .sidebar-xl-show.breadcrumb-fixed.sidebar-compact .breadcrumb {
html:not([dir="rtl"]) .sidebar-xl-show.breadcrumb-fixed.sidebar-compact .breadcrumb,
html:not([dir="rtl"]) .sidebar-show.breadcrumb-fixed.sidebar-compact .breadcrumb {
left: 150px;
}
html:not([dir="rtl"]) .sidebar-xl-show.breadcrumb-fixed.sidebar-minimized .breadcrumb {
html:not([dir="rtl"]) .sidebar-xl-show.breadcrumb-fixed.sidebar-minimized .breadcrumb,
html:not([dir="rtl"]) .sidebar-show.breadcrumb-fixed.sidebar-minimized .breadcrumb {
left: 50px;
}
html:not([dir="rtl"]) .aside-menu-show .aside-menu,
html:not([dir="rtl"]) .aside-menu-xl-show .aside-menu {
margin-right: 0;
}
html:not([dir="rtl"]) .aside-menu-show.aside-menu-fixed .main,
html:not([dir="rtl"]) .aside-menu-show.aside-menu-fixed .app-footer,
html:not([dir="rtl"]) .aside-menu-xl-show.aside-menu-fixed .main,
html:not([dir="rtl"]) .aside-menu-xl-show.aside-menu-fixed .app-footer {
margin-right: 250px;
}
html:not([dir="rtl"]) .aside-menu-show.breadcrumb-fixed .breadcrumb,
html:not([dir="rtl"]) .aside-menu-xl-show.breadcrumb-fixed .breadcrumb {
right: 250px;
}
html[dir="rtl"] .sidebar-xl-show .sidebar {
html[dir="rtl"] .sidebar-xl-show .sidebar,
html[dir="rtl"] .sidebar-show .sidebar {
margin-right: 0;
}
html[dir="rtl"] .sidebar-xl-show.sidebar-fixed .main,
html[dir="rtl"] .sidebar-xl-show.sidebar-fixed .app-footer {
html[dir="rtl"] .sidebar-xl-show.sidebar-fixed .app-footer,
html[dir="rtl"] .sidebar-show.sidebar-fixed .main,
html[dir="rtl"] .sidebar-show.sidebar-fixed .app-footer {
margin-right: 200px;
}
html[dir="rtl"] .sidebar-xl-show.sidebar-fixed.sidebar-compact .main,
html[dir="rtl"] .sidebar-xl-show.sidebar-fixed.sidebar-compact .app-footer {
html[dir="rtl"] .sidebar-xl-show.sidebar-fixed.sidebar-compact .app-footer,
html[dir="rtl"] .sidebar-show.sidebar-fixed.sidebar-compact .main,
html[dir="rtl"] .sidebar-show.sidebar-fixed.sidebar-compact .app-footer {
margin-right: 150px;
}
html[dir="rtl"] .sidebar-xl-show.sidebar-fixed.sidebar-minimized .main,
html[dir="rtl"] .sidebar-xl-show.sidebar-fixed.sidebar-minimized .app-footer {
html[dir="rtl"] .sidebar-xl-show.sidebar-fixed.sidebar-minimized .app-footer,
html[dir="rtl"] .sidebar-show.sidebar-fixed.sidebar-minimized .main,
html[dir="rtl"] .sidebar-show.sidebar-fixed.sidebar-minimized .app-footer {
margin-right: 50px;
}
html[dir="rtl"] .sidebar-xl-show.breadcrumb-fixed .breadcrumb {
html[dir="rtl"] .sidebar-xl-show.breadcrumb-fixed .breadcrumb,
html[dir="rtl"] .sidebar-show.breadcrumb-fixed .breadcrumb {
right: 200px;
}
html[dir="rtl"] .sidebar-xl-show.breadcrumb-fixed.sidebar-compact .breadcrumb {
html[dir="rtl"] .sidebar-xl-show.breadcrumb-fixed.sidebar-compact .breadcrumb,
html[dir="rtl"] .sidebar-show.breadcrumb-fixed.sidebar-compact .breadcrumb {
right: 150px;
}
html[dir="rtl"] .sidebar-xl-show.breadcrumb-fixed.sidebar-minimized .breadcrumb {
html[dir="rtl"] .sidebar-xl-show.breadcrumb-fixed.sidebar-minimized .breadcrumb,
html[dir="rtl"] .sidebar-show.breadcrumb-fixed.sidebar-minimized .breadcrumb {
right: 50px;
}
html[dir="rtl"] .aside-menu-show .aside-menu,
html[dir="rtl"] .aside-menu-xl-show .aside-menu {
margin-left: 0;
}
html[dir="rtl"] .aside-menu-show.aside-menu-fixed .main,
html[dir="rtl"] .aside-menu-show.aside-menu-fixed .app-footer,
html[dir="rtl"] .aside-menu-xl-show.aside-menu-fixed .main,
html[dir="rtl"] .aside-menu-xl-show.aside-menu-fixed .app-footer {
margin-left: 250px;
}
html[dir="rtl"] .aside-menu-show.breadcrumb-fixed .breadcrumb,
html[dir="rtl"] .aside-menu-xl-show.breadcrumb-fixed .breadcrumb {
left: 250px;
}
@ -13372,26 +13409,6 @@ html[dir="rtl"] .aside-menu-show.breadcrumb-fixed .breadcrumb {
}
}
@media (min-width: 1200px) and (max-width: 575.98px) {
.sidebar-xl-show .main,
.aside-menu-xl-show .main {
position: relative;
}
.sidebar-xl-show .main::before,
.aside-menu-xl-show .main::before {
position: absolute;
top: 0;
left: 0;
z-index: 1018;
width: 100%;
height: 100%;
content: "";
background: rgba(0, 0, 0, 0.7);
-webkit-animation: opacity 0.25s;
animation: opacity 0.25s;
}
}
.footer-fixed .app-footer {
position: fixed;
right: 0;

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

1796
public/js/client_edit.js vendored

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -60,7 +60,7 @@
/******/ __webpack_require__.p = "/";
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(__webpack_require__.s = 2);
/******/ return __webpack_require__(__webpack_require__.s = 3);
/******/ })
/************************************************************************/
/******/ ({
@ -24887,7 +24887,7 @@ exports.default = {
/***/ }),
/***/ 2:
/***/ 3:
/***/ (function(module, exports, __webpack_require__) {
module.exports = __webpack_require__("./resources/js/src/client/client_list.ts");

View File

@ -60,7 +60,7 @@
/******/ __webpack_require__.p = "/";
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(__webpack_require__.s = 2);
/******/ return __webpack_require__(__webpack_require__.s = 3);
/******/ })
/************************************************************************/
/******/ ({
@ -24887,7 +24887,7 @@ exports.default = {
/***/ }),
/***/ 2:
/***/ 3:
/***/ (function(module, exports, __webpack_require__) {
module.exports = __webpack_require__("./resources/js/src/client/client_list.ts");

16860
public/js/client_show.js vendored Normal file

File diff suppressed because one or more lines are too long

16860
public/js/client_show.min.js vendored Normal file

File diff suppressed because one or more lines are too long

1955
public/js/coreui.js vendored

File diff suppressed because it is too large Load Diff

1955
public/js/coreui.min.js vendored

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,20 @@
/* Allows us to use our native translation easily using {{ trans() }} syntax */
//const _ = require('lodash');
require('../bootstrap');
/* Must be declare in every child view*/
declare var i18n;
import Vue from 'vue';
Vue.component('client-show', require('../components/client/ClientShow.vue'));
window.onload = function () {
const app = new Vue({
el: '#client_show'
});
}

View File

@ -55,8 +55,8 @@
<div class="form-group row">
<label for="name" class="col-sm-3 col-form-label text-right">{{ trans('texts.country') }}</label>
<div class="col-sm-9">
<input type="text" :placeholder="trans('texts.country')" v-model="client.country" class="form-control">
<div v-if="client.errors.has('country')" class="text-danger" v-text="client.errors.get('country')"></div>
<multiselect v-model="billingCountry" :options="options" :placeholder="trans('texts.country')" label="name" track-by="id" @input="onChangeBilling"></multiselect>
<div v-if="client.errors.has('country_id')" class="text-danger" v-text="client.errors.get('country_id')"></div>
</div>
</div>
</div>
@ -106,8 +106,8 @@
<div class="form-group row">
<label for="name" class="col-sm-3 col-form-label text-right">{{ trans('texts.country') }}</label>
<div class="col-sm-9">
<input type="text" :placeholder="trans('texts.country')" v-model="client.shipping_country" class="form-control">
<div v-if="client.errors.has('shipping_country')" class="text-danger" v-text="client.errors.get('shipping_country')"></div>
<multiselect v-model="shippingCountry" :options="options" :placeholder="trans('texts.country')" label="name" track-by="id" @input="onChangeShipping"></multiselect>
<div v-if="client.errors.has('shipping_country_id')" class="text-danger" v-text="client.errors.get('shipping_country_id')"></div>
</div>
</div>
</div>
@ -117,7 +117,60 @@
</template>
<script>
export default {
props: ['client']
}
</script>
import Multiselect from 'vue-multiselect'
export default {
components: {
Multiselect
},
props: ['client', 'countries'],
data () {
return {
options: this.countries
}
},
computed: {
shippingCountry: {
set: function() {
return this.client.shipping_country_id
},
get: function(value) {
return this.countries.filter(obj => {
return obj.id === this.client.shipping_country_id
})
}
},
billingCountry: {
set: function() {
return this.client.country_id
},
get: function(value) {
return this.countries.filter(obj => {
return obj.id === this.client.country_id
})
}
}
},
methods: {
onChangeShipping(value) {
this.client.shipping_country_id = value.id
},
onChangeBilling(value) {
this.client.country_id = value.id
}
}
}
</script>
<style src="vue-multiselect/dist/vue-multiselect.min.css"></style>

View File

@ -32,22 +32,37 @@
</div>
</div>
<div class="form-group row" v-if="contact.custom_value1">
<label for="name" class="col-sm-3 col-form-label text-right">{{ trans('texts.custom_value1') }}</label>
<div class="form-group row" v-if="company.custom_client_contact_label1">
<label for="name" class="col-sm-3 col-form-label text-right">{{ company.custom_client_contact_label1 }}</label>
<div class="col-sm-9">
<input type="text" :placeholder="trans('texts.custom_value1')" v-model="contact.custom_value1" class="form-control">
<div v-if="form.errors.has('contacts.'+error_index+'.custom_value1')" class="text-danger" v-text="form.errors.get('contacts.'+error_index+'.custom_value1')"></div>
</div>
</div>
<div class="form-group row" v-if="contact.custom_value1">
<label for="name" class="col-sm-3 col-form-label text-right">{{ trans('texts.custom_value2') }}</label>
<div class="form-group row" v-if="company.custom_client_contact_label2">
<label for="name" class="col-sm-3 col-form-label text-right">{{ company.custom_client_contact_label2 }}</label>
<div class="col-sm-9">
<input type="text" :placeholder="trans('texts.custom_value2')" v-model="contact.custom_value2" class="form-control">
<input type="text" :placeholder="trans('texts.custom_value1')" v-model="contact.custom_value2" class="form-control">
<div v-if="form.errors.has('contacts.'+error_index+'.custom_value2')" class="text-danger" v-text="form.errors.get('contacts.'+error_index+'.custom_value2')"></div>
</div>
</div>
<div class="form-group row" v-if="company.custom_client_contact_label3">
<label for="name" class="col-sm-3 col-form-label text-right">{{ company.custom_client_contact_label3 }}</label>
<div class="col-sm-9">
<input type="text" :placeholder="trans('texts.custom_value1')" v-model="contact.custom_value3" class="form-control">
<div v-if="form.errors.has('contacts.'+error_index+'.custom_value3')" class="text-danger" v-text="form.errors.get('contacts.'+error_index+'.custom_value3')"></div>
</div>
</div>
<div class="form-group row" v-if="company.custom_client_contact_label4">
<label for="name" class="col-sm-3 col-form-label text-right">{{ company.custom_client_contact_label4 }}</label>
<div class="col-sm-9">
<input type="text" :placeholder="trans('texts.custom_value1')" v-model="contact.custom_value4" class="form-control">
<div v-if="form.errors.has('contacts.'+error_index+'.custom_value4')" class="text-danger" v-text="form.errors.get('contacts.'+error_index+'.custom_value4')"></div>
</div>
</div>
<div class="float-right">
<button type="button" class="btn btn-danger" v-on:click="$emit('remove',contact)"> {{ trans('texts.remove_contact') }}</button>
</div>
@ -56,6 +71,6 @@
<script>
export default {
props: ['contact', 'form', 'error_index']
props: ['company', 'contact', 'form', 'error_index']
}
</script>

View File

@ -32,25 +32,41 @@
</div>
</div>
<div class="form-group row" v-if="client.custom_value1">
<label for="name" class="col-sm-3 col-form-label text-right">{{ trans('texts.custom_value1') }}</label>
<div class="form-group row" v-if="company.custom_client_label1.length >= 1">
<label for="name" class="col-sm-3 col-form-label text-right">{{ company.custom_client_label1 }}</label>
<div class="col-sm-9">
<input type="text" name="custom_value1" :placeholder="trans('texts.custom_value1')" v-model="client.custom_value1" class="form-control" id="custom_value1">
<div v-if="client.errors.has('custom_value1')" class="text-danger" v-text="client.errors.get('custom_value1')"></div>
</div>
</div>
<div class="form-group row">
<label for="name" class="col-sm-3 col-form-label text-right">{{ trans('texts.custom_value2') }}</label>
<div class="form-group row" v-if="company.custom_client_label2.length >= 1">
<label for="name" class="col-sm-3 col-form-label text-right">{{ company.custom_client_label2 }}</label>
<div class="col-sm-9">
<input type="text" name="custom_value2" :placeholder="trans('texts.custom_value2')" v-model="client.custom_value2" class="form-control" id="custom_value2">
<input type="text" name="custom_value2" :placeholder="trans('texts.custom_value1')" v-model="client.custom_value2" class="form-control" id="custom_value2">
<div v-if="client.errors.has('custom_value2')" class="text-danger" v-text="client.errors.get('custom_value2')"></div>
</div>
</div>
<div class="form-group row" v-if="company.custom_client_label3.length >= 1">
<label for="name" class="col-sm-3 col-form-label text-right">{{ company.custom_client_label3 }}</label>
<div class="col-sm-9">
<input type="text" name="custom_value3" :placeholder="trans('texts.custom_value1')" v-model="client.custom_value3" class="form-control" id="custom_value3">
<div v-if="client.errors.has('custom_value3')" class="text-danger" v-text="client.errors.get('custom_value2')"></div>
</div>
</div>
<div class="form-group row" v-if="company.custom_client_label4.length >= 1">
<label for="name" class="col-sm-3 col-form-label text-right">{{ company.custom_client_label2 }}</label>
<div class="col-sm-9">
<input type="text" name="custom_value4" :placeholder="trans('texts.custom_value1')" v-model="client.custom_value4" class="form-control" id="custom_value4">
<div v-if="client.errors.has('custom_value4')" class="text-danger" v-text="client.errors.get('custom_value4')"></div>
</div>
</div>
</div>
</template>
<script>
export default {
props: ['client','errors']
props: ['client','errors', 'company']
}
</script>

View File

@ -6,12 +6,12 @@
<div class="col-md-6">
<div class="card">
<div class="card-header bg-primary2">{{ trans('texts.edit_client') }}</div>
<client-edit :client="form"></client-edit>
<client-edit :client="form" :company="company"></client-edit>
</div>
<div class="card">
<div class="card-header bg-primary2">{{ trans('texts.address') }}</div>
<client-address v-bind:client="form" @copy="copy"></client-address>
<client-address v-bind:client="form" @copy="copy" :countries="countries"></client-address>
</div>
</div>
<!-- End Client Details and Address Column -->
@ -29,6 +29,7 @@
:form="form"
:key="contact.id"
:error_index="key"
:company="company"
@remove="remove"></contact-edit>
</div>
</div>
@ -61,7 +62,7 @@ export default {
form: new Form(<Client>this.clientdata)
}
},
props: ['hashed_id', 'clientdata'],
props: ['hashed_id', 'clientdata', 'countries', 'company'],
beforeMount: function () {
},
methods:{

View File

@ -0,0 +1,92 @@
<template>
<div class="container-fluid">
<div class="row">
<div class="col" style="padding: 0px;">
<div class="float-right">
<div class="btn-group ml-2">
<button type="button" class="btn btn-lg btn-secondary">{{ trans('texts.edit_client') }}</button>
<button type="button" class="btn btn-lg btn-secondary dropdown-toggle dropdown-toggle-split" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<span class="sr-only">Toggle Dropdown</span>
</button>
<div class="dropdown-menu" x-placement="top-start" style="position: absolute; transform: translate3d(189px, -2px, 0px); top: 0px; left: 0px; will-change: transform;">
<a class="dropdown-item" href="#">Action</a>
<a class="dropdown-item" href="#">Another action</a>
<a class="dropdown-item" href="#">Something else here</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="#">Separated link</a>
</div>
</div>
<div class="btn-group ml-2">
<button type="button" class="btn btn-lg btn-primary">{{ trans('texts.view_statement') }}</button>
<button type="button" class="btn btn-lg btn-primary dropdown-toggle dropdown-toggle-split" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<span class="sr-only">Toggle Dropdown</span>
</button>
<div class="dropdown-menu" x-placement="top-start" style="position: absolute; transform: translate3d(189px, -2px, 0px); top: 0px; left: 0px; will-change: transform;">
<a class="dropdown-item" href="#">Action</a>
<a class="dropdown-item" href="#">Another action</a>
<a class="dropdown-item" href="#">Something else here</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="#">Separated link</a>
</div>
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-body">
<div class="row">
<div class="col-sm">
<h3> {{ trans('texts.details') }} </h3>
<p v-if="client.id_number && client.id_number.length >= 1"><b>{{ trans('texts.id_number') }}:</b> {{ client.id_number }}</p>
<p v-if="client.vat_number && client.vat_number.length >= 1"><b>{{ trans('texts.vat_number') }}:</b> {{ client.vat_number }}</p>
<p v-if="client.custom_value1 && client.custom_value1.length >= 1"><b>{{ company.custom_client_label1 }}:</b> {{ client.custom_value1 }}</p>
<p v-if="client.custom_value2 && client.custom_value2.length >= 1"><b>{{ company.custom_client_label2 }}:</b> {{ client.custom_value2 }}</p>
<p v-if="client.custom_value3 && client.custom_value3.length >= 1"><b>{{ company.custom_client_label3 }}:</b> {{ client.custom_value3 }}</p>
<p v-if="client.custom_value4 && client.custom_value4.length >= 1"><b>{{ company.custom_client_label4 }}:</b> {{ client.custom_value4 }}</p>
</div>
<div class="col-sm">
<h3> {{ trans('texts.address') }} </h3>
</div>
<div class="col-sm">
<h3> {{ trans('texts.contacts') }} </h3>
</div>
<div class="col-sm">
<h3> {{ trans('texts.standing') }} </h3>
</div>
</div>
</div>
</div>
</div>
</div>
</template>
<script lang="ts">
export default {
props: ['client', 'company']
}
</script>
<style>
.card { margin-top:50px; }
</style>

View File

@ -13,7 +13,7 @@
<div class="col" style="padding: 0px;">
<ul class="nav nav-pills mb-1" id="pills-tab" role="tablist">
<li class="nav-item">
<a class="nav-link active show" id="pills-home-tab" data-toggle="pill" href="#pills-home" role="tab" aria-controls="pills-home" aria-selected="true"><i class="icon-user"></i> {{ trans('texts.client') }}</a>
<a class="nav-link active show" id="pills-home-tab" data-toggle="pill" href="#pills-home" role="tab" aria-controls="pills-home" aria-selected="true"><i class="icon-user"></i> {{ ctrans('texts.client') }}</a>
</li>
@foreach($pills as $pill)
@ -25,7 +25,7 @@
@endforeach
<li class="nav-item">
<a class="nav-link" id="pills-settings-tab" data-toggle="pill" href="#pills-settings" role="tab" aria-controls="pills-settings" aria-selected="false"><i class="icon-settings"></i> {{ trans('texts.settings') }}</a>
<a class="nav-link" id="pills-settings-tab" data-toggle="pill" href="#pills-settings" role="tab" aria-controls="pills-settings" aria-selected="false"><i class="icon-settings"></i> {{ ctrans('texts.settings') }}</a>
</li>
</ul>
@ -34,7 +34,7 @@
<div class="tab-pane fade active show" id="pills-home" role="tabpanel" aria-labelledby="pills-home-tab" style="background-color: #e4e5e6; padding: 0px;">
<client-edit-form :clientdata="{{ $client }}" :hashed_id="'{{ $hashed_id }}'"></client-edit-form>
<client-edit-form :company="{{ $company }}" :clientdata="{{ $client }}" :hashed_id="'{{ $hashed_id }}'" :countries="{{ $countries }}"></client-edit-form>
</div>

View File

@ -0,0 +1,24 @@
@extends('layouts.master', ['header' => $header])
@section('body')
<main class="main" id="client_show">
<!-- Breadcrumb-->
{{ Breadcrumbs::render('clients.show', $client) }}
<vue-toastr ref="toastr"></vue-toastr>
<div class="container-fluid">
<client-show :client="{{ $client }}" :company="{{ $company }}"></client-show>
</div>
</main>
<script defer src=" {{ mix('/js/client_show.min.js') }}"></script>
@endsection

View File

@ -11,6 +11,11 @@ Breadcrumbs::for('clients', function ($trail) {
$trail->push(trans('texts.clients'), route('clients.index'));
});
Breadcrumbs::for('clients.show', function($trail, $client) {
$trail->parent('clients');
$trail->push($client->name, route('clients.show', $client));
});
Breadcrumbs::for('clients.edit', function($trail, $client) {
$trail->parent('clients');
$trail->push($client->name, route('clients.edit', $client));

2
webpack.mix.js vendored
View File

@ -27,6 +27,7 @@ mix.webpackConfig({
}
});
mix.js('resources/js/src/client/client_show.ts', 'public/js');
mix.js('resources/js/src/client/client_edit.ts', 'public/js');
mix.js('resources/js/src/client/client_create.ts', 'public/js');
mix.js('resources/js/src/client/client_list.ts', 'public/js');
@ -39,6 +40,7 @@ mix.scripts([
mix.minify('public/js/ninja.js');
mix.minify('public/js/coreui.js');
mix.minify('public/js/client_show.js');
mix.minify('public/js/client_edit.js');
mix.minify('public/js/client_create.js');
mix.minify('public/js/client_list.js');