diff --git a/app/DataMapper/DefaultSettings.php b/app/DataMapper/DefaultSettings.php index 89a8a6bff6a8..023154cba77e 100644 --- a/app/DataMapper/DefaultSettings.php +++ b/app/DataMapper/DefaultSettings.php @@ -23,14 +23,12 @@ 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 56d04060293d..fdde84bb24c4 100644 --- a/app/Datatables/ClientDatatable.php +++ b/app/Datatables/ClientDatatable.php @@ -2,6 +2,7 @@ namespace App\Datatables; +use App\Filters\ClientFilters; use App\Models\Client; use App\Utils\Traits\MakesHash; use App\Utils\Traits\UserSessionAttributes; @@ -15,59 +16,28 @@ class ClientDatatable extends EntityDatatable use MakesHash; use MakesActionMenu; + protected $filter; + + public function __construct(ClientFilters $filter) + { + $this->filter = $filter; + } /** - * ?sort=&page=1&per_page=20 - */ + * Returns paginated results for the datatable + * + */ public function query(Request $request, int $company_id) { - /** - * - * $sort_col is returned col|asc - * needs to be exploded - * - */ - $sort_col = explode("|", $request->input('sort')); + $data = $this->filter->apply($company_id)->paginate($request->input('per_page')); - $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); + return response()->json($this->buildActionColumn($data), 200); } - - private function find(int $company_id, $filter, $userId = false) + + private function find(int $company_id, $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'); } @@ -77,16 +47,7 @@ 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.'%'); } @@ -94,9 +55,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); } @@ -126,6 +87,8 @@ class ClientDatatable extends EntityDatatable 'create_expense' ]; + $permissions = auth()->user()->permissions(); + $requested_actions = [ 'view_client_client_id', 'edit_client_client_id', @@ -158,6 +121,22 @@ class ClientDatatable extends EntityDatatable } + public function listActions() : Collection + { + return collect([ + 'multi_select' => [ + ['name' => trans('texts.active'), 'value' => 'active'], + ['name' => trans('texts.archived'), 'value' => 'archived'], + ['name' => trans('texts.deleted'), 'value' => 'deleted'] + ], + 'create_entity' => [ + 'create_permission' => auth()->user()->can('create', Client::class), + 'url' => route('clients.create'), + 'name' => trans('texts.new_client') + ] + ]); + } + public function buildOptions() : Collection { @@ -177,7 +156,7 @@ class ClientDatatable extends EntityDatatable 'name' => '__checkbox', 'title' => '', 'titleClass' => 'center aligned', - 'visible' => $visible->__checkbox, + 'visible' => true, 'dataClass' => 'center aligned' ], [ diff --git a/app/Filters/ClientFilters.php b/app/Filters/ClientFilters.php index 895a60ba5f50..721d9278f6e7 100644 --- a/app/Filters/ClientFilters.php +++ b/app/Filters/ClientFilters.php @@ -2,64 +2,149 @@ namespace App\Filters; -use Illuminate\Database\Eloquent\Builder; +use Illuminate\Database\Query\Builder; +use Illuminate\Support\Facades\DB; +use Illuminate\Support\Facades\Log; +/** + * ClientFilters + */ class ClientFilters extends QueryFilters { /** - * Filters by due_date + * Filter by balance * - * @param string $due_date - * @return Builder + * @param string $balance + * @return Illuminate\Database\Query\Builder */ - public function balance($balance) + public function balance(string $balance): Builder { $parts = $this->split($balance); return $this->builder->where('balance', $parts->operator, $parts->value); } - public function between_balance($balance) + /** + * Filter between balances + * + * @param string balance + * @return Illuminate\Database\Query\Builder + */ + public function between_balance(string $balance): Builder { $parts = explode(":", $balance); return $this->builder->whereBetween('balance', [$parts[0], $parts[1]]); } - /** - * Filter by popularity. - * - //* @param string $order - //* @return Builder - - public function popular($order = 'desc') + * Filter based on search text + * + * @param string query filter + * @return Illuminate\Database\Query\Builder + */ + public function filter(string $filter = '') : Builder { - return $this->builder->orderBy('views', $order); + 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 difficulty. - * - * @param string $level - * @return Builder - - public function difficulty($level) + * Filters the list based on the status + * archived, active, deleted + * + * @param string filter + * @return Illuminate\Database\Query\Builder + */ + public function status(string $filter = '') : Builder { - return $this->builder->where('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); + } + }); } /** - * Filter by length. - * - * @param string $order - * @return Builder - - public function length($order = 'asc') + * Sorts the list based on $sort + * + * @param string sort formatted as column|asc + * @return Illuminate\Database\Query\Builder + */ + public function sort(string $sort) : Builder { - return $this->builder->orderBy('length', $order); + $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; } - */ } \ No newline at end of file diff --git a/app/Filters/QueryFilters.php b/app/Filters/QueryFilters.php index cb6516817d7b..187226b868c2 100644 --- a/app/Filters/QueryFilters.php +++ b/app/Filters/QueryFilters.php @@ -2,11 +2,17 @@ namespace App\Filters; -use Illuminate\Database\Eloquent\Builder; +use Illuminate\Database\Query\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. * @@ -26,9 +32,10 @@ abstract class QueryFilters * * @param Request $request */ - public function __construct(Request $request) + public function __construct(Request $request, Builder $builder) { $this->request = $request; + $this->builder = $builder; } /** @@ -37,9 +44,9 @@ abstract class QueryFilters * @param Builder $builder * @return Builder */ - public function apply(Builder $builder) + public function apply(int $company_id) { - $this->builder = $builder; + $this->builder = $this->baseQuery($company_id); foreach ($this->filters() as $name => $value) { if (! method_exists($this, $name)) { @@ -70,7 +77,7 @@ abstract class QueryFilters * Explodes the value by delimiter * * @param string $value - * @return array + * @return stdClass */ public function split($value) : stdClass { @@ -84,6 +91,12 @@ 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 b879525b2eb7..714e5ac3e31e 100644 --- a/app/Http/Controllers/ClientController.php +++ b/app/Http/Controllers/ClientController.php @@ -8,6 +8,7 @@ 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; @@ -42,70 +43,12 @@ class ClientController extends Controller return $this->clientDatatable->query(request(), $this->getCurrentCompanyId()); $data = [ - 'datatable' => $this->clientDatatable->buildOptions() + 'datatable' => $this->clientDatatable->buildOptions(), + 'listaction' => $this->clientDatatable->listActions() ]; 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); - */ } /** @@ -125,8 +68,8 @@ class ClientController extends Controller $client->contacts->add($client_contact); $data = [ - 'client' => $client, - 'hashed_id' => '' + 'client' => $client, + 'hashed_id' => '' ]; return view('client.create', $data); @@ -216,9 +159,23 @@ 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 new file mode 100644 index 000000000000..1334240f3314 --- /dev/null +++ b/app/Jobs/Entity/ActionEntity.php @@ -0,0 +1,40 @@ +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 aa314afd4ec4..4eb3b0c2d452 100644 --- a/app/Models/BaseModel.php +++ b/app/Models/BaseModel.php @@ -2,6 +2,7 @@ namespace App\Models; +use App\Filters\QueryFilters; use Hashids\Hashids; use Illuminate\Database\Eloquent\Model; @@ -23,4 +24,5 @@ class BaseModel extends Model return parent::__call($method, $params); } + } diff --git a/app/Models/CompanyUser.php b/app/Models/CompanyUser.php index de5121a60ad3..9a3e2ddbc321 100644 --- a/app/Models/CompanyUser.php +++ b/app/Models/CompanyUser.php @@ -2,7 +2,9 @@ namespace App\Models; -class CompanyUser extends BaseModel +use Illuminate\Database\Eloquent\Relations\Pivot; + +class CompanyUser extends Pivot { protected $guarded = ['id']; @@ -23,11 +25,11 @@ class CompanyUser extends BaseModel public function user() { - return $this->hasOne(User::class)->withPivot('permissions', 'settings'); + return $this->hasOne(User::class)->withPivot('permissions', 'settings', 'is_admin', 'is_owner', 'is_locked'); } public function company() { - return $this->hasOne(Company::class)->withPivot('permissions', 'settings'); + return $this->hasOne(Company::class)->withPivot('permissions', 'settings', 'is_admin', 'is_owner', 'is_locked'); } } diff --git a/app/Models/User.php b/app/Models/User.php index 8f3d21ed10a7..c00763c6ec7d 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -10,6 +10,7 @@ use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; +use Illuminate\Support\Collection; use Laracasts\Presenter\PresentableTrait; class User extends Authenticatable implements MustVerifyEmail @@ -64,7 +65,7 @@ class User extends Authenticatable implements MustVerifyEmail */ public function companies() { - return $this->belongsToMany(Company::class)->withPivot('permissions','settings'); + return $this->belongsToMany(Company::class)->withPivot('permissions', 'settings', 'is_admin', 'is_owner', 'is_locked'); } /** @@ -108,9 +109,9 @@ class User extends Authenticatable implements MustVerifyEmail * * @return bool */ - public function isAdmin() + public function isAdmin() : bool { - return $this->company()->pivot->is_admin; + return (bool) $this->company()->pivot->is_admin; } /** @@ -140,13 +141,13 @@ class User extends Authenticatable implements MustVerifyEmail * * @return Collection */ - public function permissionsFlat() + public function permissionsFlat() :Collection { return collect($this->permissions())->flatten(); } - public function hasPermission($permission) - { + public function hasPermission($permission) : bool + { return $this->permissionsFlat()->contains($permission); } diff --git a/app/Policies/ClientPolicy.php b/app/Policies/ClientPolicy.php index 16c30aa9e3e8..78de31bef957 100644 --- a/app/Policies/ClientPolicy.php +++ b/app/Policies/ClientPolicy.php @@ -2,6 +2,7 @@ namespace App\Policies; +use App\Models\Client; use App\Models\User; /** @@ -10,5 +11,15 @@ use App\Models\User; */ class ClientPolicy extends EntityPolicy { - + /** + * Checks if the user has create permissions + * + * @param User $user + * @return bool + */ + public function create(User $user) : bool + { + return $user->hasPermission('create_client'); + } + } diff --git a/app/Policies/EntityPolicy.php b/app/Policies/EntityPolicy.php index fd9a5ca1aad6..9ef5b382053d 100644 --- a/app/Policies/EntityPolicy.php +++ b/app/Policies/EntityPolicy.php @@ -12,32 +12,19 @@ class EntityPolicy { /** * Fires before any of the custom policy methods + * + * Only fires if true, if false we continue..... * * @param User $user * @param $ability - * @return bool + * @return bool/void */ - public function before($user, $ability) : bool + public function before($user, $ability) { - if ($user->isAdmin()) { - return true; - } + if($user->isAdmin()) + return true; } - /** - * Checks if the user has create permissions - * @param User $user - * @param $entity - * @return bool - */ - public function create(User $user, $entity) : bool - { - $entity = strtolower(class_basename($entity)); - - return $user->hasPermission('create_' . $entity); - } - - /** * Checks if the user has edit permissions * @param User $user diff --git a/app/Repositories/BaseRepository.php b/app/Repositories/BaseRepository.php index 4d33b97600f5..6fe0c11c35a5 100644 --- a/app/Repositories/BaseRepository.php +++ b/app/Repositories/BaseRepository.php @@ -7,6 +7,141 @@ 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 7fe3298e3fe2..aa131cee81f6 100644 --- a/app/Repositories/ClientRepository.php +++ b/app/Repositories/ClientRepository.php @@ -18,6 +18,11 @@ 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 f61dcae06c2b..cc890db25eb4 100644 --- a/package.json +++ b/package.json @@ -27,7 +27,6 @@ "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", @@ -39,17 +38,19 @@ "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" + "vue-toastr": "^2.0.16", + "vuex": "^3.1.0" } } diff --git a/public/css/ninja.css b/public/css/ninja.css index 27b8490466e6..f7e82fd470b9 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.1.4 + * @version v2.0.18 * @link https://coreui.io * Copyright (c) 2018 creativeLabs Łukasz Holeczek * Licensed under MIT (https://coreui.io/license) @@ -10347,6 +10347,10 @@ 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; @@ -11695,28 +11699,6 @@ 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; } @@ -11884,19 +11866,6 @@ 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); @@ -11941,7 +11910,6 @@ canvas { position: relative; -ms-flex: 0 0 50px; flex: 0 0 50px; - cursor: pointer; background-color: rgba(0, 0, 0, 0.2); border: 0; } @@ -12054,19 +12022,6 @@ 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; @@ -12114,43 +12069,6 @@ 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 { @@ -12181,12 +12099,41 @@ canvas { } *[dir="rtl"] .sidebar .sidebar-minimizer::before { - right: auto; + right: unset; 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; } @@ -12891,26 +12838,94 @@ 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"]) .aside-menu-show .aside-menu, +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 { margin-right: 0; } -html[dir="rtl"] .sidebar-show .sidebar, +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 { margin-right: 0; } -html[dir="rtl"] .aside-menu-show .aside-menu, +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 { 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; @@ -12950,99 +12965,71 @@ html[dir="rtl"] .aside-menu-show .aside-menu { } @media (min-width: 576px) { - html:not([dir="rtl"]) .sidebar-sm-show .sidebar, - html:not([dir="rtl"]) .sidebar-show .sidebar { + html:not([dir="rtl"]) .sidebar-sm-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-show.sidebar-fixed .main, - html:not([dir="rtl"]) .sidebar-show.sidebar-fixed .app-footer { + html:not([dir="rtl"]) .sidebar-sm-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-show.sidebar-fixed.sidebar-compact .main, - html:not([dir="rtl"]) .sidebar-show.sidebar-fixed.sidebar-compact .app-footer { + html:not([dir="rtl"]) .sidebar-sm-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, - 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.sidebar-fixed.sidebar-minimized .app-footer { + margin-left: 50px; } - html:not([dir="rtl"]) .sidebar-sm-show.breadcrumb-fixed .breadcrumb, - html:not([dir="rtl"]) .sidebar-show.breadcrumb-fixed .breadcrumb { + html:not([dir="rtl"]) .sidebar-sm-show.breadcrumb-fixed .breadcrumb { left: 200px; } - html:not([dir="rtl"]) .sidebar-sm-show.breadcrumb-fixed.sidebar-compact .breadcrumb, - html:not([dir="rtl"]) .sidebar-show.breadcrumb-fixed.sidebar-compact .breadcrumb { + html:not([dir="rtl"]) .sidebar-sm-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-show.breadcrumb-fixed.sidebar-minimized .breadcrumb { + html:not([dir="rtl"]) .sidebar-sm-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-show .sidebar { + html[dir="rtl"] .sidebar-sm-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-show.sidebar-fixed .main, - html[dir="rtl"] .sidebar-show.sidebar-fixed .app-footer { + html[dir="rtl"] .sidebar-sm-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-show.sidebar-fixed.sidebar-compact .main, - html[dir="rtl"] .sidebar-show.sidebar-fixed.sidebar-compact .app-footer { + html[dir="rtl"] .sidebar-sm-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, - 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.sidebar-fixed.sidebar-minimized .app-footer { + margin-right: 50px; } - html[dir="rtl"] .sidebar-sm-show.breadcrumb-fixed .breadcrumb, - html[dir="rtl"] .sidebar-show.breadcrumb-fixed .breadcrumb { + html[dir="rtl"] .sidebar-sm-show.breadcrumb-fixed .breadcrumb { right: 200px; } - html[dir="rtl"] .sidebar-sm-show.breadcrumb-fixed.sidebar-compact .breadcrumb, - html[dir="rtl"] .sidebar-show.breadcrumb-fixed.sidebar-compact .breadcrumb { + html[dir="rtl"] .sidebar-sm-show.breadcrumb-fixed.sidebar-compact .breadcrumb { right: 150px; } - html[dir="rtl"] .sidebar-sm-show.breadcrumb-fixed.sidebar-minimized .breadcrumb, - html[dir="rtl"] .sidebar-show.breadcrumb-fixed.sidebar-minimized .breadcrumb { + html[dir="rtl"] .sidebar-sm-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; } @@ -13064,100 +13051,92 @@ html[dir="rtl"] .aside-menu-show .aside-menu { } } +@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-show .sidebar { + html:not([dir="rtl"]) .sidebar-md-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-show.sidebar-fixed .main, - html:not([dir="rtl"]) .sidebar-show.sidebar-fixed .app-footer { + html:not([dir="rtl"]) .sidebar-md-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-show.sidebar-fixed.sidebar-compact .main, - html:not([dir="rtl"]) .sidebar-show.sidebar-fixed.sidebar-compact .app-footer { + html:not([dir="rtl"]) .sidebar-md-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, - 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.sidebar-fixed.sidebar-minimized .app-footer { + margin-left: 50px; } - html:not([dir="rtl"]) .sidebar-md-show.breadcrumb-fixed .breadcrumb, - html:not([dir="rtl"]) .sidebar-show.breadcrumb-fixed .breadcrumb { + html:not([dir="rtl"]) .sidebar-md-show.breadcrumb-fixed .breadcrumb { left: 200px; } - html:not([dir="rtl"]) .sidebar-md-show.breadcrumb-fixed.sidebar-compact .breadcrumb, - html:not([dir="rtl"]) .sidebar-show.breadcrumb-fixed.sidebar-compact .breadcrumb { + html:not([dir="rtl"]) .sidebar-md-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-show.breadcrumb-fixed.sidebar-minimized .breadcrumb { + html:not([dir="rtl"]) .sidebar-md-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-show .sidebar { + html[dir="rtl"] .sidebar-md-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-show.sidebar-fixed .main, - html[dir="rtl"] .sidebar-show.sidebar-fixed .app-footer { + html[dir="rtl"] .sidebar-md-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-show.sidebar-fixed.sidebar-compact .main, - html[dir="rtl"] .sidebar-show.sidebar-fixed.sidebar-compact .app-footer { + html[dir="rtl"] .sidebar-md-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, - 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.sidebar-fixed.sidebar-minimized .app-footer { + margin-right: 50px; } - html[dir="rtl"] .sidebar-md-show.breadcrumb-fixed .breadcrumb, - html[dir="rtl"] .sidebar-show.breadcrumb-fixed .breadcrumb { + html[dir="rtl"] .sidebar-md-show.breadcrumb-fixed .breadcrumb { right: 200px; } - html[dir="rtl"] .sidebar-md-show.breadcrumb-fixed.sidebar-compact .breadcrumb, - html[dir="rtl"] .sidebar-show.breadcrumb-fixed.sidebar-compact .breadcrumb { + html[dir="rtl"] .sidebar-md-show.breadcrumb-fixed.sidebar-compact .breadcrumb { right: 150px; } - html[dir="rtl"] .sidebar-md-show.breadcrumb-fixed.sidebar-minimized .breadcrumb, - html[dir="rtl"] .sidebar-show.breadcrumb-fixed.sidebar-minimized .breadcrumb { + html[dir="rtl"] .sidebar-md-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; } @@ -13179,100 +13158,92 @@ html[dir="rtl"] .aside-menu-show .aside-menu { } } +@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-show .sidebar { + html:not([dir="rtl"]) .sidebar-lg-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-show.sidebar-fixed .main, - html:not([dir="rtl"]) .sidebar-show.sidebar-fixed .app-footer { + html:not([dir="rtl"]) .sidebar-lg-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-show.sidebar-fixed.sidebar-compact .main, - html:not([dir="rtl"]) .sidebar-show.sidebar-fixed.sidebar-compact .app-footer { + html:not([dir="rtl"]) .sidebar-lg-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-show.sidebar-fixed.sidebar-minimized .main, - html:not([dir="rtl"]) .sidebar-show.sidebar-fixed.sidebar-minimized .app-footer { + html:not([dir="rtl"]) .sidebar-lg-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-show.breadcrumb-fixed .breadcrumb { + html:not([dir="rtl"]) .sidebar-lg-show.breadcrumb-fixed .breadcrumb { left: 200px; } - html:not([dir="rtl"]) .sidebar-lg-show.breadcrumb-fixed.sidebar-compact .breadcrumb, - html:not([dir="rtl"]) .sidebar-show.breadcrumb-fixed.sidebar-compact .breadcrumb { + html:not([dir="rtl"]) .sidebar-lg-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-show.breadcrumb-fixed.sidebar-minimized .breadcrumb { + html:not([dir="rtl"]) .sidebar-lg-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-show .sidebar { + html[dir="rtl"] .sidebar-lg-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-show.sidebar-fixed .main, - html[dir="rtl"] .sidebar-show.sidebar-fixed .app-footer { + html[dir="rtl"] .sidebar-lg-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-show.sidebar-fixed.sidebar-compact .main, - html[dir="rtl"] .sidebar-show.sidebar-fixed.sidebar-compact .app-footer { + html[dir="rtl"] .sidebar-lg-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-show.sidebar-fixed.sidebar-minimized .main, - html[dir="rtl"] .sidebar-show.sidebar-fixed.sidebar-minimized .app-footer { + html[dir="rtl"] .sidebar-lg-show.sidebar-fixed.sidebar-minimized .app-footer { margin-right: 50px; } - html[dir="rtl"] .sidebar-lg-show.breadcrumb-fixed .breadcrumb, - html[dir="rtl"] .sidebar-show.breadcrumb-fixed .breadcrumb { + html[dir="rtl"] .sidebar-lg-show.breadcrumb-fixed .breadcrumb { right: 200px; } - html[dir="rtl"] .sidebar-lg-show.breadcrumb-fixed.sidebar-compact .breadcrumb, - html[dir="rtl"] .sidebar-show.breadcrumb-fixed.sidebar-compact .breadcrumb { + html[dir="rtl"] .sidebar-lg-show.breadcrumb-fixed.sidebar-compact .breadcrumb { right: 150px; } - html[dir="rtl"] .sidebar-lg-show.breadcrumb-fixed.sidebar-minimized .breadcrumb, - html[dir="rtl"] .sidebar-show.breadcrumb-fixed.sidebar-minimized .breadcrumb { + html[dir="rtl"] .sidebar-lg-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; } @@ -13294,100 +13265,92 @@ html[dir="rtl"] .aside-menu-show .aside-menu { } } +@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-show .sidebar { + html:not([dir="rtl"]) .sidebar-xl-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-show.sidebar-fixed .main, - html:not([dir="rtl"]) .sidebar-show.sidebar-fixed .app-footer { + html:not([dir="rtl"]) .sidebar-xl-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-show.sidebar-fixed.sidebar-compact .main, - html:not([dir="rtl"]) .sidebar-show.sidebar-fixed.sidebar-compact .app-footer { + html:not([dir="rtl"]) .sidebar-xl-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-show.sidebar-fixed.sidebar-minimized .main, - html:not([dir="rtl"]) .sidebar-show.sidebar-fixed.sidebar-minimized .app-footer { + html:not([dir="rtl"]) .sidebar-xl-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-show.breadcrumb-fixed .breadcrumb { + html:not([dir="rtl"]) .sidebar-xl-show.breadcrumb-fixed .breadcrumb { left: 200px; } - html:not([dir="rtl"]) .sidebar-xl-show.breadcrumb-fixed.sidebar-compact .breadcrumb, - html:not([dir="rtl"]) .sidebar-show.breadcrumb-fixed.sidebar-compact .breadcrumb { + html:not([dir="rtl"]) .sidebar-xl-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-show.breadcrumb-fixed.sidebar-minimized .breadcrumb { + html:not([dir="rtl"]) .sidebar-xl-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-show .sidebar { + html[dir="rtl"] .sidebar-xl-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-show.sidebar-fixed .main, - html[dir="rtl"] .sidebar-show.sidebar-fixed .app-footer { + html[dir="rtl"] .sidebar-xl-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-show.sidebar-fixed.sidebar-compact .main, - html[dir="rtl"] .sidebar-show.sidebar-fixed.sidebar-compact .app-footer { + html[dir="rtl"] .sidebar-xl-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-show.sidebar-fixed.sidebar-minimized .main, - html[dir="rtl"] .sidebar-show.sidebar-fixed.sidebar-minimized .app-footer { + html[dir="rtl"] .sidebar-xl-show.sidebar-fixed.sidebar-minimized .app-footer { margin-right: 50px; } - html[dir="rtl"] .sidebar-xl-show.breadcrumb-fixed .breadcrumb, - html[dir="rtl"] .sidebar-show.breadcrumb-fixed .breadcrumb { + html[dir="rtl"] .sidebar-xl-show.breadcrumb-fixed .breadcrumb { right: 200px; } - html[dir="rtl"] .sidebar-xl-show.breadcrumb-fixed.sidebar-compact .breadcrumb, - html[dir="rtl"] .sidebar-show.breadcrumb-fixed.sidebar-compact .breadcrumb { + html[dir="rtl"] .sidebar-xl-show.breadcrumb-fixed.sidebar-compact .breadcrumb { right: 150px; } - html[dir="rtl"] .sidebar-xl-show.breadcrumb-fixed.sidebar-minimized .breadcrumb, - html[dir="rtl"] .sidebar-show.breadcrumb-fixed.sidebar-minimized .breadcrumb { + html[dir="rtl"] .sidebar-xl-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; } @@ -13409,6 +13372,26 @@ html[dir="rtl"] .aside-menu-show .aside-menu { } } +@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 27b8490466e6..f7e82fd470b9 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.1.4 + * @version v2.0.18 * @link https://coreui.io * Copyright (c) 2018 creativeLabs Łukasz Holeczek * Licensed under MIT (https://coreui.io/license) @@ -10347,6 +10347,10 @@ 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; @@ -11695,28 +11699,6 @@ 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; } @@ -11884,19 +11866,6 @@ 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); @@ -11941,7 +11910,6 @@ canvas { position: relative; -ms-flex: 0 0 50px; flex: 0 0 50px; - cursor: pointer; background-color: rgba(0, 0, 0, 0.2); border: 0; } @@ -12054,19 +12022,6 @@ 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; @@ -12114,43 +12069,6 @@ 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 { @@ -12181,12 +12099,41 @@ canvas { } *[dir="rtl"] .sidebar .sidebar-minimizer::before { - right: auto; + right: unset; 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; } @@ -12891,26 +12838,94 @@ 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"]) .aside-menu-show .aside-menu, +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 { margin-right: 0; } -html[dir="rtl"] .sidebar-show .sidebar, +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 { margin-right: 0; } -html[dir="rtl"] .aside-menu-show .aside-menu, +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 { 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; @@ -12950,99 +12965,71 @@ html[dir="rtl"] .aside-menu-show .aside-menu { } @media (min-width: 576px) { - html:not([dir="rtl"]) .sidebar-sm-show .sidebar, - html:not([dir="rtl"]) .sidebar-show .sidebar { + html:not([dir="rtl"]) .sidebar-sm-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-show.sidebar-fixed .main, - html:not([dir="rtl"]) .sidebar-show.sidebar-fixed .app-footer { + html:not([dir="rtl"]) .sidebar-sm-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-show.sidebar-fixed.sidebar-compact .main, - html:not([dir="rtl"]) .sidebar-show.sidebar-fixed.sidebar-compact .app-footer { + html:not([dir="rtl"]) .sidebar-sm-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, - 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.sidebar-fixed.sidebar-minimized .app-footer { + margin-left: 50px; } - html:not([dir="rtl"]) .sidebar-sm-show.breadcrumb-fixed .breadcrumb, - html:not([dir="rtl"]) .sidebar-show.breadcrumb-fixed .breadcrumb { + html:not([dir="rtl"]) .sidebar-sm-show.breadcrumb-fixed .breadcrumb { left: 200px; } - html:not([dir="rtl"]) .sidebar-sm-show.breadcrumb-fixed.sidebar-compact .breadcrumb, - html:not([dir="rtl"]) .sidebar-show.breadcrumb-fixed.sidebar-compact .breadcrumb { + html:not([dir="rtl"]) .sidebar-sm-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-show.breadcrumb-fixed.sidebar-minimized .breadcrumb { + html:not([dir="rtl"]) .sidebar-sm-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-show .sidebar { + html[dir="rtl"] .sidebar-sm-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-show.sidebar-fixed .main, - html[dir="rtl"] .sidebar-show.sidebar-fixed .app-footer { + html[dir="rtl"] .sidebar-sm-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-show.sidebar-fixed.sidebar-compact .main, - html[dir="rtl"] .sidebar-show.sidebar-fixed.sidebar-compact .app-footer { + html[dir="rtl"] .sidebar-sm-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, - 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.sidebar-fixed.sidebar-minimized .app-footer { + margin-right: 50px; } - html[dir="rtl"] .sidebar-sm-show.breadcrumb-fixed .breadcrumb, - html[dir="rtl"] .sidebar-show.breadcrumb-fixed .breadcrumb { + html[dir="rtl"] .sidebar-sm-show.breadcrumb-fixed .breadcrumb { right: 200px; } - html[dir="rtl"] .sidebar-sm-show.breadcrumb-fixed.sidebar-compact .breadcrumb, - html[dir="rtl"] .sidebar-show.breadcrumb-fixed.sidebar-compact .breadcrumb { + html[dir="rtl"] .sidebar-sm-show.breadcrumb-fixed.sidebar-compact .breadcrumb { right: 150px; } - html[dir="rtl"] .sidebar-sm-show.breadcrumb-fixed.sidebar-minimized .breadcrumb, - html[dir="rtl"] .sidebar-show.breadcrumb-fixed.sidebar-minimized .breadcrumb { + html[dir="rtl"] .sidebar-sm-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; } @@ -13064,100 +13051,92 @@ html[dir="rtl"] .aside-menu-show .aside-menu { } } +@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-show .sidebar { + html:not([dir="rtl"]) .sidebar-md-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-show.sidebar-fixed .main, - html:not([dir="rtl"]) .sidebar-show.sidebar-fixed .app-footer { + html:not([dir="rtl"]) .sidebar-md-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-show.sidebar-fixed.sidebar-compact .main, - html:not([dir="rtl"]) .sidebar-show.sidebar-fixed.sidebar-compact .app-footer { + html:not([dir="rtl"]) .sidebar-md-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, - 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.sidebar-fixed.sidebar-minimized .app-footer { + margin-left: 50px; } - html:not([dir="rtl"]) .sidebar-md-show.breadcrumb-fixed .breadcrumb, - html:not([dir="rtl"]) .sidebar-show.breadcrumb-fixed .breadcrumb { + html:not([dir="rtl"]) .sidebar-md-show.breadcrumb-fixed .breadcrumb { left: 200px; } - html:not([dir="rtl"]) .sidebar-md-show.breadcrumb-fixed.sidebar-compact .breadcrumb, - html:not([dir="rtl"]) .sidebar-show.breadcrumb-fixed.sidebar-compact .breadcrumb { + html:not([dir="rtl"]) .sidebar-md-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-show.breadcrumb-fixed.sidebar-minimized .breadcrumb { + html:not([dir="rtl"]) .sidebar-md-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-show .sidebar { + html[dir="rtl"] .sidebar-md-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-show.sidebar-fixed .main, - html[dir="rtl"] .sidebar-show.sidebar-fixed .app-footer { + html[dir="rtl"] .sidebar-md-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-show.sidebar-fixed.sidebar-compact .main, - html[dir="rtl"] .sidebar-show.sidebar-fixed.sidebar-compact .app-footer { + html[dir="rtl"] .sidebar-md-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, - 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.sidebar-fixed.sidebar-minimized .app-footer { + margin-right: 50px; } - html[dir="rtl"] .sidebar-md-show.breadcrumb-fixed .breadcrumb, - html[dir="rtl"] .sidebar-show.breadcrumb-fixed .breadcrumb { + html[dir="rtl"] .sidebar-md-show.breadcrumb-fixed .breadcrumb { right: 200px; } - html[dir="rtl"] .sidebar-md-show.breadcrumb-fixed.sidebar-compact .breadcrumb, - html[dir="rtl"] .sidebar-show.breadcrumb-fixed.sidebar-compact .breadcrumb { + html[dir="rtl"] .sidebar-md-show.breadcrumb-fixed.sidebar-compact .breadcrumb { right: 150px; } - html[dir="rtl"] .sidebar-md-show.breadcrumb-fixed.sidebar-minimized .breadcrumb, - html[dir="rtl"] .sidebar-show.breadcrumb-fixed.sidebar-minimized .breadcrumb { + html[dir="rtl"] .sidebar-md-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; } @@ -13179,100 +13158,92 @@ html[dir="rtl"] .aside-menu-show .aside-menu { } } +@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-show .sidebar { + html:not([dir="rtl"]) .sidebar-lg-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-show.sidebar-fixed .main, - html:not([dir="rtl"]) .sidebar-show.sidebar-fixed .app-footer { + html:not([dir="rtl"]) .sidebar-lg-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-show.sidebar-fixed.sidebar-compact .main, - html:not([dir="rtl"]) .sidebar-show.sidebar-fixed.sidebar-compact .app-footer { + html:not([dir="rtl"]) .sidebar-lg-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-show.sidebar-fixed.sidebar-minimized .main, - html:not([dir="rtl"]) .sidebar-show.sidebar-fixed.sidebar-minimized .app-footer { + html:not([dir="rtl"]) .sidebar-lg-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-show.breadcrumb-fixed .breadcrumb { + html:not([dir="rtl"]) .sidebar-lg-show.breadcrumb-fixed .breadcrumb { left: 200px; } - html:not([dir="rtl"]) .sidebar-lg-show.breadcrumb-fixed.sidebar-compact .breadcrumb, - html:not([dir="rtl"]) .sidebar-show.breadcrumb-fixed.sidebar-compact .breadcrumb { + html:not([dir="rtl"]) .sidebar-lg-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-show.breadcrumb-fixed.sidebar-minimized .breadcrumb { + html:not([dir="rtl"]) .sidebar-lg-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-show .sidebar { + html[dir="rtl"] .sidebar-lg-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-show.sidebar-fixed .main, - html[dir="rtl"] .sidebar-show.sidebar-fixed .app-footer { + html[dir="rtl"] .sidebar-lg-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-show.sidebar-fixed.sidebar-compact .main, - html[dir="rtl"] .sidebar-show.sidebar-fixed.sidebar-compact .app-footer { + html[dir="rtl"] .sidebar-lg-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-show.sidebar-fixed.sidebar-minimized .main, - html[dir="rtl"] .sidebar-show.sidebar-fixed.sidebar-minimized .app-footer { + html[dir="rtl"] .sidebar-lg-show.sidebar-fixed.sidebar-minimized .app-footer { margin-right: 50px; } - html[dir="rtl"] .sidebar-lg-show.breadcrumb-fixed .breadcrumb, - html[dir="rtl"] .sidebar-show.breadcrumb-fixed .breadcrumb { + html[dir="rtl"] .sidebar-lg-show.breadcrumb-fixed .breadcrumb { right: 200px; } - html[dir="rtl"] .sidebar-lg-show.breadcrumb-fixed.sidebar-compact .breadcrumb, - html[dir="rtl"] .sidebar-show.breadcrumb-fixed.sidebar-compact .breadcrumb { + html[dir="rtl"] .sidebar-lg-show.breadcrumb-fixed.sidebar-compact .breadcrumb { right: 150px; } - html[dir="rtl"] .sidebar-lg-show.breadcrumb-fixed.sidebar-minimized .breadcrumb, - html[dir="rtl"] .sidebar-show.breadcrumb-fixed.sidebar-minimized .breadcrumb { + html[dir="rtl"] .sidebar-lg-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; } @@ -13294,100 +13265,92 @@ html[dir="rtl"] .aside-menu-show .aside-menu { } } +@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-show .sidebar { + html:not([dir="rtl"]) .sidebar-xl-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-show.sidebar-fixed .main, - html:not([dir="rtl"]) .sidebar-show.sidebar-fixed .app-footer { + html:not([dir="rtl"]) .sidebar-xl-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-show.sidebar-fixed.sidebar-compact .main, - html:not([dir="rtl"]) .sidebar-show.sidebar-fixed.sidebar-compact .app-footer { + html:not([dir="rtl"]) .sidebar-xl-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-show.sidebar-fixed.sidebar-minimized .main, - html:not([dir="rtl"]) .sidebar-show.sidebar-fixed.sidebar-minimized .app-footer { + html:not([dir="rtl"]) .sidebar-xl-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-show.breadcrumb-fixed .breadcrumb { + html:not([dir="rtl"]) .sidebar-xl-show.breadcrumb-fixed .breadcrumb { left: 200px; } - html:not([dir="rtl"]) .sidebar-xl-show.breadcrumb-fixed.sidebar-compact .breadcrumb, - html:not([dir="rtl"]) .sidebar-show.breadcrumb-fixed.sidebar-compact .breadcrumb { + html:not([dir="rtl"]) .sidebar-xl-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-show.breadcrumb-fixed.sidebar-minimized .breadcrumb { + html:not([dir="rtl"]) .sidebar-xl-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-show .sidebar { + html[dir="rtl"] .sidebar-xl-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-show.sidebar-fixed .main, - html[dir="rtl"] .sidebar-show.sidebar-fixed .app-footer { + html[dir="rtl"] .sidebar-xl-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-show.sidebar-fixed.sidebar-compact .main, - html[dir="rtl"] .sidebar-show.sidebar-fixed.sidebar-compact .app-footer { + html[dir="rtl"] .sidebar-xl-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-show.sidebar-fixed.sidebar-minimized .main, - html[dir="rtl"] .sidebar-show.sidebar-fixed.sidebar-minimized .app-footer { + html[dir="rtl"] .sidebar-xl-show.sidebar-fixed.sidebar-minimized .app-footer { margin-right: 50px; } - html[dir="rtl"] .sidebar-xl-show.breadcrumb-fixed .breadcrumb, - html[dir="rtl"] .sidebar-show.breadcrumb-fixed .breadcrumb { + html[dir="rtl"] .sidebar-xl-show.breadcrumb-fixed .breadcrumb { right: 200px; } - html[dir="rtl"] .sidebar-xl-show.breadcrumb-fixed.sidebar-compact .breadcrumb, - html[dir="rtl"] .sidebar-show.breadcrumb-fixed.sidebar-compact .breadcrumb { + html[dir="rtl"] .sidebar-xl-show.breadcrumb-fixed.sidebar-compact .breadcrumb { right: 150px; } - html[dir="rtl"] .sidebar-xl-show.breadcrumb-fixed.sidebar-minimized .breadcrumb, - html[dir="rtl"] .sidebar-show.breadcrumb-fixed.sidebar-minimized .breadcrumb { + html[dir="rtl"] .sidebar-xl-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; } @@ -13409,6 +13372,26 @@ html[dir="rtl"] .aside-menu-show .aside-menu { } } +@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 e980e5bf029f..e634a94d16aa 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.21 + * Vue.js v2.5.17 * (c) 2014-2018 Evan You * Released under the MIT License. */ @@ -3974,8 +3974,8 @@ if(false) { var emptyObject = Object.freeze({}); -// These helpers produce better VM code in JS engines due to their -// explicitness and function inlining. +// these helpers produces 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 an input value to a number for persistence. + * Convert a 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 an attribute is a reserved attribute. + * Check if a 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 an object has the property. + * Check whether the 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 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. + * 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. */ /* istanbul ignore next */ @@ -4212,12 +4212,10 @@ 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) {} @@ -4226,15 +4224,13 @@ function noop (a, b, c) {} */ var no = function (a, b, c) { return false; }; -/* eslint-enable no-unused-vars */ - /** - * Return the same value. + * Return same value */ var identity = function (_) { return _; }; /** - * Generate a string containing static keys from compiler modules. + * Generate a static keys string from compiler modules. */ function genStaticKeys (modules) { return modules.reduce(function (keys, m) { @@ -4258,8 +4254,6 @@ 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); @@ -4281,11 +4275,6 @@ 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 } @@ -4330,8 +4319,6 @@ var LIFECYCLE_HOOKS = [ /* */ - - var config = ({ /** * Option merge strategies (used in core/util/options) @@ -4414,17 +4401,11 @@ 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 -}); +}) /* */ @@ -4509,7 +4490,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'] && global['process'].env.VUE_ENV === 'server'; + _isServer = global['process'].env.VUE_ENV === 'server'; } else { _isServer = false; } @@ -4536,7 +4517,7 @@ if (typeof Set !== 'undefined' && isNative(Set)) { _Set = Set; } else { // a non-standard Set polyfill that only works with primitive keys. - _Set = /*@__PURE__*/(function () { + _Set = (function () { function Set () { this.set = Object.create(null); } @@ -4650,6 +4631,7 @@ if (true) { /* */ + var uid = 0; /** @@ -4678,12 +4660,6 @@ 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(); } @@ -4695,14 +4671,13 @@ Dep.prototype.notify = function notify () { Dep.target = null; var targetStack = []; -function pushTarget (target) { - targetStack.push(target); - Dep.target = target; +function pushTarget (_target) { + if (Dep.target) { targetStack.push(Dep.target); } + Dep.target = _target; } function popTarget () { - targetStack.pop(); - Dep.target = targetStack[targetStack.length - 1]; + Dep.target = targetStack.pop(); } /* */ @@ -4773,10 +4748,7 @@ function cloneVNode (vnode) { var cloned = new VNode( vnode.tag, vnode.data, - // #7975 - // clone children array to avoid mutating original in case of cloning - // a child. - vnode.children && vnode.children.slice(), + vnode.children, vnode.text, vnode.elm, vnode.context, @@ -4790,7 +4762,6 @@ function cloneVNode (vnode) { cloned.fnContext = vnode.fnContext; cloned.fnOptions = vnode.fnOptions; cloned.fnScopeId = vnode.fnScopeId; - cloned.asyncMeta = vnode.asyncMeta; cloned.isCloned = true; return cloned } @@ -4868,11 +4839,10 @@ var Observer = function Observer (value) { this.vmCount = 0; def(value, '__ob__', this); if (Array.isArray(value)) { - if (hasProto) { - protoAugment(value, arrayMethods); - } else { - copyAugment(value, arrayMethods, arrayKeys); - } + var augment = hasProto + ? protoAugment + : copyAugment; + augment(value, arrayMethods, arrayKeys); this.observeArray(value); } else { this.walk(value); @@ -4880,14 +4850,14 @@ var Observer = function Observer (value) { }; /** - * Walk through all properties and convert them into + * Walk through each property 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$$1(obj, keys[i]); + defineReactive(obj, keys[i]); } }; @@ -4903,17 +4873,17 @@ Observer.prototype.observeArray = function observeArray (items) { // helpers /** - * Augment a target Object or Array by intercepting + * Augment an target Object or Array by intercepting * the prototype chain using __proto__ */ -function protoAugment (target, src) { +function protoAugment (target, src, keys) { /* eslint-disable no-proto */ target.__proto__ = src; /* eslint-enable no-proto */ } /** - * Augment a target Object or Array by defining + * Augment an target Object or Array by defining * hidden properties. */ /* istanbul ignore next */ @@ -4954,7 +4924,7 @@ function observe (value, asRootData) { /** * Define a reactive property on an Object. */ -function defineReactive$$1 ( +function defineReactive ( obj, key, val, @@ -4970,10 +4940,10 @@ function defineReactive$$1 ( // cater for pre-defined getter/setters var getter = property && property.get; - var setter = property && property.set; - if ((!getter || setter) && arguments.length === 2) { + if (!getter && arguments.length === 2) { val = obj[key]; } + var setter = property && property.set; var childOb = !shallow && observe(val); Object.defineProperty(obj, key, { @@ -5002,8 +4972,6 @@ function defineReactive$$1 ( if ("development" !== 'production' && customSetter) { customSetter(); } - // #7981: for accessor properties without setter - if (getter && !setter) { return } if (setter) { setter.call(obj, newVal); } else { @@ -5047,7 +5015,7 @@ function set (target, key, val) { target[key] = val; return val } - defineReactive$$1(ob.value, key, val); + defineReactive(ob.value, key, val); ob.dep.notify(); return val } @@ -5134,11 +5102,7 @@ function mergeData (to, from) { fromVal = from[key]; if (!hasOwn(to, key)) { set(to, key, fromVal); - } else if ( - toVal !== fromVal && - isPlainObject(toVal) && - isPlainObject(fromVal) - ) { + } else if (isPlainObject(toVal) && isPlainObject(fromVal)) { mergeData(toVal, fromVal); } } @@ -5461,22 +5425,15 @@ function mergeOptions ( normalizeProps(child, vm); normalizeInject(child, vm); normalizeDirectives(child); - - // 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 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); } } - var options = {}; var key; for (key in parent) { @@ -5529,8 +5486,6 @@ function resolveAsset ( /* */ - - function validateProp ( key, propOptions, @@ -5638,10 +5593,11 @@ function assertProp ( valid = assertedType.valid; } } - if (!valid) { warn( - getInvalidTypeMessage(name, value, expectedTypes), + "Invalid prop: type check failed for prop \"" + name + "\"." + + " Expected " + (expectedTypes.map(capitalize).join(', ')) + + ", got " + (toRawType(value)) + ".", vm ); return @@ -5708,49 +5664,6 @@ 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) { @@ -5797,6 +5710,7 @@ function logError (err, vm, info) { } /* */ +/* globals MessageChannel */ var callbacks = []; var pending = false; @@ -5874,11 +5788,9 @@ if (typeof Promise !== 'undefined' && isNative(Promise)) { function withMacroTask (fn) { return fn._withTask || (fn._withTask = function () { useMacroTask = true; - try { - return fn.apply(null, arguments) - } finally { - useMacroTask = false; - } + var res = fn.apply(null, arguments); + useMacroTask = false; + return res }) } @@ -5959,16 +5871,6 @@ 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); @@ -5990,11 +5892,9 @@ if (true) { var hasHandler = { has: function has (target, key) { var has = key in target; - var isAllowed = allowedGlobals(key) || - (typeof key === 'string' && key.charAt(0) === '_' && !(key in target.$data)); + var isAllowed = allowedGlobals(key) || key.charAt(0) === '_'; if (!has && !isAllowed) { - if (key in target.$data) { warnReservedPrefix(target, key); } - else { warnNonPresent(target, key); } + warnNonPresent(target, key); } return has || !isAllowed } @@ -6003,8 +5903,7 @@ if (true) { var getHandler = { get: function get (target, key) { if (typeof key === 'string' && !(key in target)) { - if (key in target.$data) { warnReservedPrefix(target, key); } - else { warnNonPresent(target, key); } + warnNonPresent(target, key); } return target[key] } @@ -6102,14 +6001,14 @@ function updateListeners ( oldOn, add, remove$$1, - createOnceHandler, vm ) { - var name, def$$1, cur, old, event; + var name, def, cur, old, event; for (name in on) { - def$$1 = cur = on[name]; + def = 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), @@ -6119,10 +6018,7 @@ function updateListeners ( if (isUndef(cur.fns)) { cur = on[name] = createFnInvoker(cur); } - if (isTrue(event.once)) { - cur = on[name] = createOnceHandler(event.name, cur, event.capture); - } - add(event.name, cur, event.capture, event.passive, event.params); + add(event.name, cur, event.once, event.capture, event.passive, event.params); } else if (cur !== old) { old.fns = cur; on[name] = old; @@ -6377,14 +6273,10 @@ function resolveAsyncComponent ( var contexts = factory.contexts = [context]; var sync = true; - var forceRender = function (renderCompleted) { + var forceRender = function () { for (var i = 0, l = contexts.length; i < l; i++) { contexts[i].$forceUpdate(); } - - if (renderCompleted) { - contexts.length = 0; - } }; var resolve = once(function (res) { @@ -6393,7 +6285,7 @@ function resolveAsyncComponent ( // invoke callbacks only if this is not a synchronous resolve // (async resolves are shimmed as synchronous during SSR) if (!sync) { - forceRender(true); + forceRender(); } }); @@ -6404,7 +6296,7 @@ function resolveAsyncComponent ( ); if (isDef(factory.errorComp)) { factory.error = true; - forceRender(true); + forceRender(); } }); @@ -6431,7 +6323,7 @@ function resolveAsyncComponent ( setTimeout(function () { if (isUndef(factory.resolved) && isUndef(factory.error)) { factory.loading = true; - forceRender(false); + forceRender(); } }, res.delay || 200); } @@ -6494,41 +6386,37 @@ function initEvents (vm) { var target; -function add (event, fn) { - target.$on(event, fn); +function add (event, fn, once) { + if (once) { + target.$once(event, fn); + } else { + 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, createOnceHandler, vm); + updateListeners(listeners, oldListeners || {}, add, remove$1, 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++) { - vm.$on(event[i], fn); + this$1.$on(event[i], fn); } } else { (vm._events[event] || (vm._events[event] = [])).push(fn); @@ -6553,6 +6441,8 @@ function eventsMixin (Vue) { }; Vue.prototype.$off = function (event, fn) { + var this$1 = this; + var vm = this; // all if (!arguments.length) { @@ -6562,7 +6452,7 @@ function eventsMixin (Vue) { // array of events if (Array.isArray(event)) { for (var i = 0, l = event.length; i < l; i++) { - vm.$off(event[i], fn); + this$1.$off(event[i], fn); } return vm } @@ -6691,14 +6581,6 @@ 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; @@ -6728,20 +6610,31 @@ 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 restoreActiveInstance = setActiveInstance(vm); + var prevActiveInstance = activeInstance; + activeInstance = 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.$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; } else { // updates vm.$el = vm.__patch__(prevVnode, vnode); } - restoreActiveInstance(); + activeInstance = prevActiveInstance; // update __vue__ reference if (prevEl) { prevEl.__vue__ = null; @@ -6864,13 +6757,7 @@ 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, { - before: function before () { - if (vm._isMounted && !vm._isDestroyed) { - callHook(vm, 'beforeUpdate'); - } - } - }, true /* isRenderWatcher */); + new Watcher(vm, updateComponent, noop, null, true /* isRenderWatcher */); hydrating = false; // manually mounted instance, call mounted on self @@ -7010,6 +6897,7 @@ function callHook (vm, hook) { /* */ + var MAX_UPDATE_COUNT = 100; var queue = []; @@ -7053,9 +6941,6 @@ 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(); @@ -7098,7 +6983,7 @@ function callUpdatedHooks (queue) { while (i--) { var watcher = queue[i]; var vm = watcher.vm; - if (vm._watcher === watcher && vm._isMounted && !vm._isDestroyed) { + if (vm._watcher === watcher && vm._isMounted) { callHook(vm, 'updated'); } } @@ -7145,11 +7030,6 @@ function queueWatcher (watcher) { // queue the flush if (!waiting) { waiting = true; - - if ("development" !== 'production' && !config.async) { - flushSchedulerQueue(); - return - } nextTick(flushSchedulerQueue); } } @@ -7157,8 +7037,6 @@ function queueWatcher (watcher) { /* */ - - var uid$1 = 0; /** @@ -7184,7 +7062,6 @@ 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; } @@ -7205,7 +7082,7 @@ var Watcher = function Watcher ( } else { this.getter = parsePath(expOrFn); if (!this.getter) { - this.getter = noop; + this.getter = function () {}; "development" !== 'production' && warn( "Failed watching path: \"" + expOrFn + "\" " + 'Watcher only accepts simple dot-delimited paths. ' + @@ -7264,11 +7141,13 @@ 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.deps[i]; - if (!this.newDepIds.has(dep.id)) { - dep.removeSub(this); + var dep = this$1.deps[i]; + if (!this$1.newDepIds.has(dep.id)) { + dep.removeSub(this$1); } } var tmp = this.depIds; @@ -7340,9 +7219,11 @@ 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.deps[i].depend(); + this$1.deps[i].depend(); } }; @@ -7350,6 +7231,8 @@ 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 @@ -7359,7 +7242,7 @@ Watcher.prototype.teardown = function teardown () { } var i = this.deps.length; while (i--) { - this.deps[i].removeSub(this); + this$1.deps[i].removeSub(this$1); } this.active = false; } @@ -7424,8 +7307,8 @@ function initProps (vm, propsOptions) { vm ); } - defineReactive$$1(props, key, value, function () { - if (!isRoot && !isUpdatingChildComponent) { + defineReactive(props, key, value, function () { + if (vm.$parent && !isUpdatingChildComponent) { warn( "Avoid mutating a prop directly since the value will be " + "overwritten whenever the parent component re-renders. " + @@ -7436,7 +7319,7 @@ function initProps (vm, propsOptions) { } }); } else { - defineReactive$$1(props, key, value); + defineReactive(props, key, value); } // static props are already proxied on the component's prototype // during Vue.extend(). We only need to proxy props defined at @@ -7557,15 +7440,17 @@ function defineComputed ( if (typeof userDef === 'function') { sharedPropertyDefinition.get = shouldCache ? createComputedGetter(key) - : createGetterInvoker(userDef); + : userDef; sharedPropertyDefinition.set = noop; } else { sharedPropertyDefinition.get = userDef.get ? shouldCache && userDef.cache !== false ? createComputedGetter(key) - : createGetterInvoker(userDef.get) + : userDef.get + : noop; + sharedPropertyDefinition.set = userDef.set + ? userDef.set : noop; - sharedPropertyDefinition.set = userDef.set || noop; } if ("development" !== 'production' && sharedPropertyDefinition.set === noop) { @@ -7594,19 +7479,13 @@ 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 (typeof methods[key] !== 'function') { + if (methods[key] == null) { warn( - "Method \"" + key + "\" has type \"" + (typeof methods[key]) + "\" in the component definition. " + + "Method \"" + key + "\" has an undefined value in the component definition. " + "Did you reference the function correctly?", vm ); @@ -7624,7 +7503,7 @@ function initMethods (vm, methods) { ); } } - vm[key] = typeof methods[key] !== 'function' ? noop : bind(methods[key], vm); + vm[key] = methods[key] == null ? noop : bind(methods[key], vm); } } @@ -7666,7 +7545,7 @@ function stateMixin (Vue) { var propsDef = {}; propsDef.get = function () { return this._props }; if (true) { - dataDef.set = function () { + dataDef.set = function (newData) { warn( 'Avoid replacing instance root $data. ' + 'Use nested data properties instead.', @@ -7696,11 +7575,7 @@ function stateMixin (Vue) { options.user = true; var watcher = new Watcher(vm, expOrFn, cb, options); if (options.immediate) { - try { - cb.call(vm, watcher.value); - } catch (error) { - handleError(error, vm, ("callback for immediate watcher \"" + (watcher.expression) + "\"")); - } + cb.call(vm, watcher.value); } return function unwatchFn () { watcher.teardown(); @@ -7726,7 +7601,7 @@ function initInjections (vm) { Object.keys(result).forEach(function (key) { /* istanbul ignore else */ if (true) { - defineReactive$$1(vm, key, result[key], function () { + defineReactive(vm, key, result[key], function () { warn( "Avoid mutating an injected value directly since the changes will be " + "overwritten whenever the provided component re-renders. " + @@ -7735,7 +7610,7 @@ function initInjections (vm) { ); }); } else { - defineReactive$$1(vm, key, result[key]); + defineReactive(vm, key, result[key]); } }); toggleObserving(true); @@ -7807,10 +7682,9 @@ function renderList ( ret[i] = render(val[key], key, i); } } - if (!isDef(ret)) { - ret = []; + if (isDef(ret)) { + (ret)._isVList = true; } - (ret)._isVList = true; return ret } @@ -7840,7 +7714,19 @@ function renderSlot ( } nodes = scopedSlotFn(props) || fallback; } else { - nodes = this.$slots[name] || fallback; + 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; } var target = props && props.slot; @@ -7928,13 +7814,12 @@ function bindObjectProps ( ? data.domProps || (data.domProps = {}) : data.attrs || (data.attrs = {}); } - var camelizedKey = camelize(key); - if (!(key in hash) && !(camelizedKey in hash)) { + if (!(key in hash)) { hash[key] = value[key]; if (isSync) { var on = data.on || (data.on = {}); - on[("update:" + camelizedKey)] = function ($event) { + on[("update:" + key)] = function ($event) { value[key] = $event; }; } @@ -8140,27 +8025,24 @@ function createFunctionalComponent ( var vnode = options.render.call(null, renderContext._c, renderContext); if (vnode instanceof VNode) { - return cloneAndMarkFunctionalResult(vnode, data, renderContext.parent, options, renderContext) + return cloneAndMarkFunctionalResult(vnode, data, renderContext.parent, options) } 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, renderContext); + res[i] = cloneAndMarkFunctionalResult(vnodes[i], data, renderContext.parent, options); } return res } } -function cloneAndMarkFunctionalResult (vnode, data, contextVm, options, renderContext) { +function cloneAndMarkFunctionalResult (vnode, data, contextVm, options) { // #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; } @@ -8175,15 +8057,33 @@ 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) { + init: function init ( + vnode, + hydrating, + parentElm, + refElm + ) { if ( vnode.componentInstance && !vnode.componentInstance._isDestroyed && @@ -8195,7 +8095,9 @@ var componentVNodeHooks = { } else { var child = vnode.componentInstance = createComponentInstanceForVnode( vnode, - activeInstance + activeInstance, + parentElm, + refElm ); child.$mount(hydrating ? vnode.elm : undefined, hydrating); } @@ -8344,17 +8246,25 @@ 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 + parent, // activeInstance in lifecycle state + parentElm, + refElm ) { var options = { _isComponent: true, + parent: parent, _parentVnode: vnode, - parent: parent + _parentElm: parentElm || null, + _refElm: refElm || null }; // check inline-template render functions var inlineTemplate = vnode.data.inlineTemplate; @@ -8369,43 +8279,20 @@ function installComponentHooks (data) { var hooks = data.hook || (data.hook = {}); for (var i = 0; i < hooksToMerge.length; i++) { var key = hooksToMerge[i]; - var existing = hooks[key]; - var toMerge = componentVNodeHooks[key]; - if (existing !== toMerge && !(existing && existing._merged)) { - hooks[key] = existing ? mergeHook$1(toMerge, existing) : toMerge; - } + hooks[key] = componentVNodeHooks[key]; } } -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 = {}); - 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); - } + if (isDef(on[event])) { + on[event] = [data.model.callback].concat(on[event]); } else { - on[event] = callback; + on[event] = data.model.callback; } } @@ -8493,7 +8380,7 @@ function _createElement ( config.parsePlatformTagName(tag), data, children, undefined, undefined, context ); - } else if ((!data || !data.pre) && isDef(Ctor = resolveAsset(context.$options, 'components', tag))) { + } else if (isDef(Ctor = resolveAsset(context.$options, 'components', tag))) { // component vnode = createComponent(Ctor, data, context, children, tag); } else { @@ -8575,15 +8462,15 @@ function initRender (vm) { /* istanbul ignore else */ if (true) { - defineReactive$$1(vm, '$attrs', parentData && parentData.attrs || emptyObject, function () { + defineReactive(vm, '$attrs', parentData && parentData.attrs || emptyObject, function () { !isUpdatingChildComponent && warn("$attrs is readonly.", vm); }, true); - defineReactive$$1(vm, '$listeners', options._parentListeners || emptyObject, function () { + defineReactive(vm, '$listeners', options._parentListeners || emptyObject, function () { !isUpdatingChildComponent && warn("$listeners is readonly.", vm); }, true); } else { - defineReactive$$1(vm, '$attrs', parentData && parentData.attrs || emptyObject, null, true); - defineReactive$$1(vm, '$listeners', options._parentListeners || emptyObject, null, true); + defineReactive(vm, '$attrs', parentData && parentData.attrs || emptyObject, null, true); + defineReactive(vm, '$listeners', options._parentListeners || emptyObject, null, true); } } @@ -8601,6 +8488,14 @@ 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; } @@ -8617,11 +8512,15 @@ function renderMixin (Vue) { // return error render result, // or previous vnode to prevent render error causing blank component /* istanbul ignore else */ - if ("development" !== 'production' && vm.$options.renderError) { - try { - vnode = vm.$options.renderError.call(vm._renderProxy, vm.$createElement, e); - } catch (e) { - handleError(e, vm, "renderError"); + 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 { vnode = vm._vnode; } } else { @@ -8714,6 +8613,8 @@ 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; @@ -8956,8 +8857,6 @@ function initAssetRegisters (Vue) { /* */ - - function getComponentName (opts) { return opts && (opts.Ctor.options.name || opts.tag) } @@ -9021,8 +8920,10 @@ var KeepAlive = { }, destroyed: function destroyed () { - for (var key in this.cache) { - pruneCacheEntry(this.cache, key, this.keys); + var this$1 = this; + + for (var key in this$1.cache) { + pruneCacheEntry(this$1.cache, key, this$1.keys); } }, @@ -9082,11 +8983,11 @@ var KeepAlive = { } return vnode || (slot && slot[0]) } -}; +} var builtInComponents = { KeepAlive: KeepAlive -}; +} /* */ @@ -9110,7 +9011,7 @@ function initGlobalAPI (Vue) { warn: warn, extend: extend, mergeOptions: mergeOptions, - defineReactive: defineReactive$$1 + defineReactive: defineReactive }; Vue.set = set; @@ -9152,7 +9053,7 @@ Object.defineProperty(Vue, 'FunctionalRenderContext', { value: FunctionalRenderContext }); -Vue.version = '2.5.21'; +Vue.version = '2.5.17'; /* */ @@ -9430,19 +9331,20 @@ function setStyleScope (node, scopeId) { node.setAttribute(scopeId, ''); } -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 + +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 }); /* */ @@ -9460,7 +9362,7 @@ var ref = { destroy: function destroy (vnode) { registerRef(vnode, true); } -}; +} function registerRef (vnode, isRemoval) { var key = vnode.data.ref; @@ -9561,13 +9463,13 @@ function createPatchFunction (backend) { } function createRmCb (childElm, listeners) { - function remove$$1 () { - if (--remove$$1.listeners === 0) { + function remove () { + if (--remove.listeners === 0) { removeNode(childElm); } } - remove$$1.listeners = listeners; - return remove$$1 + remove.listeners = listeners; + return remove } function removeNode (el) { @@ -9668,7 +9570,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 */); + i(vnode, false /* hydrating */, parentElm, refElm); } // after calling the init hook, if the vnode is a child component // it should've created a child instance and mounted it. the child @@ -9676,7 +9578,6 @@ 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); } @@ -9728,7 +9629,7 @@ function createPatchFunction (backend) { function insert (parent, elm, ref$$1) { if (isDef(parent)) { if (isDef(ref$$1)) { - if (nodeOps.parentNode(ref$$1) === parent) { + if (ref$$1.parentNode === parent) { nodeOps.insertBefore(parent, elm, ref$$1); } } else { @@ -9883,20 +9784,20 @@ function createPatchFunction (backend) { } else if (isUndef(oldEndVnode)) { oldEndVnode = oldCh[--oldEndIdx]; } else if (sameVnode(oldStartVnode, newStartVnode)) { - patchVnode(oldStartVnode, newStartVnode, insertedVnodeQueue, newCh, newStartIdx); + patchVnode(oldStartVnode, newStartVnode, insertedVnodeQueue); oldStartVnode = oldCh[++oldStartIdx]; newStartVnode = newCh[++newStartIdx]; } else if (sameVnode(oldEndVnode, newEndVnode)) { - patchVnode(oldEndVnode, newEndVnode, insertedVnodeQueue, newCh, newEndIdx); + patchVnode(oldEndVnode, newEndVnode, insertedVnodeQueue); oldEndVnode = oldCh[--oldEndIdx]; newEndVnode = newCh[--newEndIdx]; } else if (sameVnode(oldStartVnode, newEndVnode)) { // Vnode moved right - patchVnode(oldStartVnode, newEndVnode, insertedVnodeQueue, newCh, newEndIdx); + patchVnode(oldStartVnode, newEndVnode, insertedVnodeQueue); 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, newCh, newStartIdx); + patchVnode(oldEndVnode, newStartVnode, insertedVnodeQueue); canMove && nodeOps.insertBefore(parentElm, oldEndVnode.elm, oldStartVnode.elm); oldEndVnode = oldCh[--oldEndIdx]; newStartVnode = newCh[++newStartIdx]; @@ -9910,7 +9811,7 @@ function createPatchFunction (backend) { } else { vnodeToMove = oldCh[idxInOld]; if (sameVnode(vnodeToMove, newStartVnode)) { - patchVnode(vnodeToMove, newStartVnode, insertedVnodeQueue, newCh, newStartIdx); + patchVnode(vnodeToMove, newStartVnode, insertedVnodeQueue); oldCh[idxInOld] = undefined; canMove && nodeOps.insertBefore(parentElm, vnodeToMove.elm, oldStartVnode.elm); } else { @@ -9954,23 +9855,11 @@ function createPatchFunction (backend) { } } - function patchVnode ( - oldVnode, - vnode, - insertedVnodeQueue, - ownerArray, - index, - removeOnly - ) { + function patchVnode (oldVnode, vnode, insertedVnodeQueue, 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)) { @@ -10011,9 +9900,6 @@ 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)) { @@ -10155,7 +10041,7 @@ function createPatchFunction (backend) { } } - return function patch (oldVnode, vnode, hydrating, removeOnly) { + return function patch (oldVnode, vnode, hydrating, removeOnly, parentElm, refElm) { if (isUndef(vnode)) { if (isDef(oldVnode)) { invokeDestroyHook(oldVnode); } return @@ -10167,12 +10053,12 @@ function createPatchFunction (backend) { if (isUndef(oldVnode)) { // empty mount (likely as component), create new root element isInitialPatch = true; - createElm(vnode, insertedVnodeQueue); + createElm(vnode, insertedVnodeQueue, parentElm, refElm); } else { var isRealElement = isDef(oldVnode.nodeType); if (!isRealElement && sameVnode(oldVnode, vnode)) { // patch existing root node - patchVnode(oldVnode, vnode, insertedVnodeQueue, null, null, removeOnly); + patchVnode(oldVnode, vnode, insertedVnodeQueue, removeOnly); } else { if (isRealElement) { // mounting to a real element @@ -10203,7 +10089,7 @@ function createPatchFunction (backend) { // replacing existing element var oldElm = oldVnode.elm; - var parentElm = nodeOps.parentNode(oldElm); + var parentElm$1 = nodeOps.parentNode(oldElm); // create new node createElm( @@ -10212,7 +10098,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, + oldElm._leaveCb ? null : parentElm$1, nodeOps.nextSibling(oldElm) ); @@ -10247,8 +10133,8 @@ function createPatchFunction (backend) { } // destroy old node - if (isDef(parentElm)) { - removeVnodes(parentElm, [oldVnode], 0, 0); + if (isDef(parentElm$1)) { + removeVnodes(parentElm$1, [oldVnode], 0, 0); } else if (isDef(oldVnode.tag)) { invokeDestroyHook(oldVnode); } @@ -10268,7 +10154,7 @@ var directives = { destroy: function unbindDirectives (vnode) { updateDirectives(vnode, emptyNode); } -}; +} function updateDirectives (oldVnode, vnode) { if (oldVnode.data.directives || vnode.data.directives) { @@ -10379,7 +10265,7 @@ function callHook$1 (dir, hook, vnode, oldVnode, isDestroy) { var baseModules = [ ref, directives -]; +] /* */ @@ -10463,7 +10349,7 @@ function baseSetAttr (el, key, value) { /* istanbul ignore if */ if ( isIE && !isIE9 && - (el.tagName === 'TEXTAREA' || el.tagName === 'INPUT') && + el.tagName === 'TEXTAREA' && key === 'placeholder' && !el.__ieph ) { var blocker = function (e) { @@ -10481,7 +10367,7 @@ function baseSetAttr (el, key, value) { var attrs = { create: updateAttrs, update: updateAttrs -}; +} /* */ @@ -10519,7 +10405,7 @@ function updateClass (oldVnode, vnode) { var klass = { create: updateClass, update: updateClass -}; +} /* */ @@ -10683,18 +10569,6 @@ 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; @@ -10710,6 +10584,18 @@ 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; @@ -10810,7 +10696,7 @@ function genComponentModel ( el.model = { value: ("(" + value + ")"), - expression: JSON.stringify(value), + expression: ("\"" + value + "\""), callback: ("function (" + baseValueExpression + ") {" + assignment + "}") }; } @@ -10845,7 +10731,12 @@ function genAssignmentCode ( * */ -var len, str, chr, index$1, expressionPos, expressionEndPos; +var len; +var str; +var chr; +var index$1; +var expressionPos; +var expressionEndPos; @@ -11126,7 +11017,7 @@ function normalizeEvents (on) { var target$1; -function createOnceHandler$1 (event, handler, capture) { +function createOnceHandler (handler, event, capture) { var _target = target$1; // save current target element in closure return function onceHandler () { var res = handler.apply(null, arguments); @@ -11139,10 +11030,12 @@ function createOnceHandler$1 (event, handler, 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, @@ -11173,14 +11066,14 @@ function updateDOMListeners (oldVnode, vnode) { var oldOn = oldVnode.data.on || {}; target$1 = vnode.elm; normalizeEvents(on); - updateListeners(on, oldOn, add$1, remove$2, createOnceHandler$1, vnode.context); + updateListeners(on, oldOn, add$1, remove$2, vnode.context); target$1 = undefined; } var events = { create: updateDOMListeners, update: updateDOMListeners -}; +} /* */ @@ -11274,7 +11167,7 @@ function isDirtyWithModifiers (elm, newVal) { var domProps = { create: updateDOMProps, update: updateDOMProps -}; +} /* */ @@ -11435,12 +11328,10 @@ 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 @@ -11454,7 +11345,7 @@ function addClass (el, cls) { /* istanbul ignore else */ if (el.classList) { if (cls.indexOf(' ') > -1) { - cls.split(whitespaceRE).forEach(function (c) { return el.classList.add(c); }); + cls.split(/\s+/).forEach(function (c) { return el.classList.add(c); }); } else { el.classList.add(cls); } @@ -11479,7 +11370,7 @@ function removeClass (el, cls) { /* istanbul ignore else */ if (el.classList) { if (cls.indexOf(' ') > -1) { - cls.split(whitespaceRE).forEach(function (c) { return el.classList.remove(c); }); + cls.split(/\s+/).forEach(function (c) { return el.classList.remove(c); }); } else { el.classList.remove(cls); } @@ -11503,20 +11394,20 @@ function removeClass (el, cls) { /* */ -function resolveTransition (def$$1) { - if (!def$$1) { +function resolveTransition (def) { + if (!def) { return } /* istanbul ignore else */ - if (typeof def$$1 === 'object') { + if (typeof def === 'object') { var res = {}; - if (def$$1.css !== false) { - extend(res, autoCssTransition(def$$1.name || 'v')); + if (def.css !== false) { + extend(res, autoCssTransition(def.name || 'v')); } - extend(res, def$$1); + extend(res, def); return res - } else if (typeof def$$1 === 'string') { - return autoCssTransition(def$$1) + } else if (typeof def === 'string') { + return autoCssTransition(def) } } @@ -11619,12 +11510,11 @@ var transformRE = /\b(transform|all)(,|$)/; function getTransitionInfo (el, expectedType) { var styles = window.getComputedStyle(el); - // JSDOM may return undefined for transition properties - var transitionDelays = (styles[transitionProp + 'Delay'] || '').split(', '); - var transitionDurations = (styles[transitionProp + 'Duration'] || '').split(', '); + 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; @@ -11678,12 +11568,8 @@ 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).replace(',', '.')) * 1000 + return Number(s.slice(0, -1)) * 1000 } /* */ @@ -11915,7 +11801,7 @@ function leave (vnode, rm) { return } // record leaving element - if (!vnode.data.show && el.parentNode) { + if (!vnode.data.show) { (el.parentNode._pending || (el.parentNode._pending = {}))[(vnode.key)] = vnode; } beforeLeave && beforeLeave(el); @@ -12004,7 +11890,7 @@ var transition = inBrowser ? { rm(); } } -} : {}; +} : {} var platformModules = [ attrs, @@ -12013,7 +11899,7 @@ var platformModules = [ domProps, style, transition -]; +] /* */ @@ -12224,15 +12110,18 @@ 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, @@ -12298,10 +12187,6 @@ 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, @@ -12316,7 +12201,7 @@ var Transition = { } // filter out text nodes (possible whitespaces) - children = children.filter(isNotTextNode); + children = children.filter(function (c) { return c.tag || isAsyncPlaceholder(c); }); /* istanbul ignore if */ if (!children.length) { return @@ -12381,7 +12266,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(isVShowDirective)) { + if (child.data.directives && child.data.directives.some(function (d) { return d.name === 'show'; })) { child.data.show = true; } @@ -12419,10 +12304,21 @@ 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 @@ -12433,25 +12329,6 @@ 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); @@ -12495,6 +12372,17 @@ 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'); @@ -12520,9 +12408,6 @@ 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; @@ -12560,7 +12445,7 @@ var TransitionGroup = { return (this._hasMove = info.hasTransform) } } -}; +} function callPendingCbs (c) { /* istanbul ignore if */ @@ -12593,7 +12478,7 @@ function applyTranslation (c) { var platformComponents = { Transition: Transition, TransitionGroup: TransitionGroup -}; +} /* */ @@ -12654,7 +12539,7 @@ if (inBrowser) { /* */ -var defaultTagRE = /\{\{((?:.|\r?\n)+?)\}\}/g; +var defaultTagRE = /\{\{((?:.|\n)+?)\}\}/g; var regexEscapeRE = /[-.*+?^${}()|[\]\/\\]/g; var buildRegex = cached(function (delimiters) { @@ -12740,7 +12625,7 @@ var klass$1 = { staticKeys: ['staticClass'], transformNode: transformNode, genData: genData -}; +} /* */ @@ -12784,7 +12669,7 @@ var style$1 = { staticKeys: ['staticStyle'], transformNode: transformNode$1, genData: genData$1 -}; +} /* */ @@ -12796,7 +12681,7 @@ var he = { decoder.innerHTML = html; return decoder.textContent } -}; +} /* */ @@ -12825,6 +12710,13 @@ 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 @@ -12839,6 +12731,11 @@ var doctype = /^]+>/i; var comment = /^= 0; pos--) { if (stack[pos].lowerCasedTag === lowerCasedTagName) { break @@ -13112,7 +13018,7 @@ function parseHTML (html, options) { var onRE = /^@|^v-on:/; var dirRE = /^v-|^@|^:/; -var forAliasRE = /([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/; +var forAliasRE = /([^]*?)\s+(?:in|of)\s+([^]*)/; var forIteratorRE = /,([^,\}\]]*)(?:,([^,\}\]]*))?$/; var stripParensRE = /^\(|\)$/g; @@ -13297,8 +13203,7 @@ 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; @@ -13422,20 +13327,8 @@ function processElement (element, options) { function processKey (el) { var exp = getBindingAttr(el, 'key'); if (exp) { - if (true) { - if (el.tag === 'template') { - warn$2("