Work on incomes & expanse
This commit is contained in:
32
app/Console/Commands/page.php
Normal file
32
app/Console/Commands/page.php
Normal file
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
|
||||
namespace App\Console\Commands;
|
||||
|
||||
use Illuminate\Console\Command;
|
||||
|
||||
class page extends Command
|
||||
{
|
||||
/**
|
||||
* The name and signature of the console command.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $signature = 'page:new {name}';
|
||||
|
||||
/**
|
||||
* The console command description.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $description = 'Create Inertia page folder with .vue and .scss files';
|
||||
|
||||
/**
|
||||
* Execute the console command.
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
shell_exec('mkdir '.getcwd().'\resources\js\Pages\\'.$this->argument('name'));
|
||||
shell_exec('echo. > '.getcwd().'\resources\js\Pages\\'.$this->argument('name').'\\'.strtolower($this->argument('name')).'.vue');
|
||||
shell_exec('echo. > '.getcwd().'\resources\js\Pages\\'.$this->argument('name').'\\'.strtolower($this->argument('name')).'.scss');
|
||||
}
|
||||
}
|
||||
43
app/Http/Controllers/TransactionsController.php
Normal file
43
app/Http/Controllers/TransactionsController.php
Normal file
@@ -0,0 +1,43 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Models\Income;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Inertia\Inertia;
|
||||
|
||||
class TransactionsController extends Controller
|
||||
{
|
||||
public $table = 'incomes';
|
||||
|
||||
public function index(){
|
||||
|
||||
$query = $this->queryBuilder();
|
||||
$data['incomes']['columns'] = collect($query->columns)->map(function($item){
|
||||
return ucfirst(substr($item, strrpos($item, '.')+1));
|
||||
});
|
||||
$data['incomes']['data'] = $query->get();
|
||||
return Inertia::render('Transactions/index', $data);
|
||||
}
|
||||
|
||||
|
||||
private function queryBuilder(){
|
||||
$query = DB::table($this->table)
|
||||
->select([
|
||||
// 'users.account',
|
||||
// 'users.role',
|
||||
// 'users.email',
|
||||
'incomes.amount',
|
||||
'incomes.description',
|
||||
'incomes.date',
|
||||
'type_incomes.label'
|
||||
])
|
||||
->join('users', 'users.id', 'incomes.id_user')
|
||||
->join('type_incomes', 'type_incomes.id', 'incomes.id_type_income')
|
||||
;
|
||||
|
||||
return $query;
|
||||
}
|
||||
}
|
||||
@@ -9,6 +9,9 @@ use Inertia\Inertia;
|
||||
|
||||
class UserController extends Controller
|
||||
{
|
||||
/**
|
||||
* Use to login a user
|
||||
*/
|
||||
public function login(Request $request){
|
||||
$credentials = $request->validate([
|
||||
'email' => ['required', 'email'],
|
||||
@@ -19,7 +22,7 @@ class UserController extends Controller
|
||||
|
||||
return redirect()->intended('/');
|
||||
}
|
||||
return redirect()->back()->withErrors([
|
||||
return back()->withErrors([
|
||||
'message' => 'The provided credentials do not match our records.',
|
||||
]);
|
||||
}
|
||||
|
||||
@@ -42,6 +42,9 @@ class HandleInertiaRequests extends Middleware
|
||||
'message' => fn () => $request->session()->get('message')
|
||||
],
|
||||
'appName' => config('app.name'),
|
||||
'auth.user' => fn () => $request->user()
|
||||
? $request->user()->only('id', 'name', 'email', 'role', 'account')
|
||||
: null,
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
28
database/factories/IncomeFactory.php
Normal file
28
database/factories/IncomeFactory.php
Normal file
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
namespace Database\Factories;
|
||||
|
||||
use Illuminate\Database\Eloquent\Factories\Factory;
|
||||
use Illuminate\Support\Str;
|
||||
|
||||
/**
|
||||
* @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\Income>
|
||||
*/
|
||||
class IncomeFactory extends Factory
|
||||
{
|
||||
/**
|
||||
* Define the model's default state.
|
||||
*
|
||||
* @return array<string, mixed>
|
||||
*/
|
||||
public function definition(): array
|
||||
{
|
||||
return [
|
||||
'id_user' => 1,
|
||||
'id_type_income' => 1,
|
||||
'amount' => fake()->randomFloat(),
|
||||
'description' => Str::random(90),
|
||||
'date' => fake()->date(),
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -4,9 +4,8 @@ namespace Database\Seeders;
|
||||
|
||||
// use Illuminate\Database\Console\Seeds\WithoutModelEvents;
|
||||
|
||||
use App\Models\User;
|
||||
use App\Models\Income;
|
||||
use Illuminate\Database\Seeder;
|
||||
use Illuminate\Support\Facades\Hash;
|
||||
|
||||
class DatabaseSeeder extends Seeder
|
||||
{
|
||||
@@ -15,13 +14,10 @@ class DatabaseSeeder extends Seeder
|
||||
*/
|
||||
public function run(): void
|
||||
{
|
||||
|
||||
User::create([
|
||||
'name' => 'Clément',
|
||||
'email' => 'clement@clement-turlure.fr',
|
||||
'password' => Hash::make('wo37oq88&*'),
|
||||
'role' => 'admin',
|
||||
$this->call([
|
||||
UserSeeder::class,
|
||||
TypeIncomeSeeder::class,
|
||||
IncomeSeeder::class,
|
||||
]);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
20
database/seeders/IncomeSeeder.php
Normal file
20
database/seeders/IncomeSeeder.php
Normal file
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
|
||||
namespace Database\Seeders;
|
||||
|
||||
use App\Models\Income;
|
||||
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
|
||||
use Illuminate\Database\Seeder;
|
||||
|
||||
class IncomeSeeder extends Seeder
|
||||
{
|
||||
/**
|
||||
* Run the database seeds.
|
||||
*/
|
||||
public function run(): void
|
||||
{
|
||||
Income::factory()
|
||||
->count(50)
|
||||
->create();
|
||||
}
|
||||
}
|
||||
20
database/seeders/TypeIncomeSeeder.php
Normal file
20
database/seeders/TypeIncomeSeeder.php
Normal file
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
|
||||
namespace Database\Seeders;
|
||||
|
||||
use App\Models\TypeIncome;
|
||||
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
|
||||
use Illuminate\Database\Seeder;
|
||||
|
||||
class TypeIncomeSeeder extends Seeder
|
||||
{
|
||||
/**
|
||||
* Run the database seeds.
|
||||
*/
|
||||
public function run(): void
|
||||
{
|
||||
TypeIncome::create([
|
||||
'label' => 'test',
|
||||
]);
|
||||
}
|
||||
}
|
||||
25
database/seeders/UserSeeder.php
Normal file
25
database/seeders/UserSeeder.php
Normal file
@@ -0,0 +1,25 @@
|
||||
<?php
|
||||
|
||||
namespace Database\Seeders;
|
||||
|
||||
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
|
||||
use Illuminate\Database\Seeder;
|
||||
|
||||
use Illuminate\Support\Facades\Hash;
|
||||
use App\Models\User;
|
||||
|
||||
class UserSeeder extends Seeder
|
||||
{
|
||||
/**
|
||||
* Run the database seeds.
|
||||
*/
|
||||
public function run(): void
|
||||
{
|
||||
User::create([
|
||||
'name' => 'Clément',
|
||||
'email' => 'clement@clement-turlure.fr',
|
||||
'password' => Hash::make('wo37oq88&*'),
|
||||
'role' => 'admin',
|
||||
]);
|
||||
}
|
||||
}
|
||||
8453
node_modules/.vite/deps/@inertiajs_inertia-vue3.js
generated
vendored
Normal file
8453
node_modules/.vite/deps/@inertiajs_inertia-vue3.js
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
7
node_modules/.vite/deps/@inertiajs_inertia-vue3.js.map
generated
vendored
Normal file
7
node_modules/.vite/deps/@inertiajs_inertia-vue3.js.map
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
978
node_modules/.vite/deps/@inertiajs_vue3.js
generated
vendored
Normal file
978
node_modules/.vite/deps/@inertiajs_vue3.js
generated
vendored
Normal file
@@ -0,0 +1,978 @@
|
||||
import {
|
||||
axios_default
|
||||
} from "./chunk-MJN6PGBK.js";
|
||||
import {
|
||||
require_cjs,
|
||||
require_lib,
|
||||
require_lodash,
|
||||
require_lodash2
|
||||
} from "./chunk-Y3GWUAMM.js";
|
||||
import "./chunk-SA4QXAJ3.js";
|
||||
import {
|
||||
computed,
|
||||
createSSRApp,
|
||||
defineComponent,
|
||||
h,
|
||||
isReactive,
|
||||
markRaw,
|
||||
reactive,
|
||||
ref,
|
||||
shallowRef,
|
||||
watch
|
||||
} from "./chunk-XSQZ24V4.js";
|
||||
import {
|
||||
__commonJS,
|
||||
__toESM
|
||||
} from "./chunk-CEQRFMJQ.js";
|
||||
|
||||
// node_modules/nprogress/nprogress.js
|
||||
var require_nprogress = __commonJS({
|
||||
"node_modules/nprogress/nprogress.js"(exports, module) {
|
||||
(function(root, factory) {
|
||||
if (typeof define === "function" && define.amd) {
|
||||
define(factory);
|
||||
} else if (typeof exports === "object") {
|
||||
module.exports = factory();
|
||||
} else {
|
||||
root.NProgress = factory();
|
||||
}
|
||||
})(exports, function() {
|
||||
var NProgress = {};
|
||||
NProgress.version = "0.2.0";
|
||||
var Settings = NProgress.settings = {
|
||||
minimum: 0.08,
|
||||
easing: "ease",
|
||||
positionUsing: "",
|
||||
speed: 200,
|
||||
trickle: true,
|
||||
trickleRate: 0.02,
|
||||
trickleSpeed: 800,
|
||||
showSpinner: true,
|
||||
barSelector: '[role="bar"]',
|
||||
spinnerSelector: '[role="spinner"]',
|
||||
parent: "body",
|
||||
template: '<div class="bar" role="bar"><div class="peg"></div></div><div class="spinner" role="spinner"><div class="spinner-icon"></div></div>'
|
||||
};
|
||||
NProgress.configure = function(options) {
|
||||
var key, value;
|
||||
for (key in options) {
|
||||
value = options[key];
|
||||
if (value !== void 0 && options.hasOwnProperty(key))
|
||||
Settings[key] = value;
|
||||
}
|
||||
return this;
|
||||
};
|
||||
NProgress.status = null;
|
||||
NProgress.set = function(n) {
|
||||
var started = NProgress.isStarted();
|
||||
n = clamp(n, Settings.minimum, 1);
|
||||
NProgress.status = n === 1 ? null : n;
|
||||
var progress = NProgress.render(!started), bar = progress.querySelector(Settings.barSelector), speed = Settings.speed, ease = Settings.easing;
|
||||
progress.offsetWidth;
|
||||
queue(function(next) {
|
||||
if (Settings.positionUsing === "")
|
||||
Settings.positionUsing = NProgress.getPositioningCSS();
|
||||
css(bar, barPositionCSS(n, speed, ease));
|
||||
if (n === 1) {
|
||||
css(progress, {
|
||||
transition: "none",
|
||||
opacity: 1
|
||||
});
|
||||
progress.offsetWidth;
|
||||
setTimeout(function() {
|
||||
css(progress, {
|
||||
transition: "all " + speed + "ms linear",
|
||||
opacity: 0
|
||||
});
|
||||
setTimeout(function() {
|
||||
NProgress.remove();
|
||||
next();
|
||||
}, speed);
|
||||
}, speed);
|
||||
} else {
|
||||
setTimeout(next, speed);
|
||||
}
|
||||
});
|
||||
return this;
|
||||
};
|
||||
NProgress.isStarted = function() {
|
||||
return typeof NProgress.status === "number";
|
||||
};
|
||||
NProgress.start = function() {
|
||||
if (!NProgress.status)
|
||||
NProgress.set(0);
|
||||
var work = function() {
|
||||
setTimeout(function() {
|
||||
if (!NProgress.status)
|
||||
return;
|
||||
NProgress.trickle();
|
||||
work();
|
||||
}, Settings.trickleSpeed);
|
||||
};
|
||||
if (Settings.trickle)
|
||||
work();
|
||||
return this;
|
||||
};
|
||||
NProgress.done = function(force) {
|
||||
if (!force && !NProgress.status)
|
||||
return this;
|
||||
return NProgress.inc(0.3 + 0.5 * Math.random()).set(1);
|
||||
};
|
||||
NProgress.inc = function(amount) {
|
||||
var n = NProgress.status;
|
||||
if (!n) {
|
||||
return NProgress.start();
|
||||
} else {
|
||||
if (typeof amount !== "number") {
|
||||
amount = (1 - n) * clamp(Math.random() * n, 0.1, 0.95);
|
||||
}
|
||||
n = clamp(n + amount, 0, 0.994);
|
||||
return NProgress.set(n);
|
||||
}
|
||||
};
|
||||
NProgress.trickle = function() {
|
||||
return NProgress.inc(Math.random() * Settings.trickleRate);
|
||||
};
|
||||
(function() {
|
||||
var initial = 0, current = 0;
|
||||
NProgress.promise = function($promise) {
|
||||
if (!$promise || $promise.state() === "resolved") {
|
||||
return this;
|
||||
}
|
||||
if (current === 0) {
|
||||
NProgress.start();
|
||||
}
|
||||
initial++;
|
||||
current++;
|
||||
$promise.always(function() {
|
||||
current--;
|
||||
if (current === 0) {
|
||||
initial = 0;
|
||||
NProgress.done();
|
||||
} else {
|
||||
NProgress.set((initial - current) / initial);
|
||||
}
|
||||
});
|
||||
return this;
|
||||
};
|
||||
})();
|
||||
NProgress.render = function(fromStart) {
|
||||
if (NProgress.isRendered())
|
||||
return document.getElementById("nprogress");
|
||||
addClass(document.documentElement, "nprogress-busy");
|
||||
var progress = document.createElement("div");
|
||||
progress.id = "nprogress";
|
||||
progress.innerHTML = Settings.template;
|
||||
var bar = progress.querySelector(Settings.barSelector), perc = fromStart ? "-100" : toBarPerc(NProgress.status || 0), parent = document.querySelector(Settings.parent), spinner;
|
||||
css(bar, {
|
||||
transition: "all 0 linear",
|
||||
transform: "translate3d(" + perc + "%,0,0)"
|
||||
});
|
||||
if (!Settings.showSpinner) {
|
||||
spinner = progress.querySelector(Settings.spinnerSelector);
|
||||
spinner && removeElement(spinner);
|
||||
}
|
||||
if (parent != document.body) {
|
||||
addClass(parent, "nprogress-custom-parent");
|
||||
}
|
||||
parent.appendChild(progress);
|
||||
return progress;
|
||||
};
|
||||
NProgress.remove = function() {
|
||||
removeClass(document.documentElement, "nprogress-busy");
|
||||
removeClass(document.querySelector(Settings.parent), "nprogress-custom-parent");
|
||||
var progress = document.getElementById("nprogress");
|
||||
progress && removeElement(progress);
|
||||
};
|
||||
NProgress.isRendered = function() {
|
||||
return !!document.getElementById("nprogress");
|
||||
};
|
||||
NProgress.getPositioningCSS = function() {
|
||||
var bodyStyle = document.body.style;
|
||||
var vendorPrefix = "WebkitTransform" in bodyStyle ? "Webkit" : "MozTransform" in bodyStyle ? "Moz" : "msTransform" in bodyStyle ? "ms" : "OTransform" in bodyStyle ? "O" : "";
|
||||
if (vendorPrefix + "Perspective" in bodyStyle) {
|
||||
return "translate3d";
|
||||
} else if (vendorPrefix + "Transform" in bodyStyle) {
|
||||
return "translate";
|
||||
} else {
|
||||
return "margin";
|
||||
}
|
||||
};
|
||||
function clamp(n, min, max) {
|
||||
if (n < min)
|
||||
return min;
|
||||
if (n > max)
|
||||
return max;
|
||||
return n;
|
||||
}
|
||||
function toBarPerc(n) {
|
||||
return (-1 + n) * 100;
|
||||
}
|
||||
function barPositionCSS(n, speed, ease) {
|
||||
var barCSS;
|
||||
if (Settings.positionUsing === "translate3d") {
|
||||
barCSS = { transform: "translate3d(" + toBarPerc(n) + "%,0,0)" };
|
||||
} else if (Settings.positionUsing === "translate") {
|
||||
barCSS = { transform: "translate(" + toBarPerc(n) + "%,0)" };
|
||||
} else {
|
||||
barCSS = { "margin-left": toBarPerc(n) + "%" };
|
||||
}
|
||||
barCSS.transition = "all " + speed + "ms " + ease;
|
||||
return barCSS;
|
||||
}
|
||||
var queue = /* @__PURE__ */ function() {
|
||||
var pending = [];
|
||||
function next() {
|
||||
var fn = pending.shift();
|
||||
if (fn) {
|
||||
fn(next);
|
||||
}
|
||||
}
|
||||
return function(fn) {
|
||||
pending.push(fn);
|
||||
if (pending.length == 1)
|
||||
next();
|
||||
};
|
||||
}();
|
||||
var css = /* @__PURE__ */ function() {
|
||||
var cssPrefixes = ["Webkit", "O", "Moz", "ms"], cssProps = {};
|
||||
function camelCase(string) {
|
||||
return string.replace(/^-ms-/, "ms-").replace(/-([\da-z])/gi, function(match, letter) {
|
||||
return letter.toUpperCase();
|
||||
});
|
||||
}
|
||||
function getVendorProp(name) {
|
||||
var style = document.body.style;
|
||||
if (name in style)
|
||||
return name;
|
||||
var i = cssPrefixes.length, capName = name.charAt(0).toUpperCase() + name.slice(1), vendorName;
|
||||
while (i--) {
|
||||
vendorName = cssPrefixes[i] + capName;
|
||||
if (vendorName in style)
|
||||
return vendorName;
|
||||
}
|
||||
return name;
|
||||
}
|
||||
function getStyleProp(name) {
|
||||
name = camelCase(name);
|
||||
return cssProps[name] || (cssProps[name] = getVendorProp(name));
|
||||
}
|
||||
function applyCss(element, prop, value) {
|
||||
prop = getStyleProp(prop);
|
||||
element.style[prop] = value;
|
||||
}
|
||||
return function(element, properties) {
|
||||
var args = arguments, prop, value;
|
||||
if (args.length == 2) {
|
||||
for (prop in properties) {
|
||||
value = properties[prop];
|
||||
if (value !== void 0 && properties.hasOwnProperty(prop))
|
||||
applyCss(element, prop, value);
|
||||
}
|
||||
} else {
|
||||
applyCss(element, args[1], args[2]);
|
||||
}
|
||||
};
|
||||
}();
|
||||
function hasClass(element, name) {
|
||||
var list = typeof element == "string" ? element : classList(element);
|
||||
return list.indexOf(" " + name + " ") >= 0;
|
||||
}
|
||||
function addClass(element, name) {
|
||||
var oldList = classList(element), newList = oldList + name;
|
||||
if (hasClass(oldList, name))
|
||||
return;
|
||||
element.className = newList.substring(1);
|
||||
}
|
||||
function removeClass(element, name) {
|
||||
var oldList = classList(element), newList;
|
||||
if (!hasClass(element, name))
|
||||
return;
|
||||
newList = oldList.replace(" " + name + " ", " ");
|
||||
element.className = newList.substring(1, newList.length - 1);
|
||||
}
|
||||
function classList(element) {
|
||||
return (" " + (element.className || "") + " ").replace(/\s+/gi, " ");
|
||||
}
|
||||
function removeElement(element) {
|
||||
element && element.parentNode && element.parentNode.removeChild(element);
|
||||
}
|
||||
return NProgress;
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
// node_modules/@inertiajs/core/dist/index.esm.js
|
||||
var import_deepmerge = __toESM(require_cjs());
|
||||
var O = __toESM(require_lib());
|
||||
var import_nprogress = __toESM(require_nprogress());
|
||||
function R(t, e) {
|
||||
let i;
|
||||
return function(...n) {
|
||||
clearTimeout(i), i = setTimeout(() => t.apply(this, n), e);
|
||||
};
|
||||
}
|
||||
function f(t, e) {
|
||||
return document.dispatchEvent(new CustomEvent(`inertia:${t}`, e));
|
||||
}
|
||||
var M = (t) => f("before", { cancelable: true, detail: { visit: t } });
|
||||
var j = (t) => f("error", { detail: { errors: t } });
|
||||
var H = (t) => f("exception", { cancelable: true, detail: { exception: t } });
|
||||
var N = (t) => f("finish", { detail: { visit: t } });
|
||||
var $ = (t) => f("invalid", { cancelable: true, detail: { response: t } });
|
||||
var S = (t) => f("navigate", { detail: { page: t } });
|
||||
var q = (t) => f("progress", { detail: { progress: t } });
|
||||
var W = (t) => f("start", { detail: { visit: t } });
|
||||
var K = (t) => f("success", { detail: { page: t } });
|
||||
function I(t) {
|
||||
return t instanceof File || t instanceof Blob || t instanceof FileList && t.length > 0 || t instanceof FormData && Array.from(t.values()).some((e) => I(e)) || typeof t == "object" && t !== null && Object.values(t).some((e) => I(e));
|
||||
}
|
||||
function A(t, e = new FormData(), i = null) {
|
||||
t = t || {};
|
||||
for (let n in t)
|
||||
Object.prototype.hasOwnProperty.call(t, n) && J(e, X(i, n), t[n]);
|
||||
return e;
|
||||
}
|
||||
function X(t, e) {
|
||||
return t ? t + "[" + e + "]" : e;
|
||||
}
|
||||
function J(t, e, i) {
|
||||
if (Array.isArray(i))
|
||||
return Array.from(i.keys()).forEach((n) => J(t, X(e, n.toString()), i[n]));
|
||||
if (i instanceof Date)
|
||||
return t.append(e, i.toISOString());
|
||||
if (i instanceof File)
|
||||
return t.append(e, i, i.name);
|
||||
if (i instanceof Blob)
|
||||
return t.append(e, i);
|
||||
if (typeof i == "boolean")
|
||||
return t.append(e, i ? "1" : "0");
|
||||
if (typeof i == "string")
|
||||
return t.append(e, i);
|
||||
if (typeof i == "number")
|
||||
return t.append(e, `${i}`);
|
||||
if (i == null)
|
||||
return t.append(e, "");
|
||||
A(i, t, e);
|
||||
}
|
||||
var z = { modal: null, listener: null, show(t) {
|
||||
typeof t == "object" && (t = `All Inertia requests must receive a valid Inertia response, however a plain JSON response was received.<hr>${JSON.stringify(t)}`);
|
||||
let e = document.createElement("html");
|
||||
e.innerHTML = t, e.querySelectorAll("a").forEach((n) => n.setAttribute("target", "_top")), this.modal = document.createElement("div"), this.modal.style.position = "fixed", this.modal.style.width = "100vw", this.modal.style.height = "100vh", this.modal.style.padding = "50px", this.modal.style.boxSizing = "border-box", this.modal.style.backgroundColor = "rgba(0, 0, 0, .6)", this.modal.style.zIndex = 2e5, this.modal.addEventListener("click", () => this.hide());
|
||||
let i = document.createElement("iframe");
|
||||
if (i.style.backgroundColor = "white", i.style.borderRadius = "5px", i.style.width = "100%", i.style.height = "100%", this.modal.appendChild(i), document.body.prepend(this.modal), document.body.style.overflow = "hidden", !i.contentWindow)
|
||||
throw new Error("iframe not yet ready.");
|
||||
i.contentWindow.document.open(), i.contentWindow.document.write(e.outerHTML), i.contentWindow.document.close(), this.listener = this.hideOnEscape.bind(this), document.addEventListener("keydown", this.listener);
|
||||
}, hide() {
|
||||
this.modal.outerHTML = "", this.modal = null, document.body.style.overflow = "visible", document.removeEventListener("keydown", this.listener);
|
||||
}, hideOnEscape(t) {
|
||||
t.keyCode === 27 && this.hide();
|
||||
} };
|
||||
function v(t) {
|
||||
return new URL(t.toString(), window.location.toString());
|
||||
}
|
||||
function k(t, e, i, n = "brackets") {
|
||||
let o = /^https?:\/\//.test(e.toString()), c2 = o || e.toString().startsWith("/"), h2 = !c2 && !e.toString().startsWith("#") && !e.toString().startsWith("?"), m = e.toString().includes("?") || t === "get" && Object.keys(i).length, b = e.toString().includes("#"), a = new URL(e.toString(), "http://localhost");
|
||||
return t === "get" && Object.keys(i).length && (a.search = O.stringify((0, import_deepmerge.default)(O.parse(a.search, { ignoreQueryPrefix: true }), i), { encodeValuesOnly: true, arrayFormat: n }), i = {}), [[o ? `${a.protocol}//${a.host}` : "", c2 ? a.pathname : "", h2 ? a.pathname.substring(1) : "", m ? a.search : "", b ? a.hash : ""].join(""), i];
|
||||
}
|
||||
function w(t) {
|
||||
return t = new URL(t.href), t.hash = "", t;
|
||||
}
|
||||
var _ = typeof window > "u";
|
||||
var C = class {
|
||||
constructor() {
|
||||
this.visitId = null;
|
||||
}
|
||||
init({ initialPage: e, resolveComponent: i, swapComponent: n }) {
|
||||
this.page = e, this.resolveComponent = i, this.swapComponent = n, this.setNavigationType(), this.clearRememberedStateOnReload(), this.isBackForwardVisit() ? this.handleBackForwardVisit(this.page) : this.isLocationVisit() ? this.handleLocationVisit(this.page) : this.handleInitialPageVisit(this.page), this.setupEventListeners();
|
||||
}
|
||||
setNavigationType() {
|
||||
this.navigationType = window.performance && window.performance.getEntriesByType("navigation").length > 0 ? window.performance.getEntriesByType("navigation")[0].type : "navigate";
|
||||
}
|
||||
clearRememberedStateOnReload() {
|
||||
var _a;
|
||||
this.navigationType === "reload" && ((_a = window.history.state) == null ? void 0 : _a.rememberedState) && delete window.history.state.rememberedState;
|
||||
}
|
||||
handleInitialPageVisit(e) {
|
||||
this.page.url += window.location.hash, this.setPage(e, { preserveState: true }).then(() => S(e));
|
||||
}
|
||||
setupEventListeners() {
|
||||
window.addEventListener("popstate", this.handlePopstateEvent.bind(this)), document.addEventListener("scroll", R(this.handleScrollEvent.bind(this), 100), true);
|
||||
}
|
||||
scrollRegions() {
|
||||
return document.querySelectorAll("[scroll-region]");
|
||||
}
|
||||
handleScrollEvent(e) {
|
||||
typeof e.target.hasAttribute == "function" && e.target.hasAttribute("scroll-region") && this.saveScrollPositions();
|
||||
}
|
||||
saveScrollPositions() {
|
||||
this.replaceState({ ...this.page, scrollRegions: Array.from(this.scrollRegions()).map((e) => ({ top: e.scrollTop, left: e.scrollLeft })) });
|
||||
}
|
||||
resetScrollPositions() {
|
||||
window.scrollTo(0, 0), this.scrollRegions().forEach((e) => {
|
||||
typeof e.scrollTo == "function" ? e.scrollTo(0, 0) : (e.scrollTop = 0, e.scrollLeft = 0);
|
||||
}), this.saveScrollPositions(), window.location.hash && setTimeout(() => {
|
||||
var _a;
|
||||
return (_a = document.getElementById(window.location.hash.slice(1))) == null ? void 0 : _a.scrollIntoView();
|
||||
});
|
||||
}
|
||||
restoreScrollPositions() {
|
||||
this.page.scrollRegions && this.scrollRegions().forEach((e, i) => {
|
||||
let n = this.page.scrollRegions[i];
|
||||
if (n)
|
||||
typeof e.scrollTo == "function" ? e.scrollTo(n.left, n.top) : (e.scrollTop = n.top, e.scrollLeft = n.left);
|
||||
else
|
||||
return;
|
||||
});
|
||||
}
|
||||
isBackForwardVisit() {
|
||||
return window.history.state && this.navigationType === "back_forward";
|
||||
}
|
||||
handleBackForwardVisit(e) {
|
||||
window.history.state.version = e.version, this.setPage(window.history.state, { preserveScroll: true, preserveState: true }).then(() => {
|
||||
this.restoreScrollPositions(), S(e);
|
||||
});
|
||||
}
|
||||
locationVisit(e, i) {
|
||||
try {
|
||||
let n = { preserveScroll: i };
|
||||
window.sessionStorage.setItem("inertiaLocationVisit", JSON.stringify(n)), window.location.href = e.href, w(window.location).href === w(e).href && window.location.reload();
|
||||
} catch {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
isLocationVisit() {
|
||||
try {
|
||||
return window.sessionStorage.getItem("inertiaLocationVisit") !== null;
|
||||
} catch {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
handleLocationVisit(e) {
|
||||
var _a, _b;
|
||||
let i = JSON.parse(window.sessionStorage.getItem("inertiaLocationVisit") || "");
|
||||
window.sessionStorage.removeItem("inertiaLocationVisit"), e.url += window.location.hash, e.rememberedState = ((_a = window.history.state) == null ? void 0 : _a.rememberedState) ?? {}, e.scrollRegions = ((_b = window.history.state) == null ? void 0 : _b.scrollRegions) ?? [], this.setPage(e, { preserveScroll: i.preserveScroll, preserveState: true }).then(() => {
|
||||
i.preserveScroll && this.restoreScrollPositions(), S(e);
|
||||
});
|
||||
}
|
||||
isLocationVisitResponse(e) {
|
||||
return !!(e && e.status === 409 && e.headers["x-inertia-location"]);
|
||||
}
|
||||
isInertiaResponse(e) {
|
||||
return !!(e == null ? void 0 : e.headers["x-inertia"]);
|
||||
}
|
||||
createVisitId() {
|
||||
return this.visitId = {}, this.visitId;
|
||||
}
|
||||
cancelVisit(e, { cancelled: i = false, interrupted: n = false }) {
|
||||
e && !e.completed && !e.cancelled && !e.interrupted && (e.cancelToken.abort(), e.onCancel(), e.completed = false, e.cancelled = i, e.interrupted = n, N(e), e.onFinish(e));
|
||||
}
|
||||
finishVisit(e) {
|
||||
!e.cancelled && !e.interrupted && (e.completed = true, e.cancelled = false, e.interrupted = false, N(e), e.onFinish(e));
|
||||
}
|
||||
resolvePreserveOption(e, i) {
|
||||
return typeof e == "function" ? e(i) : e === "errors" ? Object.keys(i.props.errors || {}).length > 0 : e;
|
||||
}
|
||||
cancel() {
|
||||
this.activeVisit && this.cancelVisit(this.activeVisit, { cancelled: true });
|
||||
}
|
||||
visit(e, { method: i = "get", data: n = {}, replace: o = false, preserveScroll: c2 = false, preserveState: h2 = false, only: m = [], headers: b = {}, errorBag: a = "", forceFormData: l = false, onCancelToken: g2 = () => {
|
||||
}, onBefore: L2 = () => {
|
||||
}, onStart: d2 = () => {
|
||||
}, onProgress: p = () => {
|
||||
}, onFinish: T2 = () => {
|
||||
}, onCancel: y = () => {
|
||||
}, onSuccess: D2 = () => {
|
||||
}, onError: U = () => {
|
||||
}, queryStringArrayFormat: F2 = "brackets" } = {}) {
|
||||
let x2 = typeof e == "string" ? v(e) : e;
|
||||
if ((I(n) || l) && !(n instanceof FormData) && (n = A(n)), !(n instanceof FormData)) {
|
||||
let [r, s] = k(i, x2, n, F2);
|
||||
x2 = v(r), n = s;
|
||||
}
|
||||
let P = { url: x2, method: i, data: n, replace: o, preserveScroll: c2, preserveState: h2, only: m, headers: b, errorBag: a, forceFormData: l, queryStringArrayFormat: F2, cancelled: false, completed: false, interrupted: false };
|
||||
if (L2(P) === false || !M(P))
|
||||
return;
|
||||
this.activeVisit && this.cancelVisit(this.activeVisit, { interrupted: true }), this.saveScrollPositions();
|
||||
let G = this.createVisitId();
|
||||
this.activeVisit = { ...P, onCancelToken: g2, onBefore: L2, onStart: d2, onProgress: p, onFinish: T2, onCancel: y, onSuccess: D2, onError: U, queryStringArrayFormat: F2, cancelToken: new AbortController() }, g2({ cancel: () => {
|
||||
this.activeVisit && this.cancelVisit(this.activeVisit, { cancelled: true });
|
||||
} }), W(P), d2(P), axios_default({ method: i, url: w(x2).href, data: i === "get" ? {} : n, params: i === "get" ? n : {}, signal: this.activeVisit.cancelToken.signal, headers: { ...b, Accept: "text/html, application/xhtml+xml", "X-Requested-With": "XMLHttpRequest", "X-Inertia": true, ...m.length ? { "X-Inertia-Partial-Component": this.page.component, "X-Inertia-Partial-Data": m.join(",") } : {}, ...a && a.length ? { "X-Inertia-Error-Bag": a } : {}, ...this.page.version ? { "X-Inertia-Version": this.page.version } : {} }, onUploadProgress: (r) => {
|
||||
n instanceof FormData && (r.percentage = r.progress ? Math.round(r.progress * 100) : 0, q(r), p(r));
|
||||
} }).then((r) => {
|
||||
var _a;
|
||||
if (!this.isInertiaResponse(r))
|
||||
return Promise.reject({ response: r });
|
||||
let s = r.data;
|
||||
m.length && s.component === this.page.component && (s.props = { ...this.page.props, ...s.props }), c2 = this.resolvePreserveOption(c2, s), h2 = this.resolvePreserveOption(h2, s), h2 && ((_a = window.history.state) == null ? void 0 : _a.rememberedState) && s.component === this.page.component && (s.rememberedState = window.history.state.rememberedState);
|
||||
let E2 = x2, V = v(s.url);
|
||||
return E2.hash && !V.hash && w(E2).href === V.href && (V.hash = E2.hash, s.url = V.href), this.setPage(s, { visitId: G, replace: o, preserveScroll: c2, preserveState: h2 });
|
||||
}).then(() => {
|
||||
let r = this.page.props.errors || {};
|
||||
if (Object.keys(r).length > 0) {
|
||||
let s = a ? r[a] ? r[a] : {} : r;
|
||||
return j(s), U(s);
|
||||
}
|
||||
return K(this.page), D2(this.page);
|
||||
}).catch((r) => {
|
||||
if (this.isInertiaResponse(r.response))
|
||||
return this.setPage(r.response.data, { visitId: G });
|
||||
if (this.isLocationVisitResponse(r.response)) {
|
||||
let s = v(r.response.headers["x-inertia-location"]), E2 = x2;
|
||||
E2.hash && !s.hash && w(E2).href === s.href && (s.hash = E2.hash), this.locationVisit(s, c2 === true);
|
||||
} else if (r.response)
|
||||
$(r.response) && z.show(r.response.data);
|
||||
else
|
||||
return Promise.reject(r);
|
||||
}).then(() => {
|
||||
this.activeVisit && this.finishVisit(this.activeVisit);
|
||||
}).catch((r) => {
|
||||
if (!axios_default.isCancel(r)) {
|
||||
let s = H(r);
|
||||
if (this.activeVisit && this.finishVisit(this.activeVisit), s)
|
||||
return Promise.reject(r);
|
||||
}
|
||||
});
|
||||
}
|
||||
setPage(e, { visitId: i = this.createVisitId(), replace: n = false, preserveScroll: o = false, preserveState: c2 = false } = {}) {
|
||||
return Promise.resolve(this.resolveComponent(e.component)).then((h2) => {
|
||||
i === this.visitId && (e.scrollRegions = e.scrollRegions || [], e.rememberedState = e.rememberedState || {}, n = n || v(e.url).href === window.location.href, n ? this.replaceState(e) : this.pushState(e), this.swapComponent({ component: h2, page: e, preserveState: c2 }).then(() => {
|
||||
o || this.resetScrollPositions(), n || S(e);
|
||||
}));
|
||||
});
|
||||
}
|
||||
pushState(e) {
|
||||
this.page = e, window.history.pushState(e, "", e.url);
|
||||
}
|
||||
replaceState(e) {
|
||||
this.page = e, window.history.replaceState(e, "", e.url);
|
||||
}
|
||||
handlePopstateEvent(e) {
|
||||
if (e.state !== null) {
|
||||
let i = e.state, n = this.createVisitId();
|
||||
Promise.resolve(this.resolveComponent(i.component)).then((o) => {
|
||||
n === this.visitId && (this.page = i, this.swapComponent({ component: o, page: i, preserveState: false }).then(() => {
|
||||
this.restoreScrollPositions(), S(i);
|
||||
}));
|
||||
});
|
||||
} else {
|
||||
let i = v(this.page.url);
|
||||
i.hash = window.location.hash, this.replaceState({ ...this.page, url: i.href }), this.resetScrollPositions();
|
||||
}
|
||||
}
|
||||
get(e, i = {}, n = {}) {
|
||||
return this.visit(e, { ...n, method: "get", data: i });
|
||||
}
|
||||
reload(e = {}) {
|
||||
return this.visit(window.location.href, { ...e, preserveScroll: true, preserveState: true });
|
||||
}
|
||||
replace(e, i = {}) {
|
||||
return console.warn(`Inertia.replace() has been deprecated and will be removed in a future release. Please use Inertia.${i.method ?? "get"}() instead.`), this.visit(e, { preserveState: true, ...i, replace: true });
|
||||
}
|
||||
post(e, i = {}, n = {}) {
|
||||
return this.visit(e, { preserveState: true, ...n, method: "post", data: i });
|
||||
}
|
||||
put(e, i = {}, n = {}) {
|
||||
return this.visit(e, { preserveState: true, ...n, method: "put", data: i });
|
||||
}
|
||||
patch(e, i = {}, n = {}) {
|
||||
return this.visit(e, { preserveState: true, ...n, method: "patch", data: i });
|
||||
}
|
||||
delete(e, i = {}) {
|
||||
return this.visit(e, { preserveState: true, ...i, method: "delete" });
|
||||
}
|
||||
remember(e, i = "default") {
|
||||
var _a;
|
||||
_ || this.replaceState({ ...this.page, rememberedState: { ...(_a = this.page) == null ? void 0 : _a.rememberedState, [i]: e } });
|
||||
}
|
||||
restore(e = "default") {
|
||||
var _a, _b;
|
||||
if (!_)
|
||||
return (_b = (_a = window.history.state) == null ? void 0 : _a.rememberedState) == null ? void 0 : _b[e];
|
||||
}
|
||||
on(e, i) {
|
||||
let n = (o) => {
|
||||
let c2 = i(o);
|
||||
o.cancelable && !o.defaultPrevented && c2 === false && o.preventDefault();
|
||||
};
|
||||
return document.addEventListener(`inertia:${e}`, n), () => document.removeEventListener(`inertia:${e}`, n);
|
||||
}
|
||||
};
|
||||
var ie = { buildDOMElement(t) {
|
||||
let e = document.createElement("template");
|
||||
e.innerHTML = t;
|
||||
let i = e.content.firstChild;
|
||||
if (!t.startsWith("<script "))
|
||||
return i;
|
||||
let n = document.createElement("script");
|
||||
return n.innerHTML = i.innerHTML, i.getAttributeNames().forEach((o) => {
|
||||
n.setAttribute(o, i.getAttribute(o) || "");
|
||||
}), n;
|
||||
}, isInertiaManagedElement(t) {
|
||||
return t.nodeType === Node.ELEMENT_NODE && t.getAttribute("inertia") !== null;
|
||||
}, findMatchingElementIndex(t, e) {
|
||||
let i = t.getAttribute("inertia");
|
||||
return i !== null ? e.findIndex((n) => n.getAttribute("inertia") === i) : -1;
|
||||
}, update: R(function(t) {
|
||||
let e = t.map((n) => this.buildDOMElement(n));
|
||||
Array.from(document.head.childNodes).filter((n) => this.isInertiaManagedElement(n)).forEach((n) => {
|
||||
var _a, _b;
|
||||
let o = this.findMatchingElementIndex(n, e);
|
||||
if (o === -1) {
|
||||
(_a = n == null ? void 0 : n.parentNode) == null ? void 0 : _a.removeChild(n);
|
||||
return;
|
||||
}
|
||||
let c2 = e.splice(o, 1)[0];
|
||||
c2 && !n.isEqualNode(c2) && ((_b = n == null ? void 0 : n.parentNode) == null ? void 0 : _b.replaceChild(c2, n));
|
||||
}), e.forEach((n) => document.head.appendChild(n));
|
||||
}, 1) };
|
||||
function Q(t, e, i) {
|
||||
let n = {}, o = 0;
|
||||
function c2() {
|
||||
let l = o += 1;
|
||||
return n[l] = [], l.toString();
|
||||
}
|
||||
function h2(l) {
|
||||
l === null || Object.keys(n).indexOf(l) === -1 || (delete n[l], a());
|
||||
}
|
||||
function m(l, g2 = []) {
|
||||
l !== null && Object.keys(n).indexOf(l) > -1 && (n[l] = g2), a();
|
||||
}
|
||||
function b() {
|
||||
let l = e(""), g2 = { ...l ? { title: `<title inertia="">${l}</title>` } : {} }, L2 = Object.values(n).reduce((d2, p) => d2.concat(p), []).reduce((d2, p) => {
|
||||
if (p.indexOf("<") === -1)
|
||||
return d2;
|
||||
if (p.indexOf("<title ") === 0) {
|
||||
let y = p.match(/(<title [^>]+>)(.*?)(<\/title>)/);
|
||||
return d2.title = y ? `${y[1]}${e(y[2])}${y[3]}` : p, d2;
|
||||
}
|
||||
let T2 = p.match(/ inertia="[^"]+"/);
|
||||
return T2 ? d2[T2[0]] = p : d2[Object.keys(d2).length] = p, d2;
|
||||
}, g2);
|
||||
return Object.values(L2);
|
||||
}
|
||||
function a() {
|
||||
t ? i(b()) : ie.update(b());
|
||||
}
|
||||
return a(), { forceUpdate: a, createProvider: function() {
|
||||
let l = c2();
|
||||
return { update: (g2) => m(l, g2), disconnect: () => h2(l) };
|
||||
} };
|
||||
}
|
||||
var Y = null;
|
||||
function ne(t) {
|
||||
document.addEventListener("inertia:start", re.bind(null, t)), document.addEventListener("inertia:progress", oe), document.addEventListener("inertia:finish", se);
|
||||
}
|
||||
function re(t) {
|
||||
Y = setTimeout(() => import_nprogress.default.start(), t);
|
||||
}
|
||||
function oe(t) {
|
||||
var _a;
|
||||
import_nprogress.default.isStarted() && ((_a = t.detail.progress) == null ? void 0 : _a.percentage) && import_nprogress.default.set(Math.max(import_nprogress.default.status, t.detail.progress.percentage / 100 * 0.9));
|
||||
}
|
||||
function se(t) {
|
||||
if (clearTimeout(Y), import_nprogress.default.isStarted())
|
||||
t.detail.visit.completed ? import_nprogress.default.done() : t.detail.visit.interrupted ? import_nprogress.default.set(0) : t.detail.visit.cancelled && (import_nprogress.default.done(), import_nprogress.default.remove());
|
||||
else
|
||||
return;
|
||||
}
|
||||
function ae(t) {
|
||||
let e = document.createElement("style");
|
||||
e.type = "text/css", e.textContent = `
|
||||
#nprogress {
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
#nprogress .bar {
|
||||
background: ${t};
|
||||
|
||||
position: fixed;
|
||||
z-index: 1031;
|
||||
top: 0;
|
||||
left: 0;
|
||||
|
||||
width: 100%;
|
||||
height: 2px;
|
||||
}
|
||||
|
||||
#nprogress .peg {
|
||||
display: block;
|
||||
position: absolute;
|
||||
right: 0px;
|
||||
width: 100px;
|
||||
height: 100%;
|
||||
box-shadow: 0 0 10px ${t}, 0 0 5px ${t};
|
||||
opacity: 1.0;
|
||||
|
||||
-webkit-transform: rotate(3deg) translate(0px, -4px);
|
||||
-ms-transform: rotate(3deg) translate(0px, -4px);
|
||||
transform: rotate(3deg) translate(0px, -4px);
|
||||
}
|
||||
|
||||
#nprogress .spinner {
|
||||
display: block;
|
||||
position: fixed;
|
||||
z-index: 1031;
|
||||
top: 15px;
|
||||
right: 15px;
|
||||
}
|
||||
|
||||
#nprogress .spinner-icon {
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
box-sizing: border-box;
|
||||
|
||||
border: solid 2px transparent;
|
||||
border-top-color: ${t};
|
||||
border-left-color: ${t};
|
||||
border-radius: 50%;
|
||||
|
||||
-webkit-animation: nprogress-spinner 400ms linear infinite;
|
||||
animation: nprogress-spinner 400ms linear infinite;
|
||||
}
|
||||
|
||||
.nprogress-custom-parent {
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.nprogress-custom-parent #nprogress .spinner,
|
||||
.nprogress-custom-parent #nprogress .bar {
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
@-webkit-keyframes nprogress-spinner {
|
||||
0% { -webkit-transform: rotate(0deg); }
|
||||
100% { -webkit-transform: rotate(360deg); }
|
||||
}
|
||||
@keyframes nprogress-spinner {
|
||||
0% { transform: rotate(0deg); }
|
||||
100% { transform: rotate(360deg); }
|
||||
}
|
||||
`, document.head.appendChild(e);
|
||||
}
|
||||
function Z({ delay: t = 250, color: e = "#29d", includeCSS: i = true, showSpinner: n = false } = {}) {
|
||||
ne(t), import_nprogress.default.configure({ showSpinner: n }), i && ae(e);
|
||||
}
|
||||
function ee(t) {
|
||||
let e = t.currentTarget.tagName.toLowerCase() === "a";
|
||||
return !(t.target && (t == null ? void 0 : t.target).isContentEditable || t.defaultPrevented || e && t.which > 1 || e && t.altKey || e && t.ctrlKey || e && t.metaKey || e && t.shiftKey);
|
||||
}
|
||||
var Oe = new C();
|
||||
|
||||
// node_modules/@inertiajs/vue3/dist/index.esm.js
|
||||
var import_lodash = __toESM(require_lodash());
|
||||
var import_lodash2 = __toESM(require_lodash());
|
||||
var import_lodash3 = __toESM(require_lodash2());
|
||||
var import_lodash4 = __toESM(require_lodash());
|
||||
var M2 = { created() {
|
||||
if (!this.$options.remember)
|
||||
return;
|
||||
Array.isArray(this.$options.remember) && (this.$options.remember = { data: this.$options.remember }), typeof this.$options.remember == "string" && (this.$options.remember = { data: [this.$options.remember] }), typeof this.$options.remember.data == "string" && (this.$options.remember = { data: [this.$options.remember.data] });
|
||||
let e = this.$options.remember.key instanceof Function ? this.$options.remember.key.call(this) : this.$options.remember.key, o = Oe.restore(e), n = this.$options.remember.data.filter((t) => !(this[t] !== null && typeof this[t] == "object" && this[t].__rememberable === false)), p = (t) => this[t] !== null && typeof this[t] == "object" && typeof this[t].__remember == "function" && typeof this[t].__restore == "function";
|
||||
n.forEach((t) => {
|
||||
this[t] !== void 0 && o !== void 0 && o[t] !== void 0 && (p(t) ? this[t].__restore(o[t]) : this[t] = o[t]), this.$watch(t, () => {
|
||||
Oe.remember(n.reduce((a, l) => ({ ...a, [l]: (0, import_lodash.default)(p(l) ? this[l].__remember() : this[l]) }), {}), e);
|
||||
}, { immediate: true, deep: true });
|
||||
});
|
||||
} };
|
||||
var D = M2;
|
||||
function T(e, o) {
|
||||
let n = typeof e == "string" ? e : null, p = typeof e == "string" ? o : e, t = n ? Oe.restore(n) : null, a = typeof p == "object" ? (0, import_lodash2.default)(p) : (0, import_lodash2.default)(p()), l = null, f2 = null, h2 = (r) => r, y = reactive({ ...t ? t.data : (0, import_lodash2.default)(a), isDirty: false, errors: t ? t.errors : {}, hasErrors: false, processing: false, progress: null, wasSuccessful: false, recentlySuccessful: false, data() {
|
||||
return Object.keys(a).reduce((r, s) => (r[s] = this[s], r), {});
|
||||
}, transform(r) {
|
||||
return h2 = r, this;
|
||||
}, defaults(r, s) {
|
||||
if (typeof p == "function")
|
||||
throw new Error("You cannot call `defaults()` when using a function to define your form data.");
|
||||
return typeof r > "u" ? a = this.data() : a = Object.assign({}, (0, import_lodash2.default)(a), typeof r == "string" ? { [r]: s } : r), this;
|
||||
}, reset(...r) {
|
||||
let s = typeof p == "object" ? (0, import_lodash2.default)(a) : (0, import_lodash2.default)(p()), i = (0, import_lodash2.default)(s);
|
||||
return r.length === 0 ? (a = i, Object.assign(this, s)) : Object.keys(s).filter((m) => r.includes(m)).forEach((m) => {
|
||||
a[m] = i[m], this[m] = s[m];
|
||||
}), this;
|
||||
}, setError(r, s) {
|
||||
return Object.assign(this.errors, typeof r == "string" ? { [r]: s } : r), this.hasErrors = Object.keys(this.errors).length > 0, this;
|
||||
}, clearErrors(...r) {
|
||||
return this.errors = Object.keys(this.errors).reduce((s, i) => ({ ...s, ...r.length > 0 && !r.includes(i) ? { [i]: this.errors[i] } : {} }), {}), this.hasErrors = Object.keys(this.errors).length > 0, this;
|
||||
}, submit(r, s, i = {}) {
|
||||
let m = h2(this.data()), b = { ...i, onCancelToken: (u2) => {
|
||||
if (l = u2, i.onCancelToken)
|
||||
return i.onCancelToken(u2);
|
||||
}, onBefore: (u2) => {
|
||||
if (this.wasSuccessful = false, this.recentlySuccessful = false, clearTimeout(f2), i.onBefore)
|
||||
return i.onBefore(u2);
|
||||
}, onStart: (u2) => {
|
||||
if (this.processing = true, i.onStart)
|
||||
return i.onStart(u2);
|
||||
}, onProgress: (u2) => {
|
||||
if (this.progress = u2, i.onProgress)
|
||||
return i.onProgress(u2);
|
||||
}, onSuccess: async (u2) => {
|
||||
this.processing = false, this.progress = null, this.clearErrors(), this.wasSuccessful = true, this.recentlySuccessful = true, f2 = setTimeout(() => this.recentlySuccessful = false, 2e3);
|
||||
let N2 = i.onSuccess ? await i.onSuccess(u2) : null;
|
||||
return a = (0, import_lodash2.default)(this.data()), this.isDirty = false, N2;
|
||||
}, onError: (u2) => {
|
||||
if (this.processing = false, this.progress = null, this.clearErrors().setError(u2), i.onError)
|
||||
return i.onError(u2);
|
||||
}, onCancel: () => {
|
||||
if (this.processing = false, this.progress = null, i.onCancel)
|
||||
return i.onCancel();
|
||||
}, onFinish: (u2) => {
|
||||
if (this.processing = false, this.progress = null, l = null, i.onFinish)
|
||||
return i.onFinish(u2);
|
||||
} };
|
||||
r === "delete" ? Oe.delete(s, { ...b, data: m }) : Oe[r](s, m, b);
|
||||
}, get(r, s) {
|
||||
this.submit("get", r, s);
|
||||
}, post(r, s) {
|
||||
this.submit("post", r, s);
|
||||
}, put(r, s) {
|
||||
this.submit("put", r, s);
|
||||
}, patch(r, s) {
|
||||
this.submit("patch", r, s);
|
||||
}, delete(r, s) {
|
||||
this.submit("delete", r, s);
|
||||
}, cancel() {
|
||||
l && l.cancel();
|
||||
}, __rememberable: n === null, __remember() {
|
||||
return { data: this.data(), errors: this.errors };
|
||||
}, __restore(r) {
|
||||
Object.assign(this, r.data), this.setError(r.errors);
|
||||
} });
|
||||
return watch(y, (r) => {
|
||||
y.isDirty = !(0, import_lodash3.default)(y.data(), a), n && Oe.remember((0, import_lodash2.default)(r.__remember()), n);
|
||||
}, { immediate: true, deep: true }), y;
|
||||
}
|
||||
var c = ref(null);
|
||||
var d = ref(null);
|
||||
var k2 = shallowRef(null);
|
||||
var F = ref(null);
|
||||
var x = null;
|
||||
var W2 = defineComponent({ name: "Inertia", props: { initialPage: { type: Object, required: true }, initialComponent: { type: Object, required: false }, resolveComponent: { type: Function, required: false }, titleCallback: { type: Function, required: false, default: (e) => e }, onHeadUpdate: { type: Function, required: false, default: () => () => {
|
||||
} } }, setup({ initialPage: e, initialComponent: o, resolveComponent: n, titleCallback: p, onHeadUpdate: t }) {
|
||||
c.value = o ? markRaw(o) : null, d.value = e, F.value = null;
|
||||
let a = typeof window > "u";
|
||||
return x = Q(a, p, t), a || (Oe.init({ initialPage: e, resolveComponent: n, swapComponent: async (l) => {
|
||||
c.value = markRaw(l.component), d.value = l.page, F.value = l.preserveState ? F.value : Date.now();
|
||||
} }), Oe.on("navigate", () => x.forceUpdate())), () => {
|
||||
if (c.value) {
|
||||
c.value.inheritAttrs = !!c.value.inheritAttrs;
|
||||
let l = h(c.value, { ...d.value.props, key: F.value });
|
||||
return k2.value && (c.value.layout = k2.value, k2.value = null), c.value.layout ? typeof c.value.layout == "function" ? c.value.layout(h, l) : (Array.isArray(c.value.layout) ? c.value.layout : [c.value.layout]).concat(l).reverse().reduce((f2, h2) => (h2.inheritAttrs = !!h2.inheritAttrs, h(h2, { ...d.value.props }, () => f2))) : l;
|
||||
}
|
||||
};
|
||||
} });
|
||||
var E = W2;
|
||||
var $2 = { install(e) {
|
||||
Oe.form = T, Object.defineProperty(e.config.globalProperties, "$inertia", { get: () => Oe }), Object.defineProperty(e.config.globalProperties, "$page", { get: () => d.value }), Object.defineProperty(e.config.globalProperties, "$headManager", { get: () => x }), e.mixin(D);
|
||||
} };
|
||||
function Q2() {
|
||||
return reactive({ props: computed(() => {
|
||||
var _a;
|
||||
return (_a = d.value) == null ? void 0 : _a.props;
|
||||
}), url: computed(() => {
|
||||
var _a;
|
||||
return (_a = d.value) == null ? void 0 : _a.url;
|
||||
}), component: computed(() => {
|
||||
var _a;
|
||||
return (_a = d.value) == null ? void 0 : _a.component;
|
||||
}), version: computed(() => {
|
||||
var _a;
|
||||
return (_a = d.value) == null ? void 0 : _a.version;
|
||||
}), scrollRegions: computed(() => {
|
||||
var _a;
|
||||
return (_a = d.value) == null ? void 0 : _a.scrollRegions;
|
||||
}), rememberedState: computed(() => {
|
||||
var _a;
|
||||
return (_a = d.value) == null ? void 0 : _a.rememberedState;
|
||||
}) });
|
||||
}
|
||||
async function j2({ id: e = "app", resolve: o, setup: n, title: p, progress: t = {}, page: a, render: l }) {
|
||||
let f2 = typeof window > "u", h2 = f2 ? null : document.getElementById(e), y = a || JSON.parse(h2.dataset.page), r = (m) => Promise.resolve(o(m)).then((b) => b.default || b), s = [], i = await r(y.component).then((m) => n({ el: h2, App: E, props: { initialPage: y, initialComponent: m, resolveComponent: r, titleCallback: p, onHeadUpdate: f2 ? (b) => s = b : null }, plugin: $2 }));
|
||||
if (!f2 && t && Z(t), f2) {
|
||||
let m = await l(createSSRApp({ render: () => h("div", { id: e, "data-page": JSON.stringify(y), innerHTML: i ? l(i) : "" }) }));
|
||||
return { head: s, body: m };
|
||||
}
|
||||
}
|
||||
var X2 = defineComponent({ props: { title: { type: String, required: false } }, data() {
|
||||
return { provider: this.$headManager.createProvider() };
|
||||
}, beforeUnmount() {
|
||||
this.provider.disconnect();
|
||||
}, methods: { isUnaryTag(e) {
|
||||
return ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "param", "source", "track", "wbr"].indexOf(e.type) > -1;
|
||||
}, renderTagStart(e) {
|
||||
e.props = e.props || {}, e.props.inertia = e.props["head-key"] !== void 0 ? e.props["head-key"] : "";
|
||||
let o = Object.keys(e.props).reduce((n, p) => {
|
||||
let t = e.props[p];
|
||||
return ["key", "head-key"].includes(p) ? n : t === "" ? n + ` ${p}` : n + ` ${p}="${t}"`;
|
||||
}, "");
|
||||
return `<${e.type}${o}>`;
|
||||
}, renderTagChildren(e) {
|
||||
return typeof e.children == "string" ? e.children : e.children.reduce((o, n) => o + this.renderTag(n), "");
|
||||
}, isFunctionNode(e) {
|
||||
return typeof e.type == "function";
|
||||
}, isComponentNode(e) {
|
||||
return typeof e.type == "object";
|
||||
}, isCommentNode(e) {
|
||||
return /(comment|cmt)/i.test(e.type.toString());
|
||||
}, isFragmentNode(e) {
|
||||
return /(fragment|fgt|symbol\(\))/i.test(e.type.toString());
|
||||
}, isTextNode(e) {
|
||||
return /(text|txt)/i.test(e.type.toString());
|
||||
}, renderTag(e) {
|
||||
if (this.isTextNode(e))
|
||||
return e.children;
|
||||
if (this.isFragmentNode(e))
|
||||
return "";
|
||||
if (this.isCommentNode(e))
|
||||
return "";
|
||||
let o = this.renderTagStart(e);
|
||||
return e.children && (o += this.renderTagChildren(e)), this.isUnaryTag(e) || (o += `</${e.type}>`), o;
|
||||
}, addTitleElement(e) {
|
||||
return this.title && !e.find((o) => o.startsWith("<title")) && e.push(`<title inertia>${this.title}</title>`), e;
|
||||
}, renderNodes(e) {
|
||||
return this.addTitleElement(e.flatMap((o) => this.resolveNode(o)).map((o) => this.renderTag(o)).filter((o) => o));
|
||||
}, resolveNode(e) {
|
||||
return this.isFunctionNode(e) ? this.resolveNode(e.type()) : this.isComponentNode(e) ? (console.warn("Using components in the <Head> component is not supported."), []) : this.isTextNode(e) && e.children ? e : this.isFragmentNode(e) && e.children ? e.children.flatMap((o) => this.resolveNode(o)) : this.isCommentNode(e) ? [] : e;
|
||||
} }, render() {
|
||||
this.provider.update(this.renderNodes(this.$slots.default ? this.$slots.default() : []));
|
||||
} });
|
||||
var Z2 = X2;
|
||||
var se2 = defineComponent({ name: "Link", props: { as: { type: String, default: "a" }, data: { type: Object, default: () => ({}) }, href: { type: String, required: true }, method: { type: String, default: "get" }, replace: { type: Boolean, default: false }, preserveScroll: { type: Boolean, default: false }, preserveState: { type: Boolean, default: null }, only: { type: Array, default: () => [] }, headers: { type: Object, default: () => ({}) }, queryStringArrayFormat: { type: String, default: "brackets" } }, setup(e, { slots: o, attrs: n }) {
|
||||
return () => {
|
||||
let p = e.as.toLowerCase(), t = e.method.toLowerCase(), [a, l] = k(t, e.href || "", e.data, e.queryStringArrayFormat);
|
||||
return p === "a" && t !== "get" && console.warn(`Creating POST/PUT/PATCH/DELETE <a> links is discouraged as it causes "Open Link in New Tab/Window" accessibility issues.
|
||||
|
||||
Please specify a more appropriate element using the "as" attribute. For example:
|
||||
|
||||
<Link href="${a}" method="${t}" as="button">...</Link>`), h(e.as, { ...n, ...p === "a" ? { href: a } : {}, onClick: (f2) => {
|
||||
ee(f2) && (f2.preventDefault(), Oe.visit(a, { data: l, method: t, replace: e.replace, preserveScroll: e.preserveScroll, preserveState: e.preserveState ?? t !== "get", only: e.only, headers: e.headers, onCancelToken: n.onCancelToken || (() => ({})), onBefore: n.onBefore || (() => ({})), onStart: n.onStart || (() => ({})), onProgress: n.onProgress || (() => ({})), onFinish: n.onFinish || (() => ({})), onCancel: n.onCancel || (() => ({})), onSuccess: n.onSuccess || (() => ({})), onError: n.onError || (() => ({})) }));
|
||||
} }, o);
|
||||
};
|
||||
} });
|
||||
var ie2 = se2;
|
||||
function O2(e, o) {
|
||||
if (typeof e == "object" && e !== null && e.__rememberable === false)
|
||||
return e;
|
||||
let n = Oe.restore(o), p = isReactive(e) ? reactive : ref, t = typeof e.__remember == "function" && typeof e.__restore == "function", a = p(n === void 0 ? e : t ? e.__restore(n) : n);
|
||||
return watch(a, (l) => {
|
||||
Oe.remember((0, import_lodash4.default)(t ? e.__remember() : l), o);
|
||||
}, { immediate: true, deep: true }), a;
|
||||
}
|
||||
export {
|
||||
Z2 as Head,
|
||||
ie2 as Link,
|
||||
j2 as createInertiaApp,
|
||||
Oe as router,
|
||||
T as useForm,
|
||||
Q2 as usePage,
|
||||
O2 as useRemember
|
||||
};
|
||||
/*! Bundled license information:
|
||||
|
||||
nprogress/nprogress.js:
|
||||
(* NProgress, (c) 2013, 2014 Rico Sta. Cruz - http://ricostacruz.com/nprogress
|
||||
* @license MIT *)
|
||||
*/
|
||||
//# sourceMappingURL=@inertiajs_vue3.js.map
|
||||
7
node_modules/.vite/deps/@inertiajs_vue3.js.map
generated
vendored
Normal file
7
node_modules/.vite/deps/@inertiajs_vue3.js.map
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
55
node_modules/.vite/deps/_metadata.json
generated
vendored
Normal file
55
node_modules/.vite/deps/_metadata.json
generated
vendored
Normal file
@@ -0,0 +1,55 @@
|
||||
{
|
||||
"hash": "3284a5c1",
|
||||
"configHash": "e4bd813e",
|
||||
"lockfileHash": "70b356e8",
|
||||
"browserHash": "1e7acf72",
|
||||
"optimized": {
|
||||
"@inertiajs/inertia-vue3": {
|
||||
"src": "../../@inertiajs/inertia-vue3/dist/index.js",
|
||||
"file": "@inertiajs_inertia-vue3.js",
|
||||
"fileHash": "6e1bbf6c",
|
||||
"needsInterop": true
|
||||
},
|
||||
"@inertiajs/vue3": {
|
||||
"src": "../../@inertiajs/vue3/dist/index.esm.js",
|
||||
"file": "@inertiajs_vue3.js",
|
||||
"fileHash": "5ec0f65e",
|
||||
"needsInterop": false
|
||||
},
|
||||
"axios": {
|
||||
"src": "../../axios/index.js",
|
||||
"file": "axios.js",
|
||||
"fileHash": "5db804a5",
|
||||
"needsInterop": false
|
||||
},
|
||||
"laravel-vite-plugin/inertia-helpers": {
|
||||
"src": "../../laravel-vite-plugin/inertia-helpers/index.js",
|
||||
"file": "laravel-vite-plugin_inertia-helpers.js",
|
||||
"fileHash": "725a9dbd",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vue": {
|
||||
"src": "../../vue/dist/vue.runtime.esm-bundler.js",
|
||||
"file": "vue.js",
|
||||
"fileHash": "e35c5d08",
|
||||
"needsInterop": false
|
||||
}
|
||||
},
|
||||
"chunks": {
|
||||
"chunk-MJN6PGBK": {
|
||||
"file": "chunk-MJN6PGBK.js"
|
||||
},
|
||||
"chunk-Y3GWUAMM": {
|
||||
"file": "chunk-Y3GWUAMM.js"
|
||||
},
|
||||
"chunk-SA4QXAJ3": {
|
||||
"file": "chunk-SA4QXAJ3.js"
|
||||
},
|
||||
"chunk-XSQZ24V4": {
|
||||
"file": "chunk-XSQZ24V4.js"
|
||||
},
|
||||
"chunk-CEQRFMJQ": {
|
||||
"file": "chunk-CEQRFMJQ.js"
|
||||
}
|
||||
}
|
||||
}
|
||||
40
node_modules/.vite/deps/axios.js
generated
vendored
Normal file
40
node_modules/.vite/deps/axios.js
generated
vendored
Normal file
@@ -0,0 +1,40 @@
|
||||
import {
|
||||
Axios,
|
||||
AxiosError,
|
||||
AxiosHeaders,
|
||||
Cancel,
|
||||
CancelToken,
|
||||
CanceledError,
|
||||
HttpStatusCode,
|
||||
VERSION,
|
||||
all,
|
||||
axios_default,
|
||||
formToJSON,
|
||||
getAdapter,
|
||||
isAxiosError,
|
||||
isCancel,
|
||||
mergeConfig,
|
||||
spread,
|
||||
toFormData
|
||||
} from "./chunk-MJN6PGBK.js";
|
||||
import "./chunk-CEQRFMJQ.js";
|
||||
export {
|
||||
Axios,
|
||||
AxiosError,
|
||||
AxiosHeaders,
|
||||
Cancel,
|
||||
CancelToken,
|
||||
CanceledError,
|
||||
HttpStatusCode,
|
||||
VERSION,
|
||||
all,
|
||||
axios_default as default,
|
||||
formToJSON,
|
||||
getAdapter,
|
||||
isAxiosError,
|
||||
isCancel,
|
||||
mergeConfig,
|
||||
spread,
|
||||
toFormData
|
||||
};
|
||||
//# sourceMappingURL=axios.js.map
|
||||
7
node_modules/.vite/deps/axios.js.map
generated
vendored
Normal file
7
node_modules/.vite/deps/axios.js.map
generated
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": [],
|
||||
"sourcesContent": [],
|
||||
"mappings": "",
|
||||
"names": []
|
||||
}
|
||||
42
node_modules/.vite/deps/chunk-CEQRFMJQ.js
generated
vendored
Normal file
42
node_modules/.vite/deps/chunk-CEQRFMJQ.js
generated
vendored
Normal file
@@ -0,0 +1,42 @@
|
||||
var __create = Object.create;
|
||||
var __defProp = Object.defineProperty;
|
||||
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
||||
var __getOwnPropNames = Object.getOwnPropertyNames;
|
||||
var __getProtoOf = Object.getPrototypeOf;
|
||||
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
||||
var __esm = (fn, res) => function __init() {
|
||||
return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
|
||||
};
|
||||
var __commonJS = (cb, mod) => function __require() {
|
||||
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
||||
};
|
||||
var __export = (target, all) => {
|
||||
for (var name in all)
|
||||
__defProp(target, name, { get: all[name], enumerable: true });
|
||||
};
|
||||
var __copyProps = (to, from, except, desc) => {
|
||||
if (from && typeof from === "object" || typeof from === "function") {
|
||||
for (let key of __getOwnPropNames(from))
|
||||
if (!__hasOwnProp.call(to, key) && key !== except)
|
||||
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
||||
}
|
||||
return to;
|
||||
};
|
||||
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
||||
// If the importer is in node compatibility mode or this is not an ESM
|
||||
// file that has been converted to a CommonJS file using a Babel-
|
||||
// compatible transform (i.e. "__esModule" has not been set), then set
|
||||
// "default" to the CommonJS "module.exports" for node compatibility.
|
||||
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
||||
mod
|
||||
));
|
||||
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
||||
|
||||
export {
|
||||
__esm,
|
||||
__commonJS,
|
||||
__export,
|
||||
__toESM,
|
||||
__toCommonJS
|
||||
};
|
||||
//# sourceMappingURL=chunk-CEQRFMJQ.js.map
|
||||
7
node_modules/.vite/deps/chunk-CEQRFMJQ.js.map
generated
vendored
Normal file
7
node_modules/.vite/deps/chunk-CEQRFMJQ.js.map
generated
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": [],
|
||||
"sourcesContent": [],
|
||||
"mappings": "",
|
||||
"names": []
|
||||
}
|
||||
2164
node_modules/.vite/deps/chunk-MJN6PGBK.js
generated
vendored
Normal file
2164
node_modules/.vite/deps/chunk-MJN6PGBK.js
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
7
node_modules/.vite/deps/chunk-MJN6PGBK.js.map
generated
vendored
Normal file
7
node_modules/.vite/deps/chunk-MJN6PGBK.js.map
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
38
node_modules/.vite/deps/chunk-SA4QXAJ3.js
generated
vendored
Normal file
38
node_modules/.vite/deps/chunk-SA4QXAJ3.js
generated
vendored
Normal file
@@ -0,0 +1,38 @@
|
||||
import {
|
||||
initCustomFormatter,
|
||||
init_runtime_dom_esm_bundler,
|
||||
warn
|
||||
} from "./chunk-XSQZ24V4.js";
|
||||
|
||||
// node_modules/vue/dist/vue.runtime.esm-bundler.js
|
||||
init_runtime_dom_esm_bundler();
|
||||
init_runtime_dom_esm_bundler();
|
||||
function initDev() {
|
||||
{
|
||||
initCustomFormatter();
|
||||
}
|
||||
}
|
||||
if (true) {
|
||||
initDev();
|
||||
}
|
||||
var compile = () => {
|
||||
if (true) {
|
||||
warn(
|
||||
`Runtime compilation is not supported in this build of Vue. Configure your bundler to alias "vue" to "vue/dist/vue.esm-bundler.js".`
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
export {
|
||||
compile
|
||||
};
|
||||
/*! Bundled license information:
|
||||
|
||||
vue/dist/vue.runtime.esm-bundler.js:
|
||||
(**
|
||||
* vue v3.4.15
|
||||
* (c) 2018-present Yuxi (Evan) You and Vue contributors
|
||||
* @license MIT
|
||||
**)
|
||||
*/
|
||||
//# sourceMappingURL=chunk-SA4QXAJ3.js.map
|
||||
7
node_modules/.vite/deps/chunk-SA4QXAJ3.js.map
generated
vendored
Normal file
7
node_modules/.vite/deps/chunk-SA4QXAJ3.js.map
generated
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": ["../../vue/dist/vue.runtime.esm-bundler.js"],
|
||||
"sourcesContent": ["/**\n* vue v3.4.15\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\nimport { initCustomFormatter, warn } from '@vue/runtime-dom';\nexport * from '@vue/runtime-dom';\n\nfunction initDev() {\n {\n initCustomFormatter();\n }\n}\n\nif (!!(process.env.NODE_ENV !== \"production\")) {\n initDev();\n}\nconst compile = () => {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(\n `Runtime compilation is not supported in this build of Vue.` + (` Configure your bundler to alias \"vue\" to \"vue/dist/vue.esm-bundler.js\".` )\n );\n }\n};\n\nexport { compile };\n"],
|
||||
"mappings": ";;;;;;;AAKA;AACA;AAEA,SAAS,UAAU;AACjB;AACE,wBAAoB;AAAA,EACtB;AACF;AAEA,IAAI,MAA2C;AAC7C,UAAQ;AACV;AACA,IAAM,UAAU,MAAM;AACpB,MAAI,MAA2C;AAC7C;AAAA,MACE;AAAA,IACF;AAAA,EACF;AACF;",
|
||||
"names": []
|
||||
}
|
||||
11805
node_modules/.vite/deps/chunk-XSQZ24V4.js
generated
vendored
Normal file
11805
node_modules/.vite/deps/chunk-XSQZ24V4.js
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
7
node_modules/.vite/deps/chunk-XSQZ24V4.js.map
generated
vendored
Normal file
7
node_modules/.vite/deps/chunk-XSQZ24V4.js.map
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
3478
node_modules/.vite/deps/chunk-Y3GWUAMM.js
generated
vendored
Normal file
3478
node_modules/.vite/deps/chunk-Y3GWUAMM.js
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
7
node_modules/.vite/deps/chunk-Y3GWUAMM.js.map
generated
vendored
Normal file
7
node_modules/.vite/deps/chunk-Y3GWUAMM.js.map
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
17
node_modules/.vite/deps/laravel-vite-plugin_inertia-helpers.js
generated
vendored
Normal file
17
node_modules/.vite/deps/laravel-vite-plugin_inertia-helpers.js
generated
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
import "./chunk-CEQRFMJQ.js";
|
||||
|
||||
// node_modules/laravel-vite-plugin/inertia-helpers/index.js
|
||||
async function resolvePageComponent(path, pages) {
|
||||
for (const p of Array.isArray(path) ? path : [path]) {
|
||||
const page = pages[p];
|
||||
if (typeof page === "undefined") {
|
||||
continue;
|
||||
}
|
||||
return typeof page === "function" ? page() : page;
|
||||
}
|
||||
throw new Error(`Page not found: ${path}`);
|
||||
}
|
||||
export {
|
||||
resolvePageComponent
|
||||
};
|
||||
//# sourceMappingURL=laravel-vite-plugin_inertia-helpers.js.map
|
||||
7
node_modules/.vite/deps/laravel-vite-plugin_inertia-helpers.js.map
generated
vendored
Normal file
7
node_modules/.vite/deps/laravel-vite-plugin_inertia-helpers.js.map
generated
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": ["../../laravel-vite-plugin/inertia-helpers/index.js"],
|
||||
"sourcesContent": ["export async function resolvePageComponent(path, pages) {\n for (const p of (Array.isArray(path) ? path : [path])) {\n const page = pages[p];\n if (typeof page === 'undefined') {\n continue;\n }\n return typeof page === 'function' ? page() : page;\n }\n throw new Error(`Page not found: ${path}`);\n}\n"],
|
||||
"mappings": ";;;AAAA,eAAsB,qBAAqB,MAAM,OAAO;AACpD,aAAW,KAAM,MAAM,QAAQ,IAAI,IAAI,OAAO,CAAC,IAAI,GAAI;AACnD,UAAM,OAAO,MAAM,CAAC;AACpB,QAAI,OAAO,SAAS,aAAa;AAC7B;AAAA,IACJ;AACA,WAAO,OAAO,SAAS,aAAa,KAAK,IAAI;AAAA,EACjD;AACA,QAAM,IAAI,MAAM,mBAAmB,IAAI,EAAE;AAC7C;",
|
||||
"names": []
|
||||
}
|
||||
3
node_modules/.vite/deps/package.json
generated
vendored
Normal file
3
node_modules/.vite/deps/package.json
generated
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"type": "module"
|
||||
}
|
||||
326
node_modules/.vite/deps/vue.js
generated
vendored
Normal file
326
node_modules/.vite/deps/vue.js
generated
vendored
Normal file
@@ -0,0 +1,326 @@
|
||||
import {
|
||||
compile
|
||||
} from "./chunk-SA4QXAJ3.js";
|
||||
import {
|
||||
BaseTransition,
|
||||
BaseTransitionPropsValidators,
|
||||
Comment,
|
||||
DeprecationTypes,
|
||||
EffectScope,
|
||||
ErrorCodes,
|
||||
ErrorTypeStrings,
|
||||
Fragment,
|
||||
KeepAlive,
|
||||
ReactiveEffect,
|
||||
Static,
|
||||
Suspense,
|
||||
Teleport,
|
||||
Text,
|
||||
TrackOpTypes,
|
||||
Transition,
|
||||
TransitionGroup,
|
||||
TriggerOpTypes,
|
||||
VueElement,
|
||||
assertNumber,
|
||||
callWithAsyncErrorHandling,
|
||||
callWithErrorHandling,
|
||||
camelize,
|
||||
capitalize,
|
||||
cloneVNode,
|
||||
compatUtils,
|
||||
computed,
|
||||
createApp,
|
||||
createBaseVNode,
|
||||
createBlock,
|
||||
createCommentVNode,
|
||||
createElementBlock,
|
||||
createHydrationRenderer,
|
||||
createPropsRestProxy,
|
||||
createRenderer,
|
||||
createSSRApp,
|
||||
createSlots,
|
||||
createStaticVNode,
|
||||
createTextVNode,
|
||||
createVNode,
|
||||
customRef,
|
||||
defineAsyncComponent,
|
||||
defineComponent,
|
||||
defineCustomElement,
|
||||
defineEmits,
|
||||
defineExpose,
|
||||
defineModel,
|
||||
defineOptions,
|
||||
defineProps,
|
||||
defineSSRCustomElement,
|
||||
defineSlots,
|
||||
devtools,
|
||||
effect,
|
||||
effectScope,
|
||||
getCurrentInstance,
|
||||
getCurrentScope,
|
||||
getTransitionRawChildren,
|
||||
guardReactiveProps,
|
||||
h,
|
||||
handleError,
|
||||
hasInjectionContext,
|
||||
hydrate,
|
||||
initCustomFormatter,
|
||||
initDirectivesForSSR,
|
||||
inject,
|
||||
isMemoSame,
|
||||
isProxy,
|
||||
isReactive,
|
||||
isReadonly,
|
||||
isRef,
|
||||
isRuntimeOnly,
|
||||
isShallow,
|
||||
isVNode,
|
||||
markRaw,
|
||||
mergeDefaults,
|
||||
mergeModels,
|
||||
mergeProps,
|
||||
nextTick,
|
||||
normalizeClass,
|
||||
normalizeProps,
|
||||
normalizeStyle,
|
||||
onActivated,
|
||||
onBeforeMount,
|
||||
onBeforeUnmount,
|
||||
onBeforeUpdate,
|
||||
onDeactivated,
|
||||
onErrorCaptured,
|
||||
onMounted,
|
||||
onRenderTracked,
|
||||
onRenderTriggered,
|
||||
onScopeDispose,
|
||||
onServerPrefetch,
|
||||
onUnmounted,
|
||||
onUpdated,
|
||||
openBlock,
|
||||
popScopeId,
|
||||
provide,
|
||||
proxyRefs,
|
||||
pushScopeId,
|
||||
queuePostFlushCb,
|
||||
reactive,
|
||||
readonly,
|
||||
ref,
|
||||
registerRuntimeCompiler,
|
||||
render,
|
||||
renderList,
|
||||
renderSlot,
|
||||
resolveComponent,
|
||||
resolveDirective,
|
||||
resolveDynamicComponent,
|
||||
resolveFilter,
|
||||
resolveTransitionHooks,
|
||||
setBlockTracking,
|
||||
setDevtoolsHook,
|
||||
setTransitionHooks,
|
||||
shallowReactive,
|
||||
shallowReadonly,
|
||||
shallowRef,
|
||||
ssrContextKey,
|
||||
ssrUtils,
|
||||
stop,
|
||||
toDisplayString,
|
||||
toHandlerKey,
|
||||
toHandlers,
|
||||
toRaw,
|
||||
toRef,
|
||||
toRefs,
|
||||
toValue,
|
||||
transformVNodeArgs,
|
||||
triggerRef,
|
||||
unref,
|
||||
useAttrs,
|
||||
useCssModule,
|
||||
useCssVars,
|
||||
useModel,
|
||||
useSSRContext,
|
||||
useSlots,
|
||||
useTransitionState,
|
||||
vModelCheckbox,
|
||||
vModelDynamic,
|
||||
vModelRadio,
|
||||
vModelSelect,
|
||||
vModelText,
|
||||
vShow,
|
||||
version,
|
||||
warn,
|
||||
watch,
|
||||
watchEffect,
|
||||
watchPostEffect,
|
||||
watchSyncEffect,
|
||||
withAsyncContext,
|
||||
withCtx,
|
||||
withDefaults,
|
||||
withDirectives,
|
||||
withKeys,
|
||||
withMemo,
|
||||
withModifiers,
|
||||
withScopeId
|
||||
} from "./chunk-XSQZ24V4.js";
|
||||
import "./chunk-CEQRFMJQ.js";
|
||||
export {
|
||||
BaseTransition,
|
||||
BaseTransitionPropsValidators,
|
||||
Comment,
|
||||
DeprecationTypes,
|
||||
EffectScope,
|
||||
ErrorCodes,
|
||||
ErrorTypeStrings,
|
||||
Fragment,
|
||||
KeepAlive,
|
||||
ReactiveEffect,
|
||||
Static,
|
||||
Suspense,
|
||||
Teleport,
|
||||
Text,
|
||||
TrackOpTypes,
|
||||
Transition,
|
||||
TransitionGroup,
|
||||
TriggerOpTypes,
|
||||
VueElement,
|
||||
assertNumber,
|
||||
callWithAsyncErrorHandling,
|
||||
callWithErrorHandling,
|
||||
camelize,
|
||||
capitalize,
|
||||
cloneVNode,
|
||||
compatUtils,
|
||||
compile,
|
||||
computed,
|
||||
createApp,
|
||||
createBlock,
|
||||
createCommentVNode,
|
||||
createElementBlock,
|
||||
createBaseVNode as createElementVNode,
|
||||
createHydrationRenderer,
|
||||
createPropsRestProxy,
|
||||
createRenderer,
|
||||
createSSRApp,
|
||||
createSlots,
|
||||
createStaticVNode,
|
||||
createTextVNode,
|
||||
createVNode,
|
||||
customRef,
|
||||
defineAsyncComponent,
|
||||
defineComponent,
|
||||
defineCustomElement,
|
||||
defineEmits,
|
||||
defineExpose,
|
||||
defineModel,
|
||||
defineOptions,
|
||||
defineProps,
|
||||
defineSSRCustomElement,
|
||||
defineSlots,
|
||||
devtools,
|
||||
effect,
|
||||
effectScope,
|
||||
getCurrentInstance,
|
||||
getCurrentScope,
|
||||
getTransitionRawChildren,
|
||||
guardReactiveProps,
|
||||
h,
|
||||
handleError,
|
||||
hasInjectionContext,
|
||||
hydrate,
|
||||
initCustomFormatter,
|
||||
initDirectivesForSSR,
|
||||
inject,
|
||||
isMemoSame,
|
||||
isProxy,
|
||||
isReactive,
|
||||
isReadonly,
|
||||
isRef,
|
||||
isRuntimeOnly,
|
||||
isShallow,
|
||||
isVNode,
|
||||
markRaw,
|
||||
mergeDefaults,
|
||||
mergeModels,
|
||||
mergeProps,
|
||||
nextTick,
|
||||
normalizeClass,
|
||||
normalizeProps,
|
||||
normalizeStyle,
|
||||
onActivated,
|
||||
onBeforeMount,
|
||||
onBeforeUnmount,
|
||||
onBeforeUpdate,
|
||||
onDeactivated,
|
||||
onErrorCaptured,
|
||||
onMounted,
|
||||
onRenderTracked,
|
||||
onRenderTriggered,
|
||||
onScopeDispose,
|
||||
onServerPrefetch,
|
||||
onUnmounted,
|
||||
onUpdated,
|
||||
openBlock,
|
||||
popScopeId,
|
||||
provide,
|
||||
proxyRefs,
|
||||
pushScopeId,
|
||||
queuePostFlushCb,
|
||||
reactive,
|
||||
readonly,
|
||||
ref,
|
||||
registerRuntimeCompiler,
|
||||
render,
|
||||
renderList,
|
||||
renderSlot,
|
||||
resolveComponent,
|
||||
resolveDirective,
|
||||
resolveDynamicComponent,
|
||||
resolveFilter,
|
||||
resolveTransitionHooks,
|
||||
setBlockTracking,
|
||||
setDevtoolsHook,
|
||||
setTransitionHooks,
|
||||
shallowReactive,
|
||||
shallowReadonly,
|
||||
shallowRef,
|
||||
ssrContextKey,
|
||||
ssrUtils,
|
||||
stop,
|
||||
toDisplayString,
|
||||
toHandlerKey,
|
||||
toHandlers,
|
||||
toRaw,
|
||||
toRef,
|
||||
toRefs,
|
||||
toValue,
|
||||
transformVNodeArgs,
|
||||
triggerRef,
|
||||
unref,
|
||||
useAttrs,
|
||||
useCssModule,
|
||||
useCssVars,
|
||||
useModel,
|
||||
useSSRContext,
|
||||
useSlots,
|
||||
useTransitionState,
|
||||
vModelCheckbox,
|
||||
vModelDynamic,
|
||||
vModelRadio,
|
||||
vModelSelect,
|
||||
vModelText,
|
||||
vShow,
|
||||
version,
|
||||
warn,
|
||||
watch,
|
||||
watchEffect,
|
||||
watchPostEffect,
|
||||
watchSyncEffect,
|
||||
withAsyncContext,
|
||||
withCtx,
|
||||
withDefaults,
|
||||
withDirectives,
|
||||
withKeys,
|
||||
withMemo,
|
||||
withModifiers,
|
||||
withScopeId
|
||||
};
|
||||
//# sourceMappingURL=vue.js.map
|
||||
7
node_modules/.vite/deps/vue.js.map
generated
vendored
Normal file
7
node_modules/.vite/deps/vue.js.map
generated
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": [],
|
||||
"sourcesContent": [],
|
||||
"mappings": "",
|
||||
"names": []
|
||||
}
|
||||
@@ -1,3 +1,3 @@
|
||||
.container-sm{
|
||||
max-width: 25%;
|
||||
}
|
||||
.container-sm {
|
||||
max-width: 25%;
|
||||
}/*# sourceMappingURL=login.css.map */
|
||||
1
resources/js/Pages/Auth/login.css.map
Normal file
1
resources/js/Pages/Auth/login.css.map
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["login.scss","login.css"],"names":[],"mappings":"AAAA;EACI,cAAA;ACCJ","file":"login.css"}
|
||||
3
resources/js/Pages/Auth/login.scss
Normal file
3
resources/js/Pages/Auth/login.scss
Normal file
@@ -0,0 +1,3 @@
|
||||
.container-sm{
|
||||
max-width: 25%;
|
||||
}
|
||||
@@ -13,7 +13,7 @@ function submit() {
|
||||
</script>
|
||||
|
||||
<style>
|
||||
@import "login.css";
|
||||
@import "login.css";
|
||||
</style>
|
||||
|
||||
<template>
|
||||
|
||||
3
resources/js/Pages/Transactions/index.css
Normal file
3
resources/js/Pages/Transactions/index.css
Normal file
@@ -0,0 +1,3 @@
|
||||
.col h3 {
|
||||
background-color: green;
|
||||
}/*# sourceMappingURL=index.css.map */
|
||||
1
resources/js/Pages/Transactions/index.css.map
Normal file
1
resources/js/Pages/Transactions/index.css.map
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["index.scss","index.css"],"names":[],"mappings":"AACI;EACI,uBAAA;ACAR","file":"index.css"}
|
||||
5
resources/js/Pages/Transactions/index.scss
Normal file
5
resources/js/Pages/Transactions/index.scss
Normal file
@@ -0,0 +1,5 @@
|
||||
.col{
|
||||
h3{
|
||||
background-color: green;
|
||||
}
|
||||
}
|
||||
39
resources/js/Pages/Transactions/index.vue
Normal file
39
resources/js/Pages/Transactions/index.vue
Normal file
@@ -0,0 +1,39 @@
|
||||
<script setup>
|
||||
import homeLayout from "../../templates/home.layout.vue";
|
||||
import { Head } from "@inertiajs/vue3";
|
||||
</script>
|
||||
|
||||
<style>
|
||||
@import "index.css";
|
||||
</style>
|
||||
|
||||
<template>
|
||||
<homeLayout>
|
||||
<Head>
|
||||
<title>Transactions</title>
|
||||
</Head>
|
||||
<div class="row h-50">
|
||||
<div class="col">
|
||||
<h3 class="text-center">Incomes</h3>
|
||||
<table class="table table-striped table-hover table-responsive">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td v-for="column in $page.props.incomes.columns">
|
||||
{{ column }}
|
||||
</td>
|
||||
</tr>
|
||||
<tr v-for="item in $page.props.incomes.data">
|
||||
<td>{{ item.amount }}</td>
|
||||
<td>{{ item.description }}</td>
|
||||
<td>{{ item.date }}</td>
|
||||
<td>{{ item.label }}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="col">
|
||||
<table class="table table-striped"></table>
|
||||
</div>
|
||||
</div>
|
||||
</homeLayout>
|
||||
</template>
|
||||
1
resources/js/Pages/User/profile.css
Normal file
1
resources/js/Pages/User/profile.css
Normal file
@@ -0,0 +1 @@
|
||||
/*# sourceMappingURL=profile.css.map */
|
||||
1
resources/js/Pages/User/profile.css.map
Normal file
1
resources/js/Pages/User/profile.css.map
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":[],"names":[],"mappings":"","file":"profile.css"}
|
||||
0
resources/js/Pages/User/profile.scss
Normal file
0
resources/js/Pages/User/profile.scss
Normal file
31
resources/js/Pages/User/profile.vue
Normal file
31
resources/js/Pages/User/profile.vue
Normal file
@@ -0,0 +1,31 @@
|
||||
<script setup>
|
||||
import { Head } from "@inertiajs/vue3";
|
||||
import { reactive } from "vue";
|
||||
import { router } from "@inertiajs/vue3";
|
||||
import homeLayout from "../../templates/home.layout.vue";
|
||||
|
||||
// const form = reactive({
|
||||
// email: null,
|
||||
// password: null,
|
||||
// });
|
||||
function submit() {
|
||||
// router.post("/login", form);
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
@import "profile.css";
|
||||
</style>
|
||||
|
||||
<template>
|
||||
<homeLayout>
|
||||
<Head>
|
||||
<title>Profile</title>
|
||||
</Head>
|
||||
|
||||
<h2>{{ $page.props.auth.user.name }} - {{ $page.props.auth.user.email }}</h2>
|
||||
|
||||
<p>Account: {{ $page.props.auth.user.account }} €</p>
|
||||
<p>Role: {{ $page.props.auth.user.role }}</p>
|
||||
</homeLayout>
|
||||
</template>
|
||||
30
resources/js/templates/home.css
Normal file
30
resources/js/templates/home.css
Normal file
@@ -0,0 +1,30 @@
|
||||
header {
|
||||
margin-bottom: 5px;
|
||||
background-color: rgb(0, 0, 0);
|
||||
padding: 10px;
|
||||
border-radius: 0 0 20px 20px;
|
||||
box-shadow: 0 5px 5px gray;
|
||||
}
|
||||
header a {
|
||||
color: white;
|
||||
text-decoration: none;
|
||||
width: 100%;
|
||||
}
|
||||
header a::before {
|
||||
content: "";
|
||||
display: block;
|
||||
width: 100%;
|
||||
height: 1px;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
background-color: #08d375;
|
||||
transform: scaleX(0);
|
||||
transition: transform 0.5s ease;
|
||||
}
|
||||
header a:hover {
|
||||
color: #08d375;
|
||||
transition: all ease 0.5s;
|
||||
}
|
||||
header a:hover::before {
|
||||
transform: scaleX(1);
|
||||
}/*# sourceMappingURL=home.css.map */
|
||||
1
resources/js/templates/home.css.map
Normal file
1
resources/js/templates/home.css.map
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["home.scss","home.css"],"names":[],"mappings":"AAAA;EACI,kBAAA;EACA,8BAAA;EACA,aAAA;EACA,4BAAA;EACA,0BAAA;ACCJ;ADAI;EACI,YAAA;EACA,qBAAA;EACA,WAAA;ACER;ADDQ;EACI,WAAA;EACA,cAAA;EACA,WAAA;EACA,WAAA;EACA,SAAA;EACA,OAAA;EACA,yBAAA;EACA,oBAAA;EACA,+BAAA;ACGZ;ADDQ;EACI,cAAA;EACA,yBAAA;ACGZ;ADFY;EACI,oBAAA;ACIhB","file":"home.css"}
|
||||
28
resources/js/templates/home.layout.vue
Normal file
28
resources/js/templates/home.layout.vue
Normal file
@@ -0,0 +1,28 @@
|
||||
<script setup>
|
||||
import { Link } from "@inertiajs/vue3";
|
||||
|
||||
</script>
|
||||
<style>
|
||||
@import "home.css";
|
||||
</style>
|
||||
|
||||
<template>
|
||||
<header>
|
||||
<div class="container text-center">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<Link href="/">Home</Link>
|
||||
</div>
|
||||
<div class="col">
|
||||
<Link href="/transactions">Manage Expanses & Incomes</Link>
|
||||
</div>
|
||||
<div class="col">
|
||||
<Link href="">Lorem</Link>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
<main>
|
||||
<slot />
|
||||
</main>
|
||||
</template>
|
||||
30
resources/js/templates/home.scss
Normal file
30
resources/js/templates/home.scss
Normal file
@@ -0,0 +1,30 @@
|
||||
header {
|
||||
margin-bottom: 5px;
|
||||
background-color: rgb(0, 0, 0);
|
||||
padding: 10px;
|
||||
border-radius: 0 0 20px 20px;
|
||||
box-shadow: 0 5px 5px gray;
|
||||
a {
|
||||
color: white;
|
||||
text-decoration: none;
|
||||
width: 100%;
|
||||
&::before {
|
||||
content: "";
|
||||
display: block;
|
||||
width: 100%;
|
||||
height: 1px;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
background-color: #08d375;
|
||||
transform: scaleX(0);
|
||||
transition: transform 0.5s ease;
|
||||
}
|
||||
&:hover {
|
||||
color: #08d375;
|
||||
transition: all ease 0.5s;
|
||||
&::before {
|
||||
transform: scaleX(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
<?php
|
||||
|
||||
use App\Http\Controllers\TransactionsController;
|
||||
use App\Http\Controllers\UserController;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
@@ -25,5 +26,8 @@ Route::middleware(['auth'])->group(function(){
|
||||
Route::get('/', function () {
|
||||
return view('welcome');
|
||||
})->name('home');
|
||||
|
||||
Route::get('/profile', function () {
|
||||
return Inertia::render('User/profile');
|
||||
})->name('profile');
|
||||
Route::get('/transactions', [TransactionsController::class, 'index'])->name('transactions');
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user