Skip to content

Commit

Permalink
wip
Browse files Browse the repository at this point in the history
Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>
  • Loading branch information
crynobone committed Aug 9, 2024
1 parent 9a2a27b commit 1a8ee08
Show file tree
Hide file tree
Showing 16 changed files with 222 additions and 77 deletions.
14 changes: 11 additions & 3 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -33,15 +33,22 @@
"require-dev": {
"guzzlehttp/guzzle": "^7.2",
"larastan/larastan": "^2.4",
"laravel/nova": "*",
"laravel/nova": "dev-develop",
"laravel/pint": "^1.6",
"orchestra/testbench": "^8.20 || ^9.0",
"nova-kit/nova-devtool": "^2.0"
"laravel/nova-devtool": "^1.0"
},
"conflict": {
"laravel/nova": "<5.0.0 || >=6.0.0"
},
"repositories": [
{
"type": "composer",
"url": "https://nova.laravel.com"
},
{
"type": "vcs",
"url": "https://github.com/laravel/nova-devtool"
}
],
"extra": {
Expand All @@ -58,6 +65,7 @@
"prepare": "@php vendor/bin/testbench package:discover --ansi",
"build": "@php vendor/bin/testbench workbench:build --ansi",
"serve": [
"Composer\\Config::disableProcessTimeout",
"@build",
"@php vendor/bin/testbench serve"
],
Expand All @@ -75,4 +83,4 @@
},
"prefer-stable": true,
"minimum-stability": "dev"
}
}
2 changes: 1 addition & 1 deletion src/Actions/QueuedExportAsCsv.php
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ public function withStorageDisk(?string $storageDisk)
* @return \Laravel\Nova\Actions\Response
*/
#[\Override]
protected function dispatchRequestUsing(ActionRequest $request, Response $response, ActionFields $fields)
protected function dispatchRequestUsing(ActionRequest $request, Response $response, ActionFields $fields): Response
{
$query = $request->toSelectedResourceQuery();

Expand Down
2 changes: 2 additions & 0 deletions testbench.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,9 @@ seeders:

workbench:
start: /nova
user: nova@laravel.com
build:
- package:discover
- asset-publish
- create-sqlite-db
- db:wipe
Expand Down
45 changes: 45 additions & 0 deletions workbench/app/Models/User.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
<?php

namespace Workbench\App\Models;

// use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Laravel\Sanctum\HasApiTokens;

class User extends Authenticatable
{
use HasFactory, Notifiable;

/**
* The attributes that are mass assignable.
*
* @var array<int, string>
*/
protected $fillable = [
'name',
'email',
'password',
];

/**
* The attributes that should be hidden for serialization.
*
* @var array<int, string>
*/
protected $hidden = [
'password',
'remember_token',
];

/**
* The attributes that should be cast.
*
* @var array<string, string>
*/
protected $casts = [
'email_verified_at' => 'datetime',
'password' => 'hashed',
];
}
22 changes: 6 additions & 16 deletions workbench/app/Nova/Resource.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,40 +2,33 @@

namespace Workbench\App\Nova;

use Illuminate\Contracts\Database\Eloquent\Builder;
use Laravel\Nova\Http\Requests\NovaRequest;
use Laravel\Nova\Resource as NovaResource;
use Laravel\Scout\Builder as ScoutBuilder;

abstract class Resource extends NovaResource
{
/**
* Build an "index" query for the given resource.
*
* @param \Illuminate\Database\Eloquent\Builder $query
* @return \Illuminate\Database\Eloquent\Builder
*/
public static function indexQuery(NovaRequest $request, $query)
public static function indexQuery(NovaRequest $request, Builder $query): Builder
{
return $query;
}

/**
* Build a Scout search query for the given resource.
*
* @param \Laravel\Scout\Builder $query
* @return \Laravel\Scout\Builder
*/
public static function scoutQuery(NovaRequest $request, $query)
public static function scoutQuery(NovaRequest $request, ScoutBuilder $query): ScoutBuilder
{
return $query;
}

/**
* Build a "detail" query for the given resource.
*
* @param \Illuminate\Database\Eloquent\Builder $query
* @return \Illuminate\Database\Eloquent\Builder
*/
public static function detailQuery(NovaRequest $request, $query)
public static function detailQuery(NovaRequest $request, Builder $query): Builder
{
return parent::detailQuery($request, $query);
}
Expand All @@ -44,11 +37,8 @@ public static function detailQuery(NovaRequest $request, $query)
* Build a "relatable" query for the given resource.
*
* This query determines which instances of the model may be attached to other resources.
*
* @param \Illuminate\Database\Eloquent\Builder $query
* @return \Illuminate\Database\Eloquent\Builder
*/
public static function relatableQuery(NovaRequest $request, $query)
public static function relatableQuery(NovaRequest $request, Builder $query): Builder
{
return parent::relatableQuery($request, $query);
}
Expand Down
17 changes: 10 additions & 7 deletions workbench/app/Nova/Subscriber.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
use Illuminate\Http\Request;
use Illuminate\Validation\Rules;
use Laravel\Nova\Actions\Action;
use Laravel\Nova\Auth\PasswordValidationRules;
use Laravel\Nova\Fields\Gravatar;
use Laravel\Nova\Fields\ID;
use Laravel\Nova\Fields\Password;
Expand All @@ -14,6 +15,8 @@

class Subscriber extends Resource
{
use PasswordValidationRules;

/**
* The model the resource corresponds to.
*
Expand Down Expand Up @@ -42,7 +45,7 @@ class Subscriber extends Resource
*
* @return array
*/
public function fields(NovaRequest $request)
public function fields(NovaRequest $request): array
{
return [
ID::make()->sortable(),
Expand All @@ -61,8 +64,8 @@ public function fields(NovaRequest $request)

Password::make('Password')
->onlyOnForms()
->creationRules('required', Rules\Password::defaults())
->updateRules('nullable', Rules\Password::defaults()),
->creationRules($this->passwordRules())
->updateRules($this->optionalPasswordRules()),
];
}

Expand All @@ -71,7 +74,7 @@ public function fields(NovaRequest $request)
*
* @return array
*/
public function cards(NovaRequest $request)
public function cards(NovaRequest $request): array
{
return [];
}
Expand All @@ -81,7 +84,7 @@ public function cards(NovaRequest $request)
*
* @return array
*/
public function filters(NovaRequest $request)
public function filters(NovaRequest $request): array
{
return [];
}
Expand All @@ -91,7 +94,7 @@ public function filters(NovaRequest $request)
*
* @return array
*/
public function lenses(NovaRequest $request)
public function lenses(NovaRequest $request): array
{
return [];
}
Expand All @@ -101,7 +104,7 @@ public function lenses(NovaRequest $request)
*
* @return array
*/
public function actions(NovaRequest $request)
public function actions(NovaRequest $request): array
{
return [
QueuedExportAsCsv::make()->then(function () {
Expand Down
32 changes: 17 additions & 15 deletions workbench/app/Nova/User.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
namespace Workbench\App\Nova;

use Illuminate\Http\Request;
use Illuminate\Validation\Rules;
use Laravel\Nova\Auth\PasswordValidationRules;
use Laravel\Nova\Fields\ID;
use Laravel\Nova\Fields\Password;
use Laravel\Nova\Fields\Text;
Expand All @@ -12,12 +12,14 @@

class User extends Resource
{
use PasswordValidationRules;

/**
* The model the resource corresponds to.
*
* @var string
* @var class-string<\Workbench\App\Models\User>
*/
public static $model = \Illuminate\Foundation\Auth\User::class;
public static $model = \Workbench\App\Models\User::class;

/**
* The single value that should be used to represent the resource when being displayed.
Expand All @@ -38,9 +40,9 @@ class User extends Resource
/**
* Get the fields displayed by the resource.
*
* @return array
* @return array<int, \Laravel\Nova\Fields\Field|\Laravel\Nova\Panel|\Laravel\Nova\ResourceTool|\Illuminate\Http\Resources\MergeValue>
*/
public function fields(NovaRequest $request)
public function fields(NovaRequest $request): array
{
return [
ID::make()->sortable(),
Expand All @@ -57,47 +59,47 @@ public function fields(NovaRequest $request)

Password::make('Password')
->onlyOnForms()
->creationRules('required', Rules\Password::defaults())
->updateRules('nullable', Rules\Password::defaults()),
->creationRules($this->passwordRules())
->updateRules($this->optionalPasswordRules()),
];
}

/**
* Get the cards available for the request.
*
* @return array
* @return array<int, \Laravel\Nova\Card>
*/
public function cards(NovaRequest $request)
public function cards(NovaRequest $request): array
{
return [];
}

/**
* Get the filters available for the resource.
*
* @return array
* @return array<int, \Laravel\Nova\Filters\Filter>
*/
public function filters(NovaRequest $request)
public function filters(NovaRequest $request): array
{
return [];
}

/**
* Get the lenses available for the resource.
*
* @return array
* @return array<int, \Laravel\Nova\Lenses\Lens>
*/
public function lenses(NovaRequest $request)
public function lenses(NovaRequest $request): array
{
return [];
}

/**
* Get the actions available for the resource.
*
* @return array
* @return array<int, \Laravel\Nova\Actions\Action>
*/
public function actions(NovaRequest $request)
public function actions(NovaRequest $request): array
{
return [
QueuedExportAsCsv::make(),
Expand Down
Loading

0 comments on commit 1a8ee08

Please sign in to comment.