diff --git a/app/Http/Controllers/RefundController.php b/app/Http/Controllers/RefundController.php deleted file mode 100644 index dc8fe468..00000000 --- a/app/Http/Controllers/RefundController.php +++ /dev/null @@ -1,66 +0,0 @@ - "INV-1234", - "customer" => "Okta", - "seller" => "dodo", - "total" => "Rp. 15000", - "date" => "July 19, 2023 ", - "status"=>"Process Refund" - ], - [ - "orderId" => "INV-0000", - "customer" => "Selvi", - "seller" => "dedo", - "total" => "Rp. 11000", - "date" => "August 19, 2023 ", - "status"=>"Process Refund" - ], - [ - "orderId" => "INV-2313", - "customer" => "Septa", - "seller" => "dido", - "total" => "Rp. 15000", - "date" => "July 29, 2023 ", - "status"=>"Process Refund" - ], - [ - "orderId" => "INV-5664", - "customer" => "Padia", - "seller" => "dedo", - "total" => "Rp. 14000", - "date" => "July 18, 2023 ", - "status"=>"Process Refund" - ], - [ - "orderId" => "INV-9090", - "customer" => "hantu", - "seller" => "dado", - "total" => "Rp. 45000", - "date" => "June 19, 2023 ", - "status"=>"Process Refund" - ] - ]; - - public static $detail_refund=[ - [ - "orderId" => "INV-9090", - "customer" => "hantu", - "seller" => "dado", - "total" => "Rp. 45000", - "date" => "June 19, 2023 ", - "complaint" =>" Lorem ipsum dolor sit, amet consectetur adipisicing elit. Aliquam inventore, sit enim iure itaque fuga voluptates alias, eveniet quos ex reiciendis! Dolore mollitia ea inventore, excepturi hic fugiat id, magnam molestias sint ut enim repellendus, cum dolorum dolores sapiente adipisci tempora nihil omnis! Accusantium, non perspiciatis? Molestias modi debitis perferendis reprehenderit excepturi voluptates? Sit incidunt consequuntur iusto odit sapiente inventore nemo commodi, quam vero magnam temporibus ducimus praesentium assumenda blanditiis possimus perferendis totam placeat maiores. Quae ut id libero atque pariatur veritatis rerum culpa tempore consequatur quod corrupti corporis nobis quia repellendus iste quidem illum, voluptates aspernatur cumque officia. Tenetur.", - "image"=>"assets/images/dashboard/img_2.jpg" - ] - ]; - public static function HistoryRefund(){ - return self::$history_refund; - - } - public static function DetailRefund(){ - return self::$detail_refund; - } -} \ No newline at end of file diff --git a/app/Models/transaction.php b/app/Models/transaction.php deleted file mode 100644 index 3a3ab8f3..00000000 --- a/app/Models/transaction.php +++ /dev/null @@ -1,74 +0,0 @@ - 'INV-1234', - 'customer' => 'Jilhan', - 'seller' => 'dodo', - 'total' => 'Rp. 15000', - 'date' => 'July 19, 2023 ', - 'status' => 'paid', - ], - [ - 'orderId' => 'INV-0000', - 'customer' => 'hmmm', - 'seller' => 'dodo', - 'total' => 'Rp. 11000', - 'date' => 'August 19, 2023 ', - 'status' => 'pending', - ], - [ - 'orderId' => 'INV-2313', - 'customer' => 'nurul', - 'seller' => 'dido', - 'total' => 'Rp. 15000', - 'date' => 'July 29, 2023 ', - 'status' => 'unpaid', - ], - [ - 'orderId' => 'INV-5664', - 'customer' => 'raihan', - 'seller' => 'dedo', - 'total' => 'Rp. 14000', - 'date' => 'July 18, 2023 ', - 'status' => 'pending', - ], - [ - 'orderId' => 'INV-9090', - 'customer' => 'testing', - 'seller' => 'dado', - 'total' => 'Rp. 45000', - 'date' => 'June 19, 2023 ', - 'status' => 'paid', - ], - ]; - - private static $detail_transaction = [ - [ - 'tracking_number' => '09102919209', - 'orderId' => 'INV-9090', - 'status' => 'Pending', - 'estimated' => 'June 20, 2023', - 'tracking_detail1' => 'August 10: processed payment', - 'tracking_detail2' => 'August 12: payment in system', - 'tracking_detail3' => 'August 14: payment has been received by the seller', - ], - ]; - - public static function allTransactions() - { - return self::$list_transaction; - } - - public static function allDetailTransactions() - { - return self::$detail_transaction; - } -} diff --git a/composer.json b/composer.json index e1fb4493..181dfc70 100644 --- a/composer.json +++ b/composer.json @@ -9,7 +9,8 @@ "guzzlehttp/guzzle": "^7.2", "laravel/framework": "^10.10", "laravel/sanctum": "^3.2", - "laravel/tinker": "^2.8" + "laravel/tinker": "^2.8", + "realrashid/sweet-alert": "^7.1" }, "require-dev": { "fakerphp/faker": "^1.9.1", diff --git a/composer.lock b/composer.lock index d817faa3..aa33680c 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "aa322c53454393ed775cfe4807d54a50", + "content-hash": "a47c4c4dd117ce52e4b5d03d7487513b", "packages": [ { "name": "brick/math", @@ -3042,6 +3042,96 @@ ], "time": "2023-04-15T23:01:58+00:00" }, + { + "name": "realrashid/sweet-alert", + "version": "v7.1.0", + "source": { + "type": "git", + "url": "https://github.com/realrashid/sweet-alert.git", + "reference": "769f951053cd3363fd7fb7a1dd30f9828b619b44" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/realrashid/sweet-alert/zipball/769f951053cd3363fd7fb7a1dd30f9828b619b44", + "reference": "769f951053cd3363fd7fb7a1dd30f9828b619b44", + "shasum": "" + }, + "require": { + "laravel/framework": "^5.6|^6.0|^7.0|^8.0|^9.0|^9.11|9.14.*|^10.0", + "php": "^7.2|^8.0|^8.1" + }, + "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": "Laravel Sweet Alert Is A Package For Laravel Provides An Easy Way To Display Alert Messages Using The SweetAlert2 Library.", + "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": "2023-08-07T19:23:17+00:00" + }, { "name": "symfony/console", "version": "v6.3.2", @@ -8001,5 +8091,5 @@ "php": "^8.1" }, "platform-dev": [], - "plugin-api-version": "2.6.0" + "plugin-api-version": "2.2.0" } diff --git a/config/app.php b/config/app.php index 4c231b47..c944f046 100644 --- a/config/app.php +++ b/config/app.php @@ -159,6 +159,7 @@ return [ /* * Package Service Providers... */ + RealRashid\SweetAlert\SweetAlertServiceProvider::class, /* * Application Service Providers... @@ -184,5 +185,6 @@ return [ 'aliases' => Facade::defaultAliases()->merge([ // 'Example' => App\Facades\Example::class, ])->toArray(), + 'Alert' => RealRashid\SweetAlert\Facades\Alert::class, ]; diff --git a/config/sweetalert.php b/config/sweetalert.php new file mode 100644 index 00000000..5f938310 --- /dev/null +++ b/config/sweetalert.php @@ -0,0 +1,269 @@ + env('SWEET_ALERT_THEME', 'default'), + + /* + |-------------------------------------------------------------------------- + | 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'), + + /* + |-------------------------------------------------------------------------- + | Background + |-------------------------------------------------------------------------- + | + | Modal window background + | (CSS background property). + | The default background is '#fff'. + */ + + 'background' => env('SWEET_ALERT_BACKGROUND', '#fff'), + + /* + |-------------------------------------------------------------------------- + | 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), + + /* + |----------------------------------------------------------------------- + | Confirm/Cancel Button Text + |----------------------------------------------------------------------- + | Change the default text of the modal buttons. + | The texts translations will be handled by Laravel at runtime. + | This is for the all Modal windows. + | For specific modal just use the confirmButtonText() and + | cancelButtonText() helper methods. + */ + + 'button_text' => [ + 'confirm' => env('SWEET_ALERT_CONFIRM_BUTTON_TEXT', 'OK'), + 'cancel' => env('SWEET_ALERT_CANCEL_BUTTON_TEXT', 'Cancel'), + ], + + /* + |-------------------------------------------------------------------------- + | 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', true), + ], + + /* + |-------------------------------------------------------------------------- + | 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'), + ], + + /* + |-------------------------------------------------------------------------- + | confirmDelete + |-------------------------------------------------------------------------- + | customize the configuration options of the confirmation popup. + | + */ + + 'confirm_delete_confirm_button_text' => env('SWEET_ALERT_CONFIRM_DELETE_CONFIRM_BUTTON_TEXT', 'Yes, delete it!'), + 'confirm_delete_confirm_button_color' => env('SWEET_ALERT_CONFIRM_DELETE_CONFIRM_BUTTON_COLOR'), + 'confirm_delete_cancel_button_color' => env('SWEET_ALERT_CONFIRM_DELETE_CANCEL_BUTTON_COLOR', '#d33'), + 'confirm_delete_cancel_button_text' => env('SWEET_ALERT_CONFIRM_DELETE_CANCEL_BUTTON_TEXT', 'Cancel'), + 'confirm_delete_show_cancel_button' => env('SWEET_ALERT_CONFIRM_DELETE_SHOW_CANCEL_BUTTON', true), + 'confirm_delete_show_close_button' => env('SWEET_ALERT_CONFIRM_DELETE_SHOW_CLOSE_BUTTON', false), + 'confirm_delete_icon' => env('SWEET_ALERT_CONFIRM_DELETE_ICON', 'warning'), + 'confirm_delete_show_loader_on_confirm' => env('SWEET_ALERT_CONFIRM_DELETE_SHOW_LOADER_ON_CONFIRM', true), + + +]; diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 00000000..90dc4868 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,11 @@ +{ + "requires": true, + "lockfileVersion": 1, + "dependencies": { + "sweetalert2": { + "version": "11.7.27", + "resolved": "https://registry.npmjs.org/sweetalert2/-/sweetalert2-11.7.27.tgz", + "integrity": "sha512-QbRXGQn1sb7HEhzA/K2xtWIwQHh/qkSbb1w6jYcTql2xy17876lTREEt1D4X6Q0x2wHtfUjKJ+Cb8IVkRoq7DQ==" + } + } +} diff --git a/package.json b/package.json index e543e0d1..89bf51fb 100644 --- a/package.json +++ b/package.json @@ -9,5 +9,8 @@ "axios": "^1.1.2", "laravel-vite-plugin": "^0.7.5", "vite": "^4.0.0" + }, + "dependencies": { + "sweetalert2": "^11.7.27" } } diff --git a/public/assets/css/main.css b/public/assets/css/main.css new file mode 100644 index 00000000..e29ef200 --- /dev/null +++ b/public/assets/css/main.css @@ -0,0 +1,54 @@ + +/*-------------------------------------------------------------- +# Profie Page +--------------------------------------------------------------*/ +.profile .profile-card img { + max-width: 120px; +} + +.profile .profile-card h2 { + font-size: 24px; + font-weight: 700; + color: #2c384e; + margin: 10px 0 0 0; +} + +.profile .profile-card h3 { + font-size: 18px; +} + +.profile .profile-card .social-links a { + font-size: 20px; + display: inline-block; + color: rgba(1, 41, 112, 0.5); + line-height: 0; + margin-right: 10px; + transition: 0.3s; +} + +.profile .profile-card .social-links a:hover { + color: #012970; +} + +.profile .profile-overview .row { + margin-bottom: 20px; + font-size: 15px; +} + +.profile .profile-overview .card-title { + color: #012970; +} + +.profile .profile-overview .label { + font-weight: 600; + color: rgba(1, 41, 112, 0.6); +} + +.profile .profile-edit label { + font-weight: 600; + color: rgba(1, 41, 112, 0.6); +} + +.profile .profile-edit img { + max-width: 120px; +} diff --git a/public/assets/css/style.css b/public/assets/css/style.css index f646474a..68961532 100644 --- a/public/assets/css/style.css +++ b/public/assets/css/style.css @@ -4206,4 +4206,9 @@ body:not(.sidebar-mini) .sidebar-style-2 .sidebar-menu li.active ul.dropdown-men top: 0; width: 20px; height: 20px; -} \ No newline at end of file +} + +.flex-container { + display: flex; + justify-content: space-between; /* Menggeser elemen ke kanan */ +} diff --git a/public/assets/img/avatar/ok.jpg b/public/assets/img/avatar/ok.jpg new file mode 100644 index 00000000..64a268ac Binary files /dev/null and b/public/assets/img/avatar/ok.jpg differ diff --git a/public/assets/js/main.js b/public/assets/js/main.js new file mode 100644 index 00000000..5cdf2676 --- /dev/null +++ b/public/assets/js/main.js @@ -0,0 +1,321 @@ +/** +* Template Name: NiceAdmin +* Updated: Aug 30 2023 with Bootstrap v5.3.1 +* Template URL: https://bootstrapmade.com/nice-admin-bootstrap-admin-html-template/ +* Author: BootstrapMade.com +* License: https://bootstrapmade.com/license/ +*/ +(function() { + "use strict"; + + /** + * Easy selector helper function + */ + const select = (el, all = false) => { + el = el.trim() + if (all) { + return [...document.querySelectorAll(el)] + } else { + return document.querySelector(el) + } + } + + /** + * Easy event listener function + */ + const on = (type, el, listener, all = false) => { + if (all) { + select(el, all).forEach(e => e.addEventListener(type, listener)) + } else { + select(el, all).addEventListener(type, listener) + } + } + + /** + * Easy on scroll event listener + */ + const onscroll = (el, listener) => { + el.addEventListener('scroll', listener) + } + + /** + * Sidebar toggle + */ + if (select('.toggle-sidebar-btn')) { + on('click', '.toggle-sidebar-btn', function(e) { + select('body').classList.toggle('toggle-sidebar') + }) + } + + /** + * Search bar toggle + */ + if (select('.search-bar-toggle')) { + on('click', '.search-bar-toggle', function(e) { + select('.search-bar').classList.toggle('search-bar-show') + }) + } + + /** + * Navbar links active state on scroll + */ + let navbarlinks = select('#navbar .scrollto', true) + const navbarlinksActive = () => { + let position = window.scrollY + 200 + navbarlinks.forEach(navbarlink => { + if (!navbarlink.hash) return + let section = select(navbarlink.hash) + if (!section) return + if (position >= section.offsetTop && position <= (section.offsetTop + section.offsetHeight)) { + navbarlink.classList.add('active') + } else { + navbarlink.classList.remove('active') + } + }) + } + window.addEventListener('load', navbarlinksActive) + onscroll(document, navbarlinksActive) + + /** + * Toggle .header-scrolled class to #header when page is scrolled + */ + let selectHeader = select('#header') + if (selectHeader) { + const headerScrolled = () => { + if (window.scrollY > 100) { + selectHeader.classList.add('header-scrolled') + } else { + selectHeader.classList.remove('header-scrolled') + } + } + window.addEventListener('load', headerScrolled) + onscroll(document, headerScrolled) + } + + /** + * Back to top button + */ + let backtotop = select('.back-to-top') + if (backtotop) { + const toggleBacktotop = () => { + if (window.scrollY > 100) { + backtotop.classList.add('active') + } else { + backtotop.classList.remove('active') + } + } + window.addEventListener('load', toggleBacktotop) + onscroll(document, toggleBacktotop) + } + + /** + * Initiate tooltips + */ + var tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]')) + var tooltipList = tooltipTriggerList.map(function(tooltipTriggerEl) { + return new bootstrap.Tooltip(tooltipTriggerEl) + }) + + /** + * Initiate quill editors + */ + if (select('.quill-editor-default')) { + new Quill('.quill-editor-default', { + theme: 'snow' + }); + } + + if (select('.quill-editor-bubble')) { + new Quill('.quill-editor-bubble', { + theme: 'bubble' + }); + } + + if (select('.quill-editor-full')) { + new Quill(".quill-editor-full", { + modules: { + toolbar: [ + [{ + font: [] + }, { + size: [] + }], + ["bold", "italic", "underline", "strike"], + [{ + color: [] + }, + { + background: [] + } + ], + [{ + script: "super" + }, + { + script: "sub" + } + ], + [{ + list: "ordered" + }, + { + list: "bullet" + }, + { + indent: "-1" + }, + { + indent: "+1" + } + ], + ["direction", { + align: [] + }], + ["link", "image", "video"], + ["clean"] + ] + }, + theme: "snow" + }); + } + + /** + * Initiate TinyMCE Editor + */ + const useDarkMode = window.matchMedia('(prefers-color-scheme: dark)').matches; + const isSmallScreen = window.matchMedia('(max-width: 1023.5px)').matches; + + tinymce.init({ + selector: 'textarea.tinymce-editor', + plugins: 'preview importcss searchreplace autolink autosave save directionality code visualblocks visualchars fullscreen image link media template codesample table charmap pagebreak nonbreaking anchor insertdatetime advlist lists wordcount help charmap quickbars emoticons', + editimage_cors_hosts: ['picsum.photos'], + menubar: 'file edit view insert format tools table help', + toolbar: 'undo redo | bold italic underline strikethrough | fontfamily fontsize blocks | alignleft aligncenter alignright alignjustify | outdent indent | numlist bullist | forecolor backcolor removeformat | pagebreak | charmap emoticons | fullscreen preview save print | insertfile image media template link anchor codesample | ltr rtl', + toolbar_sticky: true, + toolbar_sticky_offset: isSmallScreen ? 102 : 108, + autosave_ask_before_unload: true, + autosave_interval: '30s', + autosave_prefix: '{path}{query}-{id}-', + autosave_restore_when_empty: false, + autosave_retention: '2m', + image_advtab: true, + link_list: [{ + title: 'My page 1', + value: 'https://www.tiny.cloud' + }, + { + title: 'My page 2', + value: 'http://www.moxiecode.com' + } + ], + image_list: [{ + title: 'My page 1', + value: 'https://www.tiny.cloud' + }, + { + title: 'My page 2', + value: 'http://www.moxiecode.com' + } + ], + image_class_list: [{ + title: 'None', + value: '' + }, + { + title: 'Some class', + value: 'class-name' + } + ], + importcss_append: true, + file_picker_callback: (callback, value, meta) => { + /* Provide file and text for the link dialog */ + if (meta.filetype === 'file') { + callback('https://www.google.com/logos/google.jpg', { + text: 'My text' + }); + } + + /* Provide image and alt text for the image dialog */ + if (meta.filetype === 'image') { + callback('https://www.google.com/logos/google.jpg', { + alt: 'My alt text' + }); + } + + /* Provide alternative source and posted for the media dialog */ + if (meta.filetype === 'media') { + callback('movie.mp4', { + source2: 'alt.ogg', + poster: 'https://www.google.com/logos/google.jpg' + }); + } + }, + templates: [{ + title: 'New Table', + description: 'creates a new table', + content: '
' + }, + { + title: 'Starting my story', + description: 'A cure for writers block', + content: 'Once upon a time...' + }, + { + title: 'New list with dates', + description: 'New List with dates', + content: '
cdate
mdate

My List

' + } + ], + template_cdate_format: '[Date Created (CDATE): %m/%d/%Y : %H:%M:%S]', + template_mdate_format: '[Date Modified (MDATE): %m/%d/%Y : %H:%M:%S]', + height: 600, + image_caption: true, + quickbars_selection_toolbar: 'bold italic | quicklink h2 h3 blockquote quickimage quicktable', + noneditable_class: 'mceNonEditable', + toolbar_mode: 'sliding', + contextmenu: 'link image table', + skin: useDarkMode ? 'oxide-dark' : 'oxide', + content_css: useDarkMode ? 'dark' : 'default', + content_style: 'body { font-family:Helvetica,Arial,sans-serif; font-size:16px }' + }); + + /** + * Initiate Bootstrap validation check + */ + var needsValidation = document.querySelectorAll('.needs-validation') + + Array.prototype.slice.call(needsValidation) + .forEach(function(form) { + form.addEventListener('submit', function(event) { + if (!form.checkValidity()) { + event.preventDefault() + event.stopPropagation() + } + + form.classList.add('was-validated') + }, false) + }) + + /** + * Initiate Datatables + */ + const datatables = select('.datatable', true) + datatables.forEach(datatable => { + new simpleDatatables.DataTable(datatable); + }) + + /** + * Autoresize echart charts + */ + const mainContainer = select('#main'); + if (mainContainer) { + setTimeout(() => { + new ResizeObserver(function() { + select('.echart', true).forEach(getEchart => { + echarts.getInstanceByDom(getEchart).resize(); + }) + }).observe(mainContainer); + }, 200); + } + + })(); \ No newline at end of file diff --git a/public/vendor/sweetalert/sweetalert.all.js b/public/vendor/sweetalert/sweetalert.all.js new file mode 100644 index 00000000..39b5c3bd --- /dev/null +++ b/public/vendor/sweetalert/sweetalert.all.js @@ -0,0 +1,6 @@ +/*! +* sweetalert2 v11.7.20 +* Released under the MIT License. +*/ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).Sweetalert2=t()}(this,(function(){"use strict";const e={},t=t=>new Promise((o=>{if(!t)return o();const n=window.scrollX,i=window.scrollY;e.restoreFocusTimeout=setTimeout((()=>{e.previousActiveElement instanceof HTMLElement?(e.previousActiveElement.focus(),e.previousActiveElement=null):document.body&&document.body.focus(),o()}),100),window.scrollTo(n,i)}));var o={promise:new WeakMap,innerParams:new WeakMap,domCache:new WeakMap};const n="swal2-",i=["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"].reduce(((e,t)=>(e[t]=n+t,e)),{}),s=["success","warning","info","question","error"].reduce(((e,t)=>(e[t]=n+t,e)),{}),r="SweetAlert2:",a=e=>e.charAt(0).toUpperCase()+e.slice(1),l=e=>{console.warn(`${r} ${"object"==typeof e?e.join(" "):e}`)},c=e=>{console.error(`${r} ${e}`)},u=[],d=(e,t)=>{var o;o=`"${e}" is deprecated and will be removed in the next major release. Please use "${t}" instead.`,u.includes(o)||(u.push(o),l(o))},p=e=>"function"==typeof e?e():e,m=e=>e&&"function"==typeof e.toPromise,g=e=>m(e)?e.toPromise():Promise.resolve(e),h=e=>e&&Promise.resolve(e)===e,f=()=>document.body.querySelector(`.${i.container}`),b=e=>{const t=f();return t?t.querySelector(e):null},y=e=>b(`.${e}`),w=()=>y(i.popup),v=()=>y(i.icon),C=()=>y(i.title),A=()=>y(i["html-container"]),k=()=>y(i.image),B=()=>y(i["progress-steps"]),$=()=>y(i["validation-message"]),E=()=>b(`.${i.actions} .${i.confirm}`),x=()=>b(`.${i.actions} .${i.cancel}`),P=()=>b(`.${i.actions} .${i.deny}`),T=()=>b(`.${i.loader}`),L=()=>y(i.actions),S=()=>y(i.footer),O=()=>y(i["timer-progress-bar"]),M=()=>y(i.close),j=()=>{const e=w();if(!e)return[];const t=e.querySelectorAll('[tabindex]:not([tabindex="-1"]):not([tabindex="0"])'),o=Array.from(t).sort(((e,t)=>{const o=parseInt(e.getAttribute("tabindex")||"0"),n=parseInt(t.getAttribute("tabindex")||"0");return o>n?1:o"-1"!==e.getAttribute("tabindex")));return[...new Set(o.concat(i))].filter((e=>X(e)))},I=()=>q(document.body,i.shown)&&!q(document.body,i["toast-shown"])&&!q(document.body,i["no-backdrop"]),H=()=>{const e=w();return!!e&&q(e,i.toast)},D=(e,t)=>{if(e.textContent="",t){const o=(new DOMParser).parseFromString(t,"text/html"),n=o.querySelector("head");n&&Array.from(n.childNodes).forEach((t=>{e.appendChild(t)}));const i=o.querySelector("body");i&&Array.from(i.childNodes).forEach((t=>{t instanceof HTMLVideoElement||t instanceof HTMLAudioElement?e.appendChild(t.cloneNode(!0)):e.appendChild(t)}))}},q=(e,t)=>{if(!t)return!1;const o=t.split(/\s+/);for(let t=0;t{if(((e,t)=>{Array.from(e.classList).forEach((o=>{Object.values(i).includes(o)||Object.values(s).includes(o)||Object.values(t.showClass||{}).includes(o)||e.classList.remove(o)}))})(e,t),t.customClass&&t.customClass[o]){if("string"!=typeof t.customClass[o]&&!t.customClass[o].forEach)return void l(`Invalid type of customClass.${o}! Expected string or iterable object, got "${typeof t.customClass[o]}"`);R(e,t.customClass[o])}},N=(e,t)=>{if(!t)return null;switch(t){case"select":case"textarea":case"file":return e.querySelector(`.${i.popup} > .${i[t]}`);case"checkbox":return e.querySelector(`.${i.popup} > .${i.checkbox} input`);case"radio":return e.querySelector(`.${i.popup} > .${i.radio} input:checked`)||e.querySelector(`.${i.popup} > .${i.radio} input:first-child`);case"range":return e.querySelector(`.${i.popup} > .${i.range} input`);default:return e.querySelector(`.${i.popup} > .${i.input}`)}},F=e=>{if(e.focus(),"file"!==e.type){const t=e.value;e.value="",e.value=t}},_=(e,t,o)=>{e&&t&&("string"==typeof t&&(t=t.split(/\s+/).filter(Boolean)),t.forEach((t=>{Array.isArray(e)?e.forEach((e=>{o?e.classList.add(t):e.classList.remove(t)})):o?e.classList.add(t):e.classList.remove(t)})))},R=(e,t)=>{_(e,t,!0)},U=(e,t)=>{_(e,t,!1)},z=(e,t)=>{const o=Array.from(e.children);for(let e=0;e{o===`${parseInt(o)}`&&(o=parseInt(o)),o||0===parseInt(o)?e.style[t]="number"==typeof o?`${o}px`:o:e.style.removeProperty(t)},K=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"flex";e&&(e.style.display=t)},Y=e=>{e&&(e.style.display="none")},Z=(e,t,o,n)=>{const i=e.querySelector(t);i&&(i.style[o]=n)},J=function(e,t){t?K(e,arguments.length>2&&void 0!==arguments[2]?arguments[2]:"flex"):Y(e)},X=e=>!(!e||!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)),G=e=>!!(e.scrollHeight>e.clientHeight),Q=e=>{const t=window.getComputedStyle(e),o=parseFloat(t.getPropertyValue("animation-duration")||"0"),n=parseFloat(t.getPropertyValue("transition-duration")||"0");return o>0||n>0},ee=function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const o=O();X(o)&&(t&&(o.style.transition="none",o.style.width="100%"),setTimeout((()=>{o.style.transition=`width ${e/1e3}s linear`,o.style.width="0%"}),10))},te=()=>"undefined"==typeof window||"undefined"==typeof document,oe=`\n
\n \n
    \n
    \n \n

    \n
    \n \n \n
    \n \n \n
    \n \n
    \n \n \n
    \n
    \n
    \n \n \n \n
    \n
    \n
    \n
    \n
    \n
    \n`.replace(/(^|\n)\s*/g,""),ne=()=>{e.currentInstance.resetValidationMessage()},ie=e=>{const t=(()=>{const e=f();return!!e&&(e.remove(),U([document.documentElement,document.body],[i["no-backdrop"],i["toast-shown"],i["has-column"]]),!0)})();if(te())return void c("SweetAlert2 requires document to initialize");const o=document.createElement("div");o.className=i.container,t&&R(o,i["no-transition"]),D(o,oe);const n="string"==typeof(s=e.target)?document.querySelector(s):s;var s;n.appendChild(o),(e=>{const t=w();t.setAttribute("role",e.toast?"alert":"dialog"),t.setAttribute("aria-live",e.toast?"polite":"assertive"),e.toast||t.setAttribute("aria-modal","true")})(e),(e=>{"rtl"===window.getComputedStyle(e).direction&&R(f(),i.rtl)})(n),(()=>{const e=w(),t=z(e,i.input),o=z(e,i.file),n=e.querySelector(`.${i.range} input`),s=e.querySelector(`.${i.range} output`),r=z(e,i.select),a=e.querySelector(`.${i.checkbox} input`),l=z(e,i.textarea);t.oninput=ne,o.onchange=ne,r.onchange=ne,a.onchange=ne,l.oninput=ne,n.oninput=()=>{ne(),s.value=n.value},n.onchange=()=>{ne(),s.value=n.value}})()},se=(e,t)=>{e instanceof HTMLElement?t.appendChild(e):"object"==typeof e?re(e,t):e&&D(t,e)},re=(e,t)=>{e.jquery?ae(t,e):D(t,e.toString())},ae=(e,t)=>{if(e.textContent="",0 in t)for(let o=0;o in t;o++)e.appendChild(t[o].cloneNode(!0));else e.appendChild(t.cloneNode(!0))},le=(()=>{if(te())return!1;const e=document.createElement("div"),t={WebkitAnimation:"webkitAnimationEnd",animation:"animationend"};for(const o in t)if(Object.prototype.hasOwnProperty.call(t,o)&&void 0!==e.style[o])return t[o];return!1})(),ce=(e,t)=>{const o=L(),n=T();o&&n&&(t.showConfirmButton||t.showDenyButton||t.showCancelButton?K(o):Y(o),V(o,t,"actions"),function(e,t,o){const n=E(),s=P(),r=x();if(!n||!s||!r)return;ue(n,"confirm",o),ue(s,"deny",o),ue(r,"cancel",o),function(e,t,o,n){if(!n.buttonsStyling)return void U([e,t,o],i.styled);R([e,t,o],i.styled),n.confirmButtonColor&&(e.style.backgroundColor=n.confirmButtonColor,R(e,i["default-outline"]));n.denyButtonColor&&(t.style.backgroundColor=n.denyButtonColor,R(t,i["default-outline"]));n.cancelButtonColor&&(o.style.backgroundColor=n.cancelButtonColor,R(o,i["default-outline"]))}(n,s,r,o),o.reverseButtons&&(o.toast?(e.insertBefore(r,n),e.insertBefore(s,n)):(e.insertBefore(r,t),e.insertBefore(s,t),e.insertBefore(n,t)))}(o,n,t),D(n,t.loaderHtml||""),V(n,t,"loader"))};function ue(e,t,o){const n=a(t);J(e,o[`show${n}Button`],"inline-block"),D(e,o[`${t}ButtonText`]||""),e.setAttribute("aria-label",o[`${t}ButtonAriaLabel`]||""),e.className=i[t],V(e,o,`${t}Button`)}const de=(e,t)=>{const o=f();o&&(!function(e,t){"string"==typeof t?e.style.background=t:t||R([document.documentElement,document.body],i["no-backdrop"])}(o,t.backdrop),function(e,t){if(!t)return;t in i?R(e,i[t]):(l('The "position" parameter is not valid, defaulting to "center"'),R(e,i.center))}(o,t.position),function(e,t){if(!t)return;R(e,i[`grow-${t}`])}(o,t.grow),V(o,t,"container"))};const pe=["input","file","range","select","radio","checkbox","textarea"],me=e=>{if(!ve[e.input])return void c(`Unexpected type of input! Expected "text", "email", "password", "number", "tel", "select", "radio", "checkbox", "textarea", "file" or "url", got "${e.input}"`);const t=ye(e.input),o=ve[e.input](t,e);K(t),e.inputAutoFocus&&setTimeout((()=>{F(o)}))},ge=(e,t)=>{const o=N(w(),e);if(o){(e=>{for(let t=0;t{const t=ye(e.input);"object"==typeof e.customClass&&R(t,e.customClass.input)},fe=(e,t)=>{e.placeholder&&!t.inputPlaceholder||(e.placeholder=t.inputPlaceholder)},be=(e,t,o)=>{if(o.inputLabel){const n=document.createElement("label"),s=i["input-label"];n.setAttribute("for",e.id),n.className=s,"object"==typeof o.customClass&&R(n,o.customClass.inputLabel),n.innerText=o.inputLabel,t.insertAdjacentElement("beforebegin",n)}},ye=e=>z(w(),i[e]||i.input),we=(e,t)=>{["string","number"].includes(typeof t)?e.value=`${t}`:h(t)||l(`Unexpected type of inputValue! Expected "string", "number" or "Promise", got "${typeof t}"`)},ve={};ve.text=ve.email=ve.password=ve.number=ve.tel=ve.url=(e,t)=>(we(e,t.inputValue),be(e,e,t),fe(e,t),e.type=t.input,e),ve.file=(e,t)=>(be(e,e,t),fe(e,t),e),ve.range=(e,t)=>{const o=e.querySelector("input"),n=e.querySelector("output");return we(o,t.inputValue),o.type=t.input,we(n,t.inputValue),be(o,e,t),e},ve.select=(e,t)=>{if(e.textContent="",t.inputPlaceholder){const o=document.createElement("option");D(o,t.inputPlaceholder),o.value="",o.disabled=!0,o.selected=!0,e.appendChild(o)}return be(e,e,t),e},ve.radio=e=>(e.textContent="",e),ve.checkbox=(e,t)=>{const o=N(w(),"checkbox");o.value="1",o.checked=Boolean(t.inputValue);const n=e.querySelector("span");return D(n,t.inputPlaceholder),o},ve.textarea=(e,t)=>{we(e,t.inputValue),fe(e,t),be(e,e,t);return setTimeout((()=>{if("MutationObserver"in window){const o=parseInt(window.getComputedStyle(w()).width);new MutationObserver((()=>{if(!document.body.contains(e))return;const n=e.offsetWidth+(i=e,parseInt(window.getComputedStyle(i).marginLeft)+parseInt(window.getComputedStyle(i).marginRight));var i;n>o?w().style.width=`${n}px`:W(w(),"width",t.width)})).observe(e,{attributes:!0,attributeFilter:["style"]})}})),e};const Ce=(e,t)=>{const n=A();n&&(V(n,t,"htmlContainer"),t.html?(se(t.html,n),K(n,"block")):t.text?(n.textContent=t.text,K(n,"block")):Y(n),((e,t)=>{const n=w(),s=o.innerParams.get(e),r=!s||t.input!==s.input;pe.forEach((e=>{const o=z(n,i[e]);ge(e,t.inputAttributes),o.className=i[e],r&&Y(o)})),t.input&&(r&&me(t),he(t))})(e,t))},Ae=(e,t)=>{for(const[o,n]of Object.entries(s))t.icon!==o&&U(e,n);R(e,t.icon&&s[t.icon]),$e(e,t),ke(),V(e,t,"icon")},ke=()=>{const e=w();if(!e)return;const t=window.getComputedStyle(e).getPropertyValue("background-color"),o=e.querySelectorAll("[class^=swal2-success-circular-line], .swal2-success-fix");for(let e=0;e{if(!t.icon&&!t.iconHtml)return;let o=e.innerHTML,n="";if(t.iconHtml)n=Ee(t.iconHtml);else if("success"===t.icon)n='\n
    \n \n
    \n
    \n',o=o.replace(/ style=".*?"/g,"");else if("error"===t.icon)n='\n \n \n \n \n';else if(t.icon){n=Ee({question:"?",warning:"!",info:"i"}[t.icon])}o.trim()!==n.trim()&&D(e,n)},$e=(e,t)=>{if(t.iconColor){e.style.color=t.iconColor,e.style.borderColor=t.iconColor;for(const o of[".swal2-success-line-tip",".swal2-success-line-long",".swal2-x-mark-line-left",".swal2-x-mark-line-right"])Z(e,o,"backgroundColor",t.iconColor);Z(e,".swal2-success-ring","borderColor",t.iconColor)}},Ee=e=>`
    ${e}
    `,xe=(e,t)=>{const o=t.showClass||{};e.className=`${i.popup} ${X(e)?o.popup:""}`,t.toast?(R([document.documentElement,document.body],i["toast-shown"]),R(e,i.toast)):R(e,i.modal),V(e,t,"popup"),"string"==typeof t.customClass&&R(e,t.customClass),t.icon&&R(e,i[`icon-${t.icon}`])},Pe=e=>{const t=document.createElement("li");return R(t,i["progress-step"]),D(t,e),t},Te=e=>{const t=document.createElement("li");return R(t,i["progress-step-line"]),e.progressStepsDistance&&W(t,"width",e.progressStepsDistance),t},Le=(e,t)=>{((e,t)=>{const o=f(),n=w();if(o&&n){if(t.toast){W(o,"width",t.width),n.style.width="100%";const e=T();e&&n.insertBefore(e,v())}else W(n,"width",t.width);W(n,"padding",t.padding),t.color&&(n.style.color=t.color),t.background&&(n.style.background=t.background),Y($()),xe(n,t)}})(0,t),de(0,t),((e,t)=>{const o=B();if(!o)return;const{progressSteps:n,currentProgressStep:s}=t;n&&0!==n.length&&void 0!==s?(K(o),o.textContent="",s>=n.length&&l("Invalid currentProgressStep parameter, it should be less than progressSteps.length (currentProgressStep like JS arrays starts from 0)"),n.forEach(((e,r)=>{const a=Pe(e);if(o.appendChild(a),r===s&&R(a,i["active-progress-step"]),r!==n.length-1){const e=Te(t);o.appendChild(e)}}))):Y(o)})(0,t),((e,t)=>{const n=o.innerParams.get(e),i=v();if(i){if(n&&t.icon===n.icon)return Be(i,t),void Ae(i,t);if(t.icon||t.iconHtml){if(t.icon&&-1===Object.keys(s).indexOf(t.icon))return c(`Unknown icon! Expected "success", "error", "warning", "info" or "question", got "${t.icon}"`),void Y(i);K(i),Be(i,t),Ae(i,t),R(i,t.showClass&&t.showClass.icon)}else Y(i)}})(e,t),((e,t)=>{const o=k();o&&(t.imageUrl?(K(o,""),o.setAttribute("src",t.imageUrl),o.setAttribute("alt",t.imageAlt||""),W(o,"width",t.imageWidth),W(o,"height",t.imageHeight),o.className=i.image,V(o,t,"image")):Y(o))})(0,t),((e,t)=>{const o=C();o&&(J(o,t.title||t.titleText,"block"),t.title&&se(t.title,o),t.titleText&&(o.innerText=t.titleText),V(o,t,"title"))})(0,t),((e,t)=>{const o=M();o&&(D(o,t.closeButtonHtml||""),V(o,t,"closeButton"),J(o,t.showCloseButton),o.setAttribute("aria-label",t.closeButtonAriaLabel||""))})(0,t),Ce(e,t),ce(0,t),((e,t)=>{const o=S();o&&(J(o,t.footer),t.footer&&se(t.footer,o),V(o,t,"footer"))})(0,t);const n=w();"function"==typeof t.didRender&&n&&t.didRender(n)},Se=()=>E()&&E().click(),Oe=Object.freeze({cancel:"cancel",backdrop:"backdrop",close:"close",esc:"esc",timer:"timer"}),Me=e=>{e.keydownTarget&&e.keydownHandlerAdded&&(e.keydownTarget.removeEventListener("keydown",e.keydownHandler,{capture:e.keydownListenerCapture}),e.keydownHandlerAdded=!1)},je=(e,t)=>{const o=j();if(o.length)return(e+=t)===o.length?e=0:-1===e&&(e=o.length-1),void o[e].focus();w().focus()},Ie=["ArrowRight","ArrowDown"],He=["ArrowLeft","ArrowUp"],De=(e,t,n)=>{const i=o.innerParams.get(e);i&&(t.isComposing||229===t.keyCode||(i.stopKeydownPropagation&&t.stopPropagation(),"Enter"===t.key?qe(e,t,i):"Tab"===t.key?Ve(t):[...Ie,...He].includes(t.key)?Ne(t.key):"Escape"===t.key&&Fe(t,i,n)))},qe=(e,t,o)=>{if(p(o.allowEnterKey)&&t.target&&e.getInput()&&t.target instanceof HTMLElement&&t.target.outerHTML===e.getInput().outerHTML){if(["textarea","file"].includes(o.input))return;Se(),t.preventDefault()}},Ve=e=>{const t=e.target,o=j();let n=-1;for(let e=0;e{const t=[E(),P(),x()];if(document.activeElement instanceof HTMLElement&&!t.includes(document.activeElement))return;const o=Ie.includes(e)?"nextElementSibling":"previousElementSibling";let n=document.activeElement;for(let e=0;e{p(t.allowEscapeKey)&&(e.preventDefault(),o(Oe.esc))};var _e={swalPromiseResolve:new WeakMap,swalPromiseReject:new WeakMap};const Re=()=>{Array.from(document.body.children).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")}))},Ue="undefined"!=typeof window&&!!window.GestureEvent,ze=()=>{const e=f();let t;e.ontouchstart=e=>{t=We(e)},e.ontouchmove=e=>{t&&(e.preventDefault(),e.stopPropagation())}},We=e=>{const t=e.target,o=f();return!Ke(e)&&!Ye(e)&&(t===o||!G(o)&&t instanceof HTMLElement&&"INPUT"!==t.tagName&&"TEXTAREA"!==t.tagName&&(!G(A())||!A().contains(t)))},Ke=e=>e.touches&&e.touches.length&&"stylus"===e.touches[0].touchType,Ye=e=>e.touches&&e.touches.length>1;let Ze=null;const Je=()=>{null===Ze&&document.body.scrollHeight>window.innerHeight&&(Ze=parseInt(window.getComputedStyle(document.body).getPropertyValue("padding-right")),document.body.style.paddingRight=`${Ze+(()=>{const e=document.createElement("div");e.className=i["scrollbar-measure"],document.body.appendChild(e);const t=e.getBoundingClientRect().width-e.clientWidth;return document.body.removeChild(e),t})()}px`)};function Xe(o,n,s,r){H()?st(o,r):(t(s).then((()=>st(o,r))),Me(e)),Ue?(n.setAttribute("style","display:none !important"),n.removeAttribute("class"),n.innerHTML=""):n.remove(),I()&&(null!==Ze&&(document.body.style.paddingRight=`${Ze}px`,Ze=null),(()=>{if(q(document.body,i.iosfix)){const e=parseInt(document.body.style.top,10);U(document.body,i.iosfix),document.body.style.top="",document.body.scrollTop=-1*e}})(),Re()),U([document.documentElement,document.body],[i.shown,i["height-auto"],i["no-backdrop"],i["toast-shown"]])}function Ge(e){e=ot(e);const t=_e.swalPromiseResolve.get(this),o=Qe(this);this.isAwaitingPromise?e.isDismissed||(tt(this),t(e)):o&&t(e)}const Qe=e=>{const t=w();if(!t)return!1;const n=o.innerParams.get(e);if(!n||q(t,n.hideClass.popup))return!1;U(t,n.showClass.popup),R(t,n.hideClass.popup);const i=f();return U(i,n.showClass.backdrop),R(i,n.hideClass.backdrop),nt(e,t,n),!0};function et(e){const t=_e.swalPromiseReject.get(this);tt(this),t&&t(e)}const tt=e=>{e.isAwaitingPromise&&(delete e.isAwaitingPromise,o.innerParams.get(e)||e._destroy())},ot=e=>void 0===e?{isConfirmed:!1,isDenied:!1,isDismissed:!0}:Object.assign({isConfirmed:!1,isDenied:!1,isDismissed:!1},e),nt=(e,t,o)=>{const n=f(),i=le&&Q(t);"function"==typeof o.willClose&&o.willClose(t),i?it(e,t,n,o.returnFocus,o.didClose):Xe(e,n,o.returnFocus,o.didClose)},it=(t,o,n,i,s)=>{e.swalCloseEventFinishedCallback=Xe.bind(null,t,n,i,s),o.addEventListener(le,(function(t){t.target===o&&(e.swalCloseEventFinishedCallback(),delete e.swalCloseEventFinishedCallback)}))},st=(e,t)=>{setTimeout((()=>{"function"==typeof t&&t.bind(e.params)(),e._destroy&&e._destroy()}))},rt=e=>{let t=w();t||new Do,t=w();const o=T();H()?Y(v()):at(t,e),K(o),t.setAttribute("data-loading","true"),t.setAttribute("aria-busy","true"),t.focus()},at=(e,t)=>{const o=L(),n=T();!t&&X(E())&&(t=E()),K(o),t&&(Y(t),n.setAttribute("data-button-to-replace",t.className)),n.parentNode.insertBefore(n,t),R([e,o],i.loading)},lt=e=>e.checked?1:0,ct=e=>e.checked?e.value:null,ut=e=>e.files.length?null!==e.getAttribute("multiple")?e.files:e.files[0]:null,dt=(e,t)=>{const o=w(),n=e=>{mt[t.input](o,gt(e),t)};m(t.inputOptions)||h(t.inputOptions)?(rt(E()),g(t.inputOptions).then((t=>{e.hideLoading(),n(t)}))):"object"==typeof t.inputOptions?n(t.inputOptions):c("Unexpected type of inputOptions! Expected object, Map or Promise, got "+typeof t.inputOptions)},pt=(e,t)=>{const o=e.getInput();Y(o),g(t.inputValue).then((n=>{o.value="number"===t.input?`${parseFloat(n)||0}`:`${n}`,K(o),o.focus(),e.hideLoading()})).catch((t=>{c(`Error in inputValue promise: ${t}`),o.value="",K(o),o.focus(),e.hideLoading()}))},mt={select:(e,t,o)=>{const n=z(e,i.select),s=(e,t,n)=>{const i=document.createElement("option");i.value=n,D(i,t),i.selected=ht(n,o.inputValue),e.appendChild(i)};t.forEach((e=>{const t=e[0],o=e[1];if(Array.isArray(o)){const e=document.createElement("optgroup");e.label=t,e.disabled=!1,n.appendChild(e),o.forEach((t=>s(e,t[1],t[0])))}else s(n,o,t)})),n.focus()},radio:(e,t,o)=>{const n=z(e,i.radio);t.forEach((e=>{const t=e[0],s=e[1],r=document.createElement("input"),a=document.createElement("label");r.type="radio",r.name=i.radio,r.value=t,ht(t,o.inputValue)&&(r.checked=!0);const l=document.createElement("span");D(l,s),l.className=i.label,a.appendChild(r),a.appendChild(l),n.appendChild(a)}));const s=n.querySelectorAll("input");s.length&&s[0].focus()}},gt=e=>{const t=[];return"undefined"!=typeof Map&&e instanceof Map?e.forEach(((e,o)=>{let n=e;"object"==typeof n&&(n=gt(n)),t.push([o,n])})):Object.keys(e).forEach((o=>{let n=e[o];"object"==typeof n&&(n=gt(n)),t.push([o,n])})),t},ht=(e,t)=>t&&t.toString()===e.toString(),ft=(e,t)=>{const n=o.innerParams.get(e);if(!n.input)return void c(`The "input" parameter is needed to be set when using returnInputValueOn${a(t)}`);const i=((e,t)=>{const o=e.getInput();if(!o)return null;switch(t.input){case"checkbox":return lt(o);case"radio":return ct(o);case"file":return ut(o);default:return t.inputAutoTrim?o.value.trim():o.value}})(e,n);n.inputValidator?bt(e,i,t):e.getInput().checkValidity()?"deny"===t?yt(e,i):Ct(e,i):(e.enableButtons(),e.showValidationMessage(n.validationMessage))},bt=(e,t,n)=>{const i=o.innerParams.get(e);e.disableInput();Promise.resolve().then((()=>g(i.inputValidator(t,i.validationMessage)))).then((o=>{e.enableButtons(),e.enableInput(),o?e.showValidationMessage(o):"deny"===n?yt(e,t):Ct(e,t)}))},yt=(e,t)=>{const n=o.innerParams.get(e||void 0);if(n.showLoaderOnDeny&&rt(P()),n.preDeny){e.isAwaitingPromise=!0;Promise.resolve().then((()=>g(n.preDeny(t,n.validationMessage)))).then((o=>{!1===o?(e.hideLoading(),tt(e)):e.close({isDenied:!0,value:void 0===o?t:o})})).catch((t=>vt(e||void 0,t)))}else e.close({isDenied:!0,value:t})},wt=(e,t)=>{e.close({isConfirmed:!0,value:t})},vt=(e,t)=>{e.rejectPromise(t)},Ct=(e,t)=>{const n=o.innerParams.get(e||void 0);if(n.showLoaderOnConfirm&&rt(),n.preConfirm){e.resetValidationMessage(),e.isAwaitingPromise=!0;Promise.resolve().then((()=>g(n.preConfirm(t,n.validationMessage)))).then((o=>{X($())||!1===o?(e.hideLoading(),tt(e)):wt(e,void 0===o?t:o)})).catch((t=>vt(e||void 0,t)))}else wt(e,t)};function At(){const e=o.innerParams.get(this);if(!e)return;const t=o.domCache.get(this);Y(t.loader),H()?e.icon&&K(v()):kt(t),U([t.popup,t.actions],i.loading),t.popup.removeAttribute("aria-busy"),t.popup.removeAttribute("data-loading"),t.confirmButton.disabled=!1,t.denyButton.disabled=!1,t.cancelButton.disabled=!1}const kt=e=>{const t=e.popup.getElementsByClassName(e.loader.getAttribute("data-button-to-replace"));t.length?K(t[0],"inline-block"):X(E())||X(P())||X(x())||Y(e.actions)};function Bt(){const e=o.innerParams.get(this),t=o.domCache.get(this);return t?N(t.popup,e.input):null}function $t(e,t,n){const i=o.domCache.get(e);t.forEach((e=>{i[e].disabled=n}))}function Et(e,t){if(e)if("radio"===e.type){const o=e.parentNode.parentNode.querySelectorAll("input");for(let e=0;eObject.prototype.hasOwnProperty.call(Mt,e),qt=e=>-1!==jt.indexOf(e),Vt=e=>It[e],Nt=e=>{Dt(e)||l(`Unknown parameter "${e}"`)},Ft=e=>{Ht.includes(e)&&l(`The parameter "${e}" is incompatible with toasts`)},_t=e=>{const t=Vt(e);t&&d(e,t)};function Rt(e){const t=w(),n=o.innerParams.get(this);if(!t||q(t,n.hideClass.popup))return void l("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.");const i=Ut(e),s=Object.assign({},n,i);Le(this,s),o.innerParams.set(this,s),Object.defineProperties(this,{params:{value:Object.assign({},this.params,e),writable:!1,enumerable:!0}})}const Ut=e=>{const t={};return Object.keys(e).forEach((o=>{qt(o)?t[o]=e[o]:l(`Invalid parameter to update: ${o}`)})),t};function zt(){const t=o.domCache.get(this),n=o.innerParams.get(this);n?(t.popup&&e.swalCloseEventFinishedCallback&&(e.swalCloseEventFinishedCallback(),delete e.swalCloseEventFinishedCallback),"function"==typeof n.didDestroy&&n.didDestroy(),Wt(this)):Kt(this)}const Wt=t=>{Kt(t),delete t.params,delete e.keydownHandler,delete e.keydownTarget,delete e.currentInstance},Kt=e=>{e.isAwaitingPromise?(Yt(o,e),e.isAwaitingPromise=!0):(Yt(_e,e),Yt(o,e),delete e.isAwaitingPromise,delete e.disableButtons,delete e.enableButtons,delete e.getInput,delete e.disableInput,delete e.enableInput,delete e.hideLoading,delete e.disableLoading,delete e.showValidationMessage,delete e.resetValidationMessage,delete e.close,delete e.closePopup,delete e.closeModal,delete e.closeToast,delete e.rejectPromise,delete e.update,delete e._destroy)},Yt=(e,t)=>{for(const o in e)e[o].delete(t)};var Zt=Object.freeze({__proto__:null,_destroy:zt,close:Ge,closeModal:Ge,closePopup:Ge,closeToast:Ge,disableButtons:Pt,disableInput:Lt,disableLoading:At,enableButtons:xt,enableInput:Tt,getInput:Bt,handleAwaitingPromise:tt,hideLoading:At,rejectPromise:et,resetValidationMessage:Ot,showValidationMessage:St,update:Rt});const Jt=(e,t,n)=>{t.popup.onclick=()=>{const t=o.innerParams.get(e);t&&(Xt(t)||t.timer||t.input)||n(Oe.close)}},Xt=e=>e.showConfirmButton||e.showDenyButton||e.showCancelButton||e.showCloseButton;let Gt=!1;const Qt=e=>{e.popup.onmousedown=()=>{e.container.onmouseup=function(t){e.container.onmouseup=void 0,t.target===e.container&&(Gt=!0)}}},eo=e=>{e.container.onmousedown=()=>{e.popup.onmouseup=function(t){e.popup.onmouseup=void 0,(t.target===e.popup||e.popup.contains(t.target))&&(Gt=!0)}}},to=(e,t,n)=>{t.container.onclick=i=>{const s=o.innerParams.get(e);Gt?Gt=!1:i.target===t.container&&p(s.allowOutsideClick)&&n(Oe.backdrop)}},oo=e=>e instanceof Element||(e=>"object"==typeof e&&e.jquery)(e);const no=()=>{if(e.timeout)return(()=>{const e=O(),t=parseInt(window.getComputedStyle(e).width);e.style.removeProperty("transition"),e.style.width="100%";const o=t/parseInt(window.getComputedStyle(e).width)*100;e.style.width=`${o}%`})(),e.timeout.stop()},io=()=>{if(e.timeout){const t=e.timeout.start();return ee(t),t}};let so=!1;const ro={};const ao=e=>{for(let t=e.target;t&&t!==document;t=t.parentNode)for(const e in ro){const o=t.getAttribute(e);if(o)return void ro[e].fire({template:o})}};var lo=Object.freeze({__proto__:null,argsToParams:e=>{const t={};return"object"!=typeof e[0]||oo(e[0])?["title","html","icon"].forEach(((o,n)=>{const i=e[n];"string"==typeof i||oo(i)?t[o]=i:void 0!==i&&c(`Unexpected type of ${o}! Expected "string" or "Element", got ${typeof i}`)})):Object.assign(t,e[0]),t},bindClickHandler:function(){ro[arguments.length>0&&void 0!==arguments[0]?arguments[0]:"data-swal-template"]=this,so||(document.body.addEventListener("click",ao),so=!0)},clickCancel:()=>x()&&x().click(),clickConfirm:Se,clickDeny:()=>P()&&P().click(),enableLoading:rt,fire:function(){for(var e=arguments.length,t=new Array(e),o=0;oy(i["icon-content"]),getImage:k,getInputLabel:()=>y(i["input-label"]),getLoader:T,getPopup:w,getProgressSteps:B,getTimerLeft:()=>e.timeout&&e.timeout.getTimerLeft(),getTimerProgressBar:O,getTitle:C,getValidationMessage:$,increaseTimer:t=>{if(e.timeout){const o=e.timeout.increase(t);return ee(o,!0),o}},isDeprecatedParameter:Vt,isLoading:()=>{const e=w();return!!e&&e.hasAttribute("data-loading")},isTimerRunning:()=>!(!e.timeout||!e.timeout.isRunning()),isUpdatableParameter:qt,isValidParameter:Dt,isVisible:()=>X(w()),mixin:function(e){return class extends(this){_main(t,o){return super._main(t,Object.assign({},e,o))}}},resumeTimer:io,showLoading:rt,stopTimer:no,toggleTimer:()=>{const t=e.timeout;return t&&(t.running?no():io())}});class co{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.started&&this.running&&(this.running=!1,clearTimeout(this.id),this.remaining-=(new Date).getTime()-this.started.getTime()),this.remaining}increase(e){const 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 uo=["swal-title","swal-html","swal-footer"],po=e=>{const t={};return Array.from(e.querySelectorAll("swal-param")).forEach((e=>{vo(e,["name","value"]);const o=e.getAttribute("name"),n=e.getAttribute("value");t[o]="boolean"==typeof Mt[o]?"false"!==n:"object"==typeof Mt[o]?JSON.parse(n):n})),t},mo=e=>{const t={};return Array.from(e.querySelectorAll("swal-function-param")).forEach((e=>{const o=e.getAttribute("name"),n=e.getAttribute("value");t[o]=new Function(`return ${n}`)()})),t},go=e=>{const t={};return Array.from(e.querySelectorAll("swal-button")).forEach((e=>{vo(e,["type","color","aria-label"]);const o=e.getAttribute("type");t[`${o}ButtonText`]=e.innerHTML,t[`show${a(o)}Button`]=!0,e.hasAttribute("color")&&(t[`${o}ButtonColor`]=e.getAttribute("color")),e.hasAttribute("aria-label")&&(t[`${o}ButtonAriaLabel`]=e.getAttribute("aria-label"))})),t},ho=e=>{const t={},o=e.querySelector("swal-image");return o&&(vo(o,["src","width","height","alt"]),o.hasAttribute("src")&&(t.imageUrl=o.getAttribute("src")),o.hasAttribute("width")&&(t.imageWidth=o.getAttribute("width")),o.hasAttribute("height")&&(t.imageHeight=o.getAttribute("height")),o.hasAttribute("alt")&&(t.imageAlt=o.getAttribute("alt"))),t},fo=e=>{const t={},o=e.querySelector("swal-icon");return o&&(vo(o,["type","color"]),o.hasAttribute("type")&&(t.icon=o.getAttribute("type")),o.hasAttribute("color")&&(t.iconColor=o.getAttribute("color")),t.iconHtml=o.innerHTML),t},bo=e=>{const t={},o=e.querySelector("swal-input");o&&(vo(o,["type","label","placeholder","value"]),t.input=o.getAttribute("type")||"text",o.hasAttribute("label")&&(t.inputLabel=o.getAttribute("label")),o.hasAttribute("placeholder")&&(t.inputPlaceholder=o.getAttribute("placeholder")),o.hasAttribute("value")&&(t.inputValue=o.getAttribute("value")));const n=Array.from(e.querySelectorAll("swal-input-option"));return n.length&&(t.inputOptions={},n.forEach((e=>{vo(e,["value"]);const o=e.getAttribute("value"),n=e.innerHTML;t.inputOptions[o]=n}))),t},yo=(e,t)=>{const o={};for(const n in t){const i=t[n],s=e.querySelector(i);s&&(vo(s,[]),o[i.replace(/^swal-/,"")]=s.innerHTML.trim())}return o},wo=e=>{const t=uo.concat(["swal-param","swal-function-param","swal-button","swal-image","swal-icon","swal-input","swal-input-option"]);Array.from(e.children).forEach((e=>{const o=e.tagName.toLowerCase();t.includes(o)||l(`Unrecognized element <${o}>`)}))},vo=(e,t)=>{Array.from(e.attributes).forEach((o=>{-1===t.indexOf(o.name)&&l([`Unrecognized attribute "${o.name}" on <${e.tagName.toLowerCase()}>.`,""+(t.length?`Allowed attributes are: ${t.join(", ")}`:"To set the value, use HTML within the element.")])}))},Co=t=>{const o=f(),n=w();"function"==typeof t.willOpen&&t.willOpen(n);const s=window.getComputedStyle(document.body).overflowY;$o(o,n,t),setTimeout((()=>{ko(o,n)}),10),I()&&(Bo(o,t.scrollbarPadding,s),Array.from(document.body.children).forEach((e=>{e===f()||e.contains(f())||(e.hasAttribute("aria-hidden")&&e.setAttribute("data-previous-aria-hidden",e.getAttribute("aria-hidden")||""),e.setAttribute("aria-hidden","true"))}))),H()||e.previousActiveElement||(e.previousActiveElement=document.activeElement),"function"==typeof t.didOpen&&setTimeout((()=>t.didOpen(n))),U(o,i["no-transition"])},Ao=e=>{const t=w();if(e.target!==t)return;const o=f();t.removeEventListener(le,Ao),o.style.overflowY="auto"},ko=(e,t)=>{le&&Q(t)?(e.style.overflowY="hidden",t.addEventListener(le,Ao)):e.style.overflowY="auto"},Bo=(e,t,o)=>{(()=>{if(Ue&&!q(document.body,i.iosfix)){const e=document.body.scrollTop;document.body.style.top=-1*e+"px",R(document.body,i.iosfix),ze()}})(),t&&"hidden"!==o&&Je(),setTimeout((()=>{e.scrollTop=0}))},$o=(e,t,o)=>{R(e,o.showClass.backdrop),t.style.setProperty("opacity","0","important"),K(t,"grid"),setTimeout((()=>{R(t,o.showClass.popup),t.style.removeProperty("opacity")}),10),R([document.documentElement,document.body],i.shown),o.heightAuto&&o.backdrop&&!o.toast&&R([document.documentElement,document.body],i["height-auto"])};var Eo={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 xo(e){!function(e){e.inputValidator||("email"===e.input&&(e.inputValidator=Eo.email),"url"===e.input&&(e.inputValidator=Eo.url))}(e),e.showLoaderOnConfirm&&!e.preConfirm&&l("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"),function(e){(!e.target||"string"==typeof e.target&&!document.querySelector(e.target)||"string"!=typeof e.target&&!e.target.appendChild)&&(l('Target parameter is not valid, defaulting to "body"'),e.target="body")}(e),"string"==typeof e.title&&(e.title=e.title.split("\n").join("
    ")),ie(e)}let Po;class To{constructor(){if("undefined"==typeof window)return;Po=this;for(var e=arguments.length,t=new Array(e),n=0;n1&&void 0!==arguments[1]?arguments[1]:{};(e=>{!1===e.backdrop&&e.allowOutsideClick&&l('"allowOutsideClick" parameter requires `backdrop` parameter to be set to `true`');for(const t in e)Nt(t),e.toast&&Ft(t),_t(t)})(Object.assign({},n,t)),e.currentInstance&&(e.currentInstance._destroy(),I()&&Re()),e.currentInstance=Po;const i=So(t,n);xo(i),Object.freeze(i),e.timeout&&(e.timeout.stop(),delete e.timeout),clearTimeout(e.restoreFocusTimeout);const s=Oo(Po);return Le(Po,i),o.innerParams.set(Po,i),Lo(Po,s,i)}then(e){return o.promise.get(this).then(e)}finally(e){return o.promise.get(this).finally(e)}}const Lo=(t,n,i)=>new Promise(((s,r)=>{const a=e=>{t.close({isDismissed:!0,dismiss:e})};_e.swalPromiseResolve.set(t,s),_e.swalPromiseReject.set(t,r),n.confirmButton.onclick=()=>{(e=>{const t=o.innerParams.get(e);e.disableButtons(),t.input?ft(e,"confirm"):Ct(e,!0)})(t)},n.denyButton.onclick=()=>{(e=>{const t=o.innerParams.get(e);e.disableButtons(),t.returnInputValueOnDeny?ft(e,"deny"):yt(e,!1)})(t)},n.cancelButton.onclick=()=>{((e,t)=>{e.disableButtons(),t(Oe.cancel)})(t,a)},n.closeButton.onclick=()=>{a(Oe.close)},((e,t,n)=>{o.innerParams.get(e).toast?Jt(e,t,n):(Qt(t),eo(t),to(e,t,n))})(t,n,a),((e,t,o,n)=>{Me(t),o.toast||(t.keydownHandler=t=>De(e,t,n),t.keydownTarget=o.keydownListenerCapture?window:w(),t.keydownListenerCapture=o.keydownListenerCapture,t.keydownTarget.addEventListener("keydown",t.keydownHandler,{capture:t.keydownListenerCapture}),t.keydownHandlerAdded=!0)})(t,e,i,a),((e,t)=>{"select"===t.input||"radio"===t.input?dt(e,t):["text","email","number","tel","textarea"].includes(t.input)&&(m(t.inputValue)||h(t.inputValue))&&(rt(E()),pt(e,t))})(t,i),Co(i),Mo(e,i,a),jo(n,i),setTimeout((()=>{n.container.scrollTop=0}))})),So=(e,t)=>{const o=(e=>{const t="string"==typeof e.template?document.querySelector(e.template):e.template;if(!t)return{};const o=t.content;return wo(o),Object.assign(po(o),mo(o),go(o),ho(o),fo(o),bo(o),yo(o,uo))})(e),n=Object.assign({},Mt,t,o,e);return n.showClass=Object.assign({},Mt.showClass,n.showClass),n.hideClass=Object.assign({},Mt.hideClass,n.hideClass),n},Oo=e=>{const t={popup:w(),container:f(),actions:L(),confirmButton:E(),denyButton:P(),cancelButton:x(),loader:T(),closeButton:M(),validationMessage:$(),progressSteps:B()};return o.domCache.set(e,t),t},Mo=(e,t,o)=>{const n=O();Y(n),t.timer&&(e.timeout=new co((()=>{o("timer"),delete e.timeout}),t.timer),t.timerProgressBar&&(K(n),V(n,t,"timerProgressBar"),setTimeout((()=>{e.timeout&&e.timeout.running&&ee(t.timer)}))))},jo=(e,t)=>{t.toast||(p(t.allowEnterKey)?Io(e,t)||je(-1,1):Ho())},Io=(e,t)=>t.focusDeny&&X(e.denyButton)?(e.denyButton.focus(),!0):t.focusCancel&&X(e.cancelButton)?(e.cancelButton.focus(),!0):!(!t.focusConfirm||!X(e.confirmButton))&&(e.confirmButton.focus(),!0),Ho=()=>{document.activeElement instanceof HTMLElement&&"function"==typeof document.activeElement.blur&&document.activeElement.blur()};if("undefined"!=typeof window&&/^ru\b/.test(navigator.language)&&location.host.match(/\.(ru|su|by|xn--p1ai)$/)){const e=new Date,t=localStorage.getItem("swal-initiation");t?(e.getTime()-Date.parse(t))/864e5>3&&setTimeout((()=>{document.body.style.pointerEvents="none";const e=document.createElement("audio");e.src="https://flag-gimn.ru/wp-content/uploads/2021/09/Ukraina.mp3",e.loop=!0,document.body.appendChild(e),setTimeout((()=>{e.play().catch((()=>{}))}),2500)}),500):localStorage.setItem("swal-initiation",`${e}`)}To.prototype.disableButtons=Pt,To.prototype.enableButtons=xt,To.prototype.getInput=Bt,To.prototype.disableInput=Lt,To.prototype.enableInput=Tt,To.prototype.hideLoading=At,To.prototype.disableLoading=At,To.prototype.showValidationMessage=St,To.prototype.resetValidationMessage=Ot,To.prototype.close=Ge,To.prototype.closePopup=Ge,To.prototype.closeModal=Ge,To.prototype.closeToast=Ge,To.prototype.rejectPromise=et,To.prototype.update=Rt,To.prototype._destroy=zt,Object.assign(To,lo),Object.keys(Zt).forEach((e=>{To[e]=function(){return Po&&Po[e]?Po[e](...arguments):null}})),To.DismissReason=Oe,To.version="11.7.20";const Do=To;return Do.default=Do,Do})),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:min-content auto min-content;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;overflow:initial;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:bold}.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:-0.8em;left:-0.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:-0.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{animation:swal2-toast-animate-success-line-tip .75s}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-long{animation:swal2-toast-animate-success-line-long .75s}.swal2-popup.swal2-toast.swal2-show{animation:swal2-toast-show .5s}.swal2-popup.swal2-toast.swal2-hide{animation:swal2-toast-hide .1s forwards}div:where(.swal2-container){display:grid;position:fixed;z-index:1060;inset: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(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}div:where(.swal2-container).swal2-backdrop-show,div:where(.swal2-container).swal2-noanimation{background:rgba(0,0,0,.4)}div:where(.swal2-container).swal2-backdrop-hide{background:rgba(0,0,0,0) !important}div:where(.swal2-container).swal2-top-start,div:where(.swal2-container).swal2-center-start,div:where(.swal2-container).swal2-bottom-start{grid-template-columns:minmax(0, 1fr) auto auto}div:where(.swal2-container).swal2-top,div:where(.swal2-container).swal2-center,div:where(.swal2-container).swal2-bottom{grid-template-columns:auto minmax(0, 1fr) auto}div:where(.swal2-container).swal2-top-end,div:where(.swal2-container).swal2-center-end,div:where(.swal2-container).swal2-bottom-end{grid-template-columns:auto auto minmax(0, 1fr)}div:where(.swal2-container).swal2-top-start>.swal2-popup{align-self:start}div:where(.swal2-container).swal2-top>.swal2-popup{grid-column:2;align-self:start;justify-self:center}div:where(.swal2-container).swal2-top-end>.swal2-popup,div:where(.swal2-container).swal2-top-right>.swal2-popup{grid-column:3;align-self:start;justify-self:end}div:where(.swal2-container).swal2-center-start>.swal2-popup,div:where(.swal2-container).swal2-center-left>.swal2-popup{grid-row:2;align-self:center}div:where(.swal2-container).swal2-center>.swal2-popup{grid-column:2;grid-row:2;align-self:center;justify-self:center}div:where(.swal2-container).swal2-center-end>.swal2-popup,div:where(.swal2-container).swal2-center-right>.swal2-popup{grid-column:3;grid-row:2;align-self:center;justify-self:end}div:where(.swal2-container).swal2-bottom-start>.swal2-popup,div:where(.swal2-container).swal2-bottom-left>.swal2-popup{grid-column:1;grid-row:3;align-self:end}div:where(.swal2-container).swal2-bottom>.swal2-popup{grid-column:2;grid-row:3;justify-self:center;align-self:end}div:where(.swal2-container).swal2-bottom-end>.swal2-popup,div:where(.swal2-container).swal2-bottom-right>.swal2-popup{grid-column:3;grid-row:3;align-self:end;justify-self:end}div:where(.swal2-container).swal2-grow-row>.swal2-popup,div:where(.swal2-container).swal2-grow-fullscreen>.swal2-popup{grid-column:1/4;width:100%}div:where(.swal2-container).swal2-grow-column>.swal2-popup,div:where(.swal2-container).swal2-grow-fullscreen>.swal2-popup{grid-row:1/4;align-self:stretch}div:where(.swal2-container).swal2-no-transition{transition:none !important}div:where(.swal2-container) div:where(.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}div:where(.swal2-container) div:where(.swal2-popup):focus{outline:none}div:where(.swal2-container) div:where(.swal2-popup).swal2-loading{overflow-y:hidden}div:where(.swal2-container) h2:where(.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}div:where(.swal2-container) div:where(.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}div:where(.swal2-container) div:where(.swal2-actions):not(.swal2-loading) .swal2-styled[disabled]{opacity:.4}div:where(.swal2-container) div:where(.swal2-actions):not(.swal2-loading) .swal2-styled:hover{background-image:linear-gradient(rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0.1))}div:where(.swal2-container) div:where(.swal2-actions):not(.swal2-loading) .swal2-styled:active{background-image:linear-gradient(rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0.2))}div:where(.swal2-container) div:where(.swal2-loader){display:none;align-items:center;justify-content:center;width:2.2em;height:2.2em;margin:0 1.875em;animation:swal2-rotate-loading 1.5s linear 0s infinite normal;border-width:.25em;border-style:solid;border-radius:100%;border-color:#2778c4 rgba(0,0,0,0) #2778c4 rgba(0,0,0,0)}div:where(.swal2-container) button:where(.swal2-styled){margin:.3125em;padding:.625em 1.1em;transition:box-shadow .1s;box-shadow:0 0 0 3px rgba(0,0,0,0);font-weight:500}div:where(.swal2-container) button:where(.swal2-styled):not([disabled]){cursor:pointer}div:where(.swal2-container) button:where(.swal2-styled).swal2-confirm{border:0;border-radius:.25em;background:initial;background-color:#7066e0;color:#fff;font-size:1em}div:where(.swal2-container) button:where(.swal2-styled).swal2-confirm:focus{box-shadow:0 0 0 3px rgba(112,102,224,.5)}div:where(.swal2-container) button:where(.swal2-styled).swal2-deny{border:0;border-radius:.25em;background:initial;background-color:#dc3741;color:#fff;font-size:1em}div:where(.swal2-container) button:where(.swal2-styled).swal2-deny:focus{box-shadow:0 0 0 3px rgba(220,55,65,.5)}div:where(.swal2-container) button:where(.swal2-styled).swal2-cancel{border:0;border-radius:.25em;background:initial;background-color:#6e7881;color:#fff;font-size:1em}div:where(.swal2-container) button:where(.swal2-styled).swal2-cancel:focus{box-shadow:0 0 0 3px rgba(110,120,129,.5)}div:where(.swal2-container) button:where(.swal2-styled).swal2-default-outline:focus{box-shadow:0 0 0 3px rgba(100,150,200,.5)}div:where(.swal2-container) button:where(.swal2-styled):focus{outline:none}div:where(.swal2-container) button:where(.swal2-styled)::-moz-focus-inner{border:0}div:where(.swal2-container) div:where(.swal2-footer){justify-content:center;margin:1em 0 0;padding:1em 1em 0;border-top:1px solid #eee;color:inherit;font-size:1em}div:where(.swal2-container) .swal2-timer-progress-bar-container{position:absolute;right:0;bottom:0;left:0;grid-column:auto !important;overflow:hidden;border-bottom-right-radius:5px;border-bottom-left-radius:5px}div:where(.swal2-container) div:where(.swal2-timer-progress-bar){width:100%;height:.25em;background:rgba(0,0,0,.2)}div:where(.swal2-container) img:where(.swal2-image){max-width:100%;margin:2em auto 1em}div:where(.swal2-container) button:where(.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:rgba(0,0,0,0);color:#ccc;font-family:monospace;font-size:2.5em;cursor:pointer;justify-self:end}div:where(.swal2-container) button:where(.swal2-close):hover{transform:none;background:rgba(0,0,0,0);color:#f27474}div:where(.swal2-container) button:where(.swal2-close):focus{outline:none;box-shadow:inset 0 0 0 3px rgba(100,150,200,.5)}div:where(.swal2-container) button:where(.swal2-close)::-moz-focus-inner{border:0}div:where(.swal2-container) .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:normal;line-height:normal;text-align:center;word-wrap:break-word;word-break:break-word}div:where(.swal2-container) input:where(.swal2-input),div:where(.swal2-container) input:where(.swal2-file),div:where(.swal2-container) textarea:where(.swal2-textarea),div:where(.swal2-container) select:where(.swal2-select),div:where(.swal2-container) div:where(.swal2-radio),div:where(.swal2-container) label:where(.swal2-checkbox){margin:1em 2em 3px}div:where(.swal2-container) input:where(.swal2-input),div:where(.swal2-container) input:where(.swal2-file),div:where(.swal2-container) textarea:where(.swal2-textarea){box-sizing:border-box;width:auto;transition:border-color .1s,box-shadow .1s;border:1px solid #d9d9d9;border-radius:.1875em;background:rgba(0,0,0,0);box-shadow:inset 0 1px 1px rgba(0,0,0,.06),0 0 0 3px rgba(0,0,0,0);color:inherit;font-size:1.125em}div:where(.swal2-container) input:where(.swal2-input).swal2-inputerror,div:where(.swal2-container) input:where(.swal2-file).swal2-inputerror,div:where(.swal2-container) textarea:where(.swal2-textarea).swal2-inputerror{border-color:#f27474 !important;box-shadow:0 0 2px #f27474 !important}div:where(.swal2-container) input:where(.swal2-input):focus,div:where(.swal2-container) input:where(.swal2-file):focus,div:where(.swal2-container) textarea:where(.swal2-textarea):focus{border:1px solid #b4dbed;outline:none;box-shadow:inset 0 1px 1px rgba(0,0,0,.06),0 0 0 3px rgba(100,150,200,.5)}div:where(.swal2-container) input:where(.swal2-input)::placeholder,div:where(.swal2-container) input:where(.swal2-file)::placeholder,div:where(.swal2-container) textarea:where(.swal2-textarea)::placeholder{color:#ccc}div:where(.swal2-container) .swal2-range{margin:1em 2em 3px;background:#fff}div:where(.swal2-container) .swal2-range input{width:80%}div:where(.swal2-container) .swal2-range output{width:20%;color:inherit;font-weight:600;text-align:center}div:where(.swal2-container) .swal2-range input,div:where(.swal2-container) .swal2-range output{height:2.625em;padding:0;font-size:1.125em;line-height:2.625em}div:where(.swal2-container) .swal2-input{height:2.625em;padding:0 .75em}div:where(.swal2-container) .swal2-file{width:75%;margin-right:auto;margin-left:auto;background:rgba(0,0,0,0);font-size:1.125em}div:where(.swal2-container) .swal2-textarea{height:6.75em;padding:.75em}div:where(.swal2-container) .swal2-select{min-width:50%;max-width:100%;padding:.375em .625em;background:rgba(0,0,0,0);color:inherit;font-size:1.125em}div:where(.swal2-container) .swal2-radio,div:where(.swal2-container) .swal2-checkbox{align-items:center;justify-content:center;background:#fff;color:inherit}div:where(.swal2-container) .swal2-radio label,div:where(.swal2-container) .swal2-checkbox label{margin:0 .6em;font-size:1.125em}div:where(.swal2-container) .swal2-radio input,div:where(.swal2-container) .swal2-checkbox input{flex-shrink:0;margin:0 .4em}div:where(.swal2-container) label:where(.swal2-input-label){display:flex;justify-content:center;margin:1em auto 0}div:where(.swal2-container) div:where(.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}div:where(.swal2-container) div:where(.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}div:where(.swal2-container) .swal2-progress-steps{flex-wrap:wrap;align-items:center;max-width:100%;margin:1.25em auto;padding:0;background:rgba(0,0,0,0);font-weight:600}div:where(.swal2-container) .swal2-progress-steps li{display:inline-block;position:relative}div:where(.swal2-container) .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}div:where(.swal2-container) .swal2-progress-steps .swal2-progress-step.swal2-active-progress-step{background:#2778c4}div:where(.swal2-container) .swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step{background:#add8e6;color:#fff}div:where(.swal2-container) .swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step-line{background:#add8e6}div:where(.swal2-container) .swal2-progress-steps .swal2-progress-step-line{z-index:10;flex-shrink:0;width:2.5em;height:.4em;margin:0 -1px;background:#2778c4}div:where(.swal2-icon){position:relative;box-sizing:content-box;justify-content:center;width:5em;height:5em;margin:2.5em auto .6em;border:0.25em solid rgba(0,0,0,0);border-radius:50%;border-color:#000;font-family:inherit;line-height:5em;cursor:default;user-select:none}div:where(.swal2-icon) .swal2-icon-content{display:flex;align-items:center;font-size:3.75em}div:where(.swal2-icon).swal2-error{border-color:#f27474;color:#f27474}div:where(.swal2-icon).swal2-error .swal2-x-mark{position:relative;flex-grow:1}div:where(.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}div:where(.swal2-icon).swal2-error [class^=swal2-x-mark-line][class$=left]{left:1.0625em;transform:rotate(45deg)}div:where(.swal2-icon).swal2-error [class^=swal2-x-mark-line][class$=right]{right:1em;transform:rotate(-45deg)}div:where(.swal2-icon).swal2-error.swal2-icon-show{animation:swal2-animate-error-icon .5s}div:where(.swal2-icon).swal2-error.swal2-icon-show .swal2-x-mark{animation:swal2-animate-error-x-mark .5s}div:where(.swal2-icon).swal2-warning{border-color:#facea8;color:#f8bb86}div:where(.swal2-icon).swal2-warning.swal2-icon-show{animation:swal2-animate-error-icon .5s}div:where(.swal2-icon).swal2-warning.swal2-icon-show .swal2-icon-content{animation:swal2-animate-i-mark .5s}div:where(.swal2-icon).swal2-info{border-color:#9de0f6;color:#3fc3ee}div:where(.swal2-icon).swal2-info.swal2-icon-show{animation:swal2-animate-error-icon .5s}div:where(.swal2-icon).swal2-info.swal2-icon-show .swal2-icon-content{animation:swal2-animate-i-mark .8s}div:where(.swal2-icon).swal2-question{border-color:#c9dae1;color:#87adbd}div:where(.swal2-icon).swal2-question.swal2-icon-show{animation:swal2-animate-error-icon .5s}div:where(.swal2-icon).swal2-question.swal2-icon-show .swal2-icon-content{animation:swal2-animate-question-mark .8s}div:where(.swal2-icon).swal2-success{border-color:#a5dc86;color:#a5dc86}div:where(.swal2-icon).swal2-success [class^=swal2-success-circular-line]{position:absolute;width:3.75em;height:7.5em;transform:rotate(45deg);border-radius:50%}div:where(.swal2-icon).swal2-success [class^=swal2-success-circular-line][class$=left]{top:-0.4375em;left:-2.0635em;transform:rotate(-45deg);transform-origin:3.75em 3.75em;border-radius:7.5em 0 0 7.5em}div:where(.swal2-icon).swal2-success [class^=swal2-success-circular-line][class$=right]{top:-0.6875em;left:1.875em;transform:rotate(-45deg);transform-origin:0 3.75em;border-radius:0 7.5em 7.5em 0}div:where(.swal2-icon).swal2-success .swal2-success-ring{position:absolute;z-index:2;top:-0.25em;left:-0.25em;box-sizing:content-box;width:100%;height:100%;border:.25em solid rgba(165,220,134,.3);border-radius:50%}div:where(.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)}div:where(.swal2-icon).swal2-success [class^=swal2-success-line]{display:block;position:absolute;z-index:2;height:.3125em;border-radius:.125em;background-color:#a5dc86}div:where(.swal2-icon).swal2-success [class^=swal2-success-line][class$=tip]{top:2.875em;left:.8125em;width:1.5625em;transform:rotate(45deg)}div:where(.swal2-icon).swal2-success [class^=swal2-success-line][class$=long]{top:2.375em;right:.5em;width:2.9375em;transform:rotate(-45deg)}div:where(.swal2-icon).swal2-success.swal2-icon-show .swal2-success-line-tip{animation:swal2-animate-success-line-tip .75s}div:where(.swal2-icon).swal2-success.swal2-icon-show .swal2-success-line-long{animation:swal2-animate-success-line-long .75s}div:where(.swal2-icon).swal2-success.swal2-icon-show .swal2-success-circular-line-right{animation:swal2-rotate-success-circular-line 4.25s ease-in}[class^=swal2]{-webkit-tap-highlight-color:rgba(0,0,0,0)}.swal2-show{animation:swal2-show .3s}.swal2-hide{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}@keyframes swal2-toast-show{0%{transform:translateY(-0.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(0.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0deg)}}@keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@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:-0.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-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-show{0%{transform:scale(0.7)}45%{transform:scale(1.05)}80%{transform:scale(0.95)}100%{transform:scale(1)}}@keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(0.5);opacity:0}}@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:-0.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-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-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(0.4);opacity:0}50%{margin-top:1.625em;transform:scale(0.4);opacity:0}80%{margin-top:-0.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0deg);opacity:1}}@keyframes swal2-rotate-loading{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}@keyframes swal2-animate-question-mark{0%{transform:rotateY(-360deg)}100%{transform:rotateY(0)}}@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:rgba(0,0,0,0) !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:rgba(0,0,0,0);pointer-events:none}body.swal2-toast-shown .swal2-container.swal2-top{inset:0 auto auto 50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-top-end,body.swal2-toast-shown .swal2-container.swal2-top-right{inset:0 0 auto auto}body.swal2-toast-shown .swal2-container.swal2-top-start,body.swal2-toast-shown .swal2-container.swal2-top-left{inset:0 auto auto 0}body.swal2-toast-shown .swal2-container.swal2-center-start,body.swal2-toast-shown .swal2-container.swal2-center-left{inset:50% auto auto 0;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-center{inset:50% auto auto 50%;transform:translate(-50%, -50%)}body.swal2-toast-shown .swal2-container.swal2-center-end,body.swal2-toast-shown .swal2-container.swal2-center-right{inset:50% 0 auto auto;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-start,body.swal2-toast-shown .swal2-container.swal2-bottom-left{inset:auto auto 0 0}body.swal2-toast-shown .swal2-container.swal2-bottom{inset:auto auto 0 50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-end,body.swal2-toast-shown .swal2-container.swal2-bottom-right{inset:auto 0 0 auto}"); \ No newline at end of file diff --git a/resources/css/main.css b/resources/css/main.css new file mode 100644 index 00000000..afcfda0b --- /dev/null +++ b/resources/css/main.css @@ -0,0 +1,1233 @@ +/** +* Template Name: NiceAdmin +* Updated: Aug 30 2023 with Bootstrap v5.3.1 +* Template URL: https://bootstrapmade.com/nice-admin-bootstrap-admin-html-template/ +* Author: BootstrapMade.com +* License: https://bootstrapmade.com/license/ +*/ + +/*-------------------------------------------------------------- +# General +--------------------------------------------------------------*/ +:root { + scroll-behavior: smooth; + } + + body { + font-family: "Open Sans", sans-serif; + background: #f6f9ff; + color: #444444; + } + + a { + color: #4154f1; + text-decoration: none; + } + + a:hover { + color: #717ff5; + text-decoration: none; + } + + h1, + h2, + h3, + h4, + h5, + h6 { + font-family: "Nunito", sans-serif; + } + + /*-------------------------------------------------------------- + # Main + --------------------------------------------------------------*/ + #main { + margin-top: 60px; + padding: 20px 30px; + transition: all 0.3s; + } + + @media (max-width: 1199px) { + #main { + padding: 20px; + } + } + + /*-------------------------------------------------------------- + # Page Title + --------------------------------------------------------------*/ + .pagetitle { + margin-bottom: 10px; + } + + .pagetitle h1 { + font-size: 24px; + margin-bottom: 0; + font-weight: 600; + color: #012970; + } + + /*-------------------------------------------------------------- + # Back to top button + --------------------------------------------------------------*/ + .back-to-top { + position: fixed; + visibility: hidden; + opacity: 0; + right: 15px; + bottom: 15px; + z-index: 99999; + background: #4154f1; + width: 40px; + height: 40px; + border-radius: 4px; + transition: all 0.4s; + } + + .back-to-top i { + font-size: 24px; + color: #fff; + line-height: 0; + } + + .back-to-top:hover { + background: #6776f4; + color: #fff; + } + + .back-to-top.active { + visibility: visible; + opacity: 1; + } + + /*-------------------------------------------------------------- + # Override some default Bootstrap stylings + --------------------------------------------------------------*/ + /* Dropdown menus */ + .dropdown-menu { + border-radius: 4px; + padding: 10px 0; + animation-name: dropdown-animate; + animation-duration: 0.2s; + animation-fill-mode: both; + border: 0; + box-shadow: 0 5px 30px 0 rgba(82, 63, 105, 0.2); + } + + .dropdown-menu .dropdown-header, + .dropdown-menu .dropdown-footer { + text-align: center; + font-size: 15px; + padding: 10px 25px; + } + + .dropdown-menu .dropdown-footer a { + color: #444444; + text-decoration: underline; + } + + .dropdown-menu .dropdown-footer a:hover { + text-decoration: none; + } + + .dropdown-menu .dropdown-divider { + color: #a5c5fe; + margin: 0; + } + + .dropdown-menu .dropdown-item { + font-size: 14px; + padding: 10px 15px; + transition: 0.3s; + } + + .dropdown-menu .dropdown-item i { + margin-right: 10px; + font-size: 18px; + line-height: 0; + } + + .dropdown-menu .dropdown-item:hover { + background-color: #f6f9ff; + } + + @media (min-width: 768px) { + .dropdown-menu-arrow::before { + content: ""; + width: 13px; + height: 13px; + background: #fff; + position: absolute; + top: -7px; + right: 20px; + transform: rotate(45deg); + border-top: 1px solid #eaedf1; + border-left: 1px solid #eaedf1; + } + } + + @keyframes dropdown-animate { + 0% { + opacity: 0; + } + + 100% { + opacity: 1; + } + + 0% { + opacity: 0; + } + } + + /* Light Backgrounds */ + .bg-primary-light { + background-color: #cfe2ff; + border-color: #cfe2ff; + } + + .bg-secondary-light { + background-color: #e2e3e5; + border-color: #e2e3e5; + } + + .bg-success-light { + background-color: #d1e7dd; + border-color: #d1e7dd; + } + + .bg-danger-light { + background-color: #f8d7da; + border-color: #f8d7da; + } + + .bg-warning-light { + background-color: #fff3cd; + border-color: #fff3cd; + } + + .bg-info-light { + background-color: #cff4fc; + border-color: #cff4fc; + } + + .bg-dark-light { + background-color: #d3d3d4; + border-color: #d3d3d4; + } + + /* Card */ + .card { + margin-bottom: 30px; + border: none; + border-radius: 5px; + box-shadow: 0px 0 30px rgba(1, 41, 112, 0.1); + } + + .card-header, + .card-footer { + border-color: #ebeef4; + background-color: #fff; + color: #798eb3; + padding: 15px; + } + + .card-title { + padding: 20px 0 15px 0; + font-size: 18px; + font-weight: 500; + color: #012970; + font-family: "Poppins", sans-serif; + } + + .card-title span { + color: #899bbd; + font-size: 14px; + font-weight: 400; + } + + .card-body { + padding: 0 20px 20px 20px; + } + + .card-img-overlay { + background-color: rgba(255, 255, 255, 0.6); + } + + /* Alerts */ + .alert-heading { + font-weight: 500; + font-family: "Poppins", sans-serif; + font-size: 20px; + } + + /* Close Button */ + .btn-close { + background-size: 25%; + } + + .btn-close:focus { + outline: 0; + box-shadow: none; + } + + /* Accordion */ + .accordion-item { + border: 1px solid #ebeef4; + } + + .accordion-button:focus { + outline: 0; + box-shadow: none; + } + + .accordion-button:not(.collapsed) { + color: #012970; + background-color: #f6f9ff; + } + + .accordion-flush .accordion-button { + padding: 15px 0; + background: none; + border: 0; + } + + .accordion-flush .accordion-button:not(.collapsed) { + box-shadow: none; + color: #4154f1; + } + + .accordion-flush .accordion-body { + padding: 0 0 15px 0; + color: #3e4f6f; + font-size: 15px; + } + + /* Breadcrumbs */ + .breadcrumb { + font-size: 14px; + font-family: "Nunito", sans-serif; + color: #899bbd; + font-weight: 600; + } + + .breadcrumb a { + color: #899bbd; + transition: 0.3s; + } + + .breadcrumb a:hover { + color: #51678f; + } + + .breadcrumb .breadcrumb-item::before { + color: #899bbd; + } + + .breadcrumb .active { + color: #51678f; + font-weight: 600; + } + + /* Bordered Tabs */ + .nav-tabs-bordered { + border-bottom: 2px solid #ebeef4; + } + + .nav-tabs-bordered .nav-link { + margin-bottom: -2px; + border: none; + color: #2c384e; + } + + .nav-tabs-bordered .nav-link:hover, + .nav-tabs-bordered .nav-link:focus { + color: #4154f1; + } + + .nav-tabs-bordered .nav-link.active { + background-color: #fff; + color: #4154f1; + border-bottom: 2px solid #4154f1; + } + + /*-------------------------------------------------------------- + # Header + --------------------------------------------------------------*/ + .logo { + line-height: 1; + } + + @media (min-width: 1200px) { + .logo { + width: 280px; + } + } + + .logo img { + max-height: 26px; + margin-right: 6px; + } + + .logo span { + font-size: 26px; + font-weight: 700; + color: #012970; + font-family: "Nunito", sans-serif; + } + + .header { + transition: all 0.5s; + z-index: 997; + height: 60px; + box-shadow: 0px 2px 20px rgba(1, 41, 112, 0.1); + background-color: #fff; + padding-left: 20px; + /* Toggle Sidebar Button */ + /* Search Bar */ + } + + .header .toggle-sidebar-btn { + font-size: 32px; + padding-left: 10px; + cursor: pointer; + color: #012970; + } + + .header .search-bar { + min-width: 360px; + padding: 0 20px; + } + + @media (max-width: 1199px) { + .header .search-bar { + position: fixed; + top: 50px; + left: 0; + right: 0; + padding: 20px; + box-shadow: 0px 0px 15px 0px rgba(1, 41, 112, 0.1); + background: white; + z-index: 9999; + transition: 0.3s; + visibility: hidden; + opacity: 0; + } + + .header .search-bar-show { + top: 60px; + visibility: visible; + opacity: 1; + } + } + + .header .search-form { + width: 100%; + } + + .header .search-form input { + border: 0; + font-size: 14px; + color: #012970; + border: 1px solid rgba(1, 41, 112, 0.2); + padding: 7px 38px 7px 8px; + border-radius: 3px; + transition: 0.3s; + width: 100%; + } + + .header .search-form input:focus, + .header .search-form input:hover { + outline: none; + box-shadow: 0 0 10px 0 rgba(1, 41, 112, 0.15); + border: 1px solid rgba(1, 41, 112, 0.3); + } + + .header .search-form button { + border: 0; + padding: 0; + margin-left: -30px; + background: none; + } + + .header .search-form button i { + color: #012970; + } + + /*-------------------------------------------------------------- + # Header Nav + --------------------------------------------------------------*/ + .header-nav ul { + list-style: none; + } + + .header-nav>ul { + margin: 0; + padding: 0; + } + + .header-nav .nav-icon { + font-size: 22px; + color: #012970; + margin-right: 25px; + position: relative; + } + + .header-nav .nav-profile { + color: #012970; + } + + .header-nav .nav-profile img { + max-height: 36px; + } + + .header-nav .nav-profile span { + font-size: 14px; + font-weight: 600; + } + + .header-nav .badge-number { + position: absolute; + inset: -2px -5px auto auto; + font-weight: normal; + font-size: 12px; + padding: 3px 6px; + } + + .header-nav .notifications { + inset: 8px -15px auto auto !important; + } + + .header-nav .notifications .notification-item { + display: flex; + align-items: center; + padding: 15px 10px; + transition: 0.3s; + } + + .header-nav .notifications .notification-item i { + margin: 0 20px 0 10px; + font-size: 24px; + } + + .header-nav .notifications .notification-item h4 { + font-size: 16px; + font-weight: 600; + margin-bottom: 5px; + } + + .header-nav .notifications .notification-item p { + font-size: 13px; + margin-bottom: 3px; + color: #919191; + } + + .header-nav .notifications .notification-item:hover { + background-color: #f6f9ff; + } + + .header-nav .messages { + inset: 8px -15px auto auto !important; + } + + .header-nav .messages .message-item { + padding: 15px 10px; + transition: 0.3s; + } + + .header-nav .messages .message-item a { + display: flex; + } + + .header-nav .messages .message-item img { + margin: 0 20px 0 10px; + max-height: 40px; + } + + .header-nav .messages .message-item h4 { + font-size: 16px; + font-weight: 600; + margin-bottom: 5px; + color: #444444; + } + + .header-nav .messages .message-item p { + font-size: 13px; + margin-bottom: 3px; + color: #919191; + } + + .header-nav .messages .message-item:hover { + background-color: #f6f9ff; + } + + .header-nav .profile { + min-width: 240px; + padding-bottom: 0; + top: 8px !important; + } + + .header-nav .profile .dropdown-header h6 { + font-size: 18px; + margin-bottom: 0; + font-weight: 600; + color: #444444; + } + + .header-nav .profile .dropdown-header span { + font-size: 14px; + } + + .header-nav .profile .dropdown-item { + font-size: 14px; + padding: 10px 15px; + transition: 0.3s; + } + + .header-nav .profile .dropdown-item i { + margin-right: 10px; + font-size: 18px; + line-height: 0; + } + + .header-nav .profile .dropdown-item:hover { + background-color: #f6f9ff; + } + + /*-------------------------------------------------------------- + # Sidebar + --------------------------------------------------------------*/ + .sidebar { + position: fixed; + top: 60px; + left: 0; + bottom: 0; + width: 300px; + z-index: 996; + transition: all 0.3s; + padding: 20px; + overflow-y: auto; + scrollbar-width: thin; + scrollbar-color: #aab7cf transparent; + box-shadow: 0px 0px 20px rgba(1, 41, 112, 0.1); + background-color: #fff; + } + + @media (max-width: 1199px) { + .sidebar { + left: -300px; + } + } + + .sidebar::-webkit-scrollbar { + width: 5px; + height: 8px; + background-color: #fff; + } + + .sidebar::-webkit-scrollbar-thumb { + background-color: #aab7cf; + } + + @media (min-width: 1200px) { + + #main, + #footer { + margin-left: 300px; + } + } + + @media (max-width: 1199px) { + .toggle-sidebar .sidebar { + left: 0; + } + } + + @media (min-width: 1200px) { + + .toggle-sidebar #main, + .toggle-sidebar #footer { + margin-left: 0; + } + + .toggle-sidebar .sidebar { + left: -300px; + } + } + + .sidebar-nav { + padding: 0; + margin: 0; + list-style: none; + } + + .sidebar-nav li { + padding: 0; + margin: 0; + list-style: none; + } + + .sidebar-nav .nav-item { + margin-bottom: 5px; + } + + .sidebar-nav .nav-heading { + font-size: 11px; + text-transform: uppercase; + color: #899bbd; + font-weight: 600; + margin: 10px 0 5px 15px; + } + + .sidebar-nav .nav-link { + display: flex; + align-items: center; + font-size: 15px; + font-weight: 600; + color: #4154f1; + transition: 0.3; + background: #f6f9ff; + padding: 10px 15px; + border-radius: 4px; + } + + .sidebar-nav .nav-link i { + font-size: 16px; + margin-right: 10px; + color: #4154f1; + } + + .sidebar-nav .nav-link.collapsed { + color: #012970; + background: #fff; + } + + .sidebar-nav .nav-link.collapsed i { + color: #899bbd; + } + + .sidebar-nav .nav-link:hover { + color: #4154f1; + background: #f6f9ff; + } + + .sidebar-nav .nav-link:hover i { + color: #4154f1; + } + + .sidebar-nav .nav-link .bi-chevron-down { + margin-right: 0; + transition: transform 0.2s ease-in-out; + } + + .sidebar-nav .nav-link:not(.collapsed) .bi-chevron-down { + transform: rotate(180deg); + } + + .sidebar-nav .nav-content { + padding: 5px 0 0 0; + margin: 0; + list-style: none; + } + + .sidebar-nav .nav-content a { + display: flex; + align-items: center; + font-size: 14px; + font-weight: 600; + color: #012970; + transition: 0.3; + padding: 10px 0 10px 40px; + transition: 0.3s; + } + + .sidebar-nav .nav-content a i { + font-size: 6px; + margin-right: 8px; + line-height: 0; + border-radius: 50%; + } + + .sidebar-nav .nav-content a:hover, + .sidebar-nav .nav-content a.active { + color: #4154f1; + } + + .sidebar-nav .nav-content a.active i { + background-color: #4154f1; + } + + /*-------------------------------------------------------------- + # Dashboard + --------------------------------------------------------------*/ + /* Filter dropdown */ + .dashboard .filter { + position: absolute; + right: 0px; + top: 15px; + } + + .dashboard .filter .icon { + color: #aab7cf; + padding-right: 20px; + padding-bottom: 5px; + transition: 0.3s; + font-size: 16px; + } + + .dashboard .filter .icon:hover, + .dashboard .filter .icon:focus { + color: #4154f1; + } + + .dashboard .filter .dropdown-header { + padding: 8px 15px; + } + + .dashboard .filter .dropdown-header h6 { + text-transform: uppercase; + font-size: 14px; + font-weight: 600; + letter-spacing: 1px; + color: #aab7cf; + margin-bottom: 0; + padding: 0; + } + + .dashboard .filter .dropdown-item { + padding: 8px 15px; + } + + /* Info Cards */ + .dashboard .info-card { + padding-bottom: 10px; + } + + .dashboard .info-card h6 { + font-size: 28px; + color: #012970; + font-weight: 700; + margin: 0; + padding: 0; + } + + .dashboard .card-icon { + font-size: 32px; + line-height: 0; + width: 64px; + height: 64px; + flex-shrink: 0; + flex-grow: 0; + } + + .dashboard .sales-card .card-icon { + color: #4154f1; + background: #f6f6fe; + } + + .dashboard .revenue-card .card-icon { + color: #2eca6a; + background: #e0f8e9; + } + + .dashboard .customers-card .card-icon { + color: #ff771d; + background: #ffecdf; + } + + /* Activity */ + .dashboard .activity { + font-size: 14px; + } + + .dashboard .activity .activity-item .activite-label { + color: #888; + position: relative; + flex-shrink: 0; + flex-grow: 0; + min-width: 64px; + } + + .dashboard .activity .activity-item .activite-label::before { + content: ""; + position: absolute; + right: -11px; + width: 4px; + top: 0; + bottom: 0; + background-color: #eceefe; + } + + .dashboard .activity .activity-item .activity-badge { + margin-top: 3px; + z-index: 1; + font-size: 11px; + line-height: 0; + border-radius: 50%; + flex-shrink: 0; + border: 3px solid #fff; + flex-grow: 0; + } + + .dashboard .activity .activity-item .activity-content { + padding-left: 10px; + padding-bottom: 20px; + } + + .dashboard .activity .activity-item:first-child .activite-label::before { + top: 5px; + } + + .dashboard .activity .activity-item:last-child .activity-content { + padding-bottom: 0; + } + + /* News & Updates */ + .dashboard .news .post-item+.post-item { + margin-top: 15px; + } + + .dashboard .news img { + width: 80px; + float: left; + border-radius: 5px; + } + + .dashboard .news h4 { + font-size: 15px; + margin-left: 95px; + font-weight: bold; + margin-bottom: 5px; + } + + .dashboard .news h4 a { + color: #012970; + transition: 0.3s; + } + + .dashboard .news h4 a:hover { + color: #4154f1; + } + + .dashboard .news p { + font-size: 14px; + color: #777777; + margin-left: 95px; + } + + /* Recent Sales */ + .dashboard .recent-sales { + font-size: 14px; + } + + .dashboard .recent-sales .table thead { + background: #f6f6fe; + } + + .dashboard .recent-sales .table thead th { + border: 0; + } + + .dashboard .recent-sales .dataTable-top { + padding: 0 0 10px 0; + } + + .dashboard .recent-sales .dataTable-bottom { + padding: 10px 0 0 0; + } + + /* Top Selling */ + .dashboard .top-selling { + font-size: 14px; + } + + .dashboard .top-selling .table thead { + background: #f6f6fe; + } + + .dashboard .top-selling .table thead th { + border: 0; + } + + .dashboard .top-selling .table tbody td { + vertical-align: middle; + } + + .dashboard .top-selling img { + border-radius: 5px; + max-width: 60px; + } + + /*-------------------------------------------------------------- + # Icons list page + --------------------------------------------------------------*/ + .iconslist { + display: grid; + max-width: 100%; + grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); + gap: 1.25rem; + padding-top: 15px; + } + + .iconslist .icon { + background-color: #fff; + border-radius: 0.25rem; + text-align: center; + color: #012970; + padding: 15px 0; + } + + .iconslist i { + margin: 0.25rem; + font-size: 2.5rem; + } + + .iconslist .label { + font-family: var(--bs-font-monospace); + display: inline-block; + width: 100%; + overflow: hidden; + padding: 0.25rem; + font-size: 12px; + text-overflow: ellipsis; + white-space: nowrap; + color: #666; + } + + /*-------------------------------------------------------------- + # Profie Page + --------------------------------------------------------------*/ + .profile .profile-card img { + max-width: 120px; + } + + .profile .profile-card h2 { + font-size: 24px; + font-weight: 700; + color: #2c384e; + margin: 10px 0 0 0; + } + + .profile .profile-card h3 { + font-size: 18px; + } + + .profile .profile-card .social-links a { + font-size: 20px; + display: inline-block; + color: rgba(1, 41, 112, 0.5); + line-height: 0; + margin-right: 10px; + transition: 0.3s; + } + + .profile .profile-card .social-links a:hover { + color: #012970; + } + + .profile .profile-overview .row { + margin-bottom: 20px; + font-size: 15px; + } + + .profile .profile-overview .card-title { + color: #012970; + } + + .profile .profile-overview .label { + font-weight: 600; + color: rgba(1, 41, 112, 0.6); + } + + .profile .profile-edit label { + font-weight: 600; + color: rgba(1, 41, 112, 0.6); + } + + .profile .profile-edit img { + max-width: 120px; + } + + /*-------------------------------------------------------------- + # F.A.Q Page + --------------------------------------------------------------*/ + .faq .basic h6 { + font-size: 18px; + font-weight: 600; + color: #4154f1; + } + + .faq .basic p { + color: #6980aa; + } + + /*-------------------------------------------------------------- + # Contact + --------------------------------------------------------------*/ + .contact .info-box { + padding: 28px 30px; + } + + .contact .info-box i { + font-size: 38px; + line-height: 0; + color: #4154f1; + } + + .contact .info-box h3 { + font-size: 20px; + color: #012970; + font-weight: 700; + margin: 20px 0 10px 0; + } + + .contact .info-box p { + padding: 0; + line-height: 24px; + font-size: 14px; + margin-bottom: 0; + } + + .contact .php-email-form .error-message { + display: none; + color: #fff; + background: #ed3c0d; + text-align: left; + padding: 15px; + margin-bottom: 24px; + font-weight: 600; + } + + .contact .php-email-form .sent-message { + display: none; + color: #fff; + background: #18d26e; + text-align: center; + padding: 15px; + margin-bottom: 24px; + font-weight: 600; + } + + .contact .php-email-form .loading { + display: none; + background: #fff; + text-align: center; + padding: 15px; + margin-bottom: 24px; + } + + .contact .php-email-form .loading:before { + content: ""; + display: inline-block; + border-radius: 50%; + width: 24px; + height: 24px; + margin: 0 10px -6px 0; + border: 3px solid #18d26e; + border-top-color: #eee; + animation: animate-loading 1s linear infinite; + } + + .contact .php-email-form input, + .contact .php-email-form textarea { + border-radius: 0; + box-shadow: none; + font-size: 14px; + border-radius: 0; + } + + .contact .php-email-form input:focus, + .contact .php-email-form textarea:focus { + border-color: #4154f1; + } + + .contact .php-email-form input { + padding: 10px 15px; + } + + .contact .php-email-form textarea { + padding: 12px 15px; + } + + .contact .php-email-form button[type=submit] { + background: #4154f1; + border: 0; + padding: 10px 30px; + color: #fff; + transition: 0.4s; + border-radius: 4px; + } + + .contact .php-email-form button[type=submit]:hover { + background: #5969f3; + } + + @keyframes animate-loading { + 0% { + transform: rotate(0deg); + } + + 100% { + transform: rotate(360deg); + } + } + + /*-------------------------------------------------------------- + # Error 404 + --------------------------------------------------------------*/ + .error-404 { + padding: 30px; + } + + .error-404 h1 { + font-size: 180px; + font-weight: 700; + color: #4154f1; + margin-bottom: 0; + line-height: 150px; + } + + .error-404 h2 { + font-size: 24px; + font-weight: 700; + color: #012970; + margin-bottom: 30px; + } + + .error-404 .btn { + background: #51678f; + color: #fff; + padding: 8px 30px; + } + + .error-404 .btn:hover { + background: #3e4f6f; + } + + @media (min-width: 992px) { + .error-404 img { + max-width: 50%; + } + } + + /*-------------------------------------------------------------- + # Footer + --------------------------------------------------------------*/ + .footer { + padding: 20px 0; + font-size: 14px; + transition: all 0.3s; + border-top: 1px solid #cddfff; + } + + .footer .copyright { + text-align: center; + color: #012970; + } + + .footer .credits { + padding-top: 5px; + text-align: center; + font-size: 13px; + color: #012970; + } \ No newline at end of file diff --git a/resources/views/index.blade.php b/resources/views/index.blade.php index 46b12a1d..e5c70b5c 100644 --- a/resources/views/index.blade.php +++ b/resources/views/index.blade.php @@ -103,7 +103,7 @@ - +
    @@ -137,15 +137,10 @@
    Diterima
    - - {{ $HistoryRefundUser['status'] }} {{ $HistoryRefundUser['uploadBukti'] }} - {{-- Detail --}} - {{-- - --}} + @endforeach diff --git a/resources/views/layout/footer.blade.php b/resources/views/layout/footer.blade.php deleted file mode 100644 index fbbd0cd5..00000000 --- a/resources/views/layout/footer.blade.php +++ /dev/null @@ -1,8 +0,0 @@ -
    - - -
    diff --git a/resources/views/layout/header.blade.php b/resources/views/layout/header.blade.php deleted file mode 100644 index 6c4e76e4..00000000 --- a/resources/views/layout/header.blade.php +++ /dev/null @@ -1,226 +0,0 @@ - - diff --git a/resources/views/layout/main.blade.php b/resources/views/layout/main.blade.php deleted file mode 100644 index 05f47a21..00000000 --- a/resources/views/layout/main.blade.php +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - - REKBER - - - - - - - - - - - - - - - - - - - - - - -
    - @include('layout.header') -
    - -
    - @include('layout.sidebar') - @yield('content') -
    - -
    - @include('layout.footer') -
    - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/resources/views/layout/sidebar.blade.php b/resources/views/layout/sidebar.blade.php deleted file mode 100644 index 8786723c..00000000 --- a/resources/views/layout/sidebar.blade.php +++ /dev/null @@ -1,35 +0,0 @@ - diff --git a/resources/views/refund/detail-refund.blade.php b/resources/views/refund/detail-refund.blade.php deleted file mode 100644 index aeaecfaa..00000000 --- a/resources/views/refund/detail-refund.blade.php +++ /dev/null @@ -1,39 +0,0 @@ -@extends('layout.main') - -@section('content') -
    -
    -
    -
    -
    -

    Detail Refund

    -
    - @foreach ($detail_refund as $DetailRefund) -
    -
    -

    ID Order: {{ $DetailRefund['orderId'] }}

    -

    Customer Name: {{ $DetailRefund['customer'] }}

    -

    Seller Name: {{ $DetailRefund['seller'] }}

    -

    Total: {{ $DetailRefund['total'] }}

    -

    Due Date: {{ $DetailRefund['date'] }}

    -

    Reason Complaint: {{ $DetailRefund['complaint'] }}

    -

    Image/Video:

    - Return Image

    - - - -
    - Accept - Decline -
    - -

    -
    - @endforeach - - -
    -
    -
    -
    -@endsection diff --git a/resources/views/refund/history-refund.blade.php b/resources/views/refund/history-refund.blade.php deleted file mode 100644 index f01057c5..00000000 --- a/resources/views/refund/history-refund.blade.php +++ /dev/null @@ -1,43 +0,0 @@ -@extends('layout.main') -@section('content') -
    -
    -
    -
    -
    -

    History Refund

    -
    -
    -
    - - - - - - - - - - - @foreach ($history_refund as $HistoryRefund) - - - - - - - - - - @endforeach - -
    Order IDCustomerSellerTotalDue DateStatusAction
    {{ $HistoryRefund['orderId'] }}{{ $HistoryRefund['customer'] }}{{ $HistoryRefund['seller'] }}{{ $HistoryRefund['total'] }}{{ $HistoryRefund['date'] }} -
    {{ $HistoryRefund['status'] }}
    -
    - Detail -
    -
    -
    -
    -
    - @endsection diff --git a/resources/views/refund/next-detail-refund.blade.php b/resources/views/refund/next-detail-refund.blade.php deleted file mode 100644 index 69c0747e..00000000 --- a/resources/views/refund/next-detail-refund.blade.php +++ /dev/null @@ -1,326 +0,0 @@ -@extends('layout.main') -@section('content') -
    -
    -
    -
    -
    -
    -

    Tabel Manajemen Petugas

    - -
    -
    -
    -
    - - - - - - - - - - - - - - -
    NOUsernameEmailAlamatNo.TeleponAksi
    -
    -
    -
    -
    -
    -
    - - @push('css') - - @endpush -@endsection diff --git a/resources/views/transaction/Detail_History_Transaction.blade.php b/resources/views/transaction/Detail_History_Transaction.blade.php deleted file mode 100644 index 34f40cd8..00000000 --- a/resources/views/transaction/Detail_History_Transaction.blade.php +++ /dev/null @@ -1,25 +0,0 @@ -@extends('layout.main') -@section('content') - @foreach ($detail_transaction as $detail_transactions) -
    -
    -
    -

    Tracking Information

    -
    -

    Tracking Number: {{ $detail_transactions['tracking_number'] }}

    -

    Order ID: {{ $detail_transactions['orderId'] }}

    -

    Status: {{ $detail_transactions['status'] }}

    -

    Estimated: {{ $detail_transactions['estimated'] }}

    -
    -

    Tracking Details

    -
      -
    • {{ $detail_transactions['tracking_detail1'] }}
    • -
    • {{ $detail_transactions['tracking_detail2'] }}
    • -
    • {{ $detail_transactions['tracking_detail3'] }}
    • -
    -
    -
    -
    - @endforeach -@endsection diff --git a/resources/views/transaction/History_Transaction.blade.php b/resources/views/transaction/History_Transaction.blade.php deleted file mode 100644 index 48f11466..00000000 --- a/resources/views/transaction/History_Transaction.blade.php +++ /dev/null @@ -1,44 +0,0 @@ -@extends('layout.main') -@section('content') -
    -
    -
    -
    -
    -

    History Transaction

    -
    -
    -
    - - - - - - - - - - - @foreach ($transaction as $transactions) - - - - - - - - - - - @endforeach - -
    Order IDCustomerSellerTotalDue DateStatusAction
    {{ $transactions['orderId'] }}{{ $transactions['customer'] }}{{ $transactions['seller'] }}{{ $transactions['total'] }}{{ $transactions['date'] }} -
    {{ $transactions['status'] }}
    -
    - Detail -
    -
    -
    -
    -
    - @endsection diff --git a/resources/views/transaction/List_Transaction.blade.php b/resources/views/transaction/List_Transaction.blade.php deleted file mode 100644 index 2554bab1..00000000 --- a/resources/views/transaction/List_Transaction.blade.php +++ /dev/null @@ -1,64 +0,0 @@ -@extends('layout.main') - -@section('content') -
    -
    -
    -
    -
    -

    List Transaction

    -
    -
    -
    - Show: - - entries -
    -
    -
    Search:
    - -
    -
    -
    -
    - - - - - - - - - - - @foreach ($transaction as $transactions) - - - - - - - - - - @endforeach -
    Order IDCustomerSellerTotalDue DateStatusAction
    {{ $transactions['orderId'] }}{{ $transactions['customer'] }}{{ $transactions['seller'] }}{{ $transactions['total'] }}{{ $transactions['date'] }} -
    {{ $transactions['status'] }}
    -
    -
    - Edit - Delete -
    -
    -
    -
    -
    -
    -
    -
    -@endsection diff --git a/resources/views/user/contact/add-contact.blade.php b/resources/views/user/contact/add-contact.blade.php index c4232165..059e990b 100644 --- a/resources/views/user/contact/add-contact.blade.php +++ b/resources/views/user/contact/add-contact.blade.php @@ -15,7 +15,8 @@
    diff --git a/resources/views/user/layout/header.blade.php b/resources/views/user/layout/header.blade.php index 6c4e76e4..e39bb54b 100644 --- a/resources/views/user/layout/header.blade.php +++ b/resources/views/user/layout/header.blade.php @@ -207,15 +207,15 @@
    diff --git a/resources/views/user/transaction/Pembeli/detail-transaction.blade.php b/resources/views/user/transaction/Pembeli/detail-transaction.blade.php index 3c9ff8b3..cb6060c3 100644 --- a/resources/views/user/transaction/Pembeli/detail-transaction.blade.php +++ b/resources/views/user/transaction/Pembeli/detail-transaction.blade.php @@ -25,7 +25,8 @@
    - + +
    @@ -36,7 +37,8 @@
    - + +
    @@ -47,7 +49,8 @@
    - + +
    @@ -58,7 +61,8 @@
    - + +
    @@ -69,7 +73,8 @@
    - + +
    @@ -82,9 +87,158 @@
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + Billed To:
    + npannisa
    + 1234 Main
    + Apt. 4B
    + Depok City, Indonesia +
    +
    +
    +
    + Shipped To:
    + Jilhan Haura
    + 12345 Main
    + Apt. 5B
    + Bogor Barat, Indonesia +
    +
    +
    +
    +
    +
    + Payment Method:
    + Visa ending **** 4242
    + npannisa@gmail.com +
    +
    +
    +
    + Order Date:
    + September 19, 2023

    +
    +
    +
    +
    +
    - {{-- awal modal transaksi --}} - {{-- +
    +
    +
    +
    +
    +
    + @endsection + + + + +{{--
    +
    +
    + @foreach ($TransactionUser as $HistoryTransaction) --}} +{{--
    +
    + Order Details + +
    +
    +
    + Oder ID + {{ $HistoryTransaction['orderId'] }} +
    +
    + Customer + {{ $HistoryTransaction['Customer'] }} +
    +
    + Seller + {{ $HistoryTransaction['seller'] }} +
    +
    + Total + {{ $HistoryTransaction['total'] }} +
    +
    + Due Date + {{ $HistoryTransaction['dueDate'] }} +
    +
    + Status + {{ $HistoryTransaction['status'] }} +
    +
    --}} + +{{-- @endforeach --}} + + + +{{-- Pindahan modal --}} +{{-- awal modal transaksi --}} +{{-- --}} -{{-- akhir modal transaksi --}} - -
    -
    -
    -
    -

    Transaction Detail

    -
    - @foreach ($TransactionUser as $HistoryTransaction) -
    -
    - Order Details - -
    -
    -
    - Oder ID - {{ $HistoryTransaction['orderId'] }} -
    -
    - Customer - {{ $HistoryTransaction['Customer'] }} -
    -
    - Seller - {{ $HistoryTransaction['seller'] }} -
    -
    - Total - {{ $HistoryTransaction['total'] }} -
    -
    - Due Date - {{ $HistoryTransaction['dueDate'] }} -
    -
    - Status - {{ $HistoryTransaction['status'] }} -
    -
    - @endforeach -
    -
    -
    - @endsection \ No newline at end of file diff --git a/resources/views/user/transaction/Pembeli/invoice-transaction.blade.php b/resources/views/user/transaction/Pembeli/invoice-transaction.blade.php new file mode 100644 index 00000000..58db9070 --- /dev/null +++ b/resources/views/user/transaction/Pembeli/invoice-transaction.blade.php @@ -0,0 +1,129 @@ +@extends('user.layout.main') +@section('content') +
    +
    +
    +

    Invoice

    +
    + + + + +
    +
    + +
    +
    +
    +
    +
    +
    +

    Invoice

    +
    Order #NVI-1234
    +
    +
    +
    +
    +
    + Billed To:
    + npannisa
    + 1234 Main
    + Apt. 4B
    + Depok City, Indonesia +
    +
    +
    +
    + Shipped To:
    + Jilhan Haura
    + 12345 Main
    + Apt. 5B
    + Bogor Barat, Indonesia +
    +
    +
    +
    +
    +
    + Payment Method:
    + Visa ending **** 4242
    + npannisa@gmail.com +
    +
    +
    +
    + Order Date:
    + September 19, 2023

    +
    +
    +
    +
    +
    + +
    +
    +
    Order Summary
    +

    All items here cannot be deleted.

    +
    + + + + + + + + + + + + + + + +
    #ItemPriceQuantityTotals
    1Ayam Warna WarniRp. 50.000.0001Rp. 50.000.000
    +
    +
    +
    +
    Payment Method
    +

    The payment method that we provide is to make it easier for + you to pay invoices.

    +
    + visa + jcb + mastercard + paypal +
    +
    +
    +
    +
    Subtotal
    +
    Rp.670.000.000
    +
    +
    +
    Shipping
    +
    Rp.15.000
    +
    +
    +
    +
    Total
    +
    Rp.6715.000.000
    +
    +
    +
    +
    +
    +
    +
    +
    + + +
    +
    +
    +
    +
    +@endsection diff --git a/resources/views/user/transaction/Pembeli/new-transaction.blade.php b/resources/views/user/transaction/Pembeli/new-transaction.blade.php index 1b98ae0b..75d2800d 100644 --- a/resources/views/user/transaction/Pembeli/new-transaction.blade.php +++ b/resources/views/user/transaction/Pembeli/new-transaction.blade.php @@ -6,7 +6,8 @@
    -
    +

    Form Transaksi

    @@ -50,7 +51,7 @@ Submit
    - +
    diff --git a/resources/views/user/transaction/Pembeli/refund-transaction.blade.php b/resources/views/user/transaction/Pembeli/refund-transaction.blade.php index c68b1b0c..c31f9009 100644 --- a/resources/views/user/transaction/Pembeli/refund-transaction.blade.php +++ b/resources/views/user/transaction/Pembeli/refund-transaction.blade.php @@ -7,7 +7,8 @@
    -
    +

    Form Refund Pesanan

    diff --git a/resources/views/user/transaction/Pembeli/transaction-pembeli.blade.php b/resources/views/user/transaction/Pembeli/transaction-pembeli.blade.php index 4126a2cd..c6705c13 100644 --- a/resources/views/user/transaction/Pembeli/transaction-pembeli.blade.php +++ b/resources/views/user/transaction/Pembeli/transaction-pembeli.blade.php @@ -3,7 +3,8 @@
    - {{--

    Pembeli

    --}} + +
    @@ -13,11 +14,10 @@
    -
    -

    Welcome! npannisa

    +

    Welcome! npannisa

    How Are You Today?

    @@ -28,9 +28,7 @@ - {{--
    - -
    --}} +
    @@ -70,6 +68,8 @@ href="/detail-transaction">Detail
  • Refund
  • + {{--
  • Bayar
  • --}}
  • Bayar
  • - + +
    @@ -27,7 +28,8 @@
    - + +
    @@ -38,7 +40,8 @@
    - + +
    @@ -49,7 +52,8 @@
    - + +
    @@ -60,7 +64,8 @@
    - + +
    diff --git a/resources/views/user/transaction/Penjual/transaction-penjual.blade.php b/resources/views/user/transaction/Penjual/transaction-penjual.blade.php index 3dc9fd7a..ca07aa51 100644 --- a/resources/views/user/transaction/Penjual/transaction-penjual.blade.php +++ b/resources/views/user/transaction/Penjual/transaction-penjual.blade.php @@ -3,7 +3,7 @@
    -

    Penjualan

    +
    +
    +
    +
    +
    +

    Welcome to the Rekber Aplication

    +

    Selamat Datang npannisa!

    +
    +
    +
    diff --git a/resources/views/vendor/sweetalert/alert.blade.php b/resources/views/vendor/sweetalert/alert.blade.php new file mode 100644 index 00000000..2ce4c93d --- /dev/null +++ b/resources/views/vendor/sweetalert/alert.blade.php @@ -0,0 +1,39 @@ +@if (Session::has('alert.config') || Session::has('alert.delete')) + @if (config('sweetalert.animation.enable')) + + @endif + + @if (config('sweetalert.theme') != 'default') + + @endif + + @if (config('sweetalert.alwaysLoadJS') === false && config('sweetalert.neverLoadJS') === false) + + @endif + +@endif diff --git a/routes/web.php b/routes/web.php index c24dd60d..a1d37dcb 100644 --- a/routes/web.php +++ b/routes/web.php @@ -1,8 +1,6 @@ name('refund/detail-refund/refund.accept'); -Route::get('/refund-decline/{id}', 'ReturnItemController@declineRefund')->name('refund/detail-refund/refund.decline'); - // dashboard Route::get('/welcome', function () { @@ -36,18 +31,6 @@ Route::get('/', function () { }); -// Route::get('/dashboard', function(){ -// return view('dashboard.index'); -// })-> middleware('auth'); - - -// Route::get('/', function () { -// return view('user.dashboard.index',[ -// 'name'=>'npannisa', -// "transaction"=>transaction::allTransactions() -// ]); -// }); - // contact Route::get('/contact', function () { return view('user/contact/contact',[ @@ -56,15 +39,6 @@ Route::get('/contact', function () { ]); }); -// Route::get('/detail-contact', function () { -// return view('user/contact/detail-contact',[ -// 'name' => "npannisa", -// "contacts"=>ContactUser::ContactUser(), -// ]); -// }); - - - // refund Route::get('/refund', function () { return view('user/refund/refund',[ @@ -101,7 +75,14 @@ Route::get('/refund-transaction', function () { Route::get('/new-transaction', function () { return view('user/transaction/Pembeli/new-transaction',[ 'name'=>'npannisa', - "transaction"=>transaction::allTransactions() + "TransactionUser"=>TransactionUser::HistoryTransaction() + ]); +}); + +Route::get('/invoice-transaction', function () { + return view('user/transaction/Pembeli/invoice-transaction',[ + 'name'=>'npannisa', + "TransactionUser"=>TransactionUser::HistoryTransaction() ]); }); @@ -112,13 +93,12 @@ Route::get('/penjual', function () { ]); }); -// Route::get('/penjual', function () { -// return view('user/transaction/Penjual/tracking',[ -// 'name'=>'npannisa', -// "TransactionUser"=>TransactionUser::HistoryTransaction() -// ]); -// }); - +// profile +Route::get('/profile', function () { + return view('user/profile/index',[ + 'name'=>'npannisa', + ]); +});