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]) -