Client Settings (#2711)

* Fixes for travis

* Additional settings variables at the company and client level

* Implement accessor for client settings

* Currency symbol or code setter

* Implement custom JS number and currency formatter

* Implement VueX state management for client settings

* Move settings logic into its own class

* Working on client settings

* client settings

* Move Client Settings helper into PHP

* Move translation helper into its own class

* Working on Client Settings

* fixes for client settings

* Client setting defaults

* fixes for .env

* Fixes for Travis
This commit is contained in:
David Bomba 2019-03-03 08:44:08 +11:00 committed by GitHub
parent 7b5028820d
commit 0d508d67f1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
34 changed files with 31438 additions and 19909 deletions

View File

@ -5,12 +5,25 @@ APP_DEBUG=true
APP_URL=http://localhost
USER_AUTH_PROVIDER=users
CONTACT_AUTH_PROVIDER=contacts
DB_CONNECTION=db-ninja-01
DB_HOST1=127.0.0.1
MULTI_DB_ENABLED=true
DB_HOST1=localhost
DB_DATABASE1=db-ninja-01
DB_USERNAME1=ninja
DB_PASSWORD1=ninja
DB_PORT1=3306
DB_DATABASE1=homestead
DB_USERNAME1=homestead
DB_PASSWORD1=secret
DB_HOST2=localhost
DB_DATABASE2=db-ninja-02
DB_USERNAME2=ninja
DB_PASSWORD2=ninja
DB_PORT1=3306
BROADCAST_DRIVER=log
LOG_CHANNEL=stack
@ -34,4 +47,3 @@ MULTI_DB_ENABLED=true
POSTMARK_API_TOKEN=
GOOGLE_MAPS_API_KEY=
COMPANY_SETTINGS='{"timezone_id":"15","currency_id":"1","language_id":"1","payment_terms":"7"}'

View File

@ -7,22 +7,12 @@ namespace App\DataMapper;
*/
class BaseSettings
{
/**
* Migrates properties of the datamapper classes when new properties are added
*
* @param \stdClass $object Datamapper settings object
* @return \stdClass $object Datamapper settings object updated
*/
public function migrate(\stdClass $object) : \stdClass
public function __construct($obj)
{
$properties = self::default();
foreach($properties as $property)
{
if(!property_exists($object, $property))
$object->{$property} = NULL;
}
return $object;
foreach($obj as $key => $value)
$this->{$key} = $value;
}
}

View File

@ -2,16 +2,60 @@
namespace App\DataMapper;
use App\DataMapper\ClientSettings;
use App\DataMapper\CompanySettings;
use App\Utils\TranslationHelper;
/**
* ClientSettings
*/
class ClientSettings extends BaseSettings
{
/**
* settings which also have a parent company setting
*/
public $timezone_id;
public $date_format_id;
public $datetime_format_id;
public $military_time;
public $start_of_week;
public $financial_year_start;
public $language_id;
public $currency_id;
public $default_task_rate;
public $send_reminders;
public $show_tasks_in_portal;
public $custom_message_dashboard;
public $custom_message_unpaid_invoice;
public $custom_message_paid_invoice;
public $custom_message_unapproved_quote;
public $show_currency_symbol;
public $show_currency_code;
/**
* settings which which are unique to client settings
*/
public $industry_id;
public $size_id;
/**
* Cast object values and return entire class
* prevents missing properties from not being returned
* and always ensure an up to date class is returned
*
* @return \stdClass
*/
public function __construct($obj)
{
parent::__construct($obj);
}
/**
*
* Default Client Settings scaffold
*
* @return \stdClass
*
*/
@ -23,10 +67,47 @@ class ClientSettings extends BaseSettings
'language_id' => NULL,
'currency_id' => NULL,
'payment_terms' => NULL,
'datetime_format_id' => NULL,
'military_time' => NULL,
'date_format_id' => NULL,
'start_of_week' => NULL,
'financial_year_start' => NULL,
'default_task_rate' => NULL,
'send_reminders' => NULL,
'show_tasks_in_portal' => NULL,
'show_currency_symbol' => NULL,
'show_currency_code' => NULL
];
}
/**
* Merges settings from Company to Client
*
* @param \stdClass $company_settings
* @param \stdClass $client_settings
* @return \stdClass of merged settings
*/
public static function buildClientSettings(CompanySettings $company_settings, ClientSettings $client_settings) : ClientSettings
{
foreach($client_settings as $key => $value)
{
if(!isset($client_settings->{$key}) && property_exists($company_settings, $key))
$client_settings->{$key} = $company_settings->{$key};
}
/** Replace ID with Object for presentation in multi-select */
$client_settings->currency_id = TranslationHelper::getCurrencies()->where('id', $client_settings->currency_id)->first();
$client_settings->language_id = TranslationHelper::getLanguages()->where('id', $client_settings->language_id)->first();
$client_settings->payment_terms = TranslationHelper::getPaymentTerms()->where('num_days', $client_settings->payment_terms)->first();
//todo $client_settings->timezone_id
return $client_settings;
}
}

View File

@ -9,9 +9,19 @@ class CompanySettings extends BaseSettings
{
public $timezone_id;
public $date_format_id;
public $datetime_format_id;
public $military_time;
public $start_of_week;
public $financial_year_start;
public $language_id;
public $currency_id;
public $show_currency_symbol;
public $show_currency_code;
public $payment_terms;
public $custom_label1;
public $custom_value1;
public $custom_label2;
@ -44,6 +54,16 @@ class CompanySettings extends BaseSettings
public $custom_expense_label2;
public $custom_expense_label3;
public $custom_expense_label4;
public $default_task_rate;
public $send_reminders;
public $show_tasks_in_portal;
public $custom_message_dashboard;
public $custom_message_unpaid_invoice;
public $custom_message_paid_invoice;
public $custom_message_unapproved_quote;
public $translations;
/**
@ -55,25 +75,34 @@ class CompanySettings extends BaseSettings
*/
public function __construct($obj)
{
foreach($obj as $key => $value)
$this->{$key} = $value;
parent::__construct($obj);
}
/**
* Provides class defaults on init
* @return object
*/
public static function defaults() : object
public static function defaults() : \stdClass
{
$config = json_decode(config('ninja.settings'));
return (object) [
'timezone_id' => $config->timezone_id,
'language_id' => $config->language_id,
'currency_id' => $config->currency_id,
'payment_terms' => $config->payment_terms,
'timezone_id' => config('ninja.i18n.timezone'),
'language_id' => config('ninja.i18n.language'),
'currency_id' => config('ninja.i18n.currency'),
'payment_terms' => config('ninja.i18n.payment_terms'),
'datetime_format_id' => config('ninja.i18n.datetime_format'),
'military_time' => config('ninja.i18n.military_time'),
'date_format_id' => config('ninja.i18n.date_format'),
'start_of_week' => config('ninja.i18n.start_of_week'),
'financial_year_start' => config('ninja.i18n.financial_year_start'),
'default_task_rate' => 0,
'send_reminders' => 1,
'show_tasks_in_portal' => 1,
'show_currency_symbol' => 1,
'show_currency_code' => 0,
'translations' => (object) [],
];
}
}

View File

@ -2,6 +2,7 @@
namespace App\Http\Controllers;
use App\DataMapper\ClientSettings;
use App\Datatables\ClientDatatable;
use App\Datatables\MakesActionMenu;
use App\Factory\ClientFactory;
@ -124,7 +125,7 @@ class ClientController extends Controller
$data = [
'client' => $client,
'settings' => collect($client->settings),
'settings' => collect(ClientSettings::buildClientSettings(auth()->user()->company()->settings_object, $client->client_settings_object)),
'pills' => $this->makeEntityTabMenu(Client::class),
'hashed_id' => $this->encodePrimarykey($client->id),
'company' => auth()->user()->company(),

View File

@ -5,6 +5,7 @@ namespace App\Http\ViewComposers;
use App\Models\Country;
use App\Models\Currency;
use App\Models\PaymentTerm;
use App\Utils\TranslationHelper;
use Cache;
use Illuminate\Support\Str;
use Illuminate\View\View;
@ -21,40 +22,17 @@ class TranslationComposer
*/
public function compose(View $view) :void
{
$view->with('industries', Cache::get('industries')->each(function ($industry) {
$industry->name = trans('texts.industry_'.$industry->name);
})->sortBy(function ($industry) {
return $industry->name;
}));
$view->with('industries', TranslationHelper::getIndustries());
$view->with('countries', Cache::get('countries')->each(function ($country) {
$country->name = trans('texts.country_'.$country->name);
})->sortBy(function ($country) {
return $country->name;
}));
$view->with('countries', TranslationHelper::getCountries());
$view->with('payment_types', Cache::get('paymentTypes')->each(function ($pType) {
$pType->name = trans('texts.payment_type_'.$pType->name);
})->sortBy(function ($pType) {
return $pType->name;
}));
$view->with('payment_types', TranslationHelper::getPaymentTypes());
$view->with('languages', Cache::get('languages')->each(function ($lang) {
$lang->name = trans('texts.lang_'.$lang->name);
})->sortBy(function ($lang) {
return $lang->name;
}));
$view->with('languages', TranslationHelper::getLanguages());
$view->with('currencies', Cache::get('currencies')->each(function ($currency) {
$currency->name = trans('texts.currency_' . Str::slug($currency->name, '_'));
})->sortBy(function ($currency) {
return $currency->name;
}));
$view->with('currencies', TranslationHelper::getCurrencies());
$view->with('payment_terms', PaymentTerm::getCompanyTerms()->map(function ($term){
$term['name'] = trans('texts.payment_terms_net') . ' ' . $term['num_days'];
return $term;
}));
$view->with('payment_terms', TranslationHelper::getPaymentTerms());
}

View File

@ -55,11 +55,15 @@ class CreateUser
'account_id' => $this->account->id,
'is_owner' => 1,
'is_admin' => 1,
'is_locked' => 0,
'permissions' => json_encode([]),
'settings' => json_encode(DefaultSettings::userSettings()),
]);
event(new UserCreated($user));
return $user;
}
}

View File

@ -2,6 +2,7 @@
namespace App\Models;
use App\DataMapper\ClientSettings;
use App\Models\Company;
use App\Models\Country;
use App\Utils\Traits\MakesHash;
@ -17,7 +18,9 @@ class Client extends BaseModel
protected $presenter = 'App\Models\Presenters\ClientPresenter';
//protected $appends = ['client_id'];
protected $appends = [
'client_settings_object'
];
protected $guarded = [
'id',
@ -40,6 +43,11 @@ class Client extends BaseModel
//protected $dates = ['deleted_at'];
public function getClientSettingsObjectAttribute()
{
return new ClientSettings($this->settings);
}
public function getHashedIdAttribute()
{
return $this->encodePrimaryKey($this->id);

View File

@ -35,7 +35,9 @@ class Company extends BaseModel
'company_id'
];
protected $appends = ['settings_object'];
protected $appends = [
'settings_object'
];
protected $casts = [
'settings' => 'object'

View File

@ -0,0 +1,64 @@
<?php
namespace App\Utils;
use App\Models\PaymentTerm;
use Cache;
use Illuminate\Support\Str;
class TranslationHelper
{
public static function getIndustries()
{
return Cache::get('industries')->each(function ($industry) {
$industry->name = ctrans('texts.industry_'.$industry->name);
})->sortBy(function ($industry) {
return $industry->name;
});
}
public static function getCountries()
{
return Cache::get('countries')->each(function ($country) {
$country->name = ctrans('texts.country_'.$country->name);
})->sortBy(function ($country) {
return $country->name;
});
}
public static function getPaymentTypes()
{
return Cache::get('paymentTypes')->each(function ($pType) {
$pType->name = ctrans('texts.payment_type_'.$pType->name);
})->sortBy(function ($pType) {
return $pType->name;
});
}
public static function getLanguages()
{
return Cache::get('languages')->each(function ($lang) {
$lang->name = ctrans('texts.lang_'.$lang->name);
})->sortBy(function ($lang) {
return $lang->name;
});
}
public static function getCurrencies()
{
return Cache::get('currencies')->each(function ($currency) {
$currency->name = ctrans('texts.currency_' . Str::slug($currency->name, '_'));
})->sortBy(function ($currency) {
return $currency->name;
});
}
public static function getPaymentTerms()
{
return PaymentTerm::getCompanyTerms()->map(function ($term){
$term['name'] = ctrans('texts.payment_terms_net') . ' ' . $term['num_days'];
return $term;
});
}
}

44
composer.lock generated
View File

@ -865,16 +865,16 @@
},
{
"name": "laravel/framework",
"version": "v5.7.26",
"version": "v5.7.27",
"source": {
"type": "git",
"url": "https://github.com/laravel/framework.git",
"reference": "ca3bc9769969e8af3bd9878a3e0242051c74dae4"
"reference": "688fbfa889d43f392825b381ad3981847120fdfa"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/laravel/framework/zipball/ca3bc9769969e8af3bd9878a3e0242051c74dae4",
"reference": "ca3bc9769969e8af3bd9878a3e0242051c74dae4",
"url": "https://api.github.com/repos/laravel/framework/zipball/688fbfa889d43f392825b381ad3981847120fdfa",
"reference": "688fbfa889d43f392825b381ad3981847120fdfa",
"shasum": ""
},
"require": {
@ -1007,7 +1007,7 @@
"framework",
"laravel"
],
"time": "2019-02-12T14:52:21+00:00"
"time": "2019-02-19T14:37:47+00:00"
},
{
"name": "laravel/nexmo-notification-channel",
@ -1297,7 +1297,7 @@
{
"name": "Luís Otávio Cobucci Oblonczyk",
"email": "lcobucci@gmail.com",
"role": "developer"
"role": "Developer"
}
],
"description": "A simple library to work with JSON Web Token and JSON Web Signature",
@ -1640,16 +1640,16 @@
},
{
"name": "nikic/php-parser",
"version": "v4.2.0",
"version": "v4.2.1",
"source": {
"type": "git",
"url": "https://github.com/nikic/PHP-Parser.git",
"reference": "594bcae1fc0bccd3993d2f0d61a018e26ac2865a"
"reference": "5221f49a608808c1e4d436df32884cbc1b821ac0"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/594bcae1fc0bccd3993d2f0d61a018e26ac2865a",
"reference": "594bcae1fc0bccd3993d2f0d61a018e26ac2865a",
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/5221f49a608808c1e4d436df32884cbc1b821ac0",
"reference": "5221f49a608808c1e4d436df32884cbc1b821ac0",
"shasum": ""
},
"require": {
@ -1687,7 +1687,7 @@
"parser",
"php"
],
"time": "2019-01-12T16:31:37+00:00"
"time": "2019-02-16T20:54:15+00:00"
},
{
"name": "nwidart/laravel-modules",
@ -4974,16 +4974,16 @@
},
{
"name": "phpunit/php-timer",
"version": "2.0.0",
"version": "2.1.1",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-timer.git",
"reference": "8b8454ea6958c3dee38453d3bd571e023108c91f"
"reference": "8b389aebe1b8b0578430bda0c7c95a829608e059"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/8b8454ea6958c3dee38453d3bd571e023108c91f",
"reference": "8b8454ea6958c3dee38453d3bd571e023108c91f",
"url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/8b389aebe1b8b0578430bda0c7c95a829608e059",
"reference": "8b389aebe1b8b0578430bda0c7c95a829608e059",
"shasum": ""
},
"require": {
@ -4995,7 +4995,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.0-dev"
"dev-master": "2.1-dev"
}
},
"autoload": {
@ -5019,7 +5019,7 @@
"keywords": [
"timer"
],
"time": "2018-02-01T13:07:23+00:00"
"time": "2019-02-20T10:12:59+00:00"
},
{
"name": "phpunit/php-token-stream",
@ -5072,16 +5072,16 @@
},
{
"name": "phpunit/phpunit",
"version": "7.5.5",
"version": "7.5.6",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
"reference": "23a200a60552cb9ba483a8d1e106c70fb0be0bb9"
"reference": "09c85e14994df92e5ff1f5ec0b481bdb7d3d3df9"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/23a200a60552cb9ba483a8d1e106c70fb0be0bb9",
"reference": "23a200a60552cb9ba483a8d1e106c70fb0be0bb9",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/09c85e14994df92e5ff1f5ec0b481bdb7d3d3df9",
"reference": "09c85e14994df92e5ff1f5ec0b481bdb7d3d3df9",
"shasum": ""
},
"require": {
@ -5152,7 +5152,7 @@
"testing",
"xunit"
],
"time": "2019-02-15T14:00:34+00:00"
"time": "2019-02-18T09:24:50+00:00"
},
{
"name": "sebastian/code-unit-reverse-lookup",

View File

@ -31,16 +31,20 @@ return [
],
'i18n' => [
'timezone' => env('DEFAULT_TIMEZONE', 'US/Eastern'),
'timezone' => env('DEFAULT_TIMEZONE', 15),
'country' => env('DEFAULT_COUNTRY', 840), // United Stated
'currency' => env('DEFAULT_CURRENCY', 1), //USD
'language' => env('DEFAULT_LANGUAGE', 1), //en
'date_format' => env('DEFAULT_DATE_FORMAT', 'M j, Y'),
'date_picker_format' => env('DEFAULT_DATE_PICKER_FORMAT', 'M d, yyyy'),
'datetime_format' => env('DEFAULT_DATETIME_FORMAT', 'F j, Y g:i a'),
'datetime_momemnt_format' => env('DEFAULT_DATETIME_MOMENT_FORMAT', 'MMM D, YYYY h:mm:ss a'),
'datetime_moment_format' => env('DEFAULT_DATETIME_MOMENT_FORMAT', 'MMM D, YYYY h:mm:ss a'),
'locale' => env('DEFAULT_LOCALE', 'en'),
'map_zoom' => env('DEFAULT_MAP_ZOOM', 10),
'payment_terms' => env('DEFAULT_PAYMENT_TERMS', 7),
'military_time' => env('MILITARY_TIME', 0),
'start_of_week' => env('START_OF_WEEK',1),
'financial_year_start' => env('FINANCIAL_YEAR_START', '2000-01-01')
],
'testvars' => [
@ -54,6 +58,5 @@ return [
'from_name' => env('MAIL_FROM_NAME'),
],
'settings' => env('COMPANY_SETTINGS', '{"timezone_id":"15","currency_id":"1","language_id":"1","payment_terms":"7"}'),
];

View File

@ -1,6 +1,5 @@
<?php
use App\DataMapper\CompanySettings;
use App\DataMapper\DefaultSettings;
use App\Models\Account;
use App\Models\Client;

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

1184
public/js/client_edit.js vendored

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

5446
public/js/client_list.js vendored

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

5376
public/js/client_show.js vendored

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

2031
public/js/coreui.js vendored

File diff suppressed because it is too large Load Diff

2031
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

@ -1,17 +1,17 @@
{
"/js/client_list.js": "/js/client_list.js?id=88d90244e855305bcfff",
"/js/client_edit.js": "/js/client_edit.js?id=009c9400b6521af01875",
"/js/client_show.js": "/js/client_show.js?id=be7307363fb5779cdb24",
"/js/client_create.js": "/js/client_create.js?id=ca114ece0bbf0eb79d38",
"/js/localization.js": "/js/localization.js?id=85f6f7672f9cf65d9745",
"/js/coreui.js": "/js/coreui.js?id=9cfda6dd6df9aaeea844",
"/js/client_list.js": "/js/client_list.js?id=99c07efbdd99c2067121",
"/js/client_edit.js": "/js/client_edit.js?id=b35ce910e611127e5d22",
"/js/client_show.js": "/js/client_show.js?id=a05e2671757098f97e6a",
"/js/client_create.js": "/js/client_create.js?id=a171cd9d2fbb0b420e5f",
"/js/localization.js": "/js/localization.js?id=a0ce543a4564efbf4cc9",
"/js/coreui.js": "/js/coreui.js?id=2b664965e92e45eb2590",
"/js/ninja.min.js": "/js/ninja.min.js?id=d41d8cd98f00b204e980",
"/js/coreui.min.js": "/js/coreui.min.js?id=9cfda6dd6df9aaeea844",
"/js/client_show.min.js": "/js/client_show.min.js?id=be7307363fb5779cdb24",
"/js/client_edit.min.js": "/js/client_edit.min.js?id=009c9400b6521af01875",
"/js/client_create.min.js": "/js/client_create.min.js?id=ca114ece0bbf0eb79d38",
"/js/client_list.min.js": "/js/client_list.min.js?id=88d90244e855305bcfff",
"/js/localization.min.js": "/js/localization.min.js?id=85f6f7672f9cf65d9745",
"/css/ninja.css": "/css/ninja.css?id=28421bc494c5086ac359",
"/css/ninja.min.css": "/css/ninja.min.css?id=28421bc494c5086ac359"
"/js/coreui.min.js": "/js/coreui.min.js?id=2b664965e92e45eb2590",
"/js/client_show.min.js": "/js/client_show.min.js?id=a05e2671757098f97e6a",
"/js/client_edit.min.js": "/js/client_edit.min.js?id=b35ce910e611127e5d22",
"/js/client_create.min.js": "/js/client_create.min.js?id=a171cd9d2fbb0b420e5f",
"/js/client_list.min.js": "/js/client_list.min.js?id=99c07efbdd99c2067121",
"/js/localization.min.js": "/js/localization.min.js?id=a0ce543a4564efbf4cc9",
"/css/ninja.css": "/css/ninja.css?id=10820d7178a90f2a12c3",
"/css/ninja.min.css": "/css/ninja.min.css?id=10820d7178a90f2a12c3"
}

View File

@ -39,17 +39,17 @@
<div style="margin-top:1px; line-height:1.4; color:#939393;">{{ trans('help.client_currency') }}</div>
</label>
<div class="col-sm-7">
<multiselect v-model="settings_currency_id" :options="options_currency" label="name" track-by="id" :placeholder="placeHolderCurrency()" :allow-empty="true"></multiselect>
<multiselect v-model="settings.currency_id" :options="options_currency" label="name" track-by="id" :allow-empty="true" @select="currencySettingChange()"></multiselect>
</div>
</div>
<div class="form-group row client_form d-flex justify-content-center">
<div class="form-check form-check-inline">
<input class="form-check-input" id="inline-radio1" type="radio" value="1" name="show_currency_symbol" v-model="settings.show_currency_symbol">
<label class="form-check-label" for="show_currency_symbol-radio1">{{ trans('texts.currency_symbol') }}:</label>
<input class="form-check-input" id="inline-radio1" type="radio" name="symbol" value="1" v-model="settings.show_currency_symbol" @click="setCurrencySymbol()">
<label class="form-check-label" for="show_currency_symbol-radio1">{{ trans('texts.currency_symbol') }}: {{ currency_symbol_example }}</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" id="inline-radio2" type="radio" value="1" name="show_currency_code" v-model="settings.show_currency_code">
<label class="form-check-label" for="show_currency_code">{{ trans('texts.currency_code') }}:</label>
<input class="form-check-input" id="inline-radio2" type="radio" name="code" value="1" v-model="settings.show_currency_code" @click="setCurrencyCode()">
<label class="form-check-label" for="show_currency_code">{{ trans('texts.currency_code') }}: {{ currency_code_example }}</label>
</div>
</div>
<div class="form-group row client_form">
@ -58,7 +58,7 @@
<div style="margin-top:1px; line-height:1.4; color:#939393;">{{ trans('help.client_language')}}</div>
</label>
<div class="col-sm-7">
<multiselect v-model="settings_language_id" :options="options_language" :placeholder="placeHolderLanguage()" label="name" track-by="id" :allow-empty="true"></multiselect>
<multiselect v-model="settings.language_id" :options="options_language" :placeholder="placeHolderLanguage()" label="name" track-by="id" :allow-empty="true"></multiselect>
</div>
</div>
<div class="form-group row client_form">
@ -67,7 +67,7 @@
<div style="margin-top:1px; line-height:1.4; color:#939393;">{{ trans('help.client_payment_terms')}}</div>
</label>
<div class="col-sm-7">
<multiselect v-model="settings_payment_terms" :options="options_payment_term" :placeholder="placeHolderPaymentTerm()" label="name" track-by="num_days" :allow-empty="true"></multiselect>
<multiselect v-model="settings.payment_terms" :options="options_payment_term" :placeholder="placeHolderPaymentTerm()" label="name" track-by="num_days" :allow-empty="true"></multiselect>
</div>
</div>
@ -85,7 +85,7 @@
<label for="name" class="col-sm-5 col-form-label text-left">{{ trans('texts.send_client_reminders') }}</label>
<div class="col-sm-7">
<label class="switch switch-label switch-pill switch-info">
<input class="switch-input" type="checkbox" checked="" v-model="settings.send_client_reminders">
<input class="switch-input" type="checkbox" checked="" v-model="settings.send_reminders">
<span class="switch-slider" data-checked="" data-unchecked=""></span>
</label>
</div>
@ -115,7 +115,7 @@
<div style="margin-top:1px; line-height:1.4; color:#939393;">{{ trans('help.client_dashboard')}}</div>
</label>
<div class="col-sm-7">
<textarea class="form-control" id="textarea-input" label="dashboard" v-model="settings.dashboard"rows="9" placeholder=""></textarea>
<textarea class="form-control" id="textarea-input" label="dashboard" v-model="settings.custom_message_dashboard"rows="9" :placeholder="placeHolderMessage('custom_message_dashboard')"></textarea>
</div>
</div>
<div class="form-group row client_form">
@ -124,7 +124,7 @@
<div style="margin-top:1px; line-height:1.4; color:#939393;">{{ trans('help.client_unpaid_invoice')}}</div>
</label>
<div class="col-sm-7">
<textarea class="form-control" id="textarea-input" label="unpaid_invoice" v-model="settings.unpaid_invoice"rows="9" placeholder=""></textarea>
<textarea class="form-control" id="textarea-input" label="unpaid_invoice" v-model="settings.custom_message_unpaid_invoice"rows="9" :placeholder="placeHolderMessage('custom_message_unpaid_invoice')"></textarea>
</div>
</div>
<div class="form-group row client_form">
@ -133,7 +133,7 @@
<div style="margin-top:1px; line-height:1.4; color:#939393;">{{trans('help.client_paid_invoice')}}</div>
</label>
<div class="col-sm-7">
<textarea class="form-control" id="textarea-input" label="paid_invoice" v-model="settings.paid_invoice" rows="9" placeholder=""></textarea>
<textarea class="form-control" id="textarea-input" label="paid_invoice" v-model="settings.custom_message_paid_invoice" rows="9" :placeholder="placeHolderMessage('custom_message_paid_invoice')"></textarea>
</div>
</div>
<div class="form-group row client_form">
@ -142,7 +142,7 @@
<div style="margin-top:1px; line-height:1.4; color:#939393;">{{trans('help.client_unapproved_quote')}}</div>
</label>
<div class="col-md-7">
<textarea class="form-control" id="textarea-input" label="unapproved_quote" v-model="settings.unapproved_quote" rows="9" placeholder=""></textarea>
<textarea class="form-control" id="textarea-input" label="unapproved_quote" v-model="settings.custom_message_unapproved_quote" rows="9" :placeholder="placeHolderMessage('custom_message_unapproved_quote')"></textarea>
</div>
</div>
@ -158,7 +158,7 @@
<div class="form-group row client_form">
<label for="name" class="col-sm-5 col-form-label text-left">{{ trans('texts.industry') }}</label>
<div class="col-sm-7">
<multiselect :options="options_industry" :placeholder="placeHolderIndustry()" label="name" track-by="id" v-model="settings.language_id"></multiselect>
<multiselect :options="options_industry" :placeholder="placeHolderIndustry()" label="name" track-by="id" v-model="settings.industry_id"></multiselect>
</div>
</div>
<div class="form-group row client_form">
@ -186,12 +186,12 @@
<script lang="ts">
import Vue from 'vue';
import { Affix } from 'vue-affix';
var VueScrollactive = require('vue-scrollactive');
import Vue from 'vue'
import { Affix } from 'vue-affix'
var VueScrollactive = require('vue-scrollactive')
import NumberFormat from '../../utils/number-format'
import Multiselect from 'vue-multiselect'
import ClientSettings from '../../utils/client-settings'
Vue.use(VueScrollactive);
@ -202,115 +202,143 @@ export default {
},
data () {
return {
options_currency: Object.keys(this.currencies).map(i => this.currencies[i]),
options_language: Object.keys(this.languages).map(i => this.languages[i]),
options_payment_term: Object.keys(this.payment_terms).map(i => this.payment_terms[i]),
options_industry: Object.keys(this.industries).map(i => this.industries[i]),
options_size: this.sizes,
settings: this.client_settings
options_currency: Object.keys(this.currencies).map(i => this.currencies[i]),
options_language: Object.keys(this.languages).map(i => this.languages[i]),
options_payment_term: Object.keys(this.payment_terms).map(i => this.payment_terms[i]),
options_industry: Object.keys(this.industries).map(i => this.industries[i]),
options_size: this.sizes,
settings: this.client_settings
}
},
props: ['client_settings', 'currencies', 'languages', 'payment_terms', 'industries', 'sizes', 'company'],
mounted() {
},
//console.dir(this.settings)
this.updateCurrencyExample()
},
computed: {
settings_currency_id: {
set: function(value){
this.setObjectValue('currency_id', value.id)
},
get: function(){
return this.options_currency.filter(obj => {
return obj.id == this.settings.currency_id
})
}
},
settings_language_id: {
set: function(value) {
this.setObjectValue('language_id', value.id)
},
currency_code_example: {
get: function() {
return this.options_language.filter(obj => {
return obj.id == this.settings.language_id
})
return this.updateCurrencyExample(false)
},
set: function() {
}
},
settings_payment_terms: {
set: function(value) {
if(value === null)
this.setObjectValue('payment_terms', null)
else
this.setObjectValue('payment_terms', value.num_days)
},
currency_symbol_example: {
get: function() {
return this.options_payment_term.filter(obj => {
return obj.num_days == this.settings.payment_terms
})
return this.updateCurrencyExample(true)
},
set: function() {
}
}
},
methods: {
onItemChanged(event, currentItem, lastActiveItem) {
// your logic
},
setObjectValue(key, value){
setObjectValue(key, value){
if(value === null)
this.settings[key] = null
else
this.settings[key] = value
},
placeHolderCurrency(){
if(value === null)
this.settings[key] = null
else
this.settings[key] = value
var currency = this.options_currency.filter(obj => {
return obj.id == this.company.settings.currency_id
})
},
placeHolderCurrency(){
if(currency.length >= 1)
return currency[0].name
else
return Vue.prototype.trans('texts.currency_id')
var currency = this.options_currency.find(obj => {
return obj.id == this.company.settings_object.currency_id
})
},
placeHolderPaymentTerm(){
if(currency)
return currency.name
else
return Vue.prototype.trans('texts.currency_id')
var payment_terms = this.payment_terms.filter(obj => {
return obj.num_days == this.company.settings.payment_terms
})
},
placeHolderPaymentTerm(){
if(payment_terms.length >= 1)
return payment_terms[0].name
else
return Vue.prototype.trans('texts.payment_terms')
var payment_terms = this.payment_terms.find(obj => {
return obj.num_days == this.company.settings_object.payment_terms
})
},
placeHolderIndustry(){
if(payment_terms)
return payment_terms.name
else
return Vue.prototype.trans('texts.payment_terms')
return Vue.prototype.trans('texts.industry_id')
},
placeHolderIndustry(){
},
placeHolderSize(){
return Vue.prototype.trans('texts.industry_id')
return Vue.prototype.trans('texts.size_id')
},
placeHolderSize(){
},
placeHolderLanguage(){
return Vue.prototype.trans('texts.size_id')
var language = this.languages.filter(obj => {
return obj.id == this.company.settings.language_id
})
},
placeHolderLanguage(){
if(language.length >= 1)
return language[0].name
var language = this.languages.find(obj => {
return obj.id == this.company.settings_object.language_id
})
if(language)
return language.name
else
return Vue.prototype.trans('texts.language_id')
}
},
placeHolderMessage(message_setting : string) {
if(this.company.settings_object[message_setting] && this.company.settings_object[message_setting].length >=1) {
return this.company.settings_object[message_setting]
}
},
setCurrencyCode() {
this.settings.show_currency_symbol = false;
this.settings.show_currency_code = true;
this.currencySettingChange()
},
setCurrencySymbol() {
this.settings.show_currency_symbol = true;
this.settings.show_currency_code = false;
this.currencySettingChange()
},
updateCurrencyExample(currency_symbol) {
var currency = this.options_currency.find(obj => {
return obj.id == this.company.settings_object.currency_id
})
var language = this.languages.find(obj => {
return obj.id == this.company.settings_object.language_id
})
if(this.settings_language_id)
language = this.settings_language_id
if(this.settings_currency_id)
currency = this.settings_currency_id
return new NumberFormat(1000, currency, currency_symbol, language).format()
},
currencySettingChange() {
this.currency_code_example = this.updateCurrencyExample(false)
this.currency_symbol_example = this.updateCurrencyExample(true)
console.dir(this.currency_symbol_example)
console.dir(this.currency_code_example)
}
}

View File

@ -0,0 +1,21 @@
export default class ClientSettings {
timezone_id:number
language_id:number
currency_id:number
default_task_rate:number
send_reminders:boolean
show_tasks_in_portal:boolean
custom_message_dashboard:string
custom_message_unpaid_invoice:string
custom_message_paid_invoice:string
custom_message_unapproved_quote:string
show_currency_symbol:boolean
show_currency_code:boolean
industry_id:number
size_id:number
constructor(init?:Partial<ClientSettings>) {
(<any>Object).assign(this, init);
}
}

View File

@ -0,0 +1,129 @@
import CSettings from '../models/client-settings-model';
export default class ClientSettings {
client_settings:any
company_settings:any
settings:any
languages:any
currencies:any
payment_terms:any
industries:any
sizes:any
/**
* Create a new Client Settings instance.
*/
constructor(
client_settings: any,
company_settings: any,
languages: any,
currencies: any,
payment_terms: any,
industries: any,
sizes: any
) {
this.client_settings = client_settings
this.company_settings = company_settings
this.languages = languages
this.currencies = currencies
this.payment_terms = payment_terms
this.industries = industries
this.sizes = sizes
}
/**
* Build Settings object
*/
build() {
this.settings = new CSettings(this.client_settings)
if (this.client_settings.currency_id !== null) {
this.settings.currency_id = this.currencies.find(obj => {
return obj.id == this.client_settings.currency_id
})
}
if(this.client_settings.show_currency_symbol == null)
this.settings.show_currency_symbol = this.company_settings.show_currency_symbol
if(this.client_settings.show_currency_code == null)
this.settings.show_currency_code = this.company_settings.show_currency_code
if (this.client_settings.language_id !== null) {
this.settings.language_id = this.languages.find(obj => {
return obj.id == this.client_settings.language_id
})
}
if (this.client_settings.payment_terms !== null) {
this.settings.payment_terms = this.payment_terms.find(obj => {
return obj.id == this.client_settings.payment_terms
})
}
this.settings.default_task_rate = this.client_settings.default_task_rate ? this.client_settings.default_task_rate : this.company_settings.default_task_rate
if(this.client_settings.send_reminders)
this.settings.send_reminders = this.client_settings.send_reminders
else
this.settings.send_reminders = this.company_settings.send_reminders
if(this.client_settings.show_tasks_in_portal)
this.settings.show_tasks_in_portal = this.client_settings.show_tasks_in_portal
else
this.settings.show_tasks_in_portal = this.company_settings.show_tasks_in_portal
if(this.client_settings.custom_message_dashboard && this.client_settings.custom_message_dashboard.length >=1)
this.settings.custom_message_dashboard = this.client_settings.custom_message_dashboard
else
this.settings.custom_message_dashboard = this.company_settings.custom_message_dashboard
if(this.client_settings.custom_message_unpaid_invoice && this.client_settings.custom_message_unpaid_invoice.length >=1)
this.settings.custom_message_unpaid_invoice = this.client_settings.custom_message_unpaid_invoice
else
this.settings.custom_message_unpaid_invoice = this.company_settings.custom_message_unpaid_invoice
if(this.client_settings.custom_message_paid_invoice && this.client_settings.custom_message_paid_invoice.length >=1)
this.settings.custom_message_paid_invoice = this.client_settings.custom_message_paid_invoice
else
this.settings.custom_message_paid_invoice = this.company_settings.custom_message_paid_invoice
if(this.client_settings.custom_message_unapproved_quote && this.client_settings.custom_message_unapproved_quote.length >=1)
this.settings.custom_message_unapproved_quote = this.client_settings.custom_message_unapproved_quote
else
this.settings.custom_message_unapproved_quote = this.company_settings.custom_message_unapproved_quote
if (this.client_settings.industry_id !== null) {
this.settings.industry_id = this.industries.find(obj => {
return obj.id == this.client_settings.industry_id
})
}
if (this.client_settings.size_id !== null) {
this.settings.size_id = this.sizes.find(obj => {
return obj.id == this.client_settings.size_id
})
}
return this.settings
}
}

View File

@ -0,0 +1,34 @@
export default class NumberFormat {
amount:any
currency:any
symbol_decorator:boolean
language:any
/**
* Create a new Number Format instance.
*/
constructor(amount: any, currency: any, symbol_decorator: boolean, language: any) {
this.amount = amount
this.currency = currency
this.symbol_decorator = symbol_decorator
this.language = language
}
format() {
this.amount = new Intl.NumberFormat(this.language.locale.replace("_", "-"), {style: 'decimal',currency: this.currency.code} ).format(this.amount)
if(this.symbol_decorator)
this.amount = this.currency.symbol + this.amount
else
this.amount = this.amount + " " + this.currency.code
return this.amount
}
}

View File

@ -26,7 +26,7 @@ class BaseSettingsTest extends TestCase
{
$blank_object = new \stdClass;
$this->assertEquals(count(get_object_vars($this->migrate($blank_object))), 4);
$this->assertEquals(count(get_object_vars($this->migrate($blank_object))), 14);
}
public function testPropertyNamesExist()

View File

@ -0,0 +1,54 @@
<?php
namespace Tests\Unit;
use App\DataMapper\ClientSettings;
use App\DataMapper\CompanySettings;
use Tests\TestCase;
/**
* @test
* @covers App\DataMapper\ClientSettings
*/
class CompanyObjectTest extends TestCase
{
public function setUp()
{
parent::setUp();
$this->client_settings = ClientSettings::defaults();
$this->company_settings = CompanySettings::defaults();
}
public function buildClientSettings()
{
foreach($this->client_settings as $key => $value)
{
if(!isset($this->client_settings->{$key}))
$this->client_settings->{$key} = $this->company_settings->{$key};
}
return $this->client_settings;
}
public function testProperties()
{
$build_client_settings = $this->buildClientSettings();
$this->assertEquals($build_client_settings->timezone_id, 15);
$this->assertEquals($build_client_settings->currency_id, 1);
$this->assertEquals($build_client_settings->language_id, 1);
$this->assertEquals($build_client_settings->payment_terms, 7);
}
}