Commit 76cd5c23 by novan bagus setiawan

update progress jenis dan penilaian monev

parent e3c0877c
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use DB;
use URL;
use Auth;
use Uuid;
use Alert;
use Crypt;
use App\Models\JadwalKegiatan;
class JadwalKegiatanController extends Controller
{
public function index()
{
$data['jadwal_kegiatan'] = JadwalKegiatan::where('status_hapus', '0')->get();
return view('backend.jadwal_kegiatan.index', compact('data'))->withTitle('Jadwal Kegiatan');
}
/* AJAX request */
public function getData(Request $request){
}
public function create()
{
}
public function store(Request $request)
{
}
public function edit($id)
{
$jenis = Jenis::where('jenis_id', '=', Crypt::decrypt($id))->get();
$penilaian_monev = PenilaianMonev::where('jenis_id', '=', Crypt::decrypt($id))->get();
$data = [
'jenis' => $jenis,
'penilaian_monev' => $penilaian_monev
];
return view('backend.penilaian_monev.edit', compact('data'))->withTitle('Ubah Jenis PKM');
}
public function update(Request $request, $id)
{
$delete = PenilaianMonev::where('jenis_id', $id)->delete($id);
for($i=0; $i<count($request->nama); $i++)
{
$uuid = Uuid::generate();
$data['penilaian_monev_id'] = $uuid;
$data['jenis_id'] = $id;
$data['nama'] = $request->nama[$i];
$data['bobot'] = $request->bobot[$i];
PenilaianMonev::create($data);
}
Alert::success('Data berhasil disimpan.')->persistent('Ok');
return redirect()->route('penilaian_monev.index');
}
public function destroy($id)
{
try {
$delete = Jenis::where('jenis_id', Crypt::decrypt($id))->update(['status_hapus'=>'1']);
if ($delete == 1) {
$status = 'success';
$message = "Jenis PKM berhasil dihapus.";
}
else{
$status = 'error';
$message = "Jenis PKM tidak ada.";
}
return response()->json([
'status' => $status,
'message' => $message,
]);
} catch (\Exception $id) {
return response()->json([
'status' => 'error',
'message' => "Data gagal dihapus.",
]);
}
}
}
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use DB;
use URL;
use Auth;
use Uuid;
use Alert;
use Crypt;
use App\Models\Jenis;
class JenisController extends Controller
{
public function index()
{
return view('backend.jenis.index')->withTitle('Jenis PKM');
}
/* AJAX request */
public function getData(Request $request){
## Read value
$draw = $request->get('draw');
$start = $request->get("start");
$rowperpage = $request->get("length"); // Rows display per page
$columnIndex_arr = $request->get('order');
$columnName_arr = $request->get('columns');
$order_arr = $request->get('order');
$search_arr = $request->get('search');
$columnIndex = $columnIndex_arr[0]['column']; // Column index
$columnName = $columnName_arr[$columnIndex]['data']; // Column name
$columnSortOrder = $order_arr[0]['dir']; // asc or desc
$searchValue = strtoupper($search_arr['value']); // Search value
// Total records
$statementGlobal = " STATUS_HAPUS = '0' ";
$totalRecords = Jenis::select('count(1) as allcount')->whereRaw($statementGlobal)->count();
$statement = " AND (UPPER(NAMA) LIKE '%".$searchValue."%') ";
$totalRecordswithFilter = Jenis::select('count(1) as allcount')
->whereRaw($statementGlobal.$statement)->count();
// Fetch records
$records = Jenis::orderBy($columnName,$columnSortOrder)
->whereRaw($statementGlobal.$statement)
->select('jenis.*')
->skip($start)
->take($rowperpage)
->get();
$data_arr = array();
foreach($records as $record){
$jenis_id = $record->jenis_id;
$nama = $record->nama;
$keterangan = $record->keterangan;
// $edit = route('admin/users/create',$id);
$edit = URL::to('jenis/'.Crypt::encrypt($jenis_id).'/edit');
$delete = "confirmDelete('".Crypt::encrypt($jenis_id)."')";
$data_arr[] = array(
"jenis_id" => $jenis_id,
"nama" => $nama,
"keterangan" => $keterangan,
"aksi" => '<td class="table-action">
<a href="'.$edit.'" class="btn btn-icon-sm btn-primary"><i class="fas fa-edit"></i></a>
<a href="#!" class="btn btn-icon-sm btn-danger" onclick="'.$delete.'"><i class="fas fa-trash"></i></a>
</td>'
);
}
$response = array(
"draw" => intval($draw),
"iTotalRecords" => $totalRecords,
"iTotalDisplayRecords" => $totalRecordswithFilter,
"aaData" => $data_arr
);
echo json_encode($response);
exit;
}
public function create()
{
return view('backend.jenis.create')->withTitle('Tambah Jenis PKM');
}
public function store(Request $request)
{
$uuid = Uuid::generate();
$data['jenis_id'] = $uuid;
$data['nama'] = $request->input('nama');
$data['keterangan'] = $request->input('keterangan');
// $data['created_user'] = Auth::user()->name;
Post::where('id',3)->update(['title'=>'Updated title']);
if(Jenis::create($data))
{
Alert::success('Data berhasil disimpan')->persistent('Ok');
$successmessage = "Proses Tambah Kuesioner Berhasil.";
}
else
{
Alert::success('Data gagal disimpan')->persistent('Ok');
$successmessage = "Proses Tambah Kuesioner Gagal.";
}
return redirect()->route('jenis.index')->with('successMessage', $successmessage);
}
public function edit($id)
{
$jenis = Jenis::where('jenis_id', '=', Crypt::decrypt($id))->get();
$data = [
'jenis' => $jenis
];
return view('backend.jenis.edit', compact('data'))->withTitle('Ubah Jenis PKM');
}
public function update(Request $request, $id)
{
$data['nama'] = $request->input('nama');
$data['keterangan'] = $request->input('keterangan');
$jenis = Jenis::findOrFail($id);
$jenis->update($data);
Alert::success('Data berhasil disimpan.')->persistent('Ok');
return redirect()->route('jenis.index');
}
public function destroy($id)
{
try {
$delete = Jenis::where('jenis_id', Crypt::decrypt($id))->update(['status_hapus'=>'1']);
if ($delete == 1) {
$status = 'success';
$message = "Jenis PKM berhasil dihapus.";
}
else{
$status = 'error';
$message = "Jenis PKM tidak ada.";
}
return response()->json([
'status' => $status,
'message' => $message,
]);
} catch (\Exception $id) {
return response()->json([
'status' => 'error',
'message' => "Data gagal dihapus.",
]);
}
}
}
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use DB;
use URL;
use Auth;
use Uuid;
use Alert;
use Crypt;
use App\Models\Jenis;
use App\Models\PenilaianMonev;
class PenilaianMonevController extends Controller
{
public function index()
{
return view('backend.penilaian_monev.index')->withTitle('Jenis PKM');
}
/* AJAX request */
public function getData(Request $request){
## Read value
$draw = $request->get('draw');
$start = $request->get("start");
$rowperpage = $request->get("length"); // Rows display per page
$columnIndex_arr = $request->get('order');
$columnName_arr = $request->get('columns');
$order_arr = $request->get('order');
$search_arr = $request->get('search');
$columnIndex = $columnIndex_arr[0]['column']; // Column index
$columnName = $columnName_arr[$columnIndex]['data']; // Column name
$columnSortOrder = $order_arr[0]['dir']; // asc or desc
$searchValue = strtoupper($search_arr['value']); // Search value
// Total records
$statementGlobal = " STATUS_HAPUS = '0' ";
$totalRecords = Jenis::select('count(1) as allcount')->whereRaw($statementGlobal)->count();
$statement = " AND (UPPER(NAMA) LIKE '%".$searchValue."%') ";
$totalRecordswithFilter = Jenis::select('count(1) as allcount')
->whereRaw($statementGlobal.$statement)->count();
// Fetch records
$records = Jenis::orderBy($columnName,$columnSortOrder)
->whereRaw($statementGlobal.$statement)
->select('jenis.*')
->selectRaw('ambil_jumlah_penilaian_monev(jenis.jenis_id) jumlah_komponen')
->skip($start)
->take($rowperpage)
->get();
$data_arr = array();
foreach($records as $record){
$jenis_id = $record->jenis_id;
$nama = $record->nama;
$keterangan = $record->keterangan;
$jumlah_komponen = $record->jumlah_komponen;
$edit = URL::to('penilaian_monev/'.Crypt::encrypt($jenis_id).'/edit');
$data_arr[] = array(
"jenis_id" => $jenis_id,
"nama" => $nama,
"keterangan" => $keterangan,
"jumlah_komponen" => $jumlah_komponen,
"aksi" => '<td class="table-action">
<a href="'.$edit.'" class="btn btn-icon-sm btn-primary"><i class="fas fa-clipboard-list"></i></a>
</td>'
);
}
$response = array(
"draw" => intval($draw),
"iTotalRecords" => $totalRecords,
"iTotalDisplayRecords" => $totalRecordswithFilter,
"aaData" => $data_arr
);
echo json_encode($response);
exit;
}
public function create()
{
}
public function store(Request $request)
{
}
public function edit($id)
{
$jenis = Jenis::where('jenis_id', '=', Crypt::decrypt($id))->get();
$penilaian_monev = PenilaianMonev::where('jenis_id', '=', Crypt::decrypt($id))->get();
$data = [
'jenis' => $jenis,
'penilaian_monev' => $penilaian_monev
];
return view('backend.penilaian_monev.edit', compact('data'))->withTitle('Ubah Jenis PKM');
}
public function update(Request $request, $id)
{
$delete = PenilaianMonev::where('jenis_id', $id)->delete($id);
for($i=0; $i<count($request->nama); $i++)
{
$uuid = Uuid::generate();
$data['penilaian_monev_id'] = $uuid;
$data['jenis_id'] = $id;
$data['nama'] = $request->nama[$i];
$data['bobot'] = $request->bobot[$i];
PenilaianMonev::create($data);
}
Alert::success('Data berhasil disimpan.')->persistent('Ok');
return redirect()->route('penilaian_monev.index');
}
public function destroy($id)
{
try {
$delete = Jenis::where('jenis_id', Crypt::decrypt($id))->update(['status_hapus'=>'1']);
if ($delete == 1) {
$status = 'success';
$message = "Jenis PKM berhasil dihapus.";
}
else{
$status = 'error';
$message = "Jenis PKM tidak ada.";
}
return response()->json([
'status' => $status,
'message' => $message,
]);
} catch (\Exception $id) {
return response()->json([
'status' => 'error',
'message' => "Data gagal dihapus.",
]);
}
}
}
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class JadwalKegiatan extends Model
{
protected $table = 'jadwal_kegiatan';
protected $primaryKey = 'jadwal_kegiatan_id';
public $incrementing = false;
protected $fillable = [
'jadwal_kegiatan_id', 'nama', 'keterangan', 'tanggal_mulai', 'tanggal_selesai', 'status_hapus', 'urut'
];
}
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Jenis extends Model
{
protected $table = 'jenis';
protected $primaryKey = 'jenis_id';
public $incrementing = false;
protected $fillable = [
'jenis_id', 'nama', 'keterangan', 'status_hapus'
];
public function rPenilaianMonev()
{
return $this->hasMany(\App\Models\PenilaianMonev::class, 'jenis_id', 'jenis_id');
}
}
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class PenilaianMonev extends Model
{
protected $table = 'penilaian_monev';
protected $primaryKey = 'penilaian_monev_id';
public $incrementing = false;
protected $fillable = [
'penilaian_monev_id', 'jenis_id', 'nama', 'bobot'
];
}
...@@ -13,7 +13,10 @@ ...@@ -13,7 +13,10 @@
"fruitcake/laravel-cors": "^2.0", "fruitcake/laravel-cors": "^2.0",
"guzzlehttp/guzzle": "^7.0.1", "guzzlehttp/guzzle": "^7.0.1",
"laravel/framework": "^8.0", "laravel/framework": "^8.0",
"laravel/tinker": "^2.0" "laravel/tinker": "^2.0",
"laravelcollective/html": "^6.3",
"realrashid/sweet-alert": "^5.1",
"webpatser/laravel-uuid": "4.0"
}, },
"require-dev": { "require-dev": {
"facade/ignition": "^2.3.6", "facade/ignition": "^2.3.6",
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically" "This file is @generated automatically"
], ],
"content-hash": "7b56bfb5d21eaae286e532c3ed2f8941", "content-hash": "5aae18a12609b60b15550982e9f3cf1d",
"packages": [ "packages": [
{ {
"name": "asm89/stack-cors", "name": "asm89/stack-cors",
...@@ -1316,6 +1316,78 @@ ...@@ -1316,6 +1316,78 @@
"time": "2022-03-23T12:38:24+00:00" "time": "2022-03-23T12:38:24+00:00"
}, },
{ {
"name": "laravelcollective/html",
"version": "v6.3.0",
"source": {
"type": "git",
"url": "https://github.com/LaravelCollective/html.git",
"reference": "78c3cb516ac9e6d3d76cad9191f81d217302dea6"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/LaravelCollective/html/zipball/78c3cb516ac9e6d3d76cad9191f81d217302dea6",
"reference": "78c3cb516ac9e6d3d76cad9191f81d217302dea6",
"shasum": ""
},
"require": {
"illuminate/http": "^6.0|^7.0|^8.0|^9.0",
"illuminate/routing": "^6.0|^7.0|^8.0|^9.0",
"illuminate/session": "^6.0|^7.0|^8.0|^9.0",
"illuminate/support": "^6.0|^7.0|^8.0|^9.0",
"illuminate/view": "^6.0|^7.0|^8.0|^9.0",
"php": ">=7.2.5"
},
"require-dev": {
"illuminate/database": "^6.0|^7.0|^8.0|^9.0",
"mockery/mockery": "~1.0",
"phpunit/phpunit": "~8.5|^9.5.10"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "6.x-dev"
},
"laravel": {
"providers": [
"Collective\\Html\\HtmlServiceProvider"
],
"aliases": {
"Form": "Collective\\Html\\FormFacade",
"Html": "Collective\\Html\\HtmlFacade"
}
}
},
"autoload": {
"files": [
"src/helpers.php"
],
"psr-4": {
"Collective\\Html\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Adam Engebretson",
"email": "adam@laravelcollective.com"
},
{
"name": "Taylor Otwell",
"email": "taylorotwell@gmail.com"
}
],
"description": "HTML and Form Builders for the Laravel Framework",
"homepage": "https://laravelcollective.com",
"support": {
"issues": "https://github.com/LaravelCollective/html/issues",
"source": "https://github.com/LaravelCollective/html"
},
"time": "2022-02-08T21:02:54+00:00"
},
{
"name": "league/commonmark", "name": "league/commonmark",
"version": "2.3.3", "version": "2.3.3",
"source": { "source": {
...@@ -2850,6 +2922,96 @@ ...@@ -2850,6 +2922,96 @@
"time": "2021-09-25T23:10:38+00:00" "time": "2021-09-25T23:10:38+00:00"
}, },
{ {
"name": "realrashid/sweet-alert",
"version": "v5.1.0",
"source": {
"type": "git",
"url": "https://github.com/realrashid/sweet-alert.git",
"reference": "fb837beaa52568fb3106d311ff3c7a7b8e543608"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/realrashid/sweet-alert/zipball/fb837beaa52568fb3106d311ff3c7a7b8e543608",
"reference": "fb837beaa52568fb3106d311ff3c7a7b8e543608",
"shasum": ""
},
"require": {
"laravel/framework": "^5.6|^6.0|^7.0|^8.0|^9.0|^9.11|9.14.*",
"php": "^7.2|^8.0"
},
"require-dev": {
"symfony/thanks": "^1.0"
},
"type": "library",
"extra": {
"laravel": {
"providers": [
"RealRashid\\SweetAlert\\SweetAlertServiceProvider"
],
"aliases": {
"Alert": "RealRashid\\SweetAlert\\Facades\\Alert"
}
}
},
"autoload": {
"files": [
"src/functions.php"
],
"psr-4": {
"RealRashid\\SweetAlert\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Rashid Ali",
"email": "realrashid05@gmail.com",
"homepage": "https://realrashid.com",
"role": "Developer"
}
],
"description": "A BEAUTIFUL, RESPONSIVE, CUSTOMIZABLE, ACCESSIBLE (WAI-ARIA) REPLACEMENT FOR JAVASCRIPT'S POPUP BOXES FOR LARAVEL BY RASHID ALI",
"homepage": "https://github.com/realrashid/sweet-alert",
"keywords": [
"alert",
"laravel",
"laravel-package",
"notifier",
"noty",
"sweet-alert",
"sweet-alert2",
"toast"
],
"support": {
"docs": "https://realrashid.github.io/sweet-alert/",
"email": "realrashid05@gmail.com",
"issues": "https://github.com/realrashid/sweet-alert/issues",
"source": "https://github.com/realrashid/sweet-alert"
},
"funding": [
{
"url": "https://ko-fi.com/realrashid",
"type": "custom"
},
{
"url": "https://www.buymeacoffee.com/realrashid",
"type": "custom"
},
{
"url": "https://issuehunt.io/r/realrashid",
"type": "issuehunt"
},
{
"url": "https://tidelift.com/funding/github/packagist/realrashid/sweet-alert",
"type": "tidelift"
}
],
"time": "2022-05-28T13:28:03+00:00"
},
{
"name": "swiftmailer/swiftmailer", "name": "swiftmailer/swiftmailer",
"version": "v6.3.0", "version": "v6.3.0",
"source": { "source": {
...@@ -5389,6 +5551,64 @@ ...@@ -5389,6 +5551,64 @@
"source": "https://github.com/webmozarts/assert/tree/1.11.0" "source": "https://github.com/webmozarts/assert/tree/1.11.0"
}, },
"time": "2022-06-03T18:03:27+00:00" "time": "2022-06-03T18:03:27+00:00"
},
{
"name": "webpatser/laravel-uuid",
"version": "4.0",
"source": {
"type": "git",
"url": "https://github.com/webpatser/laravel-uuid.git",
"reference": "ac2d27479fc362cb24132b6b597039ff60ae93cc"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/webpatser/laravel-uuid/zipball/ac2d27479fc362cb24132b6b597039ff60ae93cc",
"reference": "ac2d27479fc362cb24132b6b597039ff60ae93cc",
"shasum": ""
},
"require": {
"php": "^7.0|^8.0"
},
"require-dev": {
"fakerphp/faker": "~1.12",
"phpunit/phpunit": "~9.3.8"
},
"type": "library",
"extra": {
"laravel": {
"providers": [
"Webpatser\\Uuid\\UuidServiceProvider"
],
"aliases": {
"Uuid": "Webpatser\\Uuid\\Uuid"
}
}
},
"autoload": {
"psr-4": {
"Webpatser\\Uuid\\": "src/Webpatser/Uuid/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Christoph Kempen",
"email": "christoph@downsized.nl"
}
],
"description": "Laravel package to generate and to validate a universally unique identifier (UUID) according to the RFC 4122 standard. Support for version 1, 3, 4 and 5 UUIDs are built-in.",
"homepage": "https://github.com/webpatser/laravel-uuid",
"keywords": [
"UUID RFC4122"
],
"support": {
"issues": "https://github.com/webpatser/laravel-uuid/issues",
"source": "https://github.com/webpatser/laravel-uuid"
},
"time": "2020-12-14T12:45:59+00:00"
} }
], ],
"packages-dev": [ "packages-dev": [
...@@ -7835,5 +8055,5 @@ ...@@ -7835,5 +8055,5 @@
"php": "^7.3" "php": "^7.3"
}, },
"platform-dev": [], "platform-dev": [],
"plugin-api-version": "2.0.0" "plugin-api-version": "2.1.0"
} }
...@@ -175,6 +175,9 @@ return [ ...@@ -175,6 +175,9 @@ return [
App\Providers\EventServiceProvider::class, App\Providers\EventServiceProvider::class,
App\Providers\RouteServiceProvider::class, App\Providers\RouteServiceProvider::class,
Collective\Html\HtmlServiceProvider::class,
RealRashid\SweetAlert\SweetAlertServiceProvider::class,
], ],
/* /*
...@@ -227,6 +230,9 @@ return [ ...@@ -227,6 +230,9 @@ return [
'Validator' => Illuminate\Support\Facades\Validator::class, 'Validator' => Illuminate\Support\Facades\Validator::class,
'View' => Illuminate\Support\Facades\View::class, 'View' => Illuminate\Support\Facades\View::class,
'Form' => Collective\Html\FormFacade::class,
'Html' => Collective\Html\HtmlFacade::class,
'Alert' => RealRashid\SweetAlert\Facades\Alert::class,
], ],
]; ];
<?php
return [
/*
|--------------------------------------------------------------------------
| CDN LINK
|--------------------------------------------------------------------------
| By default SweetAlert2 use its local sweetalert.all.js
| file.
| However, you can use its cdn if you want.
|
*/
'cdn' => env('SWEET_ALERT_CDN'),
/*
|--------------------------------------------------------------------------
| Always load the sweetalert.all.js
|--------------------------------------------------------------------------
| There might be situations where you will always want the sweet alert
| js package to be there for you. (for eg. you might use it heavily to
| show notifications or you might want to use the native js) then this
| might be handy.
|
*/
'alwaysLoadJS' => env('SWEET_ALERT_ALWAYS_LOAD_JS', false),
/*
|--------------------------------------------------------------------------
| Never load the sweetalert.all.js
|--------------------------------------------------------------------------
| If you want to handle the sweet alert js package by yourself
| (for eg. you might want to use laravel mix) then this can be
| handy.
| If you set always load js to true & never load js to false,
| it's going to prioritize the never load js.
|
| alwaysLoadJs = true & neverLoadJs = true => js will not be loaded
| alwaysLoadJs = true & neverLoadJs = false => js will be loaded
| alwaysLoadJs = false & neverLoadJs = false => js will be loaded when
| you set alert/toast by using the facade/helper functions.
*/
'neverLoadJS' => env('SWEET_ALERT_NEVER_LOAD_JS', false),
/*
|--------------------------------------------------------------------------
| AutoClose Timer
|--------------------------------------------------------------------------
|
| This is for the all Modal windows.
| For specific modal just use the autoClose() helper method.
|
*/
'timer' => env('SWEET_ALERT_TIMER', 5000),
/*
|--------------------------------------------------------------------------
| Width
|--------------------------------------------------------------------------
|
| Modal window width, including paddings (box-sizing: border-box).
| Can be in px or %.
| The default width is 32rem.
| This is for the all Modal windows.
| for particular modal just use the width() helper method.
*/
'width' => env('SWEET_ALERT_WIDTH', '32rem'),
/*
|--------------------------------------------------------------------------
| Height Auto
|--------------------------------------------------------------------------
| By default, SweetAlert2 sets html's and body's CSS height to auto !important.
| If this behavior isn't compatible with your project's layout,
| set heightAuto to false.
|
*/
'height_auto' => env('SWEET_ALERT_HEIGHT_AUTO', true),
/*
|--------------------------------------------------------------------------
| Padding
|--------------------------------------------------------------------------
|
| Modal window padding.
| Can be in px or %.
| The default padding is 1.25rem.
| This is for the all Modal windows.
| for particular modal just use the padding() helper method.
*/
'padding' => env('SWEET_ALERT_PADDING', '1.25rem'),
/*
|--------------------------------------------------------------------------
| Animation
|--------------------------------------------------------------------------
| Custom animation with [Animate.css](https://daneden.github.io/animate.css/)
| If set to false, modal CSS animation will be use default ones.
| For specific modal just use the animation() helper method.
|
*/
'animation' => [
'enable' => env('SWEET_ALERT_ANIMATION_ENABLE', false),
],
'animatecss' => env('SWEET_ALERT_ANIMATECSS', 'https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.1.1/animate.min.css'),
/*
|--------------------------------------------------------------------------
| ShowConfirmButton
|--------------------------------------------------------------------------
| If set to false, a "Confirm"-button will not be shown.
| It can be useful when you're using custom HTML description.
| This is for the all Modal windows.
| For specific modal just use the showConfirmButton() helper method.
|
*/
'show_confirm_button' => env('SWEET_ALERT_CONFIRM_BUTTON', true),
/*
|--------------------------------------------------------------------------
| ShowCloseButton
|--------------------------------------------------------------------------
| If set to true, a "Close"-button will be shown,
| which the user can click on to dismiss the modal.
| This is for the all Modal windows.
| For specific modal just use the showCloseButton() helper method.
|
*/
'show_close_button' => env('SWEET_ALERT_CLOSE_BUTTON', false),
/*
|--------------------------------------------------------------------------
| Toast position
|--------------------------------------------------------------------------
| Modal window or toast position, can be 'top',
| 'top-start', 'top-end', 'center', 'center-start',
| 'center-end', 'bottom', 'bottom-start', or 'bottom-end'.
| For specific modal just use the position() helper method.
|
*/
'toast_position' => env('SWEET_ALERT_TOAST_POSITION', 'top-end'),
/*
|--------------------------------------------------------------------------
| Progress Bar
|--------------------------------------------------------------------------
| If set to true, a progress bar at the bottom of a popup will be shown.
| It can be useful with toasts.
|
*/
'timer_progress_bar' => env('SWEET_ALERT_TIMER_PROGRESS_BAR', false),
/*
|--------------------------------------------------------------------------
| Middleware
|--------------------------------------------------------------------------
| Modal window or toast, config for the Middleware
|
*/
'middleware' => [
'autoClose' => env('SWEET_ALERT_MIDDLEWARE_AUTO_CLOSE', false),
'toast_position' => env('SWEET_ALERT_MIDDLEWARE_TOAST_POSITION', 'top-end'),
'toast_close_button' => env('SWEET_ALERT_MIDDLEWARE_TOAST_CLOSE_BUTTON', true),
'timer' => env('SWEET_ALERT_MIDDLEWARE_ALERT_CLOSE_TIME', 6000),
'auto_display_error_messages' => env('SWEET_ALERT_AUTO_DISPLAY_ERROR_MESSAGES', false),
],
/*
|--------------------------------------------------------------------------
| Custom Class
|--------------------------------------------------------------------------
| A custom CSS class for the modal:
|
*/
'customClass' => [
'container' => env('SWEET_ALERT_CONTAINER_CLASS'),
'popup' => env('SWEET_ALERT_POPUP_CLASS'),
'header' => env('SWEET_ALERT_HEADER_CLASS'),
'title' => env('SWEET_ALERT_TITLE_CLASS'),
'closeButton' => env('SWEET_ALERT_CLOSE_BUTTON_CLASS'),
'icon' => env('SWEET_ALERT_ICON_CLASS'),
'image' => env('SWEET_ALERT_IMAGE_CLASS'),
'content' => env('SWEET_ALERT_CONTENT_CLASS'),
'input' => env('SWEET_ALERT_INPUT_CLASS'),
'actions' => env('SWEET_ALERT_ACTIONS_CLASS'),
'confirmButton' => env('SWEET_ALERT_CONFIRM_BUTTON_CLASS'),
'cancelButton' => env('SWEET_ALERT_CANCEL_BUTTON_CLASS'),
'footer' => env('SWEET_ALERT_FOOTER_CLASS'),
],
];
!function(t){"use strict";function s(){for(var e=document.getElementById("topnav-menu-content").getElementsByTagName("a"),t=0,n=e.length;t<n;t++)"nav-item dropdown active"===e[t].parentElement.getAttribute("class")&&(e[t].parentElement.classList.remove("active"),e[t].nextElementSibling.classList.remove("show"))}function n(e){1==t("#light-mode-switch").prop("checked")&&"light-mode-switch"===e?(t("html").removeAttr("dir"),t("#dark-mode-switch").prop("checked",!1),t("#rtl-mode-switch").prop("checked",!1),t("#bootstrap-style").attr("href","assets/css/bootstrap.min.css"),t("#app-style").attr("href","assets/css/app.min.css"),sessionStorage.setItem("is_visited","light-mode-switch")):1==t("#dark-mode-switch").prop("checked")&&"dark-mode-switch"===e?(t("html").removeAttr("dir"),t("#light-mode-switch").prop("checked",!1),t("#rtl-mode-switch").prop("checked",!1),t("#bootstrap-style").attr("href","assets/css/bootstrap-dark.min.css"),t("#app-style").attr("href","assets/css/app-dark.min.css"),sessionStorage.setItem("is_visited","dark-mode-switch")):1==t("#rtl-mode-switch").prop("checked")&&"rtl-mode-switch"===e&&(t("#light-mode-switch").prop("checked",!1),t("#dark-mode-switch").prop("checked",!1),t("#bootstrap-style").attr("href","assets/css/bootstrap-rtl.min.css"),t("#app-style").attr("href","assets/css/app-rtl.min.css"),t("html").attr("dir","rtl"),sessionStorage.setItem("is_visited","rtl-mode-switch"))}function e(){document.webkitIsFullScreen||document.mozFullScreen||document.msFullscreenElement||(console.log("pressed"),t("body").removeClass("fullscreen-enable"))}var a;t("#side-menu").metisMenu(),t("#vertical-menu-btn").on("click",function(e){e.preventDefault(),t("body").toggleClass("sidebar-enable"),992<=t(window).width()?t("body").toggleClass("vertical-collpsed"):t("body").removeClass("vertical-collpsed")}),t("#sidebar-menu a").each(function(){var e=window.location.href.split(/[?#]/)[0];this.href==e&&(t(this).addClass("active"),t(this).parent().addClass("mm-active"),t(this).parent().parent().addClass("mm-show"),t(this).parent().parent().prev().addClass("mm-active"),t(this).parent().parent().parent().addClass("mm-active"),t(this).parent().parent().parent().parent().addClass("mm-show"),t(this).parent().parent().parent().parent().parent().addClass("mm-active"))}),t(".navbar-nav a").each(function(){var e=window.location.href.split(/[?#]/)[0];this.href==e&&(t(this).addClass("active"),t(this).parent().addClass("active"),t(this).parent().parent().addClass("active"),t(this).parent().parent().parent().addClass("active"),t(this).parent().parent().parent().parent().addClass("active"),t(this).parent().parent().parent().parent().parent().addClass("active"))}),t(document).ready(function(){var e;0<t("#sidebar-menu").length&&0<t("#sidebar-menu .mm-active .active").length&&(300<(e=t("#sidebar-menu .mm-active .active").offset().top)&&(e-=300,t(".vertical-menu .simplebar-content-wrapper").animate({scrollTop:e},"slow")))}),t('[data-bs-toggle="fullscreen"]').on("click",function(e){e.preventDefault(),t("body").toggleClass("fullscreen-enable"),document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement?document.cancelFullScreen?document.cancelFullScreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.webkitCancelFullScreen&&document.webkitCancelFullScreen():document.documentElement.requestFullscreen?document.documentElement.requestFullscreen():document.documentElement.mozRequestFullScreen?document.documentElement.mozRequestFullScreen():document.documentElement.webkitRequestFullscreen&&document.documentElement.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT)}),document.addEventListener("fullscreenchange",e),document.addEventListener("webkitfullscreenchange",e),document.addEventListener("mozfullscreenchange",e),t(".right-bar-toggle").on("click",function(e){t("body").toggleClass("right-bar-enabled")}),t(document).on("click","body",function(e){0<t(e.target).closest(".right-bar-toggle, .right-bar").length||t("body").removeClass("right-bar-enabled")}),function(){if(document.getElementById("topnav-menu-content")){for(var e=document.getElementById("topnav-menu-content").getElementsByTagName("a"),t=0,n=e.length;t<n;t++)e[t].onclick=function(e){"#"===e.target.getAttribute("href")&&(e.target.parentElement.classList.toggle("active"),e.target.nextElementSibling.classList.toggle("show"))};window.addEventListener("resize",s)}}(),t(function(){t('[data-bs-toggle="tooltip"]').tooltip()}),t(function(){t('[data-bs-toggle="popover"]').popover()}),window.sessionStorage&&((a=sessionStorage.getItem("is_visited"))?(t(".right-bar input:checkbox").prop("checked",!1),t("#"+a).prop("checked",!0),n(a)):sessionStorage.setItem("is_visited","light-mode-switch")),t("#light-mode-switch, #dark-mode-switch, #rtl-mode-switch").on("change",function(e){n(e.target.id)}),t(window).on("load",function(){t("#status").fadeOut(),t("#preloader").delay(350).fadeOut("slow")}),Waves.init()}(jQuery); !function(t){"use strict";function s(){for(var e=document.getElementById("topnav-menu-content").getElementsByTagName("a"),t=0,n=e.length;t<n;t++)"nav-item dropdown active"===e[t].parentElement.getAttribute("class")&&(e[t].parentElement.classList.remove("active"),e[t].nextElementSibling.classList.remove("show"))}function n(e){1==t("#light-mode-switch").prop("checked")&&"light-mode-switch"===e?(t("html").removeAttr("dir"),t("#dark-mode-switch").prop("checked",!1),t("#rtl-mode-switch").prop("checked",!1),t("#bootstrap-style").attr("href",globalUrl+"theme/css/bootstrap.min.css"),t("#app-style").attr("href",globalUrl+"theme/css/app.min.css"),sessionStorage.setItem("is_visited","light-mode-switch")):1==t("#dark-mode-switch").prop("checked")&&"dark-mode-switch"===e?(t("html").removeAttr("dir"),t("#light-mode-switch").prop("checked",!1),t("#rtl-mode-switch").prop("checked",!1),t("#bootstrap-style").attr("href",globalUrl+"theme/css/bootstrap-dark.min.css"),t("#app-style").attr("href",globalUrl+"theme/css/app-dark.min.css"),sessionStorage.setItem("is_visited","dark-mode-switch")):1==t("#rtl-mode-switch").prop("checked")&&"rtl-mode-switch"===e&&(t("#light-mode-switch").prop("checked",!1),t("#dark-mode-switch").prop("checked",!1),t("#bootstrap-style").attr("href",globalUrl+"theme/css/bootstrap-rtl.min.css"),t("#app-style").attr("href",globalUrl+"theme/css/app-rtl.min.css"),t("html").attr("dir","rtl"),sessionStorage.setItem("is_visited","rtl-mode-switch"))}function e(){document.webkitIsFullScreen||document.mozFullScreen||document.msFullscreenElement||(console.log("pressed"),t("body").removeClass("fullscreen-enable"))}var a;t("#side-menu").metisMenu(),t("#vertical-menu-btn").on("click",function(e){e.preventDefault(),t("body").toggleClass("sidebar-enable"),992<=t(window).width()?t("body").toggleClass("vertical-collpsed"):t("body").removeClass("vertical-collpsed")}),t("#sidebar-menu a").each(function(){var e=window.location.href.split(/[?#]/)[0];this.href==e&&(t(this).addClass("active"),t(this).parent().addClass("mm-active"),t(this).parent().parent().addClass("mm-show"),t(this).parent().parent().prev().addClass("mm-active"),t(this).parent().parent().parent().addClass("mm-active"),t(this).parent().parent().parent().parent().addClass("mm-show"),t(this).parent().parent().parent().parent().parent().addClass("mm-active"))}),t(".navbar-nav a").each(function(){var e=window.location.href.split(/[?#]/)[0];this.href==e&&(t(this).addClass("active"),t(this).parent().addClass("active"),t(this).parent().parent().addClass("active"),t(this).parent().parent().parent().addClass("active"),t(this).parent().parent().parent().parent().addClass("active"),t(this).parent().parent().parent().parent().parent().addClass("active"))}),t(document).ready(function(){var e;0<t("#sidebar-menu").length&&0<t("#sidebar-menu .mm-active .active").length&&(300<(e=t("#sidebar-menu .mm-active .active").offset().top)&&(e-=300,t(".vertical-menu .simplebar-content-wrapper").animate({scrollTop:e},"slow")))}),t('[data-bs-toggle="fullscreen"]').on("click",function(e){e.preventDefault(),t("body").toggleClass("fullscreen-enable"),document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement?document.cancelFullScreen?document.cancelFullScreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.webkitCancelFullScreen&&document.webkitCancelFullScreen():document.documentElement.requestFullscreen?document.documentElement.requestFullscreen():document.documentElement.mozRequestFullScreen?document.documentElement.mozRequestFullScreen():document.documentElement.webkitRequestFullscreen&&document.documentElement.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT)}),document.addEventListener("fullscreenchange",e),document.addEventListener("webkitfullscreenchange",e),document.addEventListener("mozfullscreenchange",e),t(".right-bar-toggle").on("click",function(e){t("body").toggleClass("right-bar-enabled")}),t(document).on("click","body",function(e){0<t(e.target).closest(".right-bar-toggle, .right-bar").length||t("body").removeClass("right-bar-enabled")}),function(){if(document.getElementById("topnav-menu-content")){for(var e=document.getElementById("topnav-menu-content").getElementsByTagName("a"),t=0,n=e.length;t<n;t++)e[t].onclick=function(e){"#"===e.target.getAttribute("href")&&(e.target.parentElement.classList.toggle("active"),e.target.nextElementSibling.classList.toggle("show"))};window.addEventListener("resize",s)}}(),t(function(){t('[data-bs-toggle="tooltip"]').tooltip()}),t(function(){t('[data-bs-toggle="popover"]').popover()}),window.sessionStorage&&((a=sessionStorage.getItem("is_visited"))?(t(".right-bar input:checkbox").prop("checked",!1),t("#"+a).prop("checked",!0),n(a)):sessionStorage.setItem("is_visited","light-mode-switch")),t("#light-mode-switch, #dark-mode-switch, #rtl-mode-switch").on("change",function(e){n(e.target.id)}),t(window).on("load",function(){t("#status").fadeOut(),t("#preloader").delay(350).fadeOut("slow")}),Waves.init()}(jQuery);
\ No newline at end of file
/* ========================================================================
* SaRibe: eModal.js v1.2.67
* http://saribe.github.io/eModal
* ========================================================================
* Copyright Samuel Ribeiro.
* Licensed under MIT.
* ======================================================================== */
/**
* Easy Modal for bootstrap, is a simple way to create modal dialogs using javascript.
* @params allowed elements:
* buttons {array}: An array of objects to configure buttons to modal footer; only able if message == string
* css {object}: CSS object try apply into message body; only able if message == string
* data {object}: Used for iframe with post data parameters
* loading {boolean}: Set loading progress as message.
* message {string|object}: The body message string or the HTML element. e.g.: $(selector);
* size {string}: sm || lg || xl -> define the modal size.
* subtitle {string}: The header subtitle string. This appear in a smaller text.
* title {string}: The header title string.
* useBin {boolean}: Set message as recyclable.
* </summary>
* <param name="params" >Modal options parameters of string body message.</param>
* <param name="title" >The string header title or a flag to set default parameters.</param>
* <returns type="Promise">{ then, element }.</returns>
*/
;
(function (define) {
define(['jquery'], function ($, root) {
var $modal;
var BIN = 'recycle-bin';
var DIV = '<div>';
var EMPTY = '';
var EVENT_CLICK = 'click';
var EVENT_HIDE = 'hide';
var EVENT_SHOW = 'shown.bs.modal';
var EVENT_SUBMIT = 'submit';
var FOOTER_ID = 'eFooter';
var HIDE = EVENT_HIDE + '.bs.modal';
var INPUT = 'input';
var KEY_DANGER = 'danger';
var LABEL = {
OK: 'Cancel',
True: 'False',
Yes: 'No'
};
var lastParams = {};
var MODAL_BODY = 'modal-body';
var MODAL_DIALOG = '.modal-dialog';
var options = {};
var REC_MODAL_CONTENT = 'modal-rec';
var SIZE = {
sm: 'sm',
lg: 'lg',
xl: 'xl'
};
var TMP_MODAL_CONTENT = 'modal-tmp';
var defaultSettings = {
allowContentRecycle: true,
confirmLabel: Object.keys(LABEL)[0],
labels: LABEL,
loadingHtml: '<h5>Loading...</h5><div class=progress><div class="progress-bar progress-bar-striped active" style="width: 100%"></div></div>',
size: EMPTY,
title: 'Attention',
autofocus: false
};
root = root || {};
root.addLabel = addLabel;
root.ajax = ajax;
root.alert = alert;
root.close = close;
root.confirm = confirm;
root.emptyBin = emptyBin;
root.iframe = iframe;
root.prompt = prompt;
root.setId = setId;
root.setEModalOptions = setEModalOptions;
root.setModalOptions = setModalOptions;
root.size = SIZE;
root.version = '1.2.67';
return root;
//#region /////////////////////////* Private Logic */////////////////////////
/**
* Find modal body and append message to it.
* @param {String | DOM} message
*/
function _build(message) {
$modal
.modal(options)
.find('.modal-content')
.append(message);
}
/**
* Will find what Promises approach the developer is using.
* Will use Promises A+ if Q.js is present, otherwise will use Promises A from jQuery.
* @returns {Promise}
*/
function _createDeferred() {
var defer;
// try native promise
//if (Promise) defer = Promise.defer();
var q;
try {
q = require('Q');
} // Load option Q by require if exist
catch (e) {
q = window.Q;
}
if (q) { // try Q
defer = q.defer();
} else { // Use jQuery :(
defer = $.Deferred();
defer.promise = defer.promise();
}
defer.promise.element = _getModalInstance(true).find(MODAL_DIALOG);
return defer;
}
/**
* Will create modal DOM footer with all buttons.
* @param {Array} buttons - all custom buttons, if none, will generate defaults
* @returns {$DOM} footer DOM element
*/
function _getFooter(buttons) {
if (buttons === false) {
return EMPTY;
}
var messageFotter = $(DIV).addClass('modal-footer').prop('id', FOOTER_ID);
if (buttons) {
for (var i = 0, k = buttons.length; i < k; i++) {
var btnOp = buttons[i];
var btn = $('<button>').addClass('btn btn-' + (btnOp.style || 'primary'));
for (var index in btnOp) {
if (btnOp.hasOwnProperty(index)) {
switch (index) {
case 'close':
//add close event
if (btnOp[index]) {
btn.attr('data-dismiss', 'modal')
.addClass('x');
}
break;
case EVENT_CLICK:
//click event
var fn = btnOp.click.bind(_getModalInstance(true).find('.modal-content'));
btn.click(fn);
break;
case 'text':
btn.html(btnOp[index]);
break;
default:
//all other possible HTML attributes to button element
btn.attr(index, btnOp[index]);
}
}
}
messageFotter.append(btn);
}
} else {
//if no buttons defined by user, add a standard close button.
messageFotter.append('<button class="x btn btn-primary" data-dismiss=modal type=button>Close</button>');
}
return messageFotter;
}
/**
* Extract message from arguments.
* @param {Object | String} data - this can be the message string or the full detailed object
* @returns {$DOM}
*/
function _getMessage(data) {
var $message;
var content = data.loading ?
defaultSettings.loadingHtml :
(data.message || data);
if (content.on || content.onclick) {
$message = data.clone === true ?
$(content).clone() :
$(content);
$message.addClass(data.useBin && !data.loading ? REC_MODAL_CONTENT : TMP_MODAL_CONTENT);
} else {
$message = $(DIV)
.attr('style', 'position:relative;word-wrap:break-word;')
.addClass(MODAL_BODY)
.html(content);
}
return data.css && (data.css !== $message.css && $message.css(data.css)), $message;
}
/**
* Return a new modal object if is the first request or the already created model.
* @param {boolean} skipEventChageIfExists
* @returns {jQuery Object}
*/
function _getModalInstance(skipEventChageIfExists) {
if (!$modal) {
//add recycle bin container to document
if (!$('#' + BIN).length) {
$('body').append($(DIV).prop('id', BIN).hide());
}
$modal = createModalElement();
}
if (skipEventChageIfExists && $modal) {
return $modal;
}
if (defaultSettings.autofocus) {
$modal
.on(EVENT_SHOW, function () {
$(this).find(INPUT).first().focus();
});
}
return $modal;
function createModalElement() {
return $('<div class="modal fade" tabindex="-1"><style>.modal-title{display:inline;}.modal-xl{width:96%;}.modal-body{max-height: calc(100vh - 145px);overflow-y: auto;}</style>' +
'<div class=modal-dialog>' +
'<div class=modal-content>' +
' <div class=modal-header><h5 class=modal-title></h5><button type=button class="x close" data-dismiss=modal aria-label="Close"><span aria-hidden=true>&times;</span></button></div>' +
'</div>' +
'</div>' +
'</div>')
.on('hidden.bs.modal', _recycleModal)
.on(EVENT_CLICK, 'button.x', function (ev) {
var btn = $(ev.currentTarget);
if (btn.prop('type') !== EVENT_SUBMIT)
return $modal.modal(EVENT_HIDE);
try {
if (btn.closest('form')[0].checkValidity())
return close();
} catch (e) {
return close();
}
return $modal;
});
}
}
/**
* @param {String} version
* @returns {Boolean}
*/
function _jQueryMinVersion(version) {
var $ver = $.fn.jquery.split('.');
var ver = version.split('.');
var $major = $ver[0];
var $minor = $ver[1];
var $patch = $ver[2];
var major = ver[0];
var minor = ver[1];
var patch = ver[2];
return !(
(major > $major) ||
(major === $major && minor > $minor) ||
(major === $major && minor === $minor && patch > $patch)
);
}
/**
* Move content to recycle bin if is a DOM object defined by user,
* delete it if is a simple string message.
* All modal messages can be deleted if default setting "allowContentRecycle" = false.
*/
function _recycleModal() {
if (!$modal) return;
var $content = $modal.find('.' + REC_MODAL_CONTENT).removeClass(REC_MODAL_CONTENT)
.appendTo('#' + BIN);
$modal
.off(HIDE)
.off(EVENT_SHOW)
.find('.modal-content > div:not(:first-child)')
.remove();
if (!defaultSettings.allowContentRecycle || lastParams.clone) {
$content.remove();
}
}
/**
* Handle default values and toggle between {Object | String}.
* Create or get Modal element
* @param {Object | String} data - this can be the message string or the full detailed object
* @param {String} title - the string that will be shown in modal header
* @returns {Promise} Promise with modal $DOM element
*/
function _setup(params, title) {
if (!params) throw new Error('Invalid parameters!');
_recycleModal();
lastParams = params;
// Lazy loading
var $ref = _getModalInstance();
var size = 'modal-' + (params.size || defaultSettings.size);
// Change size
$ref.find(MODAL_DIALOG)
.removeClass('modal-sm modal-lg modal-xl')
.addClass(params.size || defaultSettings.size ? size : null);
// Change title
$ref.find('.modal-title')
.html((params.title || title || defaultSettings.title) + ' ')
.append($('<small>').html(params.subtitle || EMPTY));
$ref.on(HIDE, params.onHide);
}
//#endregion
//#region /////////////////////////* Public Methods */////////////////////////
function addLabel(yes, no) {
LABEL[yes] = no;
}
/**
* Gets data from URL to eModal body
* @param {Object | String} data - this can be the message string or the full detailed object
* @param {String} title - the string that will be shown in modal header
* @returns {Promise} Promise with modal $DOM element
*/
function ajax(data, title) {
var dfd = _createDeferred();
if (typeof data === 'object') {
setEModalOptions(data);
}
var params = {
async: true,
deferred: dfd,
xhrFields: { withCredentials: false },
loading: true,
title: title || defaultSettings.title,
url: data.url || data,
dataType: data.dataType || 'text'
};
if (data.url) {
$.extend(params, data);
}
$.ajax(params)
.done(ok)
.fail(error);
return alert(params, title);
function ok(html) {
$modal
.find('.' + MODAL_BODY)
.html(data.success ? data.success(html) : html);
return dfd.resolve($modal);
}
function error(responseText, textStatus) {
var msg = data.error ?
data.error(responseText, textStatus, params) :
'<div class="alert alert-danger">' +
'<strong>XHR Fail: </strong>URL [ ' + params.url + '] load fail.' +
'</div>';
$modal
.find('.' + MODAL_BODY)
.html(msg);
return dfd.reject(responseText);
}
}
/**
* Non blocking alert whit bootstrap.
* @param {Object | String} data - this can be the message string or the full detailed object.
* @param {String} title - the string that will be shown in modal header.
* @returns {Promise} Promise with modal $DOM element
*/
function alert(data, title) {
_setup(data, title);
var dfd = data.deferred || _createDeferred();
if (typeof data === 'object') {
setEModalOptions(data);
}
var $message = $(DIV).append(_getMessage(data), _getFooter(data.buttons));
_build($message);
if (!data.async) {
$modal.on(EVENT_SHOW, dfd.resolve);
}
return dfd.promise;
}
/**
* Non blocking confirm dialog with bootstrap.
* @param {Object | String} data - this can be the message string or the full detailed object.
* @param {String} title - the string that will be shown in modal header.
* @returns {Promise} Promise with modal $DOM element
*/
function confirm(data, title) {
var dfd = _createDeferred();
if (typeof data === 'object') {
setEModalOptions(data);
}
return alert({
async: true,
buttons: [{
close: true,
click: click,
text: LABEL[data.label] ? LABEL[data.label] : LABEL[defaultSettings.confirmLabel],
style: data.style && data.style[0] || KEY_DANGER
}, {
close: true,
click: click,
text: LABEL[data.label] ? data.label : defaultSettings.confirmLabel,
style: data.style && data.style[1]
}],
deferred: dfd,
message: data.message || data,
onHide: click,
size: data.size,
title: data.title || title
});
function click(ev) {
close();
var key = $(ev.currentTarget).html();
return LABEL[key] ? dfd.resolve() : dfd.reject();
}
}
/**
* Will load a URL in iFrame inside the modal body.
* @param {Object | String} data - this can be the URL string or the full detailed object.
* @param {String} title - the string that will be shown in modal header.
* @returns {Promise} Promise with modal $DOM element
*/
function iframe(params, title) {
var dfd = _createDeferred();
if (typeof data === 'object') {
setEModalOptions(data);
}
var postData = params.data ?
Object.keys(params.data).map(mapData).join(' ') :
'';
var html = ('<div class=modal-body style="position: absolute;width: 100%;background-color: rgba(255,255,255,0.8);height: 100%;">%1%</div>' +
'<iframe class="embed-responsive-item" frameborder=0 src="%0%" %2% style="width:100%;height:75vh;display:block;"/>')
.replace('%0%', params.message || params.url || params)
.replace('%1%', defaultSettings.loadingHtml)
.replace('%2%', postData);
var message = _jQueryMinVersion('3.0.0') ?
$(html).on('load', iframeReady):
$(html).load(iframeReady);
return alert({
async: true,
buttons: params.buttons || false,
deferred: dfd,
message: message,
size: params.size || SIZE.xl,
title: params.title || title
});
//////////
function mapData(item) {
return item + '="' + params.data[item] + '"';
}
function iframeReady() {
$(this)
.parent()
.find('div.' + TMP_MODAL_CONTENT)
.fadeOut(function () {
$(this).remove();
});
return dfd.resolve();
}
}
/**
* Remove all Dom elements in recycle bin.
* @returns {Array} All removed elements
*/
function emptyBin() {
return $('#' + BIN + ' > *').remove();
}
/**
* Provides one value form.
* @param {Object | String} data - this can be the value string label or the full detailed object.
* @param {String} title - the string that will be shown in modal header.
* @returns {Promise} Promise with modal $DOM element
*/
function prompt(data, title) {
var dfd = _createDeferred();
if (typeof data === 'object') {
setEModalOptions(data);
}
var params = {
deferred: dfd
};
if (typeof data === 'object') {
$.extend(params, data);
} else {
params.message = data;
params.title = title;
}
params.async = true;
if (params.buttons) {
var btn;
for (var i = 0, k = params.buttons.length; i < k; i++) {
btn = params.buttons[i];
btn.style = (btn.style || 'default') + ' pull-left';
btn.type = btn.type || 'button';
}
}
var buttons = _getFooter([{
close: true,
type: 'reset',
text: LABEL.OK,
style: KEY_DANGER
}, {
close: false,
type: EVENT_SUBMIT,
text: defaultSettings.confirmLabel
}].concat(params.buttons || []));
params.buttons = false;
params.onHide = submit;
params.message = $('<form role=form style="margin-bottom:0;">' +
'<div class=modal-body>' +
'<label for=prompt-input class=control-label>' + (params.message || EMPTY) + '</label>' +
'<input type=text class=form-control required autocomplete="on" value="' + (params.value || EMPTY) + (params.pattern ? '" pattern="' + params.pattern : EMPTY) + '">' +
'</div></form>')
.append(buttons)
.on(EVENT_SUBMIT, submit);
return alert(params);
function submit(ev) {
var value = $modal.find(INPUT).val();
close();
//TODO:
ev.type !== EVENT_SUBMIT ?
dfd.reject(value) :
dfd.resolve(value);
return false;
}
}
function setId(id) {
_getModalInstance(true)
.find(MODAL_DIALOG)
.prop('id', id);
}
/**
* Set or change eModal options.
* @param {Object} overrideOptions
* @returns {Object} merged eModal options
*/
function setEModalOptions(overrideOptions) {
return $.extend(defaultSettings, overrideOptions);
}
/**
* Set or change bootstrap modal options.
* @param {Object} overrideOptions
* @returns {Object} merged eModal options
*/
function setModalOptions(overrideOptions) {
$modal && $modal.remove();
return $.extend(options, overrideOptions);
}
/**
* Close the current open eModal
* @returns {$DOM} eModal DOM element
*/
function close() {
if ($modal) {
$modal.off(HIDE).modal(EVENT_HIDE);
}
return $modal;
}
//#endregion
});
}(typeof define == 'function' && define.amd ?
define :
function (args, mName) {
this.eModal = typeof module != 'undefined' && module.exports ?
mName(require(args[0], {}), module.exports) :
mName(window.$);
}));
\ No newline at end of file
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).Sweetalert2=t()}(this,function(){"use strict";const t="SweetAlert2:",v=e=>e.charAt(0).toUpperCase()+e.slice(1),r=e=>Array.prototype.slice.call(e),a=e=>{console.warn("".concat(t," ").concat("object"==typeof e?e.join(" "):e))},y=e=>{console.error("".concat(t," ").concat(e))},n=[],o=(e,t)=>{e='"'.concat(e,'" is deprecated and will be removed in the next major release. Please use "').concat(t,'" instead.'),n.includes(e)||(n.push(e),a(e))},w=e=>"function"==typeof e?e():e,C=e=>e&&"function"==typeof e.toPromise,k=e=>C(e)?e.toPromise():Promise.resolve(e),A=e=>e&&Promise.resolve(e)===e,i={title:"",titleText:"",text:"",html:"",footer:"",icon:void 0,iconColor:void 0,iconHtml:void 0,template:void 0,toast:!1,showClass:{popup:"swal2-show",backdrop:"swal2-backdrop-show",icon:"swal2-icon-show"},hideClass:{popup:"swal2-hide",backdrop:"swal2-backdrop-hide",icon:"swal2-icon-hide"},customClass:{},target:"body",color:void 0,backdrop:!0,heightAuto:!0,allowOutsideClick:!0,allowEscapeKey:!0,allowEnterKey:!0,stopKeydownPropagation:!0,keydownListenerCapture:!1,showConfirmButton:!0,showDenyButton:!1,showCancelButton:!1,preConfirm:void 0,preDeny:void 0,confirmButtonText:"OK",confirmButtonAriaLabel:"",confirmButtonColor:void 0,denyButtonText:"No",denyButtonAriaLabel:"",denyButtonColor:void 0,cancelButtonText:"Cancel",cancelButtonAriaLabel:"",cancelButtonColor:void 0,buttonsStyling:!0,reverseButtons:!1,focusConfirm:!0,focusDeny:!1,focusCancel:!1,returnFocus:!0,showCloseButton:!1,closeButtonHtml:"&times;",closeButtonAriaLabel:"Close this dialog",loaderHtml:"",showLoaderOnConfirm:!1,showLoaderOnDeny:!1,imageUrl:void 0,imageWidth:void 0,imageHeight:void 0,imageAlt:"",timer:void 0,timerProgressBar:!1,width:void 0,padding:void 0,background:void 0,input:void 0,inputPlaceholder:"",inputLabel:"",inputValue:"",inputOptions:{},inputAutoTrim:!0,inputAttributes:{},inputValidator:void 0,returnInputValueOnDeny:!1,validationMessage:void 0,grow:!1,position:"center",progressSteps:[],currentProgressStep:void 0,progressStepsDistance:void 0,willOpen:void 0,didOpen:void 0,didRender:void 0,willClose:void 0,didClose:void 0,didDestroy:void 0,scrollbarPadding:!0},s=["allowEscapeKey","allowOutsideClick","background","buttonsStyling","cancelButtonAriaLabel","cancelButtonColor","cancelButtonText","closeButtonAriaLabel","closeButtonHtml","color","confirmButtonAriaLabel","confirmButtonColor","confirmButtonText","currentProgressStep","customClass","denyButtonAriaLabel","denyButtonColor","denyButtonText","didClose","didDestroy","footer","hideClass","html","icon","iconColor","iconHtml","imageAlt","imageHeight","imageUrl","imageWidth","preConfirm","preDeny","progressSteps","returnFocus","reverseButtons","showCancelButton","showCloseButton","showConfirmButton","showDenyButton","text","title","titleText","willClose"],c={},P=["allowOutsideClick","allowEnterKey","backdrop","focusConfirm","focusDeny","focusCancel","returnFocus","heightAuto","keydownListenerCapture"],B=e=>Object.prototype.hasOwnProperty.call(i,e),x=e=>-1!==s.indexOf(e),E=e=>c[e],T=e=>{!e.backdrop&&e.allowOutsideClick&&a('"allowOutsideClick" parameter requires `backdrop` parameter to be set to `true`');for(const n in e)t=n,B(t)||a('Unknown parameter "'.concat(t,'"')),e.toast&&(t=n,P.includes(t)&&a('The parameter "'.concat(t,'" is incompatible with toasts'))),t=n,E(t)&&o(t,E(t));var t};var e=e=>{const t={};for(const n in e)t[e[n]]="swal2-"+e[n];return t};const p=e(["container","shown","height-auto","iosfix","popup","modal","no-backdrop","no-transition","toast","toast-shown","show","hide","close","title","html-container","actions","confirm","deny","cancel","default-outline","footer","icon","icon-content","image","input","file","range","select","radio","checkbox","label","textarea","inputerror","input-label","validation-message","progress-steps","active-progress-step","progress-step","progress-step-line","loader","loading","styled","top","top-start","top-end","top-left","top-right","center","center-start","center-end","center-left","center-right","bottom","bottom-start","bottom-end","bottom-left","bottom-right","grow-row","grow-column","grow-fullscreen","rtl","timer-progress-bar","timer-progress-bar-container","scrollbar-measure","icon-success","icon-warning","icon-info","icon-question","icon-error"]),S=e(["success","warning","info","question","error"]),m=()=>document.body.querySelector(".".concat(p.container)),L=e=>{const t=m();return t?t.querySelector(e):null},O=e=>L(".".concat(e)),g=()=>O(p.popup),j=()=>O(p.icon),M=()=>O(p.title),D=()=>O(p["html-container"]),I=()=>O(p.image),H=()=>O(p["progress-steps"]),q=()=>O(p["validation-message"]),V=()=>L(".".concat(p.actions," .").concat(p.confirm)),N=()=>L(".".concat(p.actions," .").concat(p.deny));const R=()=>L(".".concat(p.loader)),F=()=>L(".".concat(p.actions," .").concat(p.cancel)),U=()=>O(p.actions),W=()=>O(p.footer),z=()=>O(p["timer-progress-bar"]),_=()=>O(p.close),K=()=>{const e=r(g().querySelectorAll('[tabindex]:not([tabindex="-1"]):not([tabindex="0"])')).sort((e,t)=>{e=parseInt(e.getAttribute("tabindex")),t=parseInt(t.getAttribute("tabindex"));return t<e?1:e<t?-1:0});var t=r(g().querySelectorAll('\n a[href],\n area[href],\n input:not([disabled]),\n select:not([disabled]),\n textarea:not([disabled]),\n button:not([disabled]),\n iframe,\n object,\n embed,\n [tabindex="0"],\n [contenteditable],\n audio[controls],\n video[controls],\n summary\n')).filter(e=>"-1"!==e.getAttribute("tabindex"));return(t=>{const n=[];for(let e=0;e<t.length;e++)-1===n.indexOf(t[e])&&n.push(t[e]);return n})(e.concat(t)).filter(e=>se(e))},Y=()=>!$(document.body,p["toast-shown"])&&!$(document.body,p["no-backdrop"]),Z=()=>g()&&$(g(),p.toast);function J(e){var t=1<arguments.length&&void 0!==arguments[1]&&arguments[1];const n=z();se(n)&&(t&&(n.style.transition="none",n.style.width="100%"),setTimeout(()=>{n.style.transition="width ".concat(e/1e3,"s linear"),n.style.width="0%"},10))}const X={previousBodyPadding:null},l=(t,e)=>{if(t.textContent="",e){const n=new DOMParser,o=n.parseFromString(e,"text/html");r(o.querySelector("head").childNodes).forEach(e=>{t.appendChild(e)}),r(o.querySelector("body").childNodes).forEach(e=>{t.appendChild(e)})}},$=(t,e)=>{if(!e)return!1;var n=e.split(/\s+/);for(let e=0;e<n.length;e++)if(!t.classList.contains(n[e]))return!1;return!0},G=(e,t,n)=>{var o,i;if(o=e,i=t,r(o.classList).forEach(e=>{Object.values(p).includes(e)||Object.values(S).includes(e)||Object.values(i.showClass).includes(e)||o.classList.remove(e)}),t.customClass&&t.customClass[n]){if("string"!=typeof t.customClass[n]&&!t.customClass[n].forEach)return a("Invalid type of customClass.".concat(n,'! Expected string or iterable object, got "').concat(typeof t.customClass[n],'"'));u(e,t.customClass[n])}},Q=(e,t)=>{if(!t)return null;switch(t){case"select":case"textarea":case"file":return e.querySelector(".".concat(p.popup," > .").concat(p[t]));case"checkbox":return e.querySelector(".".concat(p.popup," > .").concat(p.checkbox," input"));case"radio":return e.querySelector(".".concat(p.popup," > .").concat(p.radio," input:checked"))||e.querySelector(".".concat(p.popup," > .").concat(p.radio," input:first-child"));case"range":return e.querySelector(".".concat(p.popup," > .").concat(p.range," input"));default:return e.querySelector(".".concat(p.popup," > .").concat(p.input))}},ee=e=>{var t;e.focus(),"file"!==e.type&&(t=e.value,e.value="",e.value=t)},te=(e,t,n)=>{e&&t&&(t="string"==typeof t?t.split(/\s+/).filter(Boolean):t).forEach(t=>{Array.isArray(e)?e.forEach(e=>{n?e.classList.add(t):e.classList.remove(t)}):n?e.classList.add(t):e.classList.remove(t)})},u=(e,t)=>{te(e,t,!0)},ne=(e,t)=>{te(e,t,!1)},oe=(e,t)=>{var n=r(e.childNodes);for(let e=0;e<n.length;e++)if($(n[e],t))return n[e]},ie=(e,t,n)=>{(n=n==="".concat(parseInt(n))?parseInt(n):n)||0===parseInt(n)?e.style[t]="number"==typeof n?"".concat(n,"px"):n:e.style.removeProperty(t)},d=function(e){e.style.display=1<arguments.length&&void 0!==arguments[1]?arguments[1]:"flex"},h=e=>{e.style.display="none"},ae=(e,t,n,o)=>{const i=e.querySelector(t);i&&(i.style[n]=o)},re=(e,t,n)=>{t?d(e,n):h(e)},se=e=>!(!e||!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)),ce=()=>!se(V())&&!se(N())&&!se(F()),le=e=>!!(e.scrollHeight>e.clientHeight),ue=e=>{const t=window.getComputedStyle(e);var e=parseFloat(t.getPropertyValue("animation-duration")||"0"),n=parseFloat(t.getPropertyValue("transition-duration")||"0");return 0<e||0<n},de=()=>"undefined"==typeof window||"undefined"==typeof document,pe=100,f={},me=()=>{f.previousActiveElement&&f.previousActiveElement.focus?(f.previousActiveElement.focus(),f.previousActiveElement=null):document.body&&document.body.focus()},ge=o=>new Promise(e=>{if(!o)return e();var t=window.scrollX,n=window.scrollY;f.restoreFocusTimeout=setTimeout(()=>{me(),e()},pe),window.scrollTo(t,n)}),he='\n <div aria-labelledby="'.concat(p.title,'" aria-describedby="').concat(p["html-container"],'" class="').concat(p.popup,'" tabindex="-1">\n <button type="button" class="').concat(p.close,'"></button>\n <ul class="').concat(p["progress-steps"],'"></ul>\n <div class="').concat(p.icon,'"></div>\n <img class="').concat(p.image,'" />\n <h2 class="').concat(p.title,'" id="').concat(p.title,'"></h2>\n <div class="').concat(p["html-container"],'" id="').concat(p["html-container"],'"></div>\n <input class="').concat(p.input,'" />\n <input type="file" class="').concat(p.file,'" />\n <div class="').concat(p.range,'">\n <input type="range" />\n <output></output>\n </div>\n <select class="').concat(p.select,'"></select>\n <div class="').concat(p.radio,'"></div>\n <label for="').concat(p.checkbox,'" class="').concat(p.checkbox,'">\n <input type="checkbox" />\n <span class="').concat(p.label,'"></span>\n </label>\n <textarea class="').concat(p.textarea,'"></textarea>\n <div class="').concat(p["validation-message"],'" id="').concat(p["validation-message"],'"></div>\n <div class="').concat(p.actions,'">\n <div class="').concat(p.loader,'"></div>\n <button type="button" class="').concat(p.confirm,'"></button>\n <button type="button" class="').concat(p.deny,'"></button>\n <button type="button" class="').concat(p.cancel,'"></button>\n </div>\n <div class="').concat(p.footer,'"></div>\n <div class="').concat(p["timer-progress-bar-container"],'">\n <div class="').concat(p["timer-progress-bar"],'"></div>\n </div>\n </div>\n').replace(/(^|\n)\s*/g,""),fe=()=>{const e=m();return!!e&&(e.remove(),ne([document.documentElement,document.body],[p["no-backdrop"],p["toast-shown"],p["has-column"]]),!0)},be=()=>{f.currentInstance.resetValidationMessage()},ve=()=>{const e=g(),t=oe(e,p.input),n=oe(e,p.file),o=e.querySelector(".".concat(p.range," input")),i=e.querySelector(".".concat(p.range," output")),a=oe(e,p.select),r=e.querySelector(".".concat(p.checkbox," input")),s=oe(e,p.textarea);t.oninput=be,n.onchange=be,a.onchange=be,r.onchange=be,s.oninput=be,o.oninput=()=>{be(),i.value=o.value},o.onchange=()=>{be(),o.nextSibling.value=o.value}},ye=e=>"string"==typeof e?document.querySelector(e):e,we=e=>{const t=g();t.setAttribute("role",e.toast?"alert":"dialog"),t.setAttribute("aria-live",e.toast?"polite":"assertive"),e.toast||t.setAttribute("aria-modal","true")},Ce=e=>{"rtl"===window.getComputedStyle(e).direction&&u(m(),p.rtl)},ke=(e,t)=>{if(e instanceof HTMLElement)t.appendChild(e);else if("object"==typeof e){var n=e,o=t;if(n.jquery)Ae(o,n);else l(o,n.toString())}else e&&l(t,e)},Ae=(t,n)=>{if(t.textContent="",0 in n)for(let e=0;e in n;e++)t.appendChild(n[e].cloneNode(!0));else t.appendChild(n.cloneNode(!0))},Pe=(()=>{if(de())return!1;var e=document.createElement("div"),t={WebkitAnimation:"webkitAnimationEnd",animation:"animationend"};for(const n in t)if(Object.prototype.hasOwnProperty.call(t,n)&&void 0!==e.style[n])return t[n];return!1})(),Be=(e,t)=>{var n,o,i,a,r,s=U(),c=R();(t.showConfirmButton||t.showDenyButton||t.showCancelButton?d:h)(s),G(s,t,"actions"),s=s,n=c,o=t,i=V(),a=N(),r=F(),xe(i,"confirm",o),xe(a,"deny",o),xe(r,"cancel",o),function(e,t,n,o){if(!o.buttonsStyling)return ne([e,t,n],p.styled);u([e,t,n],p.styled),o.confirmButtonColor&&(e.style.backgroundColor=o.confirmButtonColor,u(e,p["default-outline"]));o.denyButtonColor&&(t.style.backgroundColor=o.denyButtonColor,u(t,p["default-outline"]));o.cancelButtonColor&&(n.style.backgroundColor=o.cancelButtonColor,u(n,p["default-outline"]))}(i,a,r,o),o.reverseButtons&&(o.toast?(s.insertBefore(r,i),s.insertBefore(a,i)):(s.insertBefore(r,n),s.insertBefore(a,n),s.insertBefore(i,n))),l(c,t.loaderHtml),G(c,t,"loader")};function xe(e,t,n){re(e,n["show".concat(v(t),"Button")],"inline-block"),l(e,n["".concat(t,"ButtonText")]),e.setAttribute("aria-label",n["".concat(t,"ButtonAriaLabel")]),e.className=p[t],G(e,n,"".concat(t,"Button")),u(e,n["".concat(t,"ButtonClass")])}const Ee=(e,t)=>{var n,o,i=m();i&&(o=i,"string"==typeof(n=t.backdrop)?o.style.background=n:n||u([document.documentElement,document.body],p["no-backdrop"]),o=i,(n=t.position)in p?u(o,p[n]):(a('The "position" parameter is not valid, defaulting to "center"'),u(o,p.center)),n=i,!(o=t.grow)||"string"!=typeof o||(o="grow-".concat(o))in p&&u(n,p[o]),G(i,t,"container"))};var b={awaitingPromise:new WeakMap,promise:new WeakMap,innerParams:new WeakMap,domCache:new WeakMap};const Te=["input","file","range","select","radio","checkbox","textarea"],Se=(e,r)=>{const s=g();var t,e=b.innerParams.get(e);const c=!e||r.input!==e.input;Te.forEach(e=>{var t=p[e];const n=oe(s,t);{var o=r.inputAttributes;const i=Q(g(),e);if(i){Le(i);for(const a in o)i.setAttribute(a,o[a])}}n.className=t,c&&h(n)}),r.input&&(c&&(e=>{if(!De[e.input])return y('Unexpected type of input! Expected "text", "email", "password", "number", "tel", "select", "radio", "checkbox", "textarea", "file" or "url", got "'.concat(e.input,'"'));const t=Me(e.input),n=De[e.input](t,e);d(n),setTimeout(()=>{ee(n)})})(r),e=r,t=Me(e.input),e.customClass&&u(t,e.customClass.input))},Le=t=>{for(let e=0;e<t.attributes.length;e++){var n=t.attributes[e].name;["type","value","style"].includes(n)||t.removeAttribute(n)}},Oe=(e,t)=>{e.placeholder&&!t.inputPlaceholder||(e.placeholder=t.inputPlaceholder)},je=(e,t,n)=>{if(n.inputLabel){e.id=p.input;const i=document.createElement("label");var o=p["input-label"];i.setAttribute("for",e.id),i.className=o,u(i,n.customClass.inputLabel),i.innerText=n.inputLabel,t.insertAdjacentElement("beforebegin",i)}},Me=e=>{e=p[e]||p.input;return oe(g(),e)},De={},Ie=(De.text=De.email=De.password=De.number=De.tel=De.url=(e,t)=>("string"==typeof t.inputValue||"number"==typeof t.inputValue?e.value=t.inputValue:A(t.inputValue)||a('Unexpected type of inputValue! Expected "string", "number" or "Promise", got "'.concat(typeof t.inputValue,'"')),je(e,e,t),Oe(e,t),e.type=t.input,e),De.file=(e,t)=>(je(e,e,t),Oe(e,t),e),De.range=(e,t)=>{const n=e.querySelector("input"),o=e.querySelector("output");return n.value=t.inputValue,n.type=t.input,o.value=t.inputValue,je(n,e,t),e},De.select=(e,t)=>{if(e.textContent="",t.inputPlaceholder){const n=document.createElement("option");l(n,t.inputPlaceholder),n.value="",n.disabled=!0,n.selected=!0,e.appendChild(n)}return je(e,e,t),e},De.radio=e=>(e.textContent="",e),De.checkbox=(e,t)=>{const n=Q(g(),"checkbox");n.value="1",n.id=p.checkbox,n.checked=Boolean(t.inputValue);var o=e.querySelector("span");return l(o,t.inputPlaceholder),e},De.textarea=(n,e)=>{n.value=e.inputValue,Oe(n,e),je(n,n,e);return setTimeout(()=>{if("MutationObserver"in window){const t=parseInt(window.getComputedStyle(g()).width);new MutationObserver(()=>{var e=n.offsetWidth+(e=n,parseInt(window.getComputedStyle(e).marginLeft)+parseInt(window.getComputedStyle(e).marginRight));e>t?g().style.width="".concat(e,"px"):g().style.width=null}).observe(n,{attributes:!0,attributeFilter:["style"]})}}),n},(e,t)=>{const n=D();G(n,t,"htmlContainer"),t.html?(ke(t.html,n),d(n,"block")):t.text?(n.textContent=t.text,d(n,"block")):h(n),Se(e,t)}),He=(e,t)=>{var n=W();re(n,t.footer),t.footer&&ke(t.footer,n),G(n,t,"footer")},qe=(e,t)=>{const n=_();l(n,t.closeButtonHtml),G(n,t,"closeButton"),re(n,t.showCloseButton),n.setAttribute("aria-label",t.closeButtonAriaLabel)},Ve=(e,t)=>{var e=b.innerParams.get(e),n=j();return e&&t.icon===e.icon?(We(n,t),void Ne(n,t)):t.icon||t.iconHtml?t.icon&&-1===Object.keys(S).indexOf(t.icon)?(y('Unknown icon! Expected "success", "error", "warning", "info" or "question", got "'.concat(t.icon,'"')),h(n)):(d(n),We(n,t),Ne(n,t),void u(n,t.showClass.icon)):h(n)},Ne=(e,t)=>{for(const n in S)t.icon!==n&&ne(e,S[n]);u(e,S[t.icon]),ze(e,t),Re(),G(e,t,"icon")},Re=()=>{const e=g();var t=window.getComputedStyle(e).getPropertyValue("background-color");const n=e.querySelectorAll("[class^=swal2-success-circular-line], .swal2-success-fix");for(let e=0;e<n.length;e++)n[e].style.backgroundColor=t},Fe='\n <div class="swal2-success-circular-line-left"></div>\n <span class="swal2-success-line-tip"></span> <span class="swal2-success-line-long"></span>\n <div class="swal2-success-ring"></div> <div class="swal2-success-fix"></div>\n <div class="swal2-success-circular-line-right"></div>\n',Ue='\n <span class="swal2-x-mark">\n <span class="swal2-x-mark-line-left"></span>\n <span class="swal2-x-mark-line-right"></span>\n </span>\n',We=(e,t)=>{var n;e.textContent="",t.iconHtml?l(e,_e(t.iconHtml)):"success"===t.icon?l(e,Fe):"error"===t.icon?l(e,Ue):(n={question:"?",warning:"!",info:"i"},l(e,_e(n[t.icon])))},ze=(e,t)=>{if(t.iconColor){e.style.color=t.iconColor,e.style.borderColor=t.iconColor;for(const n of[".swal2-success-line-tip",".swal2-success-line-long",".swal2-x-mark-line-left",".swal2-x-mark-line-right"])ae(e,n,"backgroundColor",t.iconColor);ae(e,".swal2-success-ring","borderColor",t.iconColor)}},_e=e=>'<div class="'.concat(p["icon-content"],'">').concat(e,"</div>"),Ke=(e,t)=>{const n=I();if(!t.imageUrl)return h(n);d(n,""),n.setAttribute("src",t.imageUrl),n.setAttribute("alt",t.imageAlt),ie(n,"width",t.imageWidth),ie(n,"height",t.imageHeight),n.className=p.image,G(n,t,"image")},Ye=(e,o)=>{const i=H();if(!o.progressSteps||0===o.progressSteps.length)return h(i);d(i),i.textContent="",o.currentProgressStep>=o.progressSteps.length&&a("Invalid currentProgressStep parameter, it should be less than progressSteps.length (currentProgressStep like JS arrays starts from 0)"),o.progressSteps.forEach((e,t)=>{e=e,n=document.createElement("li"),u(n,p["progress-step"]),l(n,e);var n,e=n;i.appendChild(e),t===o.currentProgressStep&&u(e,p["active-progress-step"]),t!==o.progressSteps.length-1&&(n=(e=>{const t=document.createElement("li");return u(t,p["progress-step-line"]),e.progressStepsDistance&&(t.style.width=e.progressStepsDistance),t})(o),i.appendChild(n))})},Ze=(e,t)=>{const n=M();re(n,t.title||t.titleText,"block"),t.title&&ke(t.title,n),t.titleText&&(n.innerText=t.titleText),G(n,t,"title")},Je=(e,t)=>{var n=m();const o=g();t.toast?(ie(n,"width",t.width),o.style.width="100%",o.insertBefore(R(),j())):ie(o,"width",t.width),ie(o,"padding",t.padding),t.color&&(o.style.color=t.color),t.background&&(o.style.background=t.background),h(q());n=o;(n.className="".concat(p.popup," ").concat(se(n)?t.showClass.popup:""),t.toast)?(u([document.documentElement,document.body],p["toast-shown"]),u(n,p.toast)):u(n,p.modal);G(n,t,"popup"),"string"==typeof t.customClass&&u(n,t.customClass);t.icon&&u(n,p["icon-".concat(t.icon)])},Xe=(e,t)=>{Je(e,t),Ee(e,t),Ye(e,t),Ve(e,t),Ke(e,t),Ze(e,t),qe(e,t),Ie(e,t),Be(e,t),He(e,t),"function"==typeof t.didRender&&t.didRender(g())},$e=Object.freeze({cancel:"cancel",backdrop:"backdrop",close:"close",esc:"esc",timer:"timer"}),Ge=()=>{const e=r(document.body.children);e.forEach(e=>{e===m()||e.contains(m())||(e.hasAttribute("aria-hidden")&&e.setAttribute("data-previous-aria-hidden",e.getAttribute("aria-hidden")),e.setAttribute("aria-hidden","true"))})},Qe=()=>{const e=r(document.body.children);e.forEach(e=>{e.hasAttribute("data-previous-aria-hidden")?(e.setAttribute("aria-hidden",e.getAttribute("data-previous-aria-hidden")),e.removeAttribute("data-previous-aria-hidden")):e.removeAttribute("aria-hidden")})},et=["swal-title","swal-html","swal-footer"],tt=e=>{const n={};return r(e.querySelectorAll("swal-param")).forEach(e=>{ct(e,["name","value"]);var t=e.getAttribute("name"),e=e.getAttribute("value");"boolean"==typeof i[t]&&"false"===e&&(n[t]=!1),"object"==typeof i[t]&&(n[t]=JSON.parse(e))}),n},nt=e=>{const n={};return r(e.querySelectorAll("swal-button")).forEach(e=>{ct(e,["type","color","aria-label"]);var t=e.getAttribute("type");n["".concat(t,"ButtonText")]=e.innerHTML,n["show".concat(v(t),"Button")]=!0,e.hasAttribute("color")&&(n["".concat(t,"ButtonColor")]=e.getAttribute("color")),e.hasAttribute("aria-label")&&(n["".concat(t,"ButtonAriaLabel")]=e.getAttribute("aria-label"))}),n},ot=e=>{const t={},n=e.querySelector("swal-image");return n&&(ct(n,["src","width","height","alt"]),n.hasAttribute("src")&&(t.imageUrl=n.getAttribute("src")),n.hasAttribute("width")&&(t.imageWidth=n.getAttribute("width")),n.hasAttribute("height")&&(t.imageHeight=n.getAttribute("height")),n.hasAttribute("alt")&&(t.imageAlt=n.getAttribute("alt"))),t},it=e=>{const t={},n=e.querySelector("swal-icon");return n&&(ct(n,["type","color"]),n.hasAttribute("type")&&(t.icon=n.getAttribute("type")),n.hasAttribute("color")&&(t.iconColor=n.getAttribute("color")),t.iconHtml=n.innerHTML),t},at=e=>{const n={},t=e.querySelector("swal-input");t&&(ct(t,["type","label","placeholder","value"]),n.input=t.getAttribute("type")||"text",t.hasAttribute("label")&&(n.inputLabel=t.getAttribute("label")),t.hasAttribute("placeholder")&&(n.inputPlaceholder=t.getAttribute("placeholder")),t.hasAttribute("value")&&(n.inputValue=t.getAttribute("value")));e=e.querySelectorAll("swal-input-option");return e.length&&(n.inputOptions={},r(e).forEach(e=>{ct(e,["value"]);var t=e.getAttribute("value"),e=e.innerHTML;n.inputOptions[t]=e})),n},rt=(e,t)=>{const n={};for(const o in t){const i=t[o],a=e.querySelector(i);a&&(ct(a,[]),n[i.replace(/^swal-/,"")]=a.innerHTML.trim())}return n},st=e=>{const t=et.concat(["swal-param","swal-button","swal-image","swal-icon","swal-input","swal-input-option"]);r(e.children).forEach(e=>{e=e.tagName.toLowerCase();-1===t.indexOf(e)&&a("Unrecognized element <".concat(e,">"))})},ct=(t,n)=>{r(t.attributes).forEach(e=>{-1===n.indexOf(e.name)&&a(['Unrecognized attribute "'.concat(e.name,'" on <').concat(t.tagName.toLowerCase(),">."),"".concat(n.length?"Allowed attributes are: ".concat(n.join(", ")):"To set the value, use HTML within the element.")])})};var lt={email:(e,t)=>/^[a-zA-Z0-9.+_-]+@[a-zA-Z0-9.-]+\.[a-zA-Z0-9-]{2,24}$/.test(e)?Promise.resolve():Promise.resolve(t||"Invalid email address"),url:(e,t)=>/^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-z]{2,63}\b([-a-zA-Z0-9@:%_+.~#?&/=]*)$/.test(e)?Promise.resolve():Promise.resolve(t||"Invalid URL")};function ut(e){(t=e).inputValidator||Object.keys(lt).forEach(e=>{t.input===e&&(t.inputValidator=lt[e])}),e.showLoaderOnConfirm&&!e.preConfirm&&a("showLoaderOnConfirm is set to true, but preConfirm is not defined.\nshowLoaderOnConfirm should be used together with preConfirm, see usage example:\nhttps://sweetalert2.github.io/#ajax-request"),(n=e).target&&("string"!=typeof n.target||document.querySelector(n.target))&&("string"==typeof n.target||n.target.appendChild)||(a('Target parameter is not valid, defaulting to "body"'),n.target="body"),"string"==typeof e.title&&(e.title=e.title.split("\n").join("<br />"));var t,n=e,e=fe();if(de())y("SweetAlert2 requires document to initialize");else{const o=document.createElement("div"),i=(o.className=p.container,e&&u(o,p["no-transition"]),l(o,he),ye(n.target));i.appendChild(o),we(n),Ce(i),ve()}}class dt{constructor(e,t){this.callback=e,this.remaining=t,this.running=!1,this.start()}start(){return this.running||(this.running=!0,this.started=new Date,this.id=setTimeout(this.callback,this.remaining)),this.remaining}stop(){return this.running&&(this.running=!1,clearTimeout(this.id),this.remaining-=(new Date).getTime()-this.started.getTime()),this.remaining}increase(e){var t=this.running;return t&&this.stop(),this.remaining+=e,t&&this.start(),this.remaining}getTimerLeft(){return this.running&&(this.stop(),this.start()),this.remaining}isRunning(){return this.running}}const pt=()=>{null===X.previousBodyPadding&&document.body.scrollHeight>window.innerHeight&&(X.previousBodyPadding=parseInt(window.getComputedStyle(document.body).getPropertyValue("padding-right")),document.body.style.paddingRight="".concat(X.previousBodyPadding+(()=>{const e=document.createElement("div");e.className=p["scrollbar-measure"],document.body.appendChild(e);var t=e.getBoundingClientRect().width-e.clientWidth;return document.body.removeChild(e),t})(),"px"))},mt=()=>{null!==X.previousBodyPadding&&(document.body.style.paddingRight="".concat(X.previousBodyPadding,"px"),X.previousBodyPadding=null)},gt=()=>{var e=/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream||"MacIntel"===navigator.platform&&1<navigator.maxTouchPoints;if(e&&!$(document.body,p.iosfix)){var t,e=document.body.scrollTop;document.body.style.top="".concat(-1*e,"px"),u(document.body,p.iosfix);{const n=m();let t;n.ontouchstart=e=>{t=ht(e)},n.ontouchmove=e=>{t&&(e.preventDefault(),e.stopPropagation())}}{const o=navigator.userAgent,i=!!o.match(/iPad/i)||!!o.match(/iPhone/i),a=!!o.match(/WebKit/i),r=i&&a&&!o.match(/CriOS/i);r&&(t=44,g().scrollHeight>window.innerHeight-44&&(m().style.paddingBottom="".concat(44,"px")))}}},ht=e=>{var t,n=e.target,o=m();return!((t=e).touches&&t.touches.length&&"stylus"===t.touches[0].touchType||(t=e).touches&&1<t.touches.length)&&(n===o||!(le(o)||"INPUT"===n.tagName||"TEXTAREA"===n.tagName||le(D())&&D().contains(n)))},ft=()=>{var e;$(document.body,p.iosfix)&&(e=parseInt(document.body.style.top,10),ne(document.body,p.iosfix),document.body.style.top="",document.body.scrollTop=-1*e)},bt=10,vt=e=>{const t=g();if(e.target===t){const n=m();t.removeEventListener(Pe,vt),n.style.overflowY="auto"}},yt=(e,t)=>{Pe&&ue(t)?(e.style.overflowY="hidden",t.addEventListener(Pe,vt)):e.style.overflowY="auto"},wt=(e,t,n)=>{gt(),t&&"hidden"!==n&&pt(),setTimeout(()=>{e.scrollTop=0})},Ct=(e,t,n)=>{u(e,n.showClass.backdrop),t.style.setProperty("opacity","0","important"),d(t,"grid"),setTimeout(()=>{u(t,n.showClass.popup),t.style.removeProperty("opacity")},bt),u([document.documentElement,document.body],p.shown),n.heightAuto&&n.backdrop&&!n.toast&&u([document.documentElement,document.body],p["height-auto"])},kt=e=>{let t=g();t||new vn,t=g();var n=R();if(Z())h(j());else{var o=t;const i=U(),a=R();!e&&se(V())&&(e=V());d(i),e&&(h(e),a.setAttribute("data-button-to-replace",e.className));a.parentNode.insertBefore(a,e),u([o,i],p.loading)}d(n),t.setAttribute("data-loading",!0),t.setAttribute("aria-busy",!0),t.focus()},At=(t,n)=>{const o=g(),i=e=>Bt[n.input](o,xt(e),n);C(n.inputOptions)||A(n.inputOptions)?(kt(V()),k(n.inputOptions).then(e=>{t.hideLoading(),i(e)})):"object"==typeof n.inputOptions?i(n.inputOptions):y("Unexpected type of inputOptions! Expected object, Map or Promise, got ".concat(typeof n.inputOptions))},Pt=(t,n)=>{const o=t.getInput();h(o),k(n.inputValue).then(e=>{o.value="number"===n.input?parseFloat(e)||0:"".concat(e),d(o),o.focus(),t.hideLoading()}).catch(e=>{y("Error in inputValue promise: ".concat(e)),o.value="",d(o),o.focus(),t.hideLoading()})},Bt={select:(e,t,i)=>{const a=oe(e,p.select),r=(e,t,n)=>{const o=document.createElement("option");o.value=n,l(o,t),o.selected=Et(n,i.inputValue),e.appendChild(o)};t.forEach(e=>{var t=e[0];const n=e[1];if(Array.isArray(n)){const o=document.createElement("optgroup");o.label=t,o.disabled=!1,a.appendChild(o),n.forEach(e=>r(o,e[1],e[0]))}else r(a,n,t)}),a.focus()},radio:(e,t,a)=>{const r=oe(e,p.radio),n=(t.forEach(e=>{var t=e[0],e=e[1];const n=document.createElement("input"),o=document.createElement("label"),i=(n.type="radio",n.name=p.radio,n.value=t,Et(t,a.inputValue)&&(n.checked=!0),document.createElement("span"));l(i,e),i.className=p.label,o.appendChild(n),o.appendChild(i),r.appendChild(o)}),r.querySelectorAll("input"));n.length&&n[0].focus()}},xt=n=>{const o=[];return"undefined"!=typeof Map&&n instanceof Map?n.forEach((e,t)=>{let n=e;"object"==typeof n&&(n=xt(n)),o.push([t,n])}):Object.keys(n).forEach(e=>{let t=n[e];"object"==typeof t&&(t=xt(t)),o.push([e,t])}),o},Et=(e,t)=>t&&t.toString()===e.toString(),Tt=(e,t)=>{var n=b.innerParams.get(e);if(!n.input)return y('The "input" parameter is needed to be set when using returnInputValueOn'.concat(v(t)));var o=((e,t)=>{const n=e.getInput();if(!n)return null;switch(t.input){case"checkbox":return n.checked?1:0;case"radio":return(o=n).checked?o.value:null;case"file":return(o=n).files.length?null!==o.getAttribute("multiple")?o.files:o.files[0]:null;default:return t.inputAutoTrim?n.value.trim():n.value}var o})(e,n);if(n.inputValidator){var i=e;var a=o;var r=t;const s=b.innerParams.get(i),c=(i.disableInput(),Promise.resolve().then(()=>k(s.inputValidator(a,s.validationMessage))));c.then(e=>{i.enableButtons(),i.enableInput(),e?i.showValidationMessage(e):("deny"===r?St:jt)(i,a)})}else e.getInput().checkValidity()?("deny"===t?St:jt)(e,o):(e.enableButtons(),e.showValidationMessage(n.validationMessage))},St=(t,n)=>{const e=b.innerParams.get(t||void 0);if(e.showLoaderOnDeny&&kt(N()),e.preDeny){b.awaitingPromise.set(t||void 0,!0);const o=Promise.resolve().then(()=>k(e.preDeny(n,e.validationMessage)));o.then(e=>{!1===e?t.hideLoading():t.closePopup({isDenied:!0,value:void 0===e?n:e})}).catch(e=>Ot(t||void 0,e))}else t.closePopup({isDenied:!0,value:n})},Lt=(e,t)=>{e.closePopup({isConfirmed:!0,value:t})},Ot=(e,t)=>{e.rejectPromise(t)},jt=(t,n)=>{const e=b.innerParams.get(t||void 0);if(e.showLoaderOnConfirm&&kt(),e.preConfirm){t.resetValidationMessage(),b.awaitingPromise.set(t||void 0,!0);const o=Promise.resolve().then(()=>k(e.preConfirm(n,e.validationMessage)));o.then(e=>{se(q())||!1===e?t.hideLoading():Lt(t,void 0===e?n:e)}).catch(e=>Ot(t||void 0,e))}else Lt(t,n)},Mt=(n,e,o)=>{e.popup.onclick=()=>{var e,t=b.innerParams.get(n);t&&((e=t).showConfirmButton||e.showDenyButton||e.showCancelButton||e.showCloseButton||t.timer||t.input)||o($e.close)}};let Dt=!1;const It=t=>{t.popup.onmousedown=()=>{t.container.onmouseup=function(e){t.container.onmouseup=void 0,e.target===t.container&&(Dt=!0)}}},Ht=t=>{t.container.onmousedown=()=>{t.popup.onmouseup=function(e){t.popup.onmouseup=void 0,e.target!==t.popup&&!t.popup.contains(e.target)||(Dt=!0)}}},qt=(n,o,i)=>{o.container.onclick=e=>{var t=b.innerParams.get(n);Dt?Dt=!1:e.target===o.container&&w(t.allowOutsideClick)&&i($e.backdrop)}};const Vt=()=>V()&&V().click();const Nt=(e,t,n)=>{const o=K();if(o.length)return(t+=n)===o.length?t=0:-1===t&&(t=o.length-1),o[t].focus();g().focus()},Rt=["ArrowRight","ArrowDown"],Ft=["ArrowLeft","ArrowUp"],Ut=(e,n,o)=>{var i=b.innerParams.get(e);if(i)if(i.stopKeydownPropagation&&n.stopPropagation(),"Enter"===n.key)e=e,a=n,t=i,w(t.allowEnterKey)&&!a.isComposing&&a.target&&e.getInput()&&a.target.outerHTML===e.getInput().outerHTML&&(["textarea","file"].includes(t.input)||(Vt(),a.preventDefault()));else if("Tab"!==n.key){if([...Rt,...Ft].includes(n.key)){e=n.key;const s=V(),c=N(),d=F();if([s,c,d].includes(document.activeElement)){var t=Rt.includes(e)?"nextElementSibling":"previousElementSibling";const l=document.activeElement[t];l instanceof HTMLElement&&l.focus()}}else if("Escape"===n.key){var a=n,e=i;if(w(e.allowEscapeKey)){a.preventDefault();o($e.esc)}}}else{e=n;o=i;var u=e.target,r=K();let t=-1;for(let e=0;e<r.length;e++)if(u===r[e]){t=e;break}e.shiftKey?Nt(o,t,-1):Nt(o,t,1);e.stopPropagation(),e.preventDefault()}},Wt=e=>"object"==typeof e&&e.jquery,zt=e=>e instanceof Element||Wt(e);const _t=()=>{if(f.timeout){{const n=z();var e=parseInt(window.getComputedStyle(n).width),t=(n.style.removeProperty("transition"),n.style.width="100%",parseInt(window.getComputedStyle(n).width)),e=e/t*100;n.style.removeProperty("transition"),n.style.width="".concat(e,"%")}return f.timeout.stop()}},Kt=()=>{var e;if(f.timeout)return e=f.timeout.start(),J(e),e};let Yt=!1;const Zt={};const Jt=t=>{for(let e=t.target;e&&e!==document;e=e.parentNode)for(const o in Zt){var n=e.getAttribute(o);if(n)return void Zt[o].fire({template:n})}};e=Object.freeze({isValidParameter:B,isUpdatableParameter:x,isDeprecatedParameter:E,argsToParams:n=>{const o={};return"object"!=typeof n[0]||zt(n[0])?["title","html","icon"].forEach((e,t)=>{t=n[t];"string"==typeof t||zt(t)?o[e]=t:void 0!==t&&y("Unexpected type of ".concat(e,'! Expected "string" or "Element", got ').concat(typeof t))}):Object.assign(o,n[0]),o},isVisible:()=>se(g()),clickConfirm:Vt,clickDeny:()=>N()&&N().click(),clickCancel:()=>F()&&F().click(),getContainer:m,getPopup:g,getTitle:M,getHtmlContainer:D,getImage:I,getIcon:j,getInputLabel:()=>O(p["input-label"]),getCloseButton:_,getActions:U,getConfirmButton:V,getDenyButton:N,getCancelButton:F,getLoader:R,getFooter:W,getTimerProgressBar:z,getFocusableElements:K,getValidationMessage:q,isLoading:()=>g().hasAttribute("data-loading"),fire:function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return new this(...t)},mixin:function(n){class e extends this{_main(e,t){return super._main(e,Object.assign({},n,t))}}return e},showLoading:kt,enableLoading:kt,getTimerLeft:()=>f.timeout&&f.timeout.getTimerLeft(),stopTimer:_t,resumeTimer:Kt,toggleTimer:()=>{var e=f.timeout;return e&&(e.running?_t:Kt)()},increaseTimer:e=>{if(f.timeout)return e=f.timeout.increase(e),J(e,!0),e},isTimerRunning:()=>f.timeout&&f.timeout.isRunning(),bindClickHandler:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:"data-swal-template";Zt[e]=this,Yt||(document.body.addEventListener("click",Jt),Yt=!0)}});function Xt(){var e,t=b.innerParams.get(this);if(t){const n=b.domCache.get(this);h(n.loader),Z()?t.icon&&d(j()):(t=n,(e=t.popup.getElementsByClassName(t.loader.getAttribute("data-button-to-replace"))).length?d(e[0],"inline-block"):ce()&&h(t.actions)),ne([n.popup,n.actions],p.loading),n.popup.removeAttribute("aria-busy"),n.popup.removeAttribute("data-loading"),n.confirmButton.disabled=!1,n.denyButton.disabled=!1,n.cancelButton.disabled=!1}}var $t={swalPromiseResolve:new WeakMap,swalPromiseReject:new WeakMap};function Gt(e,t,n,o){Z()?nn(e,o):(ge(n).then(()=>nn(e,o)),f.keydownTarget.removeEventListener("keydown",f.keydownHandler,{capture:f.keydownListenerCapture}),f.keydownHandlerAdded=!1),/^((?!chrome|android).)*safari/i.test(navigator.userAgent)?(t.setAttribute("style","display:none !important"),t.removeAttribute("class"),t.innerHTML=""):t.remove(),Y()&&(mt(),ft(),Qe()),ne([document.documentElement,document.body],[p.shown,p["height-auto"],p["no-backdrop"],p["toast-shown"]])}function Qt(e){e=void 0!==(n=e)?Object.assign({isConfirmed:!1,isDenied:!1,isDismissed:!1},n):{isConfirmed:!1,isDenied:!1,isDismissed:!0};const t=$t.swalPromiseResolve.get(this);var n=(e=>{const t=g();if(!t)return false;const n=b.innerParams.get(e);if(!n||$(t,n.hideClass.popup))return false;ne(t,n.showClass.popup),u(t,n.hideClass.popup);const o=m();return ne(o,n.showClass.backdrop),u(o,n.hideClass.backdrop),tn(e,t,n),true})(this);this.isAwaitingPromise()?e.isDismissed||(en(this),t(e)):n&&t(e)}const en=e=>{e.isAwaitingPromise()&&(b.awaitingPromise.delete(e),b.innerParams.get(e)||e._destroy())},tn=(e,t,n)=>{var o,i,a,r=m(),s=Pe&&ue(t);"function"==typeof n.willClose&&n.willClose(t),s?(s=e,o=t,t=r,i=n.returnFocus,a=n.didClose,f.swalCloseEventFinishedCallback=Gt.bind(null,s,t,i,a),o.addEventListener(Pe,function(e){e.target===o&&(f.swalCloseEventFinishedCallback(),delete f.swalCloseEventFinishedCallback)})):Gt(e,r,n.returnFocus,n.didClose)},nn=(e,t)=>{setTimeout(()=>{"function"==typeof t&&t.bind(e.params)(),e._destroy()})};function on(e,t,n){const o=b.domCache.get(e);t.forEach(e=>{o[e].disabled=n})}function an(e,t){if(!e)return!1;if("radio"===e.type){const n=e.parentNode.parentNode,o=n.querySelectorAll("input");for(let e=0;e<o.length;e++)o[e].disabled=t}else e.disabled=t}const rn=e=>{e.isAwaitingPromise()?(sn(b,e),b.awaitingPromise.set(e,!0)):(sn($t,e),sn(b,e))},sn=(e,t)=>{for(const n in e)e[n].delete(t)};var cn=Object.freeze({hideLoading:Xt,disableLoading:Xt,getInput:function(e){var t=b.innerParams.get(e||this);return(e=b.domCache.get(e||this))?Q(e.popup,t.input):null},close:Qt,isAwaitingPromise:function(){return!!b.awaitingPromise.get(this)},rejectPromise:function(e){const t=$t.swalPromiseReject.get(this);en(this),t&&t(e)},closePopup:Qt,closeModal:Qt,closeToast:Qt,enableButtons:function(){on(this,["confirmButton","denyButton","cancelButton"],!1)},disableButtons:function(){on(this,["confirmButton","denyButton","cancelButton"],!0)},enableInput:function(){return an(this.getInput(),!1)},disableInput:function(){return an(this.getInput(),!0)},showValidationMessage:function(e){const t=b.domCache.get(this);var n=b.innerParams.get(this);l(t.validationMessage,e),t.validationMessage.className=p["validation-message"],n.customClass&&n.customClass.validationMessage&&u(t.validationMessage,n.customClass.validationMessage),d(t.validationMessage);const o=this.getInput();o&&(o.setAttribute("aria-invalid",!0),o.setAttribute("aria-describedby",p["validation-message"]),ee(o),u(o,p.inputerror))},resetValidationMessage:function(){var e=b.domCache.get(this);e.validationMessage&&h(e.validationMessage);const t=this.getInput();t&&(t.removeAttribute("aria-invalid"),t.removeAttribute("aria-describedby"),ne(t,p.inputerror))},getProgressSteps:function(){return b.domCache.get(this).progressSteps},update:function(e){var t=g(),n=b.innerParams.get(this);if(!t||$(t,n.hideClass.popup))return a("You're trying to update the closed or closing popup, that won't work. Use the update() method in preConfirm parameter or show a new popup.");t=(t=>{const n={};return Object.keys(t).forEach(e=>{if(x(e))n[e]=t[e];else a('Invalid parameter to update: "'.concat(e,'". Updatable params are listed here: https://github.com/sweetalert2/sweetalert2/blob/master/src/utils/params.js\n\nIf you think this parameter should be updatable, request it here: https://github.com/sweetalert2/sweetalert2/issues/new?template=02_feature_request.md'))}),n})(e),n=Object.assign({},n,t),Xe(this,n),b.innerParams.set(this,n),Object.defineProperties(this,{params:{value:Object.assign({},this.params,e),writable:!1,enumerable:!0}})},_destroy:function(){var e=b.domCache.get(this);const t=b.innerParams.get(this);t?(e.popup&&f.swalCloseEventFinishedCallback&&(f.swalCloseEventFinishedCallback(),delete f.swalCloseEventFinishedCallback),f.deferDisposalTimer&&(clearTimeout(f.deferDisposalTimer),delete f.deferDisposalTimer),"function"==typeof t.didDestroy&&t.didDestroy(),e=this,rn(e),delete e.params,delete f.keydownHandler,delete f.keydownTarget,delete f.currentInstance):rn(this)}});let ln;class un{constructor(){if("undefined"!=typeof window){ln=this;for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];var o=Object.freeze(this.constructor.argsToParams(t)),o=(Object.defineProperties(this,{params:{value:o,writable:!1,enumerable:!0,configurable:!0}}),this._main(this.params));b.promise.set(this,o)}}_main(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},e=(T(Object.assign({},t,e)),f.currentInstance&&(f.currentInstance._destroy(),Y()&&Qe()),f.currentInstance=this,pn(e,t)),t=(ut(e),Object.freeze(e),f.timeout&&(f.timeout.stop(),delete f.timeout),clearTimeout(f.restoreFocusTimeout),mn(this));return Xe(this,e),b.innerParams.set(this,e),dn(this,t,e)}then(e){const t=b.promise.get(this);return t.then(e)}finally(e){const t=b.promise.get(this);return t.finally(e)}}const dn=(l,u,d)=>new Promise((e,t)=>{const n=e=>{l.closePopup({isDismissed:!0,dismiss:e})};var o,i,a;$t.swalPromiseResolve.set(l,e),$t.swalPromiseReject.set(l,t),u.confirmButton.onclick=()=>{var e=l,t=b.innerParams.get(e);e.disableButtons(),t.input?Tt(e,"confirm"):jt(e,!0)},u.denyButton.onclick=()=>{var e=l,t=b.innerParams.get(e);e.disableButtons(),t.returnInputValueOnDeny?Tt(e,"deny"):St(e,!1)},u.cancelButton.onclick=()=>{var e=l,t=n;e.disableButtons(),t($e.cancel)},u.closeButton.onclick=()=>n($e.close),e=l,t=u,a=n,b.innerParams.get(e).toast?Mt(e,t,a):(It(t),Ht(t),qt(e,t,a)),o=l,e=f,t=d,i=n,e.keydownTarget&&e.keydownHandlerAdded&&(e.keydownTarget.removeEventListener("keydown",e.keydownHandler,{capture:e.keydownListenerCapture}),e.keydownHandlerAdded=!1),t.toast||(e.keydownHandler=e=>Ut(o,e,i),e.keydownTarget=t.keydownListenerCapture?window:g(),e.keydownListenerCapture=t.keydownListenerCapture,e.keydownTarget.addEventListener("keydown",e.keydownHandler,{capture:e.keydownListenerCapture}),e.keydownHandlerAdded=!0),a=l,"select"===(t=d).input||"radio"===t.input?At(a,t):["text","email","number","tel","textarea"].includes(t.input)&&(C(t.inputValue)||A(t.inputValue))&&(kt(V()),Pt(a,t));{var r=d;const s=m(),c=g();"function"==typeof r.willOpen&&r.willOpen(c),e=window.getComputedStyle(document.body).overflowY,Ct(s,c,r),setTimeout(()=>{yt(s,c)},bt),Y()&&(wt(s,r.scrollbarPadding,e),Ge()),Z()||f.previousActiveElement||(f.previousActiveElement=document.activeElement),"function"==typeof r.didOpen&&setTimeout(()=>r.didOpen(c)),ne(s,p["no-transition"])}gn(f,d,n),hn(u,d),setTimeout(()=>{u.container.scrollTop=0})}),pn=(e,t)=>{var n=(e=>{e="string"==typeof e.template?document.querySelector(e.template):e.template;if(!e)return{};e=e.content,st(e),e=Object.assign(tt(e),nt(e),ot(e),it(e),at(e),rt(e,et));return e})(e);const o=Object.assign({},i,t,n,e);return o.showClass=Object.assign({},i.showClass,o.showClass),o.hideClass=Object.assign({},i.hideClass,o.hideClass),o},mn=e=>{var t={popup:g(),container:m(),actions:U(),confirmButton:V(),denyButton:N(),cancelButton:F(),loader:R(),closeButton:_(),validationMessage:q(),progressSteps:H()};return b.domCache.set(e,t),t},gn=(e,t,n)=>{var o=z();h(o),t.timer&&(e.timeout=new dt(()=>{n("timer"),delete e.timeout},t.timer),t.timerProgressBar&&(d(o),setTimeout(()=>{e.timeout&&e.timeout.running&&J(t.timer)})))},hn=(e,t)=>{if(!t.toast)return w(t.allowEnterKey)?void(fn(e,t)||Nt(t,-1,1)):bn()},fn=(e,t)=>t.focusDeny&&se(e.denyButton)?(e.denyButton.focus(),!0):t.focusCancel&&se(e.cancelButton)?(e.cancelButton.focus(),!0):!(!t.focusConfirm||!se(e.confirmButton))&&(e.confirmButton.focus(),!0),bn=()=>{document.activeElement instanceof HTMLElement&&"function"==typeof document.activeElement.blur&&document.activeElement.blur()},vn=(Object.assign(un.prototype,cn),Object.assign(un,e),Object.keys(cn).forEach(e=>{un[e]=function(){if(ln)return ln[e](...arguments)}}),un.DismissReason=$e,un.version="11.3.10",un);return vn.default=vn,vn}),void 0!==this&&this.Sweetalert2&&(this.swal=this.sweetAlert=this.Swal=this.SweetAlert=this.Sweetalert2);
"undefined"!=typeof document&&function(e,t){var n=e.createElement("style");if(e.getElementsByTagName("head")[0].appendChild(n),n.styleSheet)n.styleSheet.disabled||(n.styleSheet.cssText=t);else try{n.innerHTML=t}catch(e){n.innerText=t}}(document,".swal2-popup.swal2-toast{box-sizing:border-box;grid-column:1/4!important;grid-row:1/4!important;grid-template-columns:1fr 99fr 1fr;padding:1em;overflow-y:hidden;background:#fff;box-shadow:0 0 1px rgba(0,0,0,.075),0 1px 2px rgba(0,0,0,.075),1px 2px 4px rgba(0,0,0,.075),1px 3px 8px rgba(0,0,0,.075),2px 4px 16px rgba(0,0,0,.075);pointer-events:all}.swal2-popup.swal2-toast>*{grid-column:2}.swal2-popup.swal2-toast .swal2-title{margin:.5em 1em;padding:0;font-size:1em;text-align:initial}.swal2-popup.swal2-toast .swal2-loading{justify-content:center}.swal2-popup.swal2-toast .swal2-input{height:2em;margin:.5em;font-size:1em}.swal2-popup.swal2-toast .swal2-validation-message{font-size:1em}.swal2-popup.swal2-toast .swal2-footer{margin:.5em 0 0;padding:.5em 0 0;font-size:.8em}.swal2-popup.swal2-toast .swal2-close{grid-column:3/3;grid-row:1/99;align-self:center;width:.8em;height:.8em;margin:0;font-size:2em}.swal2-popup.swal2-toast .swal2-html-container{margin:.5em 1em;padding:0;font-size:1em;text-align:initial}.swal2-popup.swal2-toast .swal2-html-container:empty{padding:0}.swal2-popup.swal2-toast .swal2-loader{grid-column:1;grid-row:1/99;align-self:center;width:2em;height:2em;margin:.25em}.swal2-popup.swal2-toast .swal2-icon{grid-column:1;grid-row:1/99;align-self:center;width:2em;min-width:2em;height:2em;margin:0 .5em 0 0}.swal2-popup.swal2-toast .swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:1.8em;font-weight:700}.swal2-popup.swal2-toast .swal2-icon.swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line]{top:.875em;width:1.375em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:.3125em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:.3125em}.swal2-popup.swal2-toast .swal2-actions{justify-content:flex-start;height:auto;margin:0;margin-top:.5em;padding:0 .5em}.swal2-popup.swal2-toast .swal2-styled{margin:.25em .5em;padding:.4em .6em;font-size:1em}.swal2-popup.swal2-toast .swal2-success{border-color:#a5dc86}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line]{position:absolute;width:1.6em;height:3em;transform:rotate(45deg);border-radius:50%}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=left]{top:-.8em;left:-.5em;transform:rotate(-45deg);transform-origin:2em 2em;border-radius:4em 0 0 4em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=right]{top:-.25em;left:.9375em;transform-origin:0 1.5em;border-radius:0 4em 4em 0}.swal2-popup.swal2-toast .swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-success .swal2-success-fix{top:0;left:.4375em;width:.4375em;height:2.6875em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line]{height:.3125em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=tip]{top:1.125em;left:.1875em;width:.75em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=long]{top:.9375em;right:.1875em;width:1.375em}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-tip{-webkit-animation:swal2-toast-animate-success-line-tip .75s;animation:swal2-toast-animate-success-line-tip .75s}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-long{-webkit-animation:swal2-toast-animate-success-line-long .75s;animation:swal2-toast-animate-success-line-long .75s}.swal2-popup.swal2-toast.swal2-show{-webkit-animation:swal2-toast-show .5s;animation:swal2-toast-show .5s}.swal2-popup.swal2-toast.swal2-hide{-webkit-animation:swal2-toast-hide .1s forwards;animation:swal2-toast-hide .1s forwards}.swal2-container{display:grid;position:fixed;z-index:1060;top:0;right:0;bottom:0;left:0;box-sizing:border-box;grid-template-areas:\"top-start top top-end\" \"center-start center center-end\" \"bottom-start bottom-center bottom-end\";grid-template-rows:minmax(-webkit-min-content,auto) minmax(-webkit-min-content,auto) minmax(-webkit-min-content,auto);grid-template-rows:minmax(min-content,auto) minmax(min-content,auto) minmax(min-content,auto);height:100%;padding:.625em;overflow-x:hidden;transition:background-color .1s;-webkit-overflow-scrolling:touch}.swal2-container.swal2-backdrop-show,.swal2-container.swal2-noanimation{background:rgba(0,0,0,.4)}.swal2-container.swal2-backdrop-hide{background:0 0!important}.swal2-container.swal2-bottom-start,.swal2-container.swal2-center-start,.swal2-container.swal2-top-start{grid-template-columns:minmax(0,1fr) auto auto}.swal2-container.swal2-bottom,.swal2-container.swal2-center,.swal2-container.swal2-top{grid-template-columns:auto minmax(0,1fr) auto}.swal2-container.swal2-bottom-end,.swal2-container.swal2-center-end,.swal2-container.swal2-top-end{grid-template-columns:auto auto minmax(0,1fr)}.swal2-container.swal2-top-start>.swal2-popup{align-self:start}.swal2-container.swal2-top>.swal2-popup{grid-column:2;align-self:start;justify-self:center}.swal2-container.swal2-top-end>.swal2-popup,.swal2-container.swal2-top-right>.swal2-popup{grid-column:3;align-self:start;justify-self:end}.swal2-container.swal2-center-left>.swal2-popup,.swal2-container.swal2-center-start>.swal2-popup{grid-row:2;align-self:center}.swal2-container.swal2-center>.swal2-popup{grid-column:2;grid-row:2;align-self:center;justify-self:center}.swal2-container.swal2-center-end>.swal2-popup,.swal2-container.swal2-center-right>.swal2-popup{grid-column:3;grid-row:2;align-self:center;justify-self:end}.swal2-container.swal2-bottom-left>.swal2-popup,.swal2-container.swal2-bottom-start>.swal2-popup{grid-column:1;grid-row:3;align-self:end}.swal2-container.swal2-bottom>.swal2-popup{grid-column:2;grid-row:3;justify-self:center;align-self:end}.swal2-container.swal2-bottom-end>.swal2-popup,.swal2-container.swal2-bottom-right>.swal2-popup{grid-column:3;grid-row:3;align-self:end;justify-self:end}.swal2-container.swal2-grow-fullscreen>.swal2-popup,.swal2-container.swal2-grow-row>.swal2-popup{grid-column:1/4;width:100%}.swal2-container.swal2-grow-column>.swal2-popup,.swal2-container.swal2-grow-fullscreen>.swal2-popup{grid-row:1/4;align-self:stretch}.swal2-container.swal2-no-transition{transition:none!important}.swal2-popup{display:none;position:relative;box-sizing:border-box;grid-template-columns:minmax(0,100%);width:32em;max-width:100%;padding:0 0 1.25em;border:none;border-radius:5px;background:#fff;color:#545454;font-family:inherit;font-size:1rem}.swal2-popup:focus{outline:0}.swal2-popup.swal2-loading{overflow-y:hidden}.swal2-title{position:relative;max-width:100%;margin:0;padding:.8em 1em 0;color:inherit;font-size:1.875em;font-weight:600;text-align:center;text-transform:none;word-wrap:break-word}.swal2-actions{display:flex;z-index:1;box-sizing:border-box;flex-wrap:wrap;align-items:center;justify-content:center;width:auto;margin:1.25em auto 0;padding:0}.swal2-actions:not(.swal2-loading) .swal2-styled[disabled]{opacity:.4}.swal2-actions:not(.swal2-loading) .swal2-styled:hover{background-image:linear-gradient(rgba(0,0,0,.1),rgba(0,0,0,.1))}.swal2-actions:not(.swal2-loading) .swal2-styled:active{background-image:linear-gradient(rgba(0,0,0,.2),rgba(0,0,0,.2))}.swal2-loader{display:none;align-items:center;justify-content:center;width:2.2em;height:2.2em;margin:0 1.875em;-webkit-animation:swal2-rotate-loading 1.5s linear 0s infinite normal;animation:swal2-rotate-loading 1.5s linear 0s infinite normal;border-width:.25em;border-style:solid;border-radius:100%;border-color:#2778c4 transparent #2778c4 transparent}.swal2-styled{margin:.3125em;padding:.625em 1.1em;transition:box-shadow .1s;box-shadow:0 0 0 3px transparent;font-weight:500}.swal2-styled:not([disabled]){cursor:pointer}.swal2-styled.swal2-confirm{border:0;border-radius:.25em;background:initial;background-color:#7066e0;color:#fff;font-size:1em}.swal2-styled.swal2-confirm:focus{box-shadow:0 0 0 3px rgba(112,102,224,.5)}.swal2-styled.swal2-deny{border:0;border-radius:.25em;background:initial;background-color:#dc3741;color:#fff;font-size:1em}.swal2-styled.swal2-deny:focus{box-shadow:0 0 0 3px rgba(220,55,65,.5)}.swal2-styled.swal2-cancel{border:0;border-radius:.25em;background:initial;background-color:#6e7881;color:#fff;font-size:1em}.swal2-styled.swal2-cancel:focus{box-shadow:0 0 0 3px rgba(110,120,129,.5)}.swal2-styled.swal2-default-outline:focus{box-shadow:0 0 0 3px rgba(100,150,200,.5)}.swal2-styled:focus{outline:0}.swal2-styled::-moz-focus-inner{border:0}.swal2-footer{justify-content:center;margin:1em 0 0;padding:1em 1em 0;border-top:1px solid #eee;color:inherit;font-size:1em}.swal2-timer-progress-bar-container{position:absolute;right:0;bottom:0;left:0;grid-column:auto!important;height:.25em;overflow:hidden;border-bottom-right-radius:5px;border-bottom-left-radius:5px}.swal2-timer-progress-bar{width:100%;height:.25em;background:rgba(0,0,0,.2)}.swal2-image{max-width:100%;margin:2em auto 1em}.swal2-close{z-index:2;align-items:center;justify-content:center;width:1.2em;height:1.2em;margin-top:0;margin-right:0;margin-bottom:-1.2em;padding:0;overflow:hidden;transition:color .1s,box-shadow .1s;border:none;border-radius:5px;background:0 0;color:#ccc;font-family:serif;font-family:monospace;font-size:2.5em;cursor:pointer;justify-self:end}.swal2-close:hover{transform:none;background:0 0;color:#f27474}.swal2-close:focus{outline:0;box-shadow:inset 0 0 0 3px rgba(100,150,200,.5)}.swal2-close::-moz-focus-inner{border:0}.swal2-html-container{z-index:1;justify-content:center;margin:1em 1.6em .3em;padding:0;overflow:auto;color:inherit;font-size:1.125em;font-weight:400;line-height:normal;text-align:center;word-wrap:break-word;word-break:break-word}.swal2-checkbox,.swal2-file,.swal2-input,.swal2-radio,.swal2-select,.swal2-textarea{margin:1em 2em 3px}.swal2-file,.swal2-input,.swal2-textarea{box-sizing:border-box;width:auto;transition:border-color .1s,box-shadow .1s;border:1px solid #d9d9d9;border-radius:.1875em;background:inherit;box-shadow:inset 0 1px 1px rgba(0,0,0,.06),0 0 0 3px transparent;color:inherit;font-size:1.125em}.swal2-file.swal2-inputerror,.swal2-input.swal2-inputerror,.swal2-textarea.swal2-inputerror{border-color:#f27474!important;box-shadow:0 0 2px #f27474!important}.swal2-file:focus,.swal2-input:focus,.swal2-textarea:focus{border:1px solid #b4dbed;outline:0;box-shadow:inset 0 1px 1px rgba(0,0,0,.06),0 0 0 3px rgba(100,150,200,.5)}.swal2-file::-moz-placeholder,.swal2-input::-moz-placeholder,.swal2-textarea::-moz-placeholder{color:#ccc}.swal2-file:-ms-input-placeholder,.swal2-input:-ms-input-placeholder,.swal2-textarea:-ms-input-placeholder{color:#ccc}.swal2-file::placeholder,.swal2-input::placeholder,.swal2-textarea::placeholder{color:#ccc}.swal2-range{margin:1em 2em 3px;background:#fff}.swal2-range input{width:80%}.swal2-range output{width:20%;color:inherit;font-weight:600;text-align:center}.swal2-range input,.swal2-range output{height:2.625em;padding:0;font-size:1.125em;line-height:2.625em}.swal2-input{height:2.625em;padding:0 .75em}.swal2-file{width:75%;margin-right:auto;margin-left:auto;background:inherit;font-size:1.125em}.swal2-textarea{height:6.75em;padding:.75em}.swal2-select{min-width:50%;max-width:100%;padding:.375em .625em;background:inherit;color:inherit;font-size:1.125em}.swal2-checkbox,.swal2-radio{align-items:center;justify-content:center;background:#fff;color:inherit}.swal2-checkbox label,.swal2-radio label{margin:0 .6em;font-size:1.125em}.swal2-checkbox input,.swal2-radio input{flex-shrink:0;margin:0 .4em}.swal2-input-label{display:flex;justify-content:center;margin:1em auto 0}.swal2-validation-message{align-items:center;justify-content:center;margin:1em 0 0;padding:.625em;overflow:hidden;background:#f0f0f0;color:#666;font-size:1em;font-weight:300}.swal2-validation-message::before{content:\"!\";display:inline-block;width:1.5em;min-width:1.5em;height:1.5em;margin:0 .625em;border-radius:50%;background-color:#f27474;color:#fff;font-weight:600;line-height:1.5em;text-align:center}.swal2-icon{position:relative;box-sizing:content-box;justify-content:center;width:5em;height:5em;margin:2.5em auto .6em;border:.25em solid transparent;border-radius:50%;border-color:#000;font-family:inherit;line-height:5em;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:3.75em}.swal2-icon.swal2-error{border-color:#f27474;color:#f27474}.swal2-icon.swal2-error .swal2-x-mark{position:relative;flex-grow:1}.swal2-icon.swal2-error [class^=swal2-x-mark-line]{display:block;position:absolute;top:2.3125em;width:2.9375em;height:.3125em;border-radius:.125em;background-color:#f27474}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:1.0625em;transform:rotate(45deg)}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:1em;transform:rotate(-45deg)}.swal2-icon.swal2-error.swal2-icon-show{-webkit-animation:swal2-animate-error-icon .5s;animation:swal2-animate-error-icon .5s}.swal2-icon.swal2-error.swal2-icon-show .swal2-x-mark{-webkit-animation:swal2-animate-error-x-mark .5s;animation:swal2-animate-error-x-mark .5s}.swal2-icon.swal2-warning{border-color:#facea8;color:#f8bb86}.swal2-icon.swal2-warning.swal2-icon-show{-webkit-animation:swal2-animate-error-icon .5s;animation:swal2-animate-error-icon .5s}.swal2-icon.swal2-warning.swal2-icon-show .swal2-icon-content{-webkit-animation:swal2-animate-i-mark .5s;animation:swal2-animate-i-mark .5s}.swal2-icon.swal2-info{border-color:#9de0f6;color:#3fc3ee}.swal2-icon.swal2-info.swal2-icon-show{-webkit-animation:swal2-animate-error-icon .5s;animation:swal2-animate-error-icon .5s}.swal2-icon.swal2-info.swal2-icon-show .swal2-icon-content{-webkit-animation:swal2-animate-i-mark .8s;animation:swal2-animate-i-mark .8s}.swal2-icon.swal2-question{border-color:#c9dae1;color:#87adbd}.swal2-icon.swal2-question.swal2-icon-show{-webkit-animation:swal2-animate-error-icon .5s;animation:swal2-animate-error-icon .5s}.swal2-icon.swal2-question.swal2-icon-show .swal2-icon-content{-webkit-animation:swal2-animate-question-mark .8s;animation:swal2-animate-question-mark .8s}.swal2-icon.swal2-success{border-color:#a5dc86;color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-circular-line]{position:absolute;width:3.75em;height:7.5em;transform:rotate(45deg);border-radius:50%}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=left]{top:-.4375em;left:-2.0635em;transform:rotate(-45deg);transform-origin:3.75em 3.75em;border-radius:7.5em 0 0 7.5em}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=right]{top:-.6875em;left:1.875em;transform:rotate(-45deg);transform-origin:0 3.75em;border-radius:0 7.5em 7.5em 0}.swal2-icon.swal2-success .swal2-success-ring{position:absolute;z-index:2;top:-.25em;left:-.25em;box-sizing:content-box;width:100%;height:100%;border:.25em solid rgba(165,220,134,.3);border-radius:50%}.swal2-icon.swal2-success .swal2-success-fix{position:absolute;z-index:1;top:.5em;left:1.625em;width:.4375em;height:5.625em;transform:rotate(-45deg)}.swal2-icon.swal2-success [class^=swal2-success-line]{display:block;position:absolute;z-index:2;height:.3125em;border-radius:.125em;background-color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-line][class$=tip]{top:2.875em;left:.8125em;width:1.5625em;transform:rotate(45deg)}.swal2-icon.swal2-success [class^=swal2-success-line][class$=long]{top:2.375em;right:.5em;width:2.9375em;transform:rotate(-45deg)}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-tip{-webkit-animation:swal2-animate-success-line-tip .75s;animation:swal2-animate-success-line-tip .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-long{-webkit-animation:swal2-animate-success-line-long .75s;animation:swal2-animate-success-line-long .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-circular-line-right{-webkit-animation:swal2-rotate-success-circular-line 4.25s ease-in;animation:swal2-rotate-success-circular-line 4.25s ease-in}.swal2-progress-steps{flex-wrap:wrap;align-items:center;max-width:100%;margin:1.25em auto;padding:0;background:inherit;font-weight:600}.swal2-progress-steps li{display:inline-block;position:relative}.swal2-progress-steps .swal2-progress-step{z-index:20;flex-shrink:0;width:2em;height:2em;border-radius:2em;background:#2778c4;color:#fff;line-height:2em;text-align:center}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step{background:#2778c4}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step{background:#add8e6;color:#fff}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step-line{background:#add8e6}.swal2-progress-steps .swal2-progress-step-line{z-index:10;flex-shrink:0;width:2.5em;height:.4em;margin:0 -1px;background:#2778c4}[class^=swal2]{-webkit-tap-highlight-color:transparent}.swal2-show{-webkit-animation:swal2-show .3s;animation:swal2-show .3s}.swal2-hide{-webkit-animation:swal2-hide .15s forwards;animation:swal2-hide .15s forwards}.swal2-noanimation{transition:none}.swal2-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}.swal2-rtl .swal2-close{margin-right:initial;margin-left:0}.swal2-rtl .swal2-timer-progress-bar{right:0;left:auto}@-webkit-keyframes swal2-toast-show{0%{transform:translateY(-.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0)}}@keyframes swal2-toast-show{0%{transform:translateY(-.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0)}}@-webkit-keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@-webkit-keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@-webkit-keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@-webkit-keyframes swal2-show{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}100%{transform:scale(1)}}@keyframes swal2-show{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}100%{transform:scale(1)}}@-webkit-keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(.5);opacity:0}}@keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(.5);opacity:0}}@-webkit-keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@-webkit-keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@-webkit-keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@-webkit-keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(.4);opacity:0}50%{margin-top:1.625em;transform:scale(.4);opacity:0}80%{margin-top:-.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(.4);opacity:0}50%{margin-top:1.625em;transform:scale(.4);opacity:0}80%{margin-top:-.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@-webkit-keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0);opacity:1}}@keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0);opacity:1}}@-webkit-keyframes swal2-rotate-loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@keyframes swal2-rotate-loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@-webkit-keyframes swal2-animate-question-mark{0%{transform:rotateY(-360deg)}100%{transform:rotateY(0)}}@keyframes swal2-animate-question-mark{0%{transform:rotateY(-360deg)}100%{transform:rotateY(0)}}@-webkit-keyframes swal2-animate-i-mark{0%{transform:rotateZ(45deg);opacity:0}25%{transform:rotateZ(-25deg);opacity:.4}50%{transform:rotateZ(15deg);opacity:.8}75%{transform:rotateZ(-5deg);opacity:1}100%{transform:rotateX(0);opacity:1}}@keyframes swal2-animate-i-mark{0%{transform:rotateZ(45deg);opacity:0}25%{transform:rotateZ(-25deg);opacity:.4}50%{transform:rotateZ(15deg);opacity:.8}75%{transform:rotateZ(-5deg);opacity:1}100%{transform:rotateX(0);opacity:1}}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow:hidden}body.swal2-height-auto{height:auto!important}body.swal2-no-backdrop .swal2-container{background-color:transparent!important;pointer-events:none}body.swal2-no-backdrop .swal2-container .swal2-popup{pointer-events:all}body.swal2-no-backdrop .swal2-container .swal2-modal{box-shadow:0 0 10px rgba(0,0,0,.4)}@media print{body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow-y:scroll!important}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown)>[aria-hidden=true]{display:none}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown) .swal2-container{position:static!important}}body.swal2-toast-shown .swal2-container{box-sizing:border-box;width:360px;max-width:100%;background-color:transparent;pointer-events:none}body.swal2-toast-shown .swal2-container.swal2-top{top:0;right:auto;bottom:auto;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-top-end,body.swal2-toast-shown .swal2-container.swal2-top-right{top:0;right:0;bottom:auto;left:auto}body.swal2-toast-shown .swal2-container.swal2-top-left,body.swal2-toast-shown .swal2-container.swal2-top-start{top:0;right:auto;bottom:auto;left:0}body.swal2-toast-shown .swal2-container.swal2-center-left,body.swal2-toast-shown .swal2-container.swal2-center-start{top:50%;right:auto;bottom:auto;left:0;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-center{top:50%;right:auto;bottom:auto;left:50%;transform:translate(-50%,-50%)}body.swal2-toast-shown .swal2-container.swal2-center-end,body.swal2-toast-shown .swal2-container.swal2-center-right{top:50%;right:0;bottom:auto;left:auto;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-left,body.swal2-toast-shown .swal2-container.swal2-bottom-start{top:auto;right:auto;bottom:0;left:0}body.swal2-toast-shown .swal2-container.swal2-bottom{top:auto;right:auto;bottom:0;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-end,body.swal2-toast-shown .swal2-container.swal2-bottom-right{top:auto;right:0;bottom:0;left:auto}");
@extends('layouts.master')
@section('title')
Dashboard
@endsection
@section('header')
<div class="page-title">
<h3>Dashboard</h3>
</div>
@endsection
@section('contents')
<!-- start page title -->
<div class="page-title-box">
<div class="row align-items-center">
<div class="col-md-8">
<h6 class="page-title">{!! $title !!}</h6>
<ol class="breadcrumb m-0">
<li class="breadcrumb-item">Setting</li>
<li class="breadcrumb-item">{!! $title !!}</li>
</ol>
</div>
<div class="col-md-4">
<div class="float-end d-none d-md-block">
<button class="btn btn-primary waves-effect waves-light"> <i class="fas fa-plus-circle"></i> Edit Jadwal</button>
</div>
</div>
</div>
</div>
<!-- end page title -->
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-body">
<table id="example" class="table table-bordered dt-responsive nowrap" style="border-collapse: collapse; border-spacing: 0; width: 100%;">
<thead>
<tr>
<th>Nama Kegiatan</th>
<th>Tanggal Mulai</th>
<th>Tanggal Selesai</th>
</tr>
</thead>
<tbody>
@foreach ($data['jadwal_kegiatan'] as $item => $val)
<tr>
<td>{{ $val->nama }}</td>
<td>
<div class="input-group">
<input type="text" class="form-control" placeholder="dd-mm-yyyy"
data-date-format="dd-mm-yyyy" data-date-container='#datepicker2' data-provide="datepicker"
data-date-autoclose="true">
<span class="input-group-text"><i class="mdi mdi-calendar"></i></span>
</div>
</td>
<td>
<div class="input-group">
<input type="text" class="form-control" placeholder="dd-mm-yyyy"
data-date-format="dd-mm-yyyy" data-date-container='#datepicker2' data-provide="datepicker"
data-date-autoclose="true">
<span class="input-group-text"><i class="mdi mdi-calendar"></i></span>
</div>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
</div> <!-- end col -->
</div> <!-- end row -->
@endsection
@section('js')
<script>
</script>
@endsection
@extends('layouts.master')
@section('title')
Dashboard
@endsection
@section('header')
<div class="page-title">
<h3>Dashboard</h3>
</div>
@endsection
@section('contents')
<!-- start page title -->
<div class="page-title-box">
<div class="row align-items-center">
<div class="col-md-8">
<h6 class="page-title">{!! $title !!}</h6>
<ol class="breadcrumb m-0">
<li class="breadcrumb-item">Setting</li>
<li class="breadcrumb-item"><a href="{{ URL::to('jenis') }}">Jenis PKM</a></li>
<li class="breadcrumb-item">{!! $title !!}</li>
</ol>
</div>
</div>
</div>
<!-- end page title -->
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-body">
{!! Form::open(array('url' => route('jenis.store'), 'method' => 'POST', 'id' => 'ff', 'class' => 'form-horizontal')) !!}
{!! csrf_field() !!}
<div class="row mb-3">
<label for="example-text-input" class="col-sm-2 col-form-label">Jenis PKM</label>
<div class="col-sm-10">
{{ Form::text('nama', old('nama'), array('class' => 'form-control', 'placeholder' => 'Masukkan Jenis PKM')) }}
@if ($errors->has('nama'))
<span class="help-block">{{$errors->first('nama')}}</span>
@endif
</div>
</div>
<div class="row mb-3">
<label for="example-search-input" class="col-sm-2 col-form-label">Deskripsi</label>
<div class="col-sm-10">
{{ Form::textarea('keterangan', old('keterangan'), array('class' => 'form-control', 'id' => 'keterangan', 'data-info' => 'keterangan')) }}
@if ($errors->has('keterangan'))
<span class="help-block">{{$errors->first('keterangan')}}</span>
@endif
</div>
</div>
<div class="mb-0">
<div>
<button type="submit" class="btn btn-primary waves-effect waves-light me-1">
Submit
</button>
<button type="reset" class="btn btn-secondary waves-effect">
Cancel
</button>
</div>
</div>
</form>
</div>
</div>
</div> <!-- end col -->
</div> <!-- end row -->
@endsection
@section('js')
<script>
</script>
@endsection
@extends('layouts.master')
@section('title')
Dashboard
@endsection
@section('header')
<div class="page-title">
<h3>Dashboard</h3>
</div>
@endsection
@php
$jenis = $data['jenis']['0'];
$id = $jenis->jenis_id;
@endphp
@section('contents')
<!-- start page title -->
<div class="page-title-box">
<div class="row align-items-center">
<div class="col-md-8">
<h6 class="page-title">{!! $title !!}</h6>
<ol class="breadcrumb m-0">
<li class="breadcrumb-item">Setting</li>
<li class="breadcrumb-item"><a href="{{ URL::to('jenis') }}">Jenis PKM</a></li>
<li class="breadcrumb-item">{!! $title !!}</li>
</ol>
</div>
</div>
</div>
<!-- end page title -->
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-body">
{!! Form::model($jenis, ['route' => ['jenis.update', $id], 'method'=>'patch', 'class'=>'form-horizontal']) !!}
{!! csrf_field() !!}
<div class="row mb-3">
<label for="example-text-input" class="col-sm-2 col-form-label">Jenis PKM</label>
<div class="col-sm-10">
{{ Form::text('nama', null, array('class' => 'form-control', 'placeholder' => 'Masukkan Jenis PKM')) }}
@if ($errors->has('nama'))
<span class="help-block">{{$errors->first('nama')}}</span>
@endif
</div>
</div>
<div class="row mb-3">
<label for="example-search-input" class="col-sm-2 col-form-label">Deskripsi</label>
<div class="col-sm-10">
{{ Form::textarea('keterangan', null, array('class' => 'form-control', 'id' => 'keterangan', 'data-info' => 'keterangan')) }}
@if ($errors->has('keterangan'))
<span class="help-block">{{$errors->first('keterangan')}}</span>
@endif
</div>
</div>
<div class="mb-0">
<div>
<button type="submit" class="btn btn-primary waves-effect waves-light me-1">
Submit
</button>
<button type="reset" class="btn btn-secondary waves-effect">
Cancel
</button>
</div>
</div>
</form>
</div>
</div>
</div> <!-- end col -->
</div> <!-- end row -->
@endsection
@section('js')
<script>
</script>
@endsection
@extends('layouts.master')
@section('title')
Dashboard
@endsection
@section('header')
<div class="page-title">
<h3>Dashboard</h3>
</div>
@endsection
@section('contents')
<!-- start page title -->
<div class="page-title-box">
<div class="row align-items-center">
<div class="col-md-8">
<h6 class="page-title">{!! $title !!}</h6>
<ol class="breadcrumb m-0">
<li class="breadcrumb-item">Setting</li>
<li class="breadcrumb-item">{!! $title !!}</li>
</ol>
</div>
<div class="col-md-4">
<div class="float-end d-none d-md-block">
<a href="{{ URL::to('jenis/create') }}" type="button" class="btn btn-primary waves-effect waves-light"> <i class="fas fa-plus-circle"></i> Tambah Data</a>
</div>
</div>
</div>
</div>
<!-- end page title -->
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-body">
<table id="example" class="table table-bordered dt-responsive nowrap" style="border-collapse: collapse; border-spacing: 0; width: 100%;">
<thead>
<tr>
<th>id</th>
<th>Jenis PKM</th>
<th>Deskripsi</th>
<th>Aksi</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
</div>
</div> <!-- end col -->
</div> <!-- end row -->
@endsection
@section('js')
<script>
$(document).ready(function(){
// DataTable
var oTable = $('#example').DataTable({
processing: true,
serverSide: true,
ajax: {
"url" : "{{route('getJenis')}}"
},
columns: [
{ data: 'jenis_id' },
{ data: 'nama' },
{ data: 'keterangan' },
{ data: 'aksi' },
],
columnDefs: [
{
"targets": [ 0 ],
"visible": false,
"searchable": false
}
]
});
});
function confirmDelete(reqId)
{
Swal.fire({
title: "Apakah Anda Yakin?",
text: "Anda akan menghapus data ini!",
icon: "warning",
showCancelButton: !0,
confirmButtonText: "Ya, Hapus data!",
cancelButtonText: "Tidak, Kembali!",
confirmButtonClass: "btn btn-success mt-2",
cancelButtonClass: "btn btn-danger ms-2 mt-2",
buttonsStyling: !1,
allowOutsideClick: !1,
showLoaderOnConfirm: true
}).then((result) => {
if (result.value){
$.ajax({
url:'{{url("/jenis/")}}/' +reqId,
type:'DELETE',
data:{
"_token": "{{ csrf_token() }}",
},
dataType: "JSON",
})
.done(function(response){
swal.fire('Deleted!', response.message, response.status).then(function(){
location.reload();
});
})
.fail(function(){
swal.fire('Oops...', 'Something went wrong with ajax !', 'error');
});
}
else
{
swal.fire('Batal!', 'Data batal dihapus.', 'error');
}
})
}
// }).then(function(t) {
// t.value ? Swal.fire({
// icon: "success",
// title: "Sukses!",
// text: "Data berhasil dihapus.",
// type: "success"
// }) : t.dismiss === Swal.DismissReason.cancel && Swal.fire({
// icon: "error",
// title: "Batal!",
// text: "Data batal dihapus.",
// type: "error"
// })
// });
// }
// function confirmDelete(reqId) {
// swal({
// title: "Apakah Anda Yakin?",
// text: "Anda akan menghapus data ini!",
// icon: "warning",
// buttons: true,
// dangerMode: true,
// })
// .then((willDelete) => {
// if (willDelete) {
// $.ajax({
// type:'DELETE',
// url:'{{url("/jenis/")}}/' +reqId,
// data:{
// "_token": "{{ csrf_token() }}",
// },
// dataType: "JSON",
// success: function (result) {
// // console.log(result);
// swal("Sukses!", "Data berhasil dihapus.", "success").then(function(){
// location.reload();
// });
// },
// error: function (xhr, ajaxOptions, thrownError) {
// swal("Error!", "Data gagal dihapus.", "error").then(function(){
// location.reload();
// });
// }
// });
// // document.location.reload();
// } else {
// swal("Data batal dihapus.", {
// icon: "error",
// });
// }
// });
// };
</script>
@endsection
@extends('layouts.master')
@section('title')
Dashboard
@endsection
@section('header')
<div class="page-title">
<h3>Dashboard</h3>
</div>
@endsection
@php
$jenis = $data['jenis']['0'];
$id = $jenis->jenis_id;
$penilaian_monev = $data['penilaian_monev'];
@endphp
@section('contents')
<!-- start page title -->
<div class="page-title-box">
<div class="row align-items-center">
<div class="col-md-8">
<h6 class="page-title">{!! $title !!}</h6>
<ol class="breadcrumb m-0">
<li class="breadcrumb-item">Setting</li>
<li class="breadcrumb-item"><a href="{{ URL::to('penilaian_monev') }}">Penilaian Monev Internal</a></li>
<li class="breadcrumb-item">{!! $title !!}</li>
</ol>
</div>
</div>
</div>
<!-- end page title -->
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-body">
{!! Form::model($jenis, ['route' => ['penilaian_monev.update', $id], 'method'=>'patch', 'class'=>'form-horizontal']) !!}
{!! csrf_field() !!}
<div class="row mb-3">
<label for="example-text-input" class="col-sm-2 col-form-label">Jenis PKM </label>
<div class="col-sm-10">
<label for="example-text-input" class="col-sm-2 col-form-label">: {{ $jenis->nama }}</label>
</div>
</div>
<div class="row mb-3">
<label for="example-text-input" class="col-sm-2 col-form-label">Komponen Penilaian </label>
<div class="col-sm-10">
<label for="example-text-input" class="col-sm-2 col-form-label">: </label>
<div class="float-end d-none d-md-block">
<a href="javascript:void(0)" onclick="createRow()" type="button" class="btn btn-warning waves-effect waves-light btn-sm"> <i class="fas fa-plus-circle"></i> Tambah Komponen</a>
</div>
</div>
</div>
<div class="table-responsive">
<table class="table table-hover table-centered table-nowrap mb-0" id="tbData">
<thead>
<tr>
<th scope="col" width="75%">Komponen</th>
<th scope="col" width="10%">Bobot</th>
<th scope="col" width="15%">Aksi</th>
</tr>
</thead>
<tbody>
@if(count($penilaian_monev) > 0)
@foreach ($penilaian_monev as $key => $val)
<tr>
<td>
<input type="text" class="form-control" name="nama[]" required value="{{ $val->nama }}">
</td>
<td>
<input class="form-control input-mask reqBobot" data-inputmask="'mask': '9', 'repeat': 3, 'greedy' : false" name="bobot[]" maxlength="3" value="{{ $val->bobot }}">
</td>
<td>
<a onclick="$(this).parent().parent().remove();" class="btn btn-danger btn-sm btn-delete">Delete</a>
</td>
</tr>
@endforeach
@else
<tr>
<td>
<input type="text" class="form-control" name="nama[]" required>
</td>
<td>
<input class="form-control input-mask reqBobot" data-inputmask="'mask': '9', 'repeat': 3, 'greedy' : false" name="bobot[]" maxlength="3">
</td>
<td>
<a onclick="$(this).parent().parent().remove();" class="btn btn-danger btn-sm btn-delete">Delete</a>
</td>
</tr>
@endif
</tbody>
<tfoot>
<tr>
<td style="text-align: right">
<label>TOTAL BOBOT <span class="badge bg-info">(total bobot harus 100)</span></label>
</td>
<td>
<input class="form-control reqBobotTotal" readonly>
</td>
<td>
</td>
</tr>
</tfoot>
</table>
</div>
<div class="mt-3">
<div>
<button type="submit" class="btn btn-primary waves-effect waves-light me-1" style="display: none" id="btnSubmit">
Submit
</button>
<a href="javascript:void(0)" class="btn btn-primary" onclick="submitForm()">Submit</a>
<button type="reset" class="btn btn-secondary waves-effect">
Cancel
</button>
</div>
</div>
</form>
</div>
</div>
</div> <!-- end col -->
</div> <!-- end row -->
@endsection
@section('js')
<script>
$(document).ready(function()
{
hitung();
$(".input-mask").inputmask('integer',{min:1, max:100});
$(".input-mask").maxlength({
alwaysShow: !0,
warningClass: "badge bg-success",
limitReachedClass: "badge bg-danger",
separator: " / ",
validate: !0
});
});
$(document).on("keyup", ".reqBobot", function() {
hitung();
});
$(document).on('click','.btn-delete', function(){
hitung();
});
function createRow()
{
$(function () {
$.get("{{URL::to('rowPenilaianMonev')}}", function (data) {
$("#tbData").append(data);
});
});
}
function submitForm()
{
var sum = hitung();
if(sum != '100')
{
Swal.fire({
title: "Gagal",
text: "Total Bobot harus 100",
icon: "error",
confirmButtonColor: "#556ee6"
});
}
else
{
$('#btnSubmit').click();
}
}
function hitung()
{
var sum = 0;
$(".reqBobot").each(function(){
sum += +$(this).val();
});
$(".reqBobotTotal").val(sum);
return sum;
}
</script>
@endsection
@extends('layouts.master')
@section('title')
Dashboard
@endsection
@section('header')
<div class="page-title">
<h3>Dashboard</h3>
</div>
@endsection
@section('contents')
<!-- start page title -->
<div class="page-title-box">
<div class="row align-items-center">
<div class="col-md-8">
<h6 class="page-title">{!! $title !!}</h6>
<ol class="breadcrumb m-0">
<li class="breadcrumb-item">Setting</li>
<li class="breadcrumb-item">{!! $title !!}</li>
</ol>
</div>
<div class="col-md-4">
<div class="float-end d-none d-md-block">
<a href="{{ URL::to('jenis/create') }}" type="button" class="btn btn-primary waves-effect waves-light"> <i class="fas fa-plus-circle"></i> Tambah Data</a>
</div>
</div>
</div>
</div>
<!-- end page title -->
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-body">
<table id="example" class="table table-bordered dt-responsive nowrap" style="border-collapse: collapse; border-spacing: 0; width: 100%;">
<thead>
<tr>
<th>id</th>
<th>Jenis PKM</th>
<th>Deskripsi</th>
<th>Jumlah Komponen</th>
<th>Aksi</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
</div>
</div> <!-- end col -->
</div> <!-- end row -->
@endsection
@section('js')
<script>
$(document).ready(function(){
// DataTable
var oTable = $('#example').DataTable({
processing: true,
serverSide: true,
ajax: {
"url" : "{{route('getPenilaianMonev')}}"
},
columns: [
{ data: 'jenis_id' },
{ data: 'nama' },
{ data: 'keterangan' },
{ data: 'jumlah_komponen' },
{ data: 'aksi' },
],
columnDefs: [
{
"targets": [ 0 ],
"visible": false,
"searchable": false
}
]
});
});
function confirmDelete(reqId)
{
Swal.fire({
title: "Apakah Anda Yakin?",
text: "Anda akan menghapus data ini!",
icon: "warning",
showCancelButton: !0,
confirmButtonText: "Ya, Hapus data!",
cancelButtonText: "Tidak, Kembali!",
confirmButtonClass: "btn btn-success mt-2",
cancelButtonClass: "btn btn-danger ms-2 mt-2",
buttonsStyling: !1,
allowOutsideClick: !1,
showLoaderOnConfirm: true
}).then((result) => {
if (result.value){
$.ajax({
url:'{{url("/jenis/")}}/' +reqId,
type:'DELETE',
data:{
"_token": "{{ csrf_token() }}",
},
dataType: "JSON",
})
.done(function(response){
swal.fire('Deleted!', response.message, response.status).then(function(){
location.reload();
});
})
.fail(function(){
swal.fire('Oops...', 'Something went wrong with ajax !', 'error');
});
}
else
{
swal.fire('Batal!', 'Data batal dihapus.', 'error');
}
})
}
// }).then(function(t) {
// t.value ? Swal.fire({
// icon: "success",
// title: "Sukses!",
// text: "Data berhasil dihapus.",
// type: "success"
// }) : t.dismiss === Swal.DismissReason.cancel && Swal.fire({
// icon: "error",
// title: "Batal!",
// text: "Data batal dihapus.",
// type: "error"
// })
// });
// }
// function confirmDelete(reqId) {
// swal({
// title: "Apakah Anda Yakin?",
// text: "Anda akan menghapus data ini!",
// icon: "warning",
// buttons: true,
// dangerMode: true,
// })
// .then((willDelete) => {
// if (willDelete) {
// $.ajax({
// type:'DELETE',
// url:'{{url("/jenis/")}}/' +reqId,
// data:{
// "_token": "{{ csrf_token() }}",
// },
// dataType: "JSON",
// success: function (result) {
// // console.log(result);
// swal("Sukses!", "Data berhasil dihapus.", "success").then(function(){
// location.reload();
// });
// },
// error: function (xhr, ajaxOptions, thrownError) {
// swal("Error!", "Data gagal dihapus.", "error").then(function(){
// location.reload();
// });
// }
// });
// // document.location.reload();
// } else {
// swal("Data batal dihapus.", {
// icon: "error",
// });
// }
// });
// };
</script>
@endsection
<tr>
<td>
<script>
$(".input-mask").inputmask('integer',{min:1, max:100});
$(".input-mask").maxlength({
alwaysShow: !0,
warningClass: "badge bg-success",
limitReachedClass: "badge bg-danger",
separator: " / ",
validate: !0
});
</script>
<input type="text" class="form-control" name="nama[]" required>
</td>
<td>
<input class="form-control input-mask reqBobot" data-inputmask="'mask': '9', 'repeat': 3, 'greedy' : false" name="bobot[]" maxlength="3">
</td>
<td>
<a onclick="$(this).parent().parent().remove();" class="btn btn-danger btn-sm btn-delete">Delete</a>
</td>
</tr>
...@@ -9,15 +9,26 @@ ...@@ -9,15 +9,26 @@
<meta content="Premium Multipurpose Admin & Dashboard Template" name="description"> <meta content="Premium Multipurpose Admin & Dashboard Template" name="description">
<meta content="Themesbrand" name="author"> <meta content="Themesbrand" name="author">
<!-- App favicon --> <!-- App favicon -->
<link rel="shortcut icon" href="{{ url('theme/images/favicon.ico') }}"> <link rel="shortcut icon" href="{{ asset('theme/images/favicon.ico') }}">
<link href="{{ url('theme/libs/chartist/chartist.min.css') }}" rel="stylesheet">
<link href="{{ asset('theme/libs/chartist/chartist.min.css') }}" rel="stylesheet">
<!-- DataTables -->
<link href="{{ asset('theme/libs/datatables.net-bs4/css/dataTables.bootstrap4.min.css') }}" rel="stylesheet" type="text/css">
<link href="{{ asset('theme/libs/datatables.net-buttons-bs4/css/buttons.bootstrap4.min.css') }}" rel="stylesheet" type="text/css">
<!-- Responsive datatable examples -->
<link href="{{ asset('theme/libs/datatables.net-responsive-bs4/css/responsive.bootstrap4.min.css') }}" rel="stylesheet" type="text/css">
<!-- Bootstrap Css --> <!-- Bootstrap Css -->
<link href="{{ url('theme/css/bootstrap.min.css') }}" id="bootstrap-style" rel="stylesheet" type="text/css"> <link href="{{ asset('theme/css/bootstrap.min.css') }}" id="bootstrap-style" rel="stylesheet" type="text/css">
<!-- Icons Css --> <!-- Icons Css -->
<link href="{{ url('theme/css/icons.min.css') }}" rel="stylesheet" type="text/css"> <link href="{{ asset('theme/css/icons.min.css') }}" rel="stylesheet" type="text/css">
<!-- App Css--> <!-- App Css-->
<link href="{{ url('theme/css/app.min.css') }}" id="app-style" rel="stylesheet" type="text/css"> <link href="{{ asset('theme/css/app.min.css') }}" id="app-style" rel="stylesheet" type="text/css">
<!-- Sweet Alert-->
<link href="{{ asset('theme/libs/sweetalert2/sweetalert2.min.css') }}" rel="stylesheet" type="text/css" />
</head> </head>
<!-- JAVASCRIPT --> <script>
<script src="{{ url('theme/libs/jquery/jquery.min.js') }}"></script> var globalUrl = "{{ asset('') }}";
<script src="{{ url('theme/libs/bootstrap/js/bootstrap.bundle.min.js') }}"></script> </script>
<script src="{{ url('theme/libs/metismenu/metisMenu.min.js') }}"></script>
<script src="{{ url('theme/libs/simplebar/simplebar.min.js') }}"></script>
<script src="{{ url('theme/libs/node-waves/waves.min.js') }}"></script>
<!-- JAVASCRIPT -->
<script src="{{ asset('theme/libs/jquery/jquery.min.js') }}"></script>
<script src="{{ asset('theme/libs/bootstrap/js/bootstrap.bundle.min.js') }}"></script>
<script src="{{ asset('theme/libs/metismenu/metisMenu.min.js') }}"></script>
<script src="{{ asset('theme/libs/simplebar/simplebar.min.js') }}"></script>
<script src="{{ asset('theme/libs/node-waves/waves.min.js') }}"></script>
<!-- Peity chart--> <!-- Peity chart-->
<script src="{{ url('theme/libs/peity/jquery.peity.min.js') }}"></script> <script src="{{ asset('theme/libs/peity/jquery.peity.min.js') }}"></script>
<!-- Plugin Js--> <!-- Plugin Js-->
<script src="{{ url('theme/libs/chartist/chartist.min.js') }}"></script> <script src="{{ asset('theme/libs/chartist/chartist.min.js') }}"></script>
<script src="{{ url('theme/libs/chartist-plugin-tooltips/chartist-plugin-tooltip.min.js') }}"></script> {{-- <script src="{{ asset('theme/libs/chartist-plugin-tooltips/chartist-plugin-tooltip.min.js') }}"></script> --}}
<script src="{{ url('theme/js/pages/dashboard.init.js') }}"></script> {{-- <script src="{{ asset('theme/js/pages/dashboard.init.js') }}"></script> --}}
<script src="{{ asset('theme/js/app.js') }}"></script>
<script src="{{ url('theme/js/app.js') }}"></script>
<!-- Required datatable js -->
<script src="{{ asset('theme/libs/datatables.net/js/jquery.dataTables.min.js') }}"></script>
<script src="{{ asset('theme/libs/datatables.net-bs4/js/dataTables.bootstrap4.min.js') }}"></script>
<!-- Buttons examples -->
<script src="{{ asset('theme/libs/datatables.net-buttons/js/dataTables.buttons.min.js') }}"></script>
<script src="{{ asset('theme/libs/datatables.net-buttons-bs4/js/buttons.bootstrap4.min.js') }}"></script>
<script src="{{ asset('theme/libs/jszip/jszip.min.js') }}"></script>
<script src="{{ asset('theme/libs/pdfmake/build/pdfmake.min.js') }}"></script>
<script src="{{ asset('theme/libs/pdfmake/build/vfs_fonts.js') }}"></script>
<script src="{{ asset('theme/libs/datatables.net-buttons/js/buttons.html5.min.js') }}"></script>
<script src="{{ asset('theme/libs/datatables.net-buttons/js/buttons.print.min.js') }}"></script>
<script src="{{ asset('theme/libs/datatables.net-buttons/js/buttons.colVis.min.js') }}"></script>
<!-- Responsive examples -->
<script src="{{ asset('theme/libs/datatables.net-responsive/js/dataTables.responsive.min.js') }}"></script>
<script src="{{ asset('theme/libs/datatables.net-responsive-bs4/js/responsive.bootstrap4.min.js') }}"></script>
{{-- <script src="{{ asset('theme/js/sweetalert.min.js') }}"></script> --}}
<script src="{{ asset('theme/libs/sweetalert2/sweetalert2.min.js') }}"></script>
<script src="{{ asset('theme/libs/inputmask/min/jquery.inputmask.bundle.min.js') }}"></script>
<script src="{{ asset('theme/libs/bootstrap-maxlength/bootstrap-maxlength.min.js') }}"></script>
<script src="{{ asset('theme/libs/bootstrap-datepicker/js/bootstrap-datepicker.min.js') }}"></script>
@php
/*
@endphp
<script src="{{ asset('theme/js/eModal.js') }}"></script>
<script>
function openPopup(linkUrl) {
eModal.iframe(linkUrl, 'Program Kreativitas Mahasiswa')
}
</script>
@php
*/
@endphp
@yield('js') @yield('js')
@include('sweetalert::alert')
...@@ -14,19 +14,19 @@ ...@@ -14,19 +14,19 @@
<div class="navbar-brand-box"> <div class="navbar-brand-box">
<a href="index.html" class="logo logo-dark"> <a href="index.html" class="logo logo-dark">
<span class="logo-sm"> <span class="logo-sm">
<img src="assets/images/logo-sm.png" alt="" height="22"> <img src="{{ asset('theme/images/logo-sm.png') }}" alt="" height="22">
</span> </span>
<span class="logo-lg"> <span class="logo-lg">
<img src="assets/images/logo-dark.png" alt="" height="17"> <img src="{{ asset('theme/images/logo-dark.png') }}" alt="" height="17">
</span> </span>
</a> </a>
<a href="index.html" class="logo logo-light"> <a href="index.html" class="logo logo-light">
<span class="logo-sm"> <span class="logo-sm">
<img src="assets/images/logo-sm.png" alt="" height="22"> <img src="{{ asset('theme/images/logo-sm.png') }}" alt="" height="22">
</span> </span>
<span class="logo-lg"> <span class="logo-lg">
<img src="assets/images/logo-light.png" alt="" height="18"> <img src="{{ asset('theme/images/logo-light.png') }}" alt="" height="18">
</span> </span>
</a> </a>
</div> </div>
...@@ -85,33 +85,33 @@ ...@@ -85,33 +85,33 @@
<div class="dropdown d-none d-md-block ms-2"> <div class="dropdown d-none d-md-block ms-2">
<button type="button" class="btn header-item waves-effect" <button type="button" class="btn header-item waves-effect"
data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<img class="me-2" src="assets/images/flags/us_flag.jpg" alt="Header Language" height="16"> English <span class="mdi mdi-chevron-down"></span> <img class="me-2" src="{{ asset('theme/images/flags/us_flag.jpg') }}" alt="Header Language" height="16"> English <span class="mdi mdi-chevron-down"></span>
</button> </button>
<div class="dropdown-menu dropdown-menu-end"> <div class="dropdown-menu dropdown-menu-end">
<!-- item--> <!-- item-->
<a href="javascript:void(0);" class="dropdown-item notify-item"> <a href="javascript:void(0);" class="dropdown-item notify-item">
<img src="assets/images/flags/germany_flag.jpg" alt="user-image" class="me-1" height="12"> <span class="align-middle"> German </span> <img src="{{ asset('theme/images/flags/germany_flag.jpg') }}" alt="user-image" class="me-1" height="12"> <span class="align-middle"> German </span>
</a> </a>
<!-- item--> <!-- item-->
<a href="javascript:void(0);" class="dropdown-item notify-item"> <a href="javascript:void(0);" class="dropdown-item notify-item">
<img src="assets/images/flags/italy_flag.jpg" alt="user-image" class="me-1" height="12"> <span class="align-middle"> Italian </span> <img src="{{ asset('theme/images/flags/italy_flag.jpg') }}" alt="user-image" class="me-1" height="12"> <span class="align-middle"> Italian </span>
</a> </a>
<!-- item--> <!-- item-->
<a href="javascript:void(0);" class="dropdown-item notify-item"> <a href="javascript:void(0);" class="dropdown-item notify-item">
<img src="assets/images/flags/french_flag.jpg" alt="user-image" class="me-1" height="12"> <span class="align-middle"> French </span> <img src="{{ asset('theme/images/flags/french_flag.jpg') }}" alt="user-image" class="me-1" height="12"> <span class="align-middle"> French </span>
</a> </a>
<!-- item--> <!-- item-->
<a href="javascript:void(0);" class="dropdown-item notify-item"> <a href="javascript:void(0);" class="dropdown-item notify-item">
<img src="assets/images/flags/spain_flag.jpg" alt="user-image" class="me-1" height="12"> <span class="align-middle"> Spanish </span> <img src="{{ asset('theme/images/flags/spain_flag.jpg') }}" alt="user-image" class="me-1" height="12"> <span class="align-middle"> Spanish </span>
</a> </a>
<!-- item--> <!-- item-->
<a href="javascript:void(0);" class="dropdown-item notify-item"> <a href="javascript:void(0);" class="dropdown-item notify-item">
<img src="assets/images/flags/russia_flag.jpg" alt="user-image" class="me-1" height="12"> <span class="align-middle"> Russian </span> <img src="{{ asset('theme/images/flags/russia_flag.jpg') }}" alt="user-image" class="me-1" height="12"> <span class="align-middle"> Russian </span>
</a> </a>
</div> </div>
</div> </div>
...@@ -240,7 +240,7 @@ ...@@ -240,7 +240,7 @@
<div class="dropdown d-inline-block"> <div class="dropdown d-inline-block">
<button type="button" class="btn header-item waves-effect" id="page-header-user-dropdown" <button type="button" class="btn header-item waves-effect" id="page-header-user-dropdown"
data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<img class="rounded-circle header-profile-user" src="assets/images/users/user-4.jpg" <img class="rounded-circle header-profile-user" src="{{ asset('theme/images/users/user-4.jpg') }}"
alt="Header Avatar"> alt="Header Avatar">
</button> </button>
<div class="dropdown-menu dropdown-menu-end"> <div class="dropdown-menu dropdown-menu-end">
...@@ -316,7 +316,7 @@ ...@@ -316,7 +316,7 @@
<div class="p-4"> <div class="p-4">
<div class="mb-2"> <div class="mb-2">
<img src="assets/images/layouts/layout-1.jpg" class="img-fluid img-thumbnail" alt=""> <img src="{{ asset('theme/images/layouts/layout-1.jpg') }}" class="img-fluid img-thumbnail" alt="">
</div> </div>
<div class="form-check form-switch mb-3"> <div class="form-check form-switch mb-3">
<input type="checkbox" class="form-check-input theme-choice" id="light-mode-switch" checked /> <input type="checkbox" class="form-check-input theme-choice" id="light-mode-switch" checked />
...@@ -324,7 +324,7 @@ ...@@ -324,7 +324,7 @@
</div> </div>
<div class="mb-2"> <div class="mb-2">
<img src="assets/images/layouts/layout-2.jpg" class="img-fluid img-thumbnail" alt=""> <img src="{{ asset('theme/images/layouts/layout-2.jpg') }}" class="img-fluid img-thumbnail" alt="">
</div> </div>
<div class="form-check form-switch mb-3"> <div class="form-check form-switch mb-3">
<input type="checkbox" class="form-check-input theme-choice" id="dark-mode-switch" data-bsStyle="assets/css/bootstrap-dark.min.css" <input type="checkbox" class="form-check-input theme-choice" id="dark-mode-switch" data-bsStyle="assets/css/bootstrap-dark.min.css"
...@@ -333,7 +333,7 @@ ...@@ -333,7 +333,7 @@
</div> </div>
<div class="mb-2"> <div class="mb-2">
<img src="assets/images/layouts/layout-3.jpg" class="img-fluid img-thumbnail" alt=""> <img src="{{ asset('theme/images/layouts/layout-3.jpg') }}" class="img-fluid img-thumbnail" alt="">
</div> </div>
<div class="form-check form-switch mb-5"> <div class="form-check form-switch mb-5">
<input type="checkbox" class="form-check-input theme-choice" id="rtl-mode-switch" data-appStyle="assets/css/app-rtl.min.css" /> <input type="checkbox" class="form-check-input theme-choice" id="rtl-mode-switch" data-appStyle="assets/css/app-rtl.min.css" />
......
...@@ -6,6 +6,46 @@ ...@@ -6,6 +6,46 @@
<div id="sidebar-menu"> <div id="sidebar-menu">
<!-- Left Menu Start --> <!-- Left Menu Start -->
<ul class="metismenu list-unstyled" id="side-menu"> <ul class="metismenu list-unstyled" id="side-menu">
<li class="menu-title">Setting</li>
<li class="{{ (request()->is('jenis*')) ? 'mm-active' : '' }}">
<a href="{{ URL::to('jenis') }}" class="waves-effect">
<i class="ti-home"></i>
<span>Jenis PKM</span>
</a>
</li>
<li class="{{ (request()->is('penilaian_monev*')) ? 'mm-active' : '' }}">
<a href="{{ URL::to('penilaian_monev') }}" class="waves-effect">
<i class="ti-home"></i>
<span>Penilaian Monev Internal</span>
</a>
</li>
<li class="{{ (request()->is('jadwal_kegiatan*')) ? 'mm-active' : '' }}">
<a href="{{ URL::to('jadwal_kegiatan') }}" class="waves-effect">
<i class="ti-home"></i>
<span>Jadwal Kegiatan</span>
</a>
</li>
<li>
<a href="calendar.html" class=" waves-effect">
<i class="ti-calendar"></i>
<span>Calendar</span>
</a>
</li>
<li>
<a href="javascript: void(0);" class="has-arrow waves-effect">
<i class="ti-email"></i>
<span>Email</span>
</a>
<ul class="sub-menu" aria-expanded="false">
<li><a href="email-inbox.html">Inbox</a></li>
<li><a href="email-read.html">Email Read</a></li>
<li><a href="email-compose.html">Email Compose</a></li>
</ul>
</li>
<li class="menu-title">Main</li> <li class="menu-title">Main</li>
<li> <li>
......
...@@ -50,7 +50,7 @@ ...@@ -50,7 +50,7 @@
<div class="card-body"> <div class="card-body">
<div class="mb-4"> <div class="mb-4">
<div class="float-start mini-stat-img me-4"> <div class="float-start mini-stat-img me-4">
<img src="assets/images/services-icon/01.png" alt=""> <img src="{{ asset('theme/images/services-icon/01.png') }}" alt="">
</div> </div>
<h5 class="font-size-16 text-uppercase text-white-50">Orders</h5> <h5 class="font-size-16 text-uppercase text-white-50">Orders</h5>
<h4 class="fw-medium font-size-24">1,685 <i <h4 class="fw-medium font-size-24">1,685 <i
...@@ -74,7 +74,7 @@ ...@@ -74,7 +74,7 @@
<div class="card-body"> <div class="card-body">
<div class="mb-4"> <div class="mb-4">
<div class="float-start mini-stat-img me-4"> <div class="float-start mini-stat-img me-4">
<img src="assets/images/services-icon/02.png" alt=""> <img src="{{ asset('theme/images/services-icon/02.png') }}" alt="">
</div> </div>
<h5 class="font-size-16 text-uppercase text-white-50">Revenue</h5> <h5 class="font-size-16 text-uppercase text-white-50">Revenue</h5>
<h4 class="fw-medium font-size-24">52,368 <i <h4 class="fw-medium font-size-24">52,368 <i
...@@ -98,7 +98,7 @@ ...@@ -98,7 +98,7 @@
<div class="card-body"> <div class="card-body">
<div class="mb-4"> <div class="mb-4">
<div class="float-start mini-stat-img me-4"> <div class="float-start mini-stat-img me-4">
<img src="assets/images/services-icon/03.png" alt=""> <img src="{{ asset('theme/images/services-icon/03.png') }}" alt="">
</div> </div>
<h5 class="font-size-16 text-uppercase text-white-50">Average Price</h5> <h5 class="font-size-16 text-uppercase text-white-50">Average Price</h5>
<h4 class="fw-medium font-size-24">15.8 <i <h4 class="fw-medium font-size-24">15.8 <i
...@@ -122,7 +122,7 @@ ...@@ -122,7 +122,7 @@
<div class="card-body"> <div class="card-body">
<div class="mb-4"> <div class="mb-4">
<div class="float-start mini-stat-img me-4"> <div class="float-start mini-stat-img me-4">
<img src="assets/images/services-icon/04.png" alt=""> <img src="{{ asset('theme/images/services-icon/04.png') }}" alt="">
</div> </div>
<h5 class="font-size-16 text-uppercase text-white-50">Product Sold</h5> <h5 class="font-size-16 text-uppercase text-white-50">Product Sold</h5>
<h4 class="fw-medium font-size-24">2436 <i <h4 class="fw-medium font-size-24">2436 <i
...@@ -388,7 +388,7 @@ ...@@ -388,7 +388,7 @@
<i class="mdi mdi-arrow-right h5"></i> <i class="mdi mdi-arrow-right h5"></i>
</a> </a>
</div> </div>
<h6 class="mb-0"><img src="assets/images/users/user-3.jpg" alt="" <h6 class="mb-0"><img src="{{ asset('theme/images/users/user-3.jpg') }}" alt=""
class="avatar-sm rounded-circle me-2"> James Athey</h6> class="avatar-sm rounded-circle me-2"> James Athey</h6>
</div> </div>
</div> </div>
...@@ -419,7 +419,7 @@ ...@@ -419,7 +419,7 @@
<th scope="row">#14256</th> <th scope="row">#14256</th>
<td> <td>
<div> <div>
<img src="assets/images/users/user-2.jpg" alt="" <img src="{{ asset('theme/images/users/user-2.jpg') }}" alt=""
class="avatar-xs rounded-circle me-2"> Philip Smead class="avatar-xs rounded-circle me-2"> Philip Smead
</div> </div>
</td> </td>
...@@ -436,7 +436,7 @@ ...@@ -436,7 +436,7 @@
<th scope="row">#14257</th> <th scope="row">#14257</th>
<td> <td>
<div> <div>
<img src="assets/images/users/user-3.jpg" alt="" <img src="{{ asset('theme/images/users/user-3.jpg') }}" alt=""
class="avatar-xs rounded-circle me-2"> Brent Shipley class="avatar-xs rounded-circle me-2"> Brent Shipley
</div> </div>
</td> </td>
...@@ -453,7 +453,7 @@ ...@@ -453,7 +453,7 @@
<th scope="row">#14258</th> <th scope="row">#14258</th>
<td> <td>
<div> <div>
<img src="assets/images/users/user-4.jpg" alt="" <img src="{{ asset('theme/images/users/user-4.jpg') }}" alt=""
class="avatar-xs rounded-circle me-2"> Robert Sitton class="avatar-xs rounded-circle me-2"> Robert Sitton
</div> </div>
</td> </td>
...@@ -470,7 +470,7 @@ ...@@ -470,7 +470,7 @@
<th scope="row">#14259</th> <th scope="row">#14259</th>
<td> <td>
<div> <div>
<img src="assets/images/users/user-5.jpg" alt="" <img src="{{ asset('theme/images/users/user-5.jpg') }}" alt=""
class="avatar-xs rounded-circle me-2"> Alberto Jackson class="avatar-xs rounded-circle me-2"> Alberto Jackson
</div> </div>
</td> </td>
...@@ -487,7 +487,7 @@ ...@@ -487,7 +487,7 @@
<th scope="row">#14260</th> <th scope="row">#14260</th>
<td> <td>
<div> <div>
<img src="assets/images/users/user-6.jpg" alt="" <img src="{{ asset('theme/images/users/user-6.jpg') }}" alt=""
class="avatar-xs rounded-circle me-2"> David Sanchez class="avatar-xs rounded-circle me-2"> David Sanchez
</div> </div>
</td> </td>
...@@ -504,7 +504,7 @@ ...@@ -504,7 +504,7 @@
<th scope="row">#14261</th> <th scope="row">#14261</th>
<td> <td>
<div> <div>
<img src="assets/images/users/user-2.jpg" alt="" <img src="{{ asset('theme/images/users/user-2.jpg') }}" alt=""
class="avatar-xs rounded-circle me-2"> Philip Smead class="avatar-xs rounded-circle me-2"> Philip Smead
</div> </div>
</td> </td>
...@@ -531,7 +531,7 @@ ...@@ -531,7 +531,7 @@
<ul class="conversation-list" data-simplebar style="max-height: 367px;"> <ul class="conversation-list" data-simplebar style="max-height: 367px;">
<li class="clearfix"> <li class="clearfix">
<div class="chat-avatar"> <div class="chat-avatar">
<img src="assets/images/users/user-2.jpg" <img src="{{ asset('theme/images/users/user-2.jpg') }}"
class="avatar-xs rounded-circle" alt="male"> class="avatar-xs rounded-circle" alt="male">
<span class="time">10:00</span> <span class="time">10:00</span>
</div> </div>
...@@ -546,7 +546,7 @@ ...@@ -546,7 +546,7 @@
</li> </li>
<li class="clearfix odd"> <li class="clearfix odd">
<div class="chat-avatar"> <div class="chat-avatar">
<img src="assets/images/users/user-3.jpg" <img src="{{ asset('theme/images/users/user-3.jpg') }}"
class="avatar-xs rounded-circle" alt="Female"> class="avatar-xs rounded-circle" alt="Female">
<span class="time">10:01</span> <span class="time">10:01</span>
</div> </div>
...@@ -561,7 +561,7 @@ ...@@ -561,7 +561,7 @@
</li> </li>
<li class="clearfix"> <li class="clearfix">
<div class="chat-avatar"> <div class="chat-avatar">
<img src="assets/images/users/user-2.jpg" <img src="{{ asset('theme/images/users/user-2.jpg') }}"
class="avatar-xs rounded-circle" alt="male"> class="avatar-xs rounded-circle" alt="male">
<span class="time">10:04</span> <span class="time">10:04</span>
</div> </div>
...@@ -576,7 +576,7 @@ ...@@ -576,7 +576,7 @@
</li> </li>
<li class="clearfix odd"> <li class="clearfix odd">
<div class="chat-avatar"> <div class="chat-avatar">
<img src="assets/images/users/user-3.jpg" <img src="{{ asset('theme/images/users/user-3.jpg') }}"
class="avatar-xs rounded-circle" alt="male"> class="avatar-xs rounded-circle" alt="male">
<span class="time">10:05</span> <span class="time">10:05</span>
</div> </div>
...@@ -591,7 +591,7 @@ ...@@ -591,7 +591,7 @@
</li> </li>
<li class="clearfix odd"> <li class="clearfix odd">
<div class="chat-avatar"> <div class="chat-avatar">
<img src="assets/images/users/user-3.jpg" <img src="{{ asset('theme/images/users/user-3.jpg') }}"
class="avatar-xs rounded-circle" alt="male"> class="avatar-xs rounded-circle" alt="male">
<span class="time">10:08</span> <span class="time">10:08</span>
</div> </div>
...@@ -599,9 +599,9 @@ ...@@ -599,9 +599,9 @@
<div class="ctext-wrap"> <div class="ctext-wrap">
<span class="user-name mb-2">Smith</span> <span class="user-name mb-2">Smith</span>
<img src="assets/images/small/img-1.jpg" alt="" height="48" <img src="{{ asset('theme/images/small/img-1.jpg') }}" alt="" height="48"
class="rounded me-2"> class="rounded me-2">
<img src="assets/images/small/img-2.jpg" alt="" height="48" <img src="{{ asset('theme/images/small/img-2.jpg') }}" alt="" height="48"
class="rounded"> class="rounded">
</div> </div>
</div> </div>
......
@if (config('sweetalert.alwaysLoadJS') === true && config('sweetalert.neverLoadJS') === false )
<script src="{{ $cdn ?? asset('vendor/sweetalert/sweetalert.all.js') }}"></script>
@endif
@if (Session::has('alert.config'))
@if(config('sweetalert.animation.enable'))
<link rel="stylesheet" href="{{ config('sweetalert.animatecss') }}">
@endif
@if (config('sweetalert.alwaysLoadJS') === false && config('sweetalert.neverLoadJS') === false)
<script src="{{ $cdn ?? asset('vendor/sweetalert/sweetalert.all.js') }}"></script>
@endif
<script>
Swal.fire({!! Session::pull('alert.config') !!});
</script>
@endif
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
@if (Route::has('login')) @if (Route::has('login'))
<div class="hidden fixed top-0 right-0 px-6 py-4 sm:block"> <div class="hidden fixed top-0 right-0 px-6 py-4 sm:block">
@auth @auth
<a href="{{ url('/home') }}" class="text-sm text-gray-700 underline">Home</a> <a href="{{ asset('/home') }}" class="text-sm text-gray-700 underline">Home</a>
@else @else
<a href="{{ route('login') }}" class="text-sm text-gray-700 underline">Login</a> <a href="{{ route('login') }}" class="text-sm text-gray-700 underline">Login</a>
......
<?php <?php
use Illuminate\Support\Facades\Route; use Illuminate\Support\Facades\Route;
use App\Http\Controllers\JenisController;
use App\Http\Controllers\PenilaianMonevController;
use App\Http\Controllers\JadwalKegiatanController;
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
...@@ -16,3 +19,14 @@ use Illuminate\Support\Facades\Route; ...@@ -16,3 +19,14 @@ use Illuminate\Support\Facades\Route;
Route::get('/', function () { Route::get('/', function () {
return view('mahasiswa.index'); return view('mahasiswa.index');
}); });
Route::resource('jenis', JenisController::class);
Route::get('getJenis', [JenisController::class, 'getData'])->name('getJenis');
Route::resource('penilaian_monev', PenilaianMonevController::class);
Route::get('getPenilaianMonev', [PenilaianMonevController::class, 'getData'])->name('getPenilaianMonev');
Route::get('rowPenilaianMonev', function () {
return view('backend/penilaian_monev/row');
});
Route::resource('jadwal_kegiatan', JadwalKegiatanController::class);
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment