diff --git a/app/DataMapper/DefaultSettings.php b/app/DataMapper/DefaultSettings.php index 023154cba77e..89a8a6bff6a8 100644 --- a/app/DataMapper/DefaultSettings.php +++ b/app/DataMapper/DefaultSettings.php @@ -23,12 +23,14 @@ class DefaultSettings 'datatable' => (object) [ 'per_page' => self::$per_page, 'column_visibility' => (object)[ + '__checkbox' => true, 'name' => true, 'contact' => true, 'email' => true, 'client_created_at' => true, 'last_login' => true, 'balance' => true, + '__component:client-actions' => true ] ] ]; diff --git a/app/Datatables/ClientDatatable.php b/app/Datatables/ClientDatatable.php index f4b0ef18dede..56d04060293d 100644 --- a/app/Datatables/ClientDatatable.php +++ b/app/Datatables/ClientDatatable.php @@ -2,7 +2,6 @@ namespace App\Datatables; -use App\Filters\ClientFilters; use App\Models\Client; use App\Utils\Traits\MakesHash; use App\Utils\Traits\UserSessionAttributes; @@ -16,28 +15,59 @@ class ClientDatatable extends EntityDatatable use MakesHash; use MakesActionMenu; - protected $filter; - - public function __construct(ClientFilters $filter) - { - $this->filter = $filter; - } /** - * Returns paginated results for the datatable - * - */ + * ?sort=&page=1&per_page=20 + */ public function query(Request $request, int $company_id) { - $data = $this->filter->apply($company_id)->paginate($request->input('per_page')); + /** + * + * $sort_col is returned col|asc + * needs to be exploded + * + */ + $sort_col = explode("|", $request->input('sort')); - return response()->json($this->buildActionColumn($data), 200); + $data = $this->find($company_id, $request->input('filter')) + ->orderBy($sort_col[0], $sort_col[1]) + ->paginate($request->input('per_page')); + + return response() + ->json($this->buildActionColumn($data), 200); } - - private function find(int $company_id, $userId = false) + + private function find(int $company_id, $filter, $userId = false) { - /* + $query = DB::table('clients') + ->join('companies', 'companies.id', '=', 'clients.company_id') + ->join('client_contacts', 'client_contacts.client_id', '=', 'clients.id') + ->where('clients.company_id', '=', $company_id) + ->where('client_contacts.is_primary', '=', true) + ->where('client_contacts.deleted_at', '=', null) + //->whereRaw('(clients.name != "" or contacts.first_name != "" or contacts.last_name != "" or contacts.email != "")') // filter out buy now invoices + ->select( + DB::raw('COALESCE(clients.currency_id, companies.currency_id) currency_id'), + DB::raw('COALESCE(clients.country_id, companies.country_id) country_id'), + DB::raw("CONCAT(COALESCE(client_contacts.first_name, ''), ' ', COALESCE(client_contacts.last_name, '')) contact"), + 'clients.id', + 'clients.name', + 'clients.private_notes', + 'client_contacts.first_name', + 'client_contacts.last_name', + 'clients.balance', + 'clients.last_login', + 'clients.created_at', + 'clients.created_at as client_created_at', + 'client_contacts.phone', + 'client_contacts.email', + 'clients.deleted_at', + 'clients.is_deleted', + 'clients.user_id', + 'clients.id_number' + ); +/* if(Auth::user()->account->customFieldsOption('client1_filter')) { $query->addSelect('clients.custom_value1'); } @@ -47,7 +77,16 @@ class ClientDatatable extends EntityDatatable } $this->applyFilters($query, ENTITY_CLIENT); - +*/ + if ($filter) { + $query->where(function ($query) use ($filter) { + $query->where('clients.name', 'like', '%'.$filter.'%') + ->orWhere('clients.id_number', 'like', '%'.$filter.'%') + ->orWhere('client_contacts.first_name', 'like', '%'.$filter.'%') + ->orWhere('client_contacts.last_name', 'like', '%'.$filter.'%') + ->orWhere('client_contacts.email', 'like', '%'.$filter.'%'); + }); +/* if(Auth::user()->account->customFieldsOption('client1_filter')) { $query->orWhere('clients.custom_value1', 'like' , '%'.$filter.'%'); } @@ -55,9 +94,9 @@ class ClientDatatable extends EntityDatatable if(Auth::user()->account->customFieldsOption('client2_filter')) { $query->orWhere('clients.custom_value2', 'like' , '%'.$filter.'%'); } - - } */ + } + if ($userId) { $query->where('clients.user_id', '=', $userId); } @@ -138,7 +177,7 @@ class ClientDatatable extends EntityDatatable 'name' => '__checkbox', 'title' => '', 'titleClass' => 'center aligned', - 'visible' => true, + 'visible' => $visible->__checkbox, 'dataClass' => 'center aligned' ], [ diff --git a/app/Filters/ClientFilters.php b/app/Filters/ClientFilters.php index 721d9278f6e7..895a60ba5f50 100644 --- a/app/Filters/ClientFilters.php +++ b/app/Filters/ClientFilters.php @@ -2,149 +2,64 @@ namespace App\Filters; -use Illuminate\Database\Query\Builder; -use Illuminate\Support\Facades\DB; -use Illuminate\Support\Facades\Log; +use Illuminate\Database\Eloquent\Builder; -/** - * ClientFilters - */ class ClientFilters extends QueryFilters { /** - * Filter by balance + * Filters by due_date * - * @param string $balance - * @return Illuminate\Database\Query\Builder + * @param string $due_date + * @return Builder */ - public function balance(string $balance): Builder + public function balance($balance) { $parts = $this->split($balance); return $this->builder->where('balance', $parts->operator, $parts->value); } - /** - * Filter between balances - * - * @param string balance - * @return Illuminate\Database\Query\Builder - */ - public function between_balance(string $balance): Builder + public function between_balance($balance) { $parts = explode(":", $balance); return $this->builder->whereBetween('balance', [$parts[0], $parts[1]]); } - /** - * Filter based on search text - * - * @param string query filter - * @return Illuminate\Database\Query\Builder - */ - public function filter(string $filter = '') : Builder - { - if(strlen($filter) == 0) - return $this->builder; - return $this->builder->where(function ($query) use ($filter) { - $query->where('clients.name', 'like', '%'.$filter.'%') - ->orWhere('clients.id_number', 'like', '%'.$filter.'%') - ->orWhere('client_contacts.first_name', 'like', '%'.$filter.'%') - ->orWhere('client_contacts.last_name', 'like', '%'.$filter.'%') - ->orWhere('client_contacts.email', 'like', '%'.$filter.'%'); - }); + /** + * Filter by popularity. + * + //* @param string $order + //* @return Builder + + public function popular($order = 'desc') + { + return $this->builder->orderBy('views', $order); } /** - * Filters the list based on the status - * archived, active, deleted - * - * @param string filter - * @return Illuminate\Database\Query\Builder - */ - public function status(string $filter = '') : Builder + * Filter by difficulty. + * + * @param string $level + * @return Builder + + public function difficulty($level) { - if(strlen($filter) == 0) - return $this->builder; - - $table = 'clients'; - $filters = explode(',', $filter); - - return $this->builder->where(function ($query) use ($filters, $table) { - $query->whereNull($table . '.id'); - - if (in_array(parent::STATUS_ACTIVE, $filters)) { - $query->orWhereNull($table . '.deleted_at'); - } - - if (in_array(parent::STATUS_ARCHIVED, $filters)) { - $query->orWhere(function ($query) use ($table) { - $query->whereNotNull($table . '.deleted_at'); - - if (! in_array($table, ['users'])) { - $query->where($table . '.is_deleted', '=', 0); - } - }); - } - - if (in_array(parent::STATUS_DELETED, $filters)) { - $query->orWhere($table . '.is_deleted', '=', 1); - } - }); + return $this->builder->where('difficulty', $level); } /** - * Sorts the list based on $sort - * - * @param string sort formatted as column|asc - * @return Illuminate\Database\Query\Builder - */ - public function sort(string $sort) : Builder + * Filter by length. + * + * @param string $order + * @return Builder + + public function length($order = 'asc') { - $sort_col = explode("|", $sort); - return $this->builder->orderBy($sort_col[0], $sort_col[1]); - } - - /** - * Returns the base query - * - * @param int company_id - * @return Illuminate\Database\Query\Builder - */ - public function baseQuery(int $company_id) : Builder - { - $query = DB::table('clients') - ->join('companies', 'companies.id', '=', 'clients.company_id') - ->join('client_contacts', 'client_contacts.client_id', '=', 'clients.id') - ->where('clients.company_id', '=', $company_id) - ->where('client_contacts.is_primary', '=', true) - ->where('client_contacts.deleted_at', '=', null) - //->whereRaw('(clients.name != "" or contacts.first_name != "" or contacts.last_name != "" or contacts.email != "")') // filter out buy now invoices - ->select( - DB::raw('COALESCE(clients.currency_id, companies.currency_id) currency_id'), - DB::raw('COALESCE(clients.country_id, companies.country_id) country_id'), - DB::raw("CONCAT(COALESCE(client_contacts.first_name, ''), ' ', COALESCE(client_contacts.last_name, '')) contact"), - 'clients.id', - 'clients.name', - 'clients.private_notes', - 'client_contacts.first_name', - 'client_contacts.last_name', - 'clients.balance', - 'clients.last_login', - 'clients.created_at', - 'clients.created_at as client_created_at', - 'client_contacts.phone', - 'client_contacts.email', - 'clients.deleted_at', - 'clients.is_deleted', - 'clients.user_id', - 'clients.id_number' - ); - - return $query; + return $this->builder->orderBy('length', $order); } + */ } \ No newline at end of file diff --git a/app/Filters/QueryFilters.php b/app/Filters/QueryFilters.php index 187226b868c2..cb6516817d7b 100644 --- a/app/Filters/QueryFilters.php +++ b/app/Filters/QueryFilters.php @@ -2,17 +2,11 @@ namespace App\Filters; -use Illuminate\Database\Query\Builder; +use Illuminate\Database\Eloquent\Builder; use Illuminate\Http\Request; -use Illuminate\Support\Facades\DB; -use Illuminate\Support\Facades\Log; abstract class QueryFilters { - const STATUS_ACTIVE = 'active'; - const STATUS_ARCHIVED = 'archived'; - const STATUS_DELETED = 'deleted'; - /** * The request object. * @@ -32,10 +26,9 @@ abstract class QueryFilters * * @param Request $request */ - public function __construct(Request $request, Builder $builder) + public function __construct(Request $request) { $this->request = $request; - $this->builder = $builder; } /** @@ -44,9 +37,9 @@ abstract class QueryFilters * @param Builder $builder * @return Builder */ - public function apply(int $company_id) + public function apply(Builder $builder) { - $this->builder = $this->baseQuery($company_id); + $this->builder = $builder; foreach ($this->filters() as $name => $value) { if (! method_exists($this, $name)) { @@ -77,7 +70,7 @@ abstract class QueryFilters * Explodes the value by delimiter * * @param string $value - * @return stdClass + * @return array */ public function split($value) : stdClass { @@ -91,12 +84,6 @@ abstract class QueryFilters return $parts; } - /** - * String to operator convertor - * - * @param string $value - * @return string - */ private function operatorConvertor(string $operator) : string { switch ($operator) { diff --git a/app/Http/Controllers/ClientController.php b/app/Http/Controllers/ClientController.php index a1230865a089..b879525b2eb7 100644 --- a/app/Http/Controllers/ClientController.php +++ b/app/Http/Controllers/ClientController.php @@ -8,7 +8,6 @@ use App\Http\Requests\Client\StoreClientRequest; use App\Http\Requests\Client\UpdateClientRequest; use App\Jobs\Client\StoreClient; use App\Jobs\Client\UpdateClient; -use App\Jobs\Entity\ActionEntity; use App\Models\Client; use App\Models\ClientContact; use App\Repositories\ClientRepository; @@ -47,7 +46,66 @@ class ClientController extends Controller ]; return view('client.vue_list', $data); + /* + if (request()->ajax()) { + /* + $clients = Client::query('clients.*', DB::raw("CONCAT(client_contacts.first_name,' ',client_contacts.last_name) as full_name"), 'client_contacts.email') + ->leftJoin('client_contacts', function($leftJoin) + { + $leftJoin->on('clients.id', '=', 'client_contacts.client_id') + ->where('client_contacts.is_primary', '=', true); + }); + */ + +/* + $clients = Client::query(); + + return DataTables::of($clients->get()) + ->addColumn('full_name', function ($clients) { + return $clients->contacts->where('is_primary', true)->map(function ($contact){ + return $contact->first_name . ' ' . $contact->last_name; + })->all(); + }) + ->addColumn('email', function ($clients) { + return $clients->contacts->where('is_primary', true)->map(function ($contact){ + return $contact->email; + })->all(); + }) + ->addColumn('action', function ($client) { + return ' Edit'; + }) + ->addColumn('checkbox', function ($client){ + return ''; + }) + ->rawColumns(['checkbox', 'action']) + ->make(true); + } + + $builder->addAction(); + $builder->addCheckbox(); + + $html = $builder->columns([ + ['data' => 'checkbox', 'name' => 'checkbox', 'title' => '', 'searchable' => false, 'orderable' => false], + ['data' => 'name', 'name' => 'name', 'title' => trans('texts.name'), 'visible'=> true], + ['data' => 'full_name', 'name' => 'full_name', 'title' => trans('texts.contact'), 'visible'=> true], + ['data' => 'email', 'name' => 'email', 'title' => trans('texts.email'), 'visible'=> true], + ['data' => 'created_at', 'name' => 'created_at', 'title' => trans('texts.date_created'), 'visible'=> true], + ['data' => 'last_login', 'name' => 'last_login', 'title' => trans('texts.last_login'), 'visible'=> true], + ['data' => 'balance', 'name' => 'balance', 'title' => trans('texts.balance'), 'visible'=> true], + ['data' => 'action', 'name' => 'action', 'title' => '', 'searchable' => false, 'orderable' => false], + ]); + + $builder->ajax([ + 'url' => route('clients.index'), + 'type' => 'GET', + 'data' => 'function(d) { d.key = "value"; }', + ]); + + $data['html'] = $html; + + return view('client.list', $data); + */ } /** @@ -67,8 +125,8 @@ class ClientController extends Controller $client->contacts->add($client_contact); $data = [ - 'client' => $client, - 'hashed_id' => '' + 'client' => $client, + 'hashed_id' => '' ]; return view('client.create', $data); @@ -158,23 +216,9 @@ class ClientController extends Controller // } - /** - * Perform bulk actions on the list view - * - * @return Collection - */ public function bulk() { - $action = request()->input('action'); - $ids = request()->input('ids'); - - $clients = Client::find($ids); - - $clients->each(function ($client, $key) use($action){ - ActionEntity::dispatchNow($client, $action); - }); - //todo need to return the updated dataset - return response()->json('success', 200); + } } diff --git a/app/Jobs/Entity/ActionEntity.php b/app/Jobs/Entity/ActionEntity.php deleted file mode 100644 index 1334240f3314..000000000000 --- a/app/Jobs/Entity/ActionEntity.php +++ /dev/null @@ -1,40 +0,0 @@ -action = $action; - $this->entity = $entity; - } - - /** - * Execute the job. - * - * @return void - */ - public function handle(BaseRepository $baseRepo) - { - return $baseRepo->{$this->action}($this->entity); - } -} diff --git a/app/Models/BaseModel.php b/app/Models/BaseModel.php index 4eb3b0c2d452..aa314afd4ec4 100644 --- a/app/Models/BaseModel.php +++ b/app/Models/BaseModel.php @@ -2,7 +2,6 @@ namespace App\Models; -use App\Filters\QueryFilters; use Hashids\Hashids; use Illuminate\Database\Eloquent\Model; @@ -24,5 +23,4 @@ class BaseModel extends Model return parent::__call($method, $params); } - } diff --git a/app/Repositories/BaseRepository.php b/app/Repositories/BaseRepository.php index 6fe0c11c35a5..4d33b97600f5 100644 --- a/app/Repositories/BaseRepository.php +++ b/app/Repositories/BaseRepository.php @@ -7,141 +7,6 @@ namespace App\Repositories; */ class BaseRepository { - - /** - * @return null - */ - public function getClassName() - { - return null; - } - - /** - * @return mixed - */ - private function getInstance() - { - $className = $this->getClassName(); - - return new $className(); - } - - /** - * @param $entity - * @param $type - * - * @return string - */ - private function getEventClass($entity, $type) - { - return 'App\Events\\' . ucfirst(class_basename($entity)) . 'Was' . $type; - } - - /** - * @param $entity - */ - public function archive($entity) - { - if ($entity->trashed()) { - return; - } - - $entity->delete(); - - $className = $this->getEventClass($entity, 'Archived'); - - if (class_exists($className)) { - event(new $className($entity)); - } - } - - /** - * @param $entity - */ - public function restore($entity) - { - if (! $entity->trashed()) { - return; - } - - $fromDeleted = false; - $entity->restore(); - - if ($entity->is_deleted) { - $fromDeleted = true; - $entity->is_deleted = false; - $entity->save(); - } - - $className = $this->getEventClass($entity, 'Restored'); - - if (class_exists($className)) { - event(new $className($entity, $fromDeleted)); - } - } - - /** - * @param $entity - */ - public function delete($entity) - { - if ($entity->is_deleted) { - return; - } - - $entity->is_deleted = true; - $entity->save(); - - $entity->delete(); - - $className = $this->getEventClass($entity, 'Deleted'); - - if (class_exists($className)) { - event(new $className($entity)); - } - } - - /** - * @param $ids - * @param $action - * - * @return int - */ - public function bulk($ids, $action) - { - if (! $ids) { - return 0; - } - - $entities = $this->findByPublicIdsWithTrashed($ids); - - foreach ($entities as $entity) { - if (auth()->user()->can('edit', $entity)) { - $this->$action($entity); - } - } - - return count($entities); - } - - /** - * @param $ids - * - * @return mixed - */ - public function findByPublicIds($ids) - { - return $this->getInstance()->scope($ids)->get(); - } - - /** - * @param $ids - * - * @return mixed - */ - public function findByPublicIdsWithTrashed($ids) - { - return $this->getInstance()->scope($ids)->withTrashed()->get(); - } + } \ No newline at end of file diff --git a/app/Repositories/ClientRepository.php b/app/Repositories/ClientRepository.php index aa131cee81f6..7fe3298e3fe2 100644 --- a/app/Repositories/ClientRepository.php +++ b/app/Repositories/ClientRepository.php @@ -18,11 +18,6 @@ class ClientRepository extends BaseRepository $this->clientContactRepo = $clientContactRepo; } - public function getClassName() - { - return Client::class; - } - public function save(Request $request, Client $client) : ?Client { $client->fill($request->input()); diff --git a/package.json b/package.json index cc890db25eb4..f61dcae06c2b 100644 --- a/package.json +++ b/package.json @@ -27,6 +27,7 @@ "jest": "^23.6.0", "jquery": "^3.2", "laravel-mix": "^2.0", + "lodash": "^4.17.5", "pace-progress": "1.0.2", "perfect-scrollbar": "1.4.0", "popper.js": "^1.12", @@ -38,19 +39,17 @@ "dependencies": { "@types/lodash": "^4.14.118", "@types/node": "^10.12.10", - "axios-progress-bar": "^1.2.0", "hashids": "^1.2.2", "laravel-echo": "^1.4.0", - "lodash.get": "^4.4.2", "quill": "^1.3.6", "socket.io-client": "^2.1.1", "ts-loader": "3.5.0", "typescript": "^3.1.6", "vue-chartjs": "^3.4.0", "vue-events": "^3.1.0", + "vue-i18n": "^8.3.0", "vue-multiselect": "^2.1.3", "vue-select": "^2.5.1", - "vue-toastr": "^2.0.16", - "vuex": "^3.1.0" + "vue-toastr": "^2.0.16" } } diff --git a/public/css/ninja.css b/public/css/ninja.css index f7e82fd470b9..27b8490466e6 100644 --- a/public/css/ninja.css +++ b/public/css/ninja.css @@ -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; diff --git a/public/css/ninja.min.css b/public/css/ninja.min.css index f7e82fd470b9..27b8490466e6 100644 --- a/public/css/ninja.min.css +++ b/public/css/ninja.min.css @@ -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; diff --git a/public/js/client_create.js b/public/js/client_create.js index e634a94d16aa..e980e5bf029f 100644 --- a/public/js/client_create.js +++ b/public/js/client_create.js @@ -3964,7 +3964,7 @@ if(false) { "use strict"; /* WEBPACK VAR INJECTION */(function(global, setImmediate) {/*! - * Vue.js v2.5.17 + * Vue.js v2.5.21 * (c) 2014-2018 Evan You * Released under the MIT License. */ @@ -3974,8 +3974,8 @@ if(false) { var emptyObject = Object.freeze({}); -// these helpers produces better vm code in JS engines due to their -// explicitness and function inlining +// These helpers produce better VM code in JS engines due to their +// explicitness and function inlining. function isUndef (v) { return v === undefined || v === null } @@ -3993,7 +3993,7 @@ function isFalse (v) { } /** - * Check if value is primitive + * Check if value is primitive. */ function isPrimitive (value) { return ( @@ -4015,7 +4015,7 @@ function isObject (obj) { } /** - * Get the raw type string of a value e.g. [object Object] + * Get the raw type string of a value, e.g., [object Object]. */ var _toString = Object.prototype.toString; @@ -4055,7 +4055,7 @@ function toString (val) { } /** - * Convert a input value to a number for persistence. + * Convert an input value to a number for persistence. * If the conversion fails, return original string. */ function toNumber (val) { @@ -4087,12 +4087,12 @@ function makeMap ( var isBuiltInTag = makeMap('slot,component', true); /** - * Check if a attribute is a reserved attribute. + * Check if an attribute is a reserved attribute. */ var isReservedAttribute = makeMap('key,ref,slot,slot-scope,is'); /** - * Remove an item from an array + * Remove an item from an array. */ function remove (arr, item) { if (arr.length) { @@ -4104,7 +4104,7 @@ function remove (arr, item) { } /** - * Check whether the object has the property. + * Check whether an object has the property. */ var hasOwnProperty = Object.prototype.hasOwnProperty; function hasOwn (obj, key) { @@ -4146,11 +4146,11 @@ var hyphenate = cached(function (str) { }); /** - * Simple bind polyfill for environments that do not support it... e.g. - * PhantomJS 1.x. Technically we don't need this anymore since native bind is - * now more performant in most browsers, but removing it would be breaking for - * code that was able to run in PhantomJS 1.x, so this must be kept for - * backwards compatibility. + * Simple bind polyfill for environments that do not support it, + * e.g., PhantomJS 1.x. Technically, we don't need this anymore + * since native bind is now performant enough in most browsers. + * But removing it would mean breaking code that was able to run in + * PhantomJS 1.x, so this must be kept for backward compatibility. */ /* istanbul ignore next */ @@ -4212,10 +4212,12 @@ function toObject (arr) { return res } +/* eslint-disable no-unused-vars */ + /** * Perform no operation. * Stubbing args to make Flow happy without leaving useless transpiled code - * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/) + * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/). */ function noop (a, b, c) {} @@ -4224,13 +4226,15 @@ function noop (a, b, c) {} */ var no = function (a, b, c) { return false; }; +/* eslint-enable no-unused-vars */ + /** - * Return same value + * Return the same value. */ var identity = function (_) { return _; }; /** - * Generate a static keys string from compiler modules. + * Generate a string containing static keys from compiler modules. */ function genStaticKeys (modules) { return modules.reduce(function (keys, m) { @@ -4254,6 +4258,8 @@ function looseEqual (a, b) { return a.length === b.length && a.every(function (e, i) { return looseEqual(e, b[i]) }) + } else if (a instanceof Date && b instanceof Date) { + return a.getTime() === b.getTime() } else if (!isArrayA && !isArrayB) { var keysA = Object.keys(a); var keysB = Object.keys(b); @@ -4275,6 +4281,11 @@ function looseEqual (a, b) { } } +/** + * Return the first index at which a loosely equal value can be + * found in the array (if value is a plain object, the array must + * contain an object of the same shape), or -1 if it is not present. + */ function looseIndexOf (arr, val) { for (var i = 0; i < arr.length; i++) { if (looseEqual(arr[i], val)) { return i } @@ -4319,6 +4330,8 @@ var LIFECYCLE_HOOKS = [ /* */ + + var config = ({ /** * Option merge strategies (used in core/util/options) @@ -4401,11 +4414,17 @@ var config = ({ */ mustUseProp: no, + /** + * Perform updates asynchronously. Intended to be used by Vue Test Utils + * This will significantly reduce performance if set to false. + */ + async: true, + /** * Exposed for legacy reasons */ _lifecycleHooks: LIFECYCLE_HOOKS -}) +}); /* */ @@ -4490,7 +4509,7 @@ var isServerRendering = function () { if (!inBrowser && !inWeex && typeof global !== 'undefined') { // detect presence of vue-server-renderer and avoid // Webpack shimming the process - _isServer = global['process'].env.VUE_ENV === 'server'; + _isServer = global['process'] && global['process'].env.VUE_ENV === 'server'; } else { _isServer = false; } @@ -4517,7 +4536,7 @@ if (typeof Set !== 'undefined' && isNative(Set)) { _Set = Set; } else { // a non-standard Set polyfill that only works with primitive keys. - _Set = (function () { + _Set = /*@__PURE__*/(function () { function Set () { this.set = Object.create(null); } @@ -4631,7 +4650,6 @@ if (true) { /* */ - var uid = 0; /** @@ -4660,6 +4678,12 @@ Dep.prototype.depend = function depend () { Dep.prototype.notify = function notify () { // stabilize the subscriber list first var subs = this.subs.slice(); + if ("development" !== 'production' && !config.async) { + // subs aren't sorted in scheduler if not running async + // we need to sort them now to make sure they fire in correct + // order + subs.sort(function (a, b) { return a.id - b.id; }); + } for (var i = 0, l = subs.length; i < l; i++) { subs[i].update(); } @@ -4671,13 +4695,14 @@ Dep.prototype.notify = function notify () { Dep.target = null; var targetStack = []; -function pushTarget (_target) { - if (Dep.target) { targetStack.push(Dep.target); } - Dep.target = _target; +function pushTarget (target) { + targetStack.push(target); + Dep.target = target; } function popTarget () { - Dep.target = targetStack.pop(); + targetStack.pop(); + Dep.target = targetStack[targetStack.length - 1]; } /* */ @@ -4748,7 +4773,10 @@ function cloneVNode (vnode) { var cloned = new VNode( vnode.tag, vnode.data, - vnode.children, + // #7975 + // clone children array to avoid mutating original in case of cloning + // a child. + vnode.children && vnode.children.slice(), vnode.text, vnode.elm, vnode.context, @@ -4762,6 +4790,7 @@ function cloneVNode (vnode) { cloned.fnContext = vnode.fnContext; cloned.fnOptions = vnode.fnOptions; cloned.fnScopeId = vnode.fnScopeId; + cloned.asyncMeta = vnode.asyncMeta; cloned.isCloned = true; return cloned } @@ -4839,10 +4868,11 @@ var Observer = function Observer (value) { this.vmCount = 0; def(value, '__ob__', this); if (Array.isArray(value)) { - var augment = hasProto - ? protoAugment - : copyAugment; - augment(value, arrayMethods, arrayKeys); + if (hasProto) { + protoAugment(value, arrayMethods); + } else { + copyAugment(value, arrayMethods, arrayKeys); + } this.observeArray(value); } else { this.walk(value); @@ -4850,14 +4880,14 @@ var Observer = function Observer (value) { }; /** - * Walk through each property and convert them into + * Walk through all properties and convert them into * getter/setters. This method should only be called when * value type is Object. */ Observer.prototype.walk = function walk (obj) { var keys = Object.keys(obj); for (var i = 0; i < keys.length; i++) { - defineReactive(obj, keys[i]); + defineReactive$$1(obj, keys[i]); } }; @@ -4873,17 +4903,17 @@ Observer.prototype.observeArray = function observeArray (items) { // helpers /** - * Augment an target Object or Array by intercepting + * Augment a target Object or Array by intercepting * the prototype chain using __proto__ */ -function protoAugment (target, src, keys) { +function protoAugment (target, src) { /* eslint-disable no-proto */ target.__proto__ = src; /* eslint-enable no-proto */ } /** - * Augment an target Object or Array by defining + * Augment a target Object or Array by defining * hidden properties. */ /* istanbul ignore next */ @@ -4924,7 +4954,7 @@ function observe (value, asRootData) { /** * Define a reactive property on an Object. */ -function defineReactive ( +function defineReactive$$1 ( obj, key, val, @@ -4940,10 +4970,10 @@ function defineReactive ( // cater for pre-defined getter/setters var getter = property && property.get; - if (!getter && arguments.length === 2) { + var setter = property && property.set; + if ((!getter || setter) && arguments.length === 2) { val = obj[key]; } - var setter = property && property.set; var childOb = !shallow && observe(val); Object.defineProperty(obj, key, { @@ -4972,6 +5002,8 @@ function defineReactive ( if ("development" !== 'production' && customSetter) { customSetter(); } + // #7981: for accessor properties without setter + if (getter && !setter) { return } if (setter) { setter.call(obj, newVal); } else { @@ -5015,7 +5047,7 @@ function set (target, key, val) { target[key] = val; return val } - defineReactive(ob.value, key, val); + defineReactive$$1(ob.value, key, val); ob.dep.notify(); return val } @@ -5102,7 +5134,11 @@ function mergeData (to, from) { fromVal = from[key]; if (!hasOwn(to, key)) { set(to, key, fromVal); - } else if (isPlainObject(toVal) && isPlainObject(fromVal)) { + } else if ( + toVal !== fromVal && + isPlainObject(toVal) && + isPlainObject(fromVal) + ) { mergeData(toVal, fromVal); } } @@ -5425,15 +5461,22 @@ function mergeOptions ( normalizeProps(child, vm); normalizeInject(child, vm); normalizeDirectives(child); - var extendsFrom = child.extends; - if (extendsFrom) { - parent = mergeOptions(parent, extendsFrom, vm); - } - if (child.mixins) { - for (var i = 0, l = child.mixins.length; i < l; i++) { - parent = mergeOptions(parent, child.mixins[i], vm); + + // Apply extends and mixins on the child options, + // but only if it is a raw options object that isn't + // the result of another mergeOptions call. + // Only merged options has the _base property. + if (!child._base) { + if (child.extends) { + parent = mergeOptions(parent, child.extends, vm); + } + if (child.mixins) { + for (var i = 0, l = child.mixins.length; i < l; i++) { + parent = mergeOptions(parent, child.mixins[i], vm); + } } } + var options = {}; var key; for (key in parent) { @@ -5486,6 +5529,8 @@ function resolveAsset ( /* */ + + function validateProp ( key, propOptions, @@ -5593,11 +5638,10 @@ function assertProp ( valid = assertedType.valid; } } + if (!valid) { warn( - "Invalid prop: type check failed for prop \"" + name + "\"." + - " Expected " + (expectedTypes.map(capitalize).join(', ')) + - ", got " + (toRawType(value)) + ".", + getInvalidTypeMessage(name, value, expectedTypes), vm ); return @@ -5664,6 +5708,49 @@ function getTypeIndex (type, expectedTypes) { return -1 } +function getInvalidTypeMessage (name, value, expectedTypes) { + var message = "Invalid prop: type check failed for prop \"" + name + "\"." + + " Expected " + (expectedTypes.map(capitalize).join(', ')); + var expectedType = expectedTypes[0]; + var receivedType = toRawType(value); + var expectedValue = styleValue(value, expectedType); + var receivedValue = styleValue(value, receivedType); + // check if we need to specify expected value + if (expectedTypes.length === 1 && + isExplicable(expectedType) && + !isBoolean(expectedType, receivedType)) { + message += " with value " + expectedValue; + } + message += ", got " + receivedType + " "; + // check if we need to specify received value + if (isExplicable(receivedType)) { + message += "with value " + receivedValue + "."; + } + return message +} + +function styleValue (value, type) { + if (type === 'String') { + return ("\"" + value + "\"") + } else if (type === 'Number') { + return ("" + (Number(value))) + } else { + return ("" + value) + } +} + +function isExplicable (value) { + var explicitTypes = ['string', 'number', 'boolean']; + return explicitTypes.some(function (elem) { return value.toLowerCase() === elem; }) +} + +function isBoolean () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + return args.some(function (elem) { return elem.toLowerCase() === 'boolean'; }) +} + /* */ function handleError (err, vm, info) { @@ -5710,7 +5797,6 @@ function logError (err, vm, info) { } /* */ -/* globals MessageChannel */ var callbacks = []; var pending = false; @@ -5788,9 +5874,11 @@ if (typeof Promise !== 'undefined' && isNative(Promise)) { function withMacroTask (fn) { return fn._withTask || (fn._withTask = function () { useMacroTask = true; - var res = fn.apply(null, arguments); - useMacroTask = false; - return res + try { + return fn.apply(null, arguments) + } finally { + useMacroTask = false; + } }) } @@ -5871,6 +5959,16 @@ if (true) { ); }; + var warnReservedPrefix = function (target, key) { + warn( + "Property \"" + key + "\" must be accessed with \"$data." + key + "\" because " + + 'properties starting with "$" or "_" are not proxied in the Vue instance to ' + + 'prevent conflicts with Vue internals' + + 'See: https://vuejs.org/v2/api/#data', + target + ); + }; + var hasProxy = typeof Proxy !== 'undefined' && isNative(Proxy); @@ -5892,9 +5990,11 @@ if (true) { var hasHandler = { has: function has (target, key) { var has = key in target; - var isAllowed = allowedGlobals(key) || key.charAt(0) === '_'; + var isAllowed = allowedGlobals(key) || + (typeof key === 'string' && key.charAt(0) === '_' && !(key in target.$data)); if (!has && !isAllowed) { - warnNonPresent(target, key); + if (key in target.$data) { warnReservedPrefix(target, key); } + else { warnNonPresent(target, key); } } return has || !isAllowed } @@ -5903,7 +6003,8 @@ if (true) { var getHandler = { get: function get (target, key) { if (typeof key === 'string' && !(key in target)) { - warnNonPresent(target, key); + if (key in target.$data) { warnReservedPrefix(target, key); } + else { warnNonPresent(target, key); } } return target[key] } @@ -6001,14 +6102,14 @@ function updateListeners ( oldOn, add, remove$$1, + createOnceHandler, vm ) { - var name, def, cur, old, event; + var name, def$$1, cur, old, event; for (name in on) { - def = cur = on[name]; + def$$1 = cur = on[name]; old = oldOn[name]; event = normalizeEvent(name); - /* istanbul ignore if */ if (isUndef(cur)) { "development" !== 'production' && warn( "Invalid handler for event \"" + (event.name) + "\": got " + String(cur), @@ -6018,7 +6119,10 @@ function updateListeners ( if (isUndef(cur.fns)) { cur = on[name] = createFnInvoker(cur); } - add(event.name, cur, event.once, event.capture, event.passive, event.params); + if (isTrue(event.once)) { + cur = on[name] = createOnceHandler(event.name, cur, event.capture); + } + add(event.name, cur, event.capture, event.passive, event.params); } else if (cur !== old) { old.fns = cur; on[name] = old; @@ -6273,10 +6377,14 @@ function resolveAsyncComponent ( var contexts = factory.contexts = [context]; var sync = true; - var forceRender = function () { + var forceRender = function (renderCompleted) { for (var i = 0, l = contexts.length; i < l; i++) { contexts[i].$forceUpdate(); } + + if (renderCompleted) { + contexts.length = 0; + } }; var resolve = once(function (res) { @@ -6285,7 +6393,7 @@ function resolveAsyncComponent ( // invoke callbacks only if this is not a synchronous resolve // (async resolves are shimmed as synchronous during SSR) if (!sync) { - forceRender(); + forceRender(true); } }); @@ -6296,7 +6404,7 @@ function resolveAsyncComponent ( ); if (isDef(factory.errorComp)) { factory.error = true; - forceRender(); + forceRender(true); } }); @@ -6323,7 +6431,7 @@ function resolveAsyncComponent ( setTimeout(function () { if (isUndef(factory.resolved) && isUndef(factory.error)) { factory.loading = true; - forceRender(); + forceRender(false); } }, res.delay || 200); } @@ -6386,37 +6494,41 @@ function initEvents (vm) { var target; -function add (event, fn, once) { - if (once) { - target.$once(event, fn); - } else { - target.$on(event, fn); - } +function add (event, fn) { + target.$on(event, fn); } function remove$1 (event, fn) { target.$off(event, fn); } +function createOnceHandler (event, fn) { + var _target = target; + return function onceHandler () { + var res = fn.apply(null, arguments); + if (res !== null) { + _target.$off(event, onceHandler); + } + } +} + function updateComponentListeners ( vm, listeners, oldListeners ) { target = vm; - updateListeners(listeners, oldListeners || {}, add, remove$1, vm); + updateListeners(listeners, oldListeners || {}, add, remove$1, createOnceHandler, vm); target = undefined; } function eventsMixin (Vue) { var hookRE = /^hook:/; Vue.prototype.$on = function (event, fn) { - var this$1 = this; - var vm = this; if (Array.isArray(event)) { for (var i = 0, l = event.length; i < l; i++) { - this$1.$on(event[i], fn); + vm.$on(event[i], fn); } } else { (vm._events[event] || (vm._events[event] = [])).push(fn); @@ -6441,8 +6553,6 @@ function eventsMixin (Vue) { }; Vue.prototype.$off = function (event, fn) { - var this$1 = this; - var vm = this; // all if (!arguments.length) { @@ -6452,7 +6562,7 @@ function eventsMixin (Vue) { // array of events if (Array.isArray(event)) { for (var i = 0, l = event.length; i < l; i++) { - this$1.$off(event[i], fn); + vm.$off(event[i], fn); } return vm } @@ -6581,6 +6691,14 @@ function resolveScopedSlots ( var activeInstance = null; var isUpdatingChildComponent = false; +function setActiveInstance(vm) { + var prevActiveInstance = activeInstance; + activeInstance = vm; + return function () { + activeInstance = prevActiveInstance; + } +} + function initLifecycle (vm) { var options = vm.$options; @@ -6610,31 +6728,20 @@ function initLifecycle (vm) { function lifecycleMixin (Vue) { Vue.prototype._update = function (vnode, hydrating) { var vm = this; - if (vm._isMounted) { - callHook(vm, 'beforeUpdate'); - } var prevEl = vm.$el; var prevVnode = vm._vnode; - var prevActiveInstance = activeInstance; - activeInstance = vm; + var restoreActiveInstance = setActiveInstance(vm); vm._vnode = vnode; // Vue.prototype.__patch__ is injected in entry points // based on the rendering backend used. if (!prevVnode) { // initial render - vm.$el = vm.__patch__( - vm.$el, vnode, hydrating, false /* removeOnly */, - vm.$options._parentElm, - vm.$options._refElm - ); - // no need for the ref nodes after initial patch - // this prevents keeping a detached DOM tree in memory (#5851) - vm.$options._parentElm = vm.$options._refElm = null; + vm.$el = vm.__patch__(vm.$el, vnode, hydrating, false /* removeOnly */); } else { // updates vm.$el = vm.__patch__(prevVnode, vnode); } - activeInstance = prevActiveInstance; + restoreActiveInstance(); // update __vue__ reference if (prevEl) { prevEl.__vue__ = null; @@ -6757,7 +6864,13 @@ function mountComponent ( // we set this to vm._watcher inside the watcher's constructor // since the watcher's initial patch may call $forceUpdate (e.g. inside child // component's mounted hook), which relies on vm._watcher being already defined - new Watcher(vm, updateComponent, noop, null, true /* isRenderWatcher */); + new Watcher(vm, updateComponent, noop, { + before: function before () { + if (vm._isMounted && !vm._isDestroyed) { + callHook(vm, 'beforeUpdate'); + } + } + }, true /* isRenderWatcher */); hydrating = false; // manually mounted instance, call mounted on self @@ -6897,7 +7010,6 @@ function callHook (vm, hook) { /* */ - var MAX_UPDATE_COUNT = 100; var queue = []; @@ -6941,6 +7053,9 @@ function flushSchedulerQueue () { // as we run existing watchers for (index = 0; index < queue.length; index++) { watcher = queue[index]; + if (watcher.before) { + watcher.before(); + } id = watcher.id; has[id] = null; watcher.run(); @@ -6983,7 +7098,7 @@ function callUpdatedHooks (queue) { while (i--) { var watcher = queue[i]; var vm = watcher.vm; - if (vm._watcher === watcher && vm._isMounted) { + if (vm._watcher === watcher && vm._isMounted && !vm._isDestroyed) { callHook(vm, 'updated'); } } @@ -7030,6 +7145,11 @@ function queueWatcher (watcher) { // queue the flush if (!waiting) { waiting = true; + + if ("development" !== 'production' && !config.async) { + flushSchedulerQueue(); + return + } nextTick(flushSchedulerQueue); } } @@ -7037,6 +7157,8 @@ function queueWatcher (watcher) { /* */ + + var uid$1 = 0; /** @@ -7062,6 +7184,7 @@ var Watcher = function Watcher ( this.user = !!options.user; this.lazy = !!options.lazy; this.sync = !!options.sync; + this.before = options.before; } else { this.deep = this.user = this.lazy = this.sync = false; } @@ -7082,7 +7205,7 @@ var Watcher = function Watcher ( } else { this.getter = parsePath(expOrFn); if (!this.getter) { - this.getter = function () {}; + this.getter = noop; "development" !== 'production' && warn( "Failed watching path: \"" + expOrFn + "\" " + 'Watcher only accepts simple dot-delimited paths. ' + @@ -7141,13 +7264,11 @@ Watcher.prototype.addDep = function addDep (dep) { * Clean up for dependency collection. */ Watcher.prototype.cleanupDeps = function cleanupDeps () { - var this$1 = this; - var i = this.deps.length; while (i--) { - var dep = this$1.deps[i]; - if (!this$1.newDepIds.has(dep.id)) { - dep.removeSub(this$1); + var dep = this.deps[i]; + if (!this.newDepIds.has(dep.id)) { + dep.removeSub(this); } } var tmp = this.depIds; @@ -7219,11 +7340,9 @@ Watcher.prototype.evaluate = function evaluate () { * Depend on all deps collected by this watcher. */ Watcher.prototype.depend = function depend () { - var this$1 = this; - var i = this.deps.length; while (i--) { - this$1.deps[i].depend(); + this.deps[i].depend(); } }; @@ -7231,8 +7350,6 @@ Watcher.prototype.depend = function depend () { * Remove self from all dependencies' subscriber list. */ Watcher.prototype.teardown = function teardown () { - var this$1 = this; - if (this.active) { // remove self from vm's watcher list // this is a somewhat expensive operation so we skip it @@ -7242,7 +7359,7 @@ Watcher.prototype.teardown = function teardown () { } var i = this.deps.length; while (i--) { - this$1.deps[i].removeSub(this$1); + this.deps[i].removeSub(this); } this.active = false; } @@ -7307,8 +7424,8 @@ function initProps (vm, propsOptions) { vm ); } - defineReactive(props, key, value, function () { - if (vm.$parent && !isUpdatingChildComponent) { + defineReactive$$1(props, key, value, function () { + if (!isRoot && !isUpdatingChildComponent) { warn( "Avoid mutating a prop directly since the value will be " + "overwritten whenever the parent component re-renders. " + @@ -7319,7 +7436,7 @@ function initProps (vm, propsOptions) { } }); } else { - defineReactive(props, key, value); + defineReactive$$1(props, key, value); } // static props are already proxied on the component's prototype // during Vue.extend(). We only need to proxy props defined at @@ -7440,17 +7557,15 @@ function defineComputed ( if (typeof userDef === 'function') { sharedPropertyDefinition.get = shouldCache ? createComputedGetter(key) - : userDef; + : createGetterInvoker(userDef); sharedPropertyDefinition.set = noop; } else { sharedPropertyDefinition.get = userDef.get ? shouldCache && userDef.cache !== false ? createComputedGetter(key) - : userDef.get - : noop; - sharedPropertyDefinition.set = userDef.set - ? userDef.set + : createGetterInvoker(userDef.get) : noop; + sharedPropertyDefinition.set = userDef.set || noop; } if ("development" !== 'production' && sharedPropertyDefinition.set === noop) { @@ -7479,13 +7594,19 @@ function createComputedGetter (key) { } } +function createGetterInvoker(fn) { + return function computedGetter () { + return fn.call(this, this) + } +} + function initMethods (vm, methods) { var props = vm.$options.props; for (var key in methods) { if (true) { - if (methods[key] == null) { + if (typeof methods[key] !== 'function') { warn( - "Method \"" + key + "\" has an undefined value in the component definition. " + + "Method \"" + key + "\" has type \"" + (typeof methods[key]) + "\" in the component definition. " + "Did you reference the function correctly?", vm ); @@ -7503,7 +7624,7 @@ function initMethods (vm, methods) { ); } } - vm[key] = methods[key] == null ? noop : bind(methods[key], vm); + vm[key] = typeof methods[key] !== 'function' ? noop : bind(methods[key], vm); } } @@ -7545,7 +7666,7 @@ function stateMixin (Vue) { var propsDef = {}; propsDef.get = function () { return this._props }; if (true) { - dataDef.set = function (newData) { + dataDef.set = function () { warn( 'Avoid replacing instance root $data. ' + 'Use nested data properties instead.', @@ -7575,7 +7696,11 @@ function stateMixin (Vue) { options.user = true; var watcher = new Watcher(vm, expOrFn, cb, options); if (options.immediate) { - cb.call(vm, watcher.value); + try { + cb.call(vm, watcher.value); + } catch (error) { + handleError(error, vm, ("callback for immediate watcher \"" + (watcher.expression) + "\"")); + } } return function unwatchFn () { watcher.teardown(); @@ -7601,7 +7726,7 @@ function initInjections (vm) { Object.keys(result).forEach(function (key) { /* istanbul ignore else */ if (true) { - defineReactive(vm, key, result[key], function () { + defineReactive$$1(vm, key, result[key], function () { warn( "Avoid mutating an injected value directly since the changes will be " + "overwritten whenever the provided component re-renders. " + @@ -7610,7 +7735,7 @@ function initInjections (vm) { ); }); } else { - defineReactive(vm, key, result[key]); + defineReactive$$1(vm, key, result[key]); } }); toggleObserving(true); @@ -7682,9 +7807,10 @@ function renderList ( ret[i] = render(val[key], key, i); } } - if (isDef(ret)) { - (ret)._isVList = true; + if (!isDef(ret)) { + ret = []; } + (ret)._isVList = true; return ret } @@ -7714,19 +7840,7 @@ function renderSlot ( } nodes = scopedSlotFn(props) || fallback; } else { - var slotNodes = this.$slots[name]; - // warn duplicate slot usage - if (slotNodes) { - if ("development" !== 'production' && slotNodes._rendered) { - warn( - "Duplicate presence of slot \"" + name + "\" found in the same render tree " + - "- this will likely cause render errors.", - this - ); - } - slotNodes._rendered = true; - } - nodes = slotNodes || fallback; + nodes = this.$slots[name] || fallback; } var target = props && props.slot; @@ -7814,12 +7928,13 @@ function bindObjectProps ( ? data.domProps || (data.domProps = {}) : data.attrs || (data.attrs = {}); } - if (!(key in hash)) { + var camelizedKey = camelize(key); + if (!(key in hash) && !(camelizedKey in hash)) { hash[key] = value[key]; if (isSync) { var on = data.on || (data.on = {}); - on[("update:" + key)] = function ($event) { + on[("update:" + camelizedKey)] = function ($event) { value[key] = $event; }; } @@ -8025,24 +8140,27 @@ function createFunctionalComponent ( var vnode = options.render.call(null, renderContext._c, renderContext); if (vnode instanceof VNode) { - return cloneAndMarkFunctionalResult(vnode, data, renderContext.parent, options) + return cloneAndMarkFunctionalResult(vnode, data, renderContext.parent, options, renderContext) } else if (Array.isArray(vnode)) { var vnodes = normalizeChildren(vnode) || []; var res = new Array(vnodes.length); for (var i = 0; i < vnodes.length; i++) { - res[i] = cloneAndMarkFunctionalResult(vnodes[i], data, renderContext.parent, options); + res[i] = cloneAndMarkFunctionalResult(vnodes[i], data, renderContext.parent, options, renderContext); } return res } } -function cloneAndMarkFunctionalResult (vnode, data, contextVm, options) { +function cloneAndMarkFunctionalResult (vnode, data, contextVm, options, renderContext) { // #7817 clone node before setting fnContext, otherwise if the node is reused // (e.g. it was from a cached normal slot) the fnContext causes named slots // that should not be matched to match. var clone = cloneVNode(vnode); clone.fnContext = contextVm; clone.fnOptions = options; + if (true) { + (clone.devtoolsMeta = clone.devtoolsMeta || {}).renderContext = renderContext; + } if (data.slot) { (clone.data || (clone.data = {})).slot = data.slot; } @@ -8057,33 +8175,15 @@ function mergeProps (to, from) { /* */ - - - -// Register the component hook to weex native render engine. -// The hook will be triggered by native, not javascript. - - -// Updates the state of the component to weex native render engine. - /* */ -// https://github.com/Hanks10100/weex-native-directive/tree/master/component - -// listening on native callback - /* */ /* */ // inline hooks to be invoked on component VNodes during patch var componentVNodeHooks = { - init: function init ( - vnode, - hydrating, - parentElm, - refElm - ) { + init: function init (vnode, hydrating) { if ( vnode.componentInstance && !vnode.componentInstance._isDestroyed && @@ -8095,9 +8195,7 @@ var componentVNodeHooks = { } else { var child = vnode.componentInstance = createComponentInstanceForVnode( vnode, - activeInstance, - parentElm, - refElm + activeInstance ); child.$mount(hydrating ? vnode.elm : undefined, hydrating); } @@ -8246,25 +8344,17 @@ function createComponent ( asyncFactory ); - // Weex specific: invoke recycle-list optimized @render function for - // extracting cell-slot template. - // https://github.com/Hanks10100/weex-native-directive/tree/master/component - /* istanbul ignore if */ return vnode } function createComponentInstanceForVnode ( vnode, // we know it's MountedComponentVNode but flow doesn't - parent, // activeInstance in lifecycle state - parentElm, - refElm + parent // activeInstance in lifecycle state ) { var options = { _isComponent: true, - parent: parent, _parentVnode: vnode, - _parentElm: parentElm || null, - _refElm: refElm || null + parent: parent }; // check inline-template render functions var inlineTemplate = vnode.data.inlineTemplate; @@ -8279,20 +8369,43 @@ function installComponentHooks (data) { var hooks = data.hook || (data.hook = {}); for (var i = 0; i < hooksToMerge.length; i++) { var key = hooksToMerge[i]; - hooks[key] = componentVNodeHooks[key]; + var existing = hooks[key]; + var toMerge = componentVNodeHooks[key]; + if (existing !== toMerge && !(existing && existing._merged)) { + hooks[key] = existing ? mergeHook$1(toMerge, existing) : toMerge; + } } } +function mergeHook$1 (f1, f2) { + var merged = function (a, b) { + // flow complains about extra args which is why we use any + f1(a, b); + f2(a, b); + }; + merged._merged = true; + return merged +} + // transform component v-model info (value and callback) into // prop and event handler respectively. function transformModel (options, data) { var prop = (options.model && options.model.prop) || 'value'; - var event = (options.model && options.model.event) || 'input';(data.props || (data.props = {}))[prop] = data.model.value; + var event = (options.model && options.model.event) || 'input' + ;(data.props || (data.props = {}))[prop] = data.model.value; var on = data.on || (data.on = {}); - if (isDef(on[event])) { - on[event] = [data.model.callback].concat(on[event]); + var existing = on[event]; + var callback = data.model.callback; + if (isDef(existing)) { + if ( + Array.isArray(existing) + ? existing.indexOf(callback) === -1 + : existing !== callback + ) { + on[event] = [callback].concat(existing); + } } else { - on[event] = data.model.callback; + on[event] = callback; } } @@ -8380,7 +8493,7 @@ function _createElement ( config.parsePlatformTagName(tag), data, children, undefined, undefined, context ); - } else if (isDef(Ctor = resolveAsset(context.$options, 'components', tag))) { + } else if ((!data || !data.pre) && isDef(Ctor = resolveAsset(context.$options, 'components', tag))) { // component vnode = createComponent(Ctor, data, context, children, tag); } else { @@ -8462,15 +8575,15 @@ function initRender (vm) { /* istanbul ignore else */ if (true) { - defineReactive(vm, '$attrs', parentData && parentData.attrs || emptyObject, function () { + defineReactive$$1(vm, '$attrs', parentData && parentData.attrs || emptyObject, function () { !isUpdatingChildComponent && warn("$attrs is readonly.", vm); }, true); - defineReactive(vm, '$listeners', options._parentListeners || emptyObject, function () { + defineReactive$$1(vm, '$listeners', options._parentListeners || emptyObject, function () { !isUpdatingChildComponent && warn("$listeners is readonly.", vm); }, true); } else { - defineReactive(vm, '$attrs', parentData && parentData.attrs || emptyObject, null, true); - defineReactive(vm, '$listeners', options._parentListeners || emptyObject, null, true); + defineReactive$$1(vm, '$attrs', parentData && parentData.attrs || emptyObject, null, true); + defineReactive$$1(vm, '$listeners', options._parentListeners || emptyObject, null, true); } } @@ -8488,14 +8601,6 @@ function renderMixin (Vue) { var render = ref.render; var _parentVnode = ref._parentVnode; - // reset _rendered flag on slots for duplicate slot check - if (true) { - for (var key in vm.$slots) { - // $flow-disable-line - vm.$slots[key]._rendered = false; - } - } - if (_parentVnode) { vm.$scopedSlots = _parentVnode.data.scopedSlots || emptyObject; } @@ -8512,15 +8617,11 @@ function renderMixin (Vue) { // return error render result, // or previous vnode to prevent render error causing blank component /* istanbul ignore else */ - if (true) { - if (vm.$options.renderError) { - try { - vnode = vm.$options.renderError.call(vm._renderProxy, vm.$createElement, e); - } catch (e) { - handleError(e, vm, "renderError"); - vnode = vm._vnode; - } - } else { + if ("development" !== 'production' && vm.$options.renderError) { + try { + vnode = vm.$options.renderError.call(vm._renderProxy, vm.$createElement, e); + } catch (e) { + handleError(e, vm, "renderError"); vnode = vm._vnode; } } else { @@ -8613,8 +8714,6 @@ function initInternalComponent (vm, options) { var parentVnode = options._parentVnode; opts.parent = options.parent; opts._parentVnode = parentVnode; - opts._parentElm = options._parentElm; - opts._refElm = options._refElm; var vnodeComponentOptions = parentVnode.componentOptions; opts.propsData = vnodeComponentOptions.propsData; @@ -8857,6 +8956,8 @@ function initAssetRegisters (Vue) { /* */ + + function getComponentName (opts) { return opts && (opts.Ctor.options.name || opts.tag) } @@ -8920,10 +9021,8 @@ var KeepAlive = { }, destroyed: function destroyed () { - var this$1 = this; - - for (var key in this$1.cache) { - pruneCacheEntry(this$1.cache, key, this$1.keys); + for (var key in this.cache) { + pruneCacheEntry(this.cache, key, this.keys); } }, @@ -8983,11 +9082,11 @@ var KeepAlive = { } return vnode || (slot && slot[0]) } -} +}; var builtInComponents = { KeepAlive: KeepAlive -} +}; /* */ @@ -9011,7 +9110,7 @@ function initGlobalAPI (Vue) { warn: warn, extend: extend, mergeOptions: mergeOptions, - defineReactive: defineReactive + defineReactive: defineReactive$$1 }; Vue.set = set; @@ -9053,7 +9152,7 @@ Object.defineProperty(Vue, 'FunctionalRenderContext', { value: FunctionalRenderContext }); -Vue.version = '2.5.17'; +Vue.version = '2.5.21'; /* */ @@ -9331,20 +9430,19 @@ function setStyleScope (node, scopeId) { node.setAttribute(scopeId, ''); } - -var nodeOps = Object.freeze({ - createElement: createElement$1, - createElementNS: createElementNS, - createTextNode: createTextNode, - createComment: createComment, - insertBefore: insertBefore, - removeChild: removeChild, - appendChild: appendChild, - parentNode: parentNode, - nextSibling: nextSibling, - tagName: tagName, - setTextContent: setTextContent, - setStyleScope: setStyleScope +var nodeOps = /*#__PURE__*/Object.freeze({ + createElement: createElement$1, + createElementNS: createElementNS, + createTextNode: createTextNode, + createComment: createComment, + insertBefore: insertBefore, + removeChild: removeChild, + appendChild: appendChild, + parentNode: parentNode, + nextSibling: nextSibling, + tagName: tagName, + setTextContent: setTextContent, + setStyleScope: setStyleScope }); /* */ @@ -9362,7 +9460,7 @@ var ref = { destroy: function destroy (vnode) { registerRef(vnode, true); } -} +}; function registerRef (vnode, isRemoval) { var key = vnode.data.ref; @@ -9463,13 +9561,13 @@ function createPatchFunction (backend) { } function createRmCb (childElm, listeners) { - function remove () { - if (--remove.listeners === 0) { + function remove$$1 () { + if (--remove$$1.listeners === 0) { removeNode(childElm); } } - remove.listeners = listeners; - return remove + remove$$1.listeners = listeners; + return remove$$1 } function removeNode (el) { @@ -9570,7 +9668,7 @@ function createPatchFunction (backend) { if (isDef(i)) { var isReactivated = isDef(vnode.componentInstance) && i.keepAlive; if (isDef(i = i.hook) && isDef(i = i.init)) { - i(vnode, false /* hydrating */, parentElm, refElm); + i(vnode, false /* hydrating */); } // after calling the init hook, if the vnode is a child component // it should've created a child instance and mounted it. the child @@ -9578,6 +9676,7 @@ function createPatchFunction (backend) { // in that case we can just return the element and be done. if (isDef(vnode.componentInstance)) { initComponent(vnode, insertedVnodeQueue); + insert(parentElm, vnode.elm, refElm); if (isTrue(isReactivated)) { reactivateComponent(vnode, insertedVnodeQueue, parentElm, refElm); } @@ -9629,7 +9728,7 @@ function createPatchFunction (backend) { function insert (parent, elm, ref$$1) { if (isDef(parent)) { if (isDef(ref$$1)) { - if (ref$$1.parentNode === parent) { + if (nodeOps.parentNode(ref$$1) === parent) { nodeOps.insertBefore(parent, elm, ref$$1); } } else { @@ -9784,20 +9883,20 @@ function createPatchFunction (backend) { } else if (isUndef(oldEndVnode)) { oldEndVnode = oldCh[--oldEndIdx]; } else if (sameVnode(oldStartVnode, newStartVnode)) { - patchVnode(oldStartVnode, newStartVnode, insertedVnodeQueue); + patchVnode(oldStartVnode, newStartVnode, insertedVnodeQueue, newCh, newStartIdx); oldStartVnode = oldCh[++oldStartIdx]; newStartVnode = newCh[++newStartIdx]; } else if (sameVnode(oldEndVnode, newEndVnode)) { - patchVnode(oldEndVnode, newEndVnode, insertedVnodeQueue); + patchVnode(oldEndVnode, newEndVnode, insertedVnodeQueue, newCh, newEndIdx); oldEndVnode = oldCh[--oldEndIdx]; newEndVnode = newCh[--newEndIdx]; } else if (sameVnode(oldStartVnode, newEndVnode)) { // Vnode moved right - patchVnode(oldStartVnode, newEndVnode, insertedVnodeQueue); + patchVnode(oldStartVnode, newEndVnode, insertedVnodeQueue, newCh, newEndIdx); canMove && nodeOps.insertBefore(parentElm, oldStartVnode.elm, nodeOps.nextSibling(oldEndVnode.elm)); oldStartVnode = oldCh[++oldStartIdx]; newEndVnode = newCh[--newEndIdx]; } else if (sameVnode(oldEndVnode, newStartVnode)) { // Vnode moved left - patchVnode(oldEndVnode, newStartVnode, insertedVnodeQueue); + patchVnode(oldEndVnode, newStartVnode, insertedVnodeQueue, newCh, newStartIdx); canMove && nodeOps.insertBefore(parentElm, oldEndVnode.elm, oldStartVnode.elm); oldEndVnode = oldCh[--oldEndIdx]; newStartVnode = newCh[++newStartIdx]; @@ -9811,7 +9910,7 @@ function createPatchFunction (backend) { } else { vnodeToMove = oldCh[idxInOld]; if (sameVnode(vnodeToMove, newStartVnode)) { - patchVnode(vnodeToMove, newStartVnode, insertedVnodeQueue); + patchVnode(vnodeToMove, newStartVnode, insertedVnodeQueue, newCh, newStartIdx); oldCh[idxInOld] = undefined; canMove && nodeOps.insertBefore(parentElm, vnodeToMove.elm, oldStartVnode.elm); } else { @@ -9855,11 +9954,23 @@ function createPatchFunction (backend) { } } - function patchVnode (oldVnode, vnode, insertedVnodeQueue, removeOnly) { + function patchVnode ( + oldVnode, + vnode, + insertedVnodeQueue, + ownerArray, + index, + removeOnly + ) { if (oldVnode === vnode) { return } + if (isDef(vnode.elm) && isDef(ownerArray)) { + // clone reused vnode + vnode = ownerArray[index] = cloneVNode(vnode); + } + var elm = vnode.elm = oldVnode.elm; if (isTrue(oldVnode.isAsyncPlaceholder)) { @@ -9900,6 +10011,9 @@ function createPatchFunction (backend) { if (isDef(oldCh) && isDef(ch)) { if (oldCh !== ch) { updateChildren(elm, oldCh, ch, insertedVnodeQueue, removeOnly); } } else if (isDef(ch)) { + if (true) { + checkDuplicateKeys(ch); + } if (isDef(oldVnode.text)) { nodeOps.setTextContent(elm, ''); } addVnodes(elm, null, ch, 0, ch.length - 1, insertedVnodeQueue); } else if (isDef(oldCh)) { @@ -10041,7 +10155,7 @@ function createPatchFunction (backend) { } } - return function patch (oldVnode, vnode, hydrating, removeOnly, parentElm, refElm) { + return function patch (oldVnode, vnode, hydrating, removeOnly) { if (isUndef(vnode)) { if (isDef(oldVnode)) { invokeDestroyHook(oldVnode); } return @@ -10053,12 +10167,12 @@ function createPatchFunction (backend) { if (isUndef(oldVnode)) { // empty mount (likely as component), create new root element isInitialPatch = true; - createElm(vnode, insertedVnodeQueue, parentElm, refElm); + createElm(vnode, insertedVnodeQueue); } else { var isRealElement = isDef(oldVnode.nodeType); if (!isRealElement && sameVnode(oldVnode, vnode)) { // patch existing root node - patchVnode(oldVnode, vnode, insertedVnodeQueue, removeOnly); + patchVnode(oldVnode, vnode, insertedVnodeQueue, null, null, removeOnly); } else { if (isRealElement) { // mounting to a real element @@ -10089,7 +10203,7 @@ function createPatchFunction (backend) { // replacing existing element var oldElm = oldVnode.elm; - var parentElm$1 = nodeOps.parentNode(oldElm); + var parentElm = nodeOps.parentNode(oldElm); // create new node createElm( @@ -10098,7 +10212,7 @@ function createPatchFunction (backend) { // extremely rare edge case: do not insert if old element is in a // leaving transition. Only happens when combining transition + // keep-alive + HOCs. (#4590) - oldElm._leaveCb ? null : parentElm$1, + oldElm._leaveCb ? null : parentElm, nodeOps.nextSibling(oldElm) ); @@ -10133,8 +10247,8 @@ function createPatchFunction (backend) { } // destroy old node - if (isDef(parentElm$1)) { - removeVnodes(parentElm$1, [oldVnode], 0, 0); + if (isDef(parentElm)) { + removeVnodes(parentElm, [oldVnode], 0, 0); } else if (isDef(oldVnode.tag)) { invokeDestroyHook(oldVnode); } @@ -10154,7 +10268,7 @@ var directives = { destroy: function unbindDirectives (vnode) { updateDirectives(vnode, emptyNode); } -} +}; function updateDirectives (oldVnode, vnode) { if (oldVnode.data.directives || vnode.data.directives) { @@ -10265,7 +10379,7 @@ function callHook$1 (dir, hook, vnode, oldVnode, isDestroy) { var baseModules = [ ref, directives -] +]; /* */ @@ -10349,7 +10463,7 @@ function baseSetAttr (el, key, value) { /* istanbul ignore if */ if ( isIE && !isIE9 && - el.tagName === 'TEXTAREA' && + (el.tagName === 'TEXTAREA' || el.tagName === 'INPUT') && key === 'placeholder' && !el.__ieph ) { var blocker = function (e) { @@ -10367,7 +10481,7 @@ function baseSetAttr (el, key, value) { var attrs = { create: updateAttrs, update: updateAttrs -} +}; /* */ @@ -10405,7 +10519,7 @@ function updateClass (oldVnode, vnode) { var klass = { create: updateClass, update: updateClass -} +}; /* */ @@ -10569,6 +10683,18 @@ function addHandler ( ); } + // normalize click.right and click.middle since they don't actually fire + // this is technically browser-specific, but at least for now browsers are + // the only target envs that have right/middle clicks. + if (name === 'click') { + if (modifiers.right) { + name = 'contextmenu'; + delete modifiers.right; + } else if (modifiers.middle) { + name = 'mouseup'; + } + } + // check capture modifier if (modifiers.capture) { delete modifiers.capture; @@ -10584,18 +10710,6 @@ function addHandler ( name = '&' + name; // mark the event as passive } - // normalize click.right and click.middle since they don't actually fire - // this is technically browser-specific, but at least for now browsers are - // the only target envs that have right/middle clicks. - if (name === 'click') { - if (modifiers.right) { - name = 'contextmenu'; - delete modifiers.right; - } else if (modifiers.middle) { - name = 'mouseup'; - } - } - var events; if (modifiers.native) { delete modifiers.native; @@ -10696,7 +10810,7 @@ function genComponentModel ( el.model = { value: ("(" + value + ")"), - expression: ("\"" + value + "\""), + expression: JSON.stringify(value), callback: ("function (" + baseValueExpression + ") {" + assignment + "}") }; } @@ -10731,12 +10845,7 @@ function genAssignmentCode ( * */ -var len; -var str; -var chr; -var index$1; -var expressionPos; -var expressionEndPos; +var len, str, chr, index$1, expressionPos, expressionEndPos; @@ -11017,7 +11126,7 @@ function normalizeEvents (on) { var target$1; -function createOnceHandler (handler, event, capture) { +function createOnceHandler$1 (event, handler, capture) { var _target = target$1; // save current target element in closure return function onceHandler () { var res = handler.apply(null, arguments); @@ -11030,12 +11139,10 @@ function createOnceHandler (handler, event, capture) { function add$1 ( event, handler, - once$$1, capture, passive ) { handler = withMacroTask(handler); - if (once$$1) { handler = createOnceHandler(handler, event, capture); } target$1.addEventListener( event, handler, @@ -11066,14 +11173,14 @@ function updateDOMListeners (oldVnode, vnode) { var oldOn = oldVnode.data.on || {}; target$1 = vnode.elm; normalizeEvents(on); - updateListeners(on, oldOn, add$1, remove$2, vnode.context); + updateListeners(on, oldOn, add$1, remove$2, createOnceHandler$1, vnode.context); target$1 = undefined; } var events = { create: updateDOMListeners, update: updateDOMListeners -} +}; /* */ @@ -11167,7 +11274,7 @@ function isDirtyWithModifiers (elm, newVal) { var domProps = { create: updateDOMProps, update: updateDOMProps -} +}; /* */ @@ -11328,10 +11435,12 @@ function updateStyle (oldVnode, vnode) { var style = { create: updateStyle, update: updateStyle -} +}; /* */ +var whitespaceRE = /\s+/; + /** * Add class with compatibility for SVG since classList is not supported on * SVG elements in IE @@ -11345,7 +11454,7 @@ function addClass (el, cls) { /* istanbul ignore else */ if (el.classList) { if (cls.indexOf(' ') > -1) { - cls.split(/\s+/).forEach(function (c) { return el.classList.add(c); }); + cls.split(whitespaceRE).forEach(function (c) { return el.classList.add(c); }); } else { el.classList.add(cls); } @@ -11370,7 +11479,7 @@ function removeClass (el, cls) { /* istanbul ignore else */ if (el.classList) { if (cls.indexOf(' ') > -1) { - cls.split(/\s+/).forEach(function (c) { return el.classList.remove(c); }); + cls.split(whitespaceRE).forEach(function (c) { return el.classList.remove(c); }); } else { el.classList.remove(cls); } @@ -11394,20 +11503,20 @@ function removeClass (el, cls) { /* */ -function resolveTransition (def) { - if (!def) { +function resolveTransition (def$$1) { + if (!def$$1) { return } /* istanbul ignore else */ - if (typeof def === 'object') { + if (typeof def$$1 === 'object') { var res = {}; - if (def.css !== false) { - extend(res, autoCssTransition(def.name || 'v')); + if (def$$1.css !== false) { + extend(res, autoCssTransition(def$$1.name || 'v')); } - extend(res, def); + extend(res, def$$1); return res - } else if (typeof def === 'string') { - return autoCssTransition(def) + } else if (typeof def$$1 === 'string') { + return autoCssTransition(def$$1) } } @@ -11510,11 +11619,12 @@ var transformRE = /\b(transform|all)(,|$)/; function getTransitionInfo (el, expectedType) { var styles = window.getComputedStyle(el); - var transitionDelays = styles[transitionProp + 'Delay'].split(', '); - var transitionDurations = styles[transitionProp + 'Duration'].split(', '); + // JSDOM may return undefined for transition properties + var transitionDelays = (styles[transitionProp + 'Delay'] || '').split(', '); + var transitionDurations = (styles[transitionProp + 'Duration'] || '').split(', '); var transitionTimeout = getTimeout(transitionDelays, transitionDurations); - var animationDelays = styles[animationProp + 'Delay'].split(', '); - var animationDurations = styles[animationProp + 'Duration'].split(', '); + var animationDelays = (styles[animationProp + 'Delay'] || '').split(', '); + var animationDurations = (styles[animationProp + 'Duration'] || '').split(', '); var animationTimeout = getTimeout(animationDelays, animationDurations); var type; @@ -11568,8 +11678,12 @@ function getTimeout (delays, durations) { })) } +// Old versions of Chromium (below 61.0.3163.100) formats floating pointer numbers +// in a locale-dependent way, using a comma instead of a dot. +// If comma is not replaced with a dot, the input will be rounded down (i.e. acting +// as a floor function) causing unexpected behaviors function toMs (s) { - return Number(s.slice(0, -1)) * 1000 + return Number(s.slice(0, -1).replace(',', '.')) * 1000 } /* */ @@ -11801,7 +11915,7 @@ function leave (vnode, rm) { return } // record leaving element - if (!vnode.data.show) { + if (!vnode.data.show && el.parentNode) { (el.parentNode._pending || (el.parentNode._pending = {}))[(vnode.key)] = vnode; } beforeLeave && beforeLeave(el); @@ -11890,7 +12004,7 @@ var transition = inBrowser ? { rm(); } } -} : {} +} : {}; var platformModules = [ attrs, @@ -11899,7 +12013,7 @@ var platformModules = [ domProps, style, transition -] +]; /* */ @@ -12110,18 +12224,15 @@ var show = { el.style.display = el.__vOriginalDisplay; } } -} +}; var platformDirectives = { model: directive, show: show -} +}; /* */ -// Provides transition support for a single element/component. -// supports transition mode (out-in / in-out) - var transitionProps = { name: String, appear: Boolean, @@ -12187,6 +12298,10 @@ function isSameChild (child, oldChild) { return oldChild.key === child.key && oldChild.tag === child.tag } +var isNotTextNode = function (c) { return c.tag || isAsyncPlaceholder(c); }; + +var isVShowDirective = function (d) { return d.name === 'show'; }; + var Transition = { name: 'transition', props: transitionProps, @@ -12201,7 +12316,7 @@ var Transition = { } // filter out text nodes (possible whitespaces) - children = children.filter(function (c) { return c.tag || isAsyncPlaceholder(c); }); + children = children.filter(isNotTextNode); /* istanbul ignore if */ if (!children.length) { return @@ -12266,7 +12381,7 @@ var Transition = { // mark v-show // so that the transition module can hand over the control to the directive - if (child.data.directives && child.data.directives.some(function (d) { return d.name === 'show'; })) { + if (child.data.directives && child.data.directives.some(isVShowDirective)) { child.data.show = true; } @@ -12304,21 +12419,10 @@ var Transition = { return rawChild } -} +}; /* */ -// Provides transition support for list items. -// supports move transitions using the FLIP technique. - -// Because the vdom's children update algorithm is "unstable" - i.e. -// it doesn't guarantee the relative positioning of removed elements, -// we force transition-group to update its children into two passes: -// in the first pass, we remove all nodes that need to be removed, -// triggering their leaving transition; in the second pass, we insert/move -// into the final desired state. This way in the second pass removed -// nodes will remain where they should be. - var props = extend({ tag: String, moveClass: String @@ -12329,6 +12433,25 @@ delete props.mode; var TransitionGroup = { props: props, + beforeMount: function beforeMount () { + var this$1 = this; + + var update = this._update; + this._update = function (vnode, hydrating) { + var restoreActiveInstance = setActiveInstance(this$1); + // force removing pass + this$1.__patch__( + this$1._vnode, + this$1.kept, + false, // hydrating + true // removeOnly (!important, avoids unnecessary moves) + ); + this$1._vnode = this$1.kept; + restoreActiveInstance(); + update.call(this$1, vnode, hydrating); + }; + }, + render: function render (h) { var tag = this.tag || this.$vnode.data.tag || 'span'; var map = Object.create(null); @@ -12372,17 +12495,6 @@ var TransitionGroup = { return h(tag, null, children) }, - beforeUpdate: function beforeUpdate () { - // force removing pass - this.__patch__( - this._vnode, - this.kept, - false, // hydrating - true // removeOnly (!important, avoids unnecessary moves) - ); - this._vnode = this.kept; - }, - updated: function updated () { var children = this.prevChildren; var moveClass = this.moveClass || ((this.name || 'v') + '-move'); @@ -12408,6 +12520,9 @@ var TransitionGroup = { addTransitionClass(el, moveClass); s.transform = s.WebkitTransform = s.transitionDuration = ''; el.addEventListener(transitionEndEvent, el._moveCb = function cb (e) { + if (e && e.target !== el) { + return + } if (!e || /transform$/.test(e.propertyName)) { el.removeEventListener(transitionEndEvent, cb); el._moveCb = null; @@ -12445,7 +12560,7 @@ var TransitionGroup = { return (this._hasMove = info.hasTransform) } } -} +}; function callPendingCbs (c) { /* istanbul ignore if */ @@ -12478,7 +12593,7 @@ function applyTranslation (c) { var platformComponents = { Transition: Transition, TransitionGroup: TransitionGroup -} +}; /* */ @@ -12539,7 +12654,7 @@ if (inBrowser) { /* */ -var defaultTagRE = /\{\{((?:.|\n)+?)\}\}/g; +var defaultTagRE = /\{\{((?:.|\r?\n)+?)\}\}/g; var regexEscapeRE = /[-.*+?^${}()|[\]\/\\]/g; var buildRegex = cached(function (delimiters) { @@ -12625,7 +12740,7 @@ var klass$1 = { staticKeys: ['staticClass'], transformNode: transformNode, genData: genData -} +}; /* */ @@ -12669,7 +12784,7 @@ var style$1 = { staticKeys: ['staticStyle'], transformNode: transformNode$1, genData: genData$1 -} +}; /* */ @@ -12681,7 +12796,7 @@ var he = { decoder.innerHTML = html; return decoder.textContent } -} +}; /* */ @@ -12710,13 +12825,6 @@ var isNonPhrasingTag = makeMap( * Not type-checking this file because it's mostly vendor code. */ -/*! - * HTML Parser By John Resig (ejohn.org) - * Modified by Juriy "kangax" Zaytsev - * Original code by Erik Arvidsson, Mozilla Public License - * http://erik.eae.net/simplehtmlparser/simplehtmlparser.js - */ - // Regular Expressions for parsing tags and attributes var attribute = /^\s*([^\s"'<>\/=]+)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/; // could use https://www.w3.org/TR/1999/REC-xml-names-19990114/#NT-QName @@ -12731,11 +12839,6 @@ var doctype = /^]+>/i; var comment = /^= 0; pos--) { if (stack[pos].lowerCasedTag === lowerCasedTagName) { break @@ -13018,7 +13112,7 @@ function parseHTML (html, options) { var onRE = /^@|^v-on:/; var dirRE = /^v-|^@|^:/; -var forAliasRE = /([^]*?)\s+(?:in|of)\s+([^]*)/; +var forAliasRE = /([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/; var forIteratorRE = /,([^,\}\]]*)(?:,([^,\}\]]*))?$/; var stripParensRE = /^\(|\)$/g; @@ -13203,7 +13297,8 @@ function parse ( processIfConditions(element, currentParent); } else if (element.slotScope) { // scoped slot currentParent.plain = false; - var name = element.slotTarget || '"default"';(currentParent.scopedSlots || (currentParent.scopedSlots = {}))[name] = element; + var name = element.slotTarget || '"default"' + ;(currentParent.scopedSlots || (currentParent.scopedSlots = {}))[name] = element; } else { currentParent.children.push(element); element.parent = currentParent; @@ -13327,8 +13422,20 @@ function processElement (element, options) { function processKey (el) { var exp = getBindingAttr(el, 'key'); if (exp) { - if ("development" !== 'production' && el.tag === 'template') { - warn$2("