diff --git a/app/Data/Ui/ManageRoles/PermissionData.php b/app/Data/Ui/ManageRoles/PermissionData.php
new file mode 100644
index 0000000..1732d14
--- /dev/null
+++ b/app/Data/Ui/ManageRoles/PermissionData.php
@@ -0,0 +1,18 @@
+registerScopeDirective();
}
+
public function registerScopeDirective(): void
{
/**
@@ -30,7 +31,10 @@ public function registerScopeDirective(): void
$directiveArguments = preg_split("/,(?![^\(\(]*[\)\)])/", $expression);
$directiveArguments = array_map("trim", $directiveArguments);
- [$name, $functionArguments] = $directiveArguments;
+ // PHP 8.5 Safe Unpacking (Prevents "Undefined array key" crashes)
+ $name = $directiveArguments[0] ?? "''";
+ $functionArguments = $directiveArguments[1] ?? '';
+
// Build function "uses" to inject extra external variables
$uses = Arr::except(array_flip($directiveArguments), [$name, $functionArguments]);
$uses = array_flip($uses);
@@ -39,13 +43,14 @@ public function registerScopeDirective(): void
$uses = implode(",", $uses);
/**
- * Slot names can`t contains dot , eg: `user.city`.
- * So we convert `user.city` to `user___city`
+ * Slot names can`t contains dot , eg: `user.city`.
+ * So we convert `user.city` to `user___city`
*
- * Later, on component it will be replaced back.
+ * Later, on component it will be replaced back.
*/
$name = str_replace(".", "___", $name);
+ // PHP 8.5 Safe Loop Check
return "slot({$name}, function({$functionArguments}) use ({$uses}) { \$loop = !empty(\$__env->getLoopStack()) ? (object) \$__env->getLoopStack()[0] : null; ?>";
});
diff --git a/composer.json b/composer.json
index 8010f67..a0c815f 100644
--- a/composer.json
+++ b/composer.json
@@ -57,10 +57,10 @@
"npx concurrently -c \"#93c5fd,#c4b5fd,#fb7185,#fdba74\" \"php artisan serve\" \"php artisan pail --timeout=0\" \"npm run dev\" --names=server,queue,logs,vite --kill-others"
],
"lint": [
- "pint --parallel"
+ "pint --parallel --dirty"
],
"lint:check": [
- "pint --parallel --test"
+ "pint --parallel --dirty --test"
],
"ci:check": [
"Composer\\Config::disableProcessTimeout",
diff --git a/resources/views/components/dashboard/roles/⚡hr-permission.blade.php b/resources/views/components/dashboard/roles/⚡hr-permission.blade.php
new file mode 100644
index 0000000..0f709f7
--- /dev/null
+++ b/resources/views/components/dashboard/roles/⚡hr-permission.blade.php
@@ -0,0 +1,60 @@
+header = TableHeader::collect([
+ new TableHeader('name', 'Permission'),
+ new TableHeader('view', 'View'),
+ new TableHeader('create', 'Create'),
+ new TableHeader('update', 'Edit'),
+ new TableHeader('delete', 'Delete'),
+ ], DataCollection::class);
+
+ $this->rolePermissions = PermissionData::collect([
+ new PermissionData('Outlook - emails', true, true, false, false),
+ new PermissionData('Teams - Messages', true, false, true, true),
+ ], DataCollection::class);
+ }
+};
+?>
+
+
+
+
+
+ {{ __('Revoke All') }}
+
+
+ {{ __('Save') }}
+
+
+
+
+ @scope('cell_view', $row)
+
+ @endscope
+ @scope('cell_create', $row)
+
+ @endscope
+ @scope('cell_update', $row)
+
+ @endscope
+ @scope('cell_delete', $row)
+
+ @endscope
+
+
+
diff --git a/resources/views/components/dashboard/roles/⚡manager.blade.php b/resources/views/components/dashboard/roles/⚡manager.blade.php
index dfd17de..281bac4 100644
--- a/resources/views/components/dashboard/roles/⚡manager.blade.php
+++ b/resources/views/components/dashboard/roles/⚡manager.blade.php
@@ -1,34 +1,24 @@
- */
- public array $header;
+ #[DataCollectionOf(TableHeader::class)]
+ public DataCollection $header;
#[DataCollectionOf(class: RoleData::class)]
public DataCollection $roles;
public function mount(): void
{
- $this->header = [
+ $this->header = TableHeader::collect([
[
"key" => "name",
"label" => "Role Name",
@@ -45,7 +35,7 @@ public function mount(): void
"key" => "status",
"label" => "Status",
],
- ];
+ ], DataCollection::class);
$this->roles = RoleData::collect(
[
new RoleData(
@@ -91,7 +81,7 @@ public function mount(): void
-
+
@scope('cell_users', $role)
@php /** @var RoleData $role */ @endphp
diff --git a/resources/views/components/shared/button.blade.php b/resources/views/components/shared/button.blade.php
index 392bbb5..b38d468 100644
--- a/resources/views/components/shared/button.blade.php
+++ b/resources/views/components/shared/button.blade.php
@@ -1,5 +1,5 @@
@props(['icon' => null])
-