Skip to content

Commit 2c9e57c

Browse files
committed
wip
1 parent 74fc8e1 commit 2c9e57c

30 files changed

+233
-22
lines changed

public/build/assets/app-275e9a85.js

Lines changed: 0 additions & 1 deletion
This file was deleted.

public/build/assets/app-4d04387c.css

Lines changed: 0 additions & 1 deletion
This file was deleted.

public/build/assets/app-bc3780fe.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
import{a as f}from"./app-455c4098.js";export{f as default};

public/build/assets/app-d00ef1bd.css

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
import"./app-455c4098.js";

public/build/assets/dropdown-7fa3ba94.js

Lines changed: 0 additions & 1 deletion
This file was deleted.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
import"./app-455c4098.js";

public/build/assets/editor-7fa3ba94.js

Lines changed: 0 additions & 1 deletion
This file was deleted.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
import"./app-455c4098.js";

public/build/assets/media-manager-7fa3ba94.js

Lines changed: 0 additions & 1 deletion
This file was deleted.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
import"./app-455c4098.js";

public/build/assets/repeater-7fa3ba94.js

Lines changed: 0 additions & 1 deletion
This file was deleted.

public/build/manifest.json

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,50 +1,50 @@
11
{
22
"resources/js/app.css": {
3-
"file": "assets/app-4d04387c.css",
3+
"file": "assets/app-d00ef1bd.css",
44
"src": "resources/js/app.css"
55
},
66
"resources/js/app.js": {
77
"css": [
8-
"assets/app-4d04387c.css"
8+
"assets/app-d00ef1bd.css"
99
],
10-
"file": "assets/app-bc4fbccb.js",
10+
"file": "assets/app-455c4098.js",
1111
"isEntry": true,
1212
"src": "resources/js/app.js"
1313
},
1414
"resources/js/dropdown.js": {
15-
"file": "assets/dropdown-7fa3ba94.js",
15+
"file": "assets/dropdown-613489dc.js",
1616
"imports": [
1717
"resources/js/app.js"
1818
],
1919
"isEntry": true,
2020
"src": "resources/js/dropdown.js"
2121
},
2222
"resources/js/editor.js": {
23-
"file": "assets/editor-7fa3ba94.js",
23+
"file": "assets/editor-613489dc.js",
2424
"imports": [
2525
"resources/js/app.js"
2626
],
2727
"isEntry": true,
2828
"src": "resources/js/editor.js"
2929
},
3030
"resources/js/media-manager.js": {
31-
"file": "assets/media-manager-7fa3ba94.js",
31+
"file": "assets/media-manager-613489dc.js",
3232
"imports": [
3333
"resources/js/app.js"
3434
],
3535
"isEntry": true,
3636
"src": "resources/js/media-manager.js"
3737
},
3838
"resources/js/repeater.js": {
39-
"file": "assets/repeater-7fa3ba94.js",
39+
"file": "assets/repeater-613489dc.js",
4040
"imports": [
4141
"resources/js/app.js"
4242
],
4343
"isEntry": true,
4444
"src": "resources/js/repeater.js"
4545
},
4646
"resources/sass/app.scss": {
47-
"file": "assets/app-275e9a85.js",
47+
"file": "assets/app-bc3780fe.js",
4848
"imports": [
4949
"resources/js/app.js"
5050
],
13.7 KB
Binary file not shown.
13.8 KB
Binary file not shown.
13.9 KB
Binary file not shown.
13.4 KB
Binary file not shown.
13.8 KB
Binary file not shown.
17.8 KB
Binary file not shown.
18.2 KB
Binary file not shown.

resources/sass/app.scss

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,3 +18,7 @@
1818
[x-cloak] {
1919
visibility: hidden !important;
2020
}
21+
22+
img {
23+
border-radius: config('border-radius-sm', $display);
24+
}

resources/sass/config/_font.scss

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
@use 'sprucecss/scss/spruce' as *;
2+
3+
@include font-face(
4+
'Manrope',
5+
'/vendor/root/fonts/manrope-v14-latin-regular.woff2'
6+
);
7+
8+
@include font-face(
9+
'Manrope',
10+
'/vendor/root/fonts/manrope-v14-latin-500.woff2',
11+
500
12+
);
13+
14+
@include font-face(
15+
'Manrope',
16+
'/vendor/root/fonts/manrope-v14-latin-600.woff2',
17+
600
18+
);
19+
20+
@include font-face(
21+
'Manrope',
22+
'/vendor/root/fonts/manrope-v14-latin-800.woff2',
23+
700
24+
);
25+
26+
@include font-face(
27+
'Open Sans',
28+
'/vendor/root/fonts/open-sans-v35-latin-regular.woff2'
29+
);
30+
31+
@include font-face(
32+
'Open Sans',
33+
'/vendor/root/fonts/open-sans-v35-latin-700.woff2',
34+
700
35+
);

resources/sass/config/_index.scss

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
@forward 'config';
2+
@forward 'font';
23
@forward 'styles';
34
@forward 'dark-mode';

resources/views/app.blade.php

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,12 @@
88

99
{{-- Styles --}}
1010
<link rel="icon" href="{{ URL::asset('vendor/root/favicon.png') }}" sizes="32x32">
11-
<link rel="preconnect" href="https://fonts.googleapis.com">
12-
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
13-
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Manrope:wght@400;500;600;800&family=Open+Sans:wght@400;700&display=swap">
11+
<link rel="preload" as="font" type="font/woff2" href="{{ URL::asset('vendor/root/fonts/manrope-v14-latin-regular.woff2') }}" crossorigin>
12+
<link rel="preload" as="font" type="font/woff2" href="{{ URL::asset('vendor/root/fonts/manrope-v14-latin-500.woff2') }}" crossorigin>
13+
<link rel="preload" as="font" type="font/woff2" href="{{ URL::asset('vendor/root/fonts/manrope-v14-latin-600.woff2') }}" crossorigin>
14+
<link rel="preload" as="font" type="font/woff2" href="{{ URL::asset('vendor/root/fonts/manrope-v14-latin-800.woff2') }}" crossorigin>
15+
<link rel="preload" as="font" type="font/woff2" href="{{ URL::asset('vendor/root/fonts/open-sans-v35-latin-regular.woff2') }}" crossorigin>
16+
<link rel="preload" as="font" type="font/woff2" href="{{ URL::asset('vendor/root/fonts/open-sans-v35-latin-700.woff2') }}" crossorigin>
1417
{{
1518
Vite::withEntryPoints('resources/sass/app.scss')
1619
->useBuildDirectory('vendor/root/build')

resources/views/components/layout/header.blade.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ class="btn btn--outline-dark btn--sm btn--icon display--none:md"
1717
{{-- <button class="btn btn--outline-dark btn--sm btn--icon display--none:md" aria-label="Open search">
1818
<x-root::icon name="search" class="btn__icon" />
1919
</button> --}}
20-
<x-root::layout.theme />
2120
</div>
2221
{{-- <x-root::layout.breadcrumbs /> --}}
2322
</div>
@@ -33,6 +32,11 @@ class="btn btn--outline-dark btn--sm btn--icon display--none:md"
3332
<x-root::icon name="chevron-down" class="open-search__icon" />
3433
</button>
3534
<ul class="context-menu" x-bind:class="{ 'is-open': open }">
35+
<li>
36+
<span class="context-menu__item">
37+
{{ __('Theme') }} <x-root::layout.theme />
38+
</span>
39+
</li>
3640
<li>
3741
<button type="submit" form="logout-form" class="context-menu__item">
3842
{{ __('Logout') }}

resources/views/resources/relation.blade.php

Whitespace-only changes.

src/Fields/Relation.php

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ abstract class Relation extends Field
6767
protected string|Closure|null $groupResolver = null;
6868

6969
/**
70-
* Indicates wheter the relation is a sub resource.
70+
* Indicates whether the relation is a sub resource.
7171
*/
7272
protected bool $asSubResource = false;
7373

@@ -370,6 +370,7 @@ public function registerRoutes(Request $request, Router $router): void
370370

371371
$router->prefix($this->getUriKey())->group(function (Router $router) use ($request): void {
372372
$this->resolveFields($request)->registerRoutes($request, $router);
373+
$this->resolveActions($request)->registerRoutes($request, $router);
373374
});
374375
}
375376

@@ -378,7 +379,9 @@ public function registerRoutes(Request $request, Router $router): void
378379
*/
379380
public function routes(Router $router): void
380381
{
381-
//
382+
if ($this->isSubResource()) {
383+
//
384+
}
382385
}
383386

384387
/**
@@ -405,7 +408,7 @@ public function toInput(Request $request, Model $model): array
405408
}
406409

407410
/**
408-
* Create a new method.
411+
* Get the sub reosurce representation of the relation.
409412
*/
410413
public function toSubResource(Request $request, Model $model): array
411414
{
Lines changed: 161 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,161 @@
1+
<?php
2+
3+
namespace Cone\Root\Http\Controllers;
4+
5+
use Cone\Root\Http\Requests\CreateRequest;
6+
use Cone\Root\Http\Requests\IndexRequest;
7+
use Cone\Root\Http\Requests\ResourceRequest;
8+
use Cone\Root\Http\Requests\ShowRequest;
9+
use Cone\Root\Http\Requests\UpdateRequest;
10+
use Cone\Root\Support\Alert;
11+
use Illuminate\Database\Eloquent\Model;
12+
use Illuminate\Database\Eloquent\SoftDeletes;
13+
use Illuminate\Http\RedirectResponse;
14+
use Illuminate\Http\Request;
15+
use Illuminate\Support\Facades\Redirect;
16+
use Inertia\Inertia;
17+
use Inertia\Response;
18+
19+
class HasOneOrManyController extends Controller
20+
{
21+
/**
22+
* Display a listing of the resource.
23+
*/
24+
public function index(Request $request): Response
25+
{
26+
$field = $request->resolved();
27+
28+
return Inertia::render(
29+
'Relations/Index',
30+
$field->toIndex($request, $model)
31+
);
32+
}
33+
34+
/**
35+
* Show the form for creating a new resource.
36+
*
37+
* @param \Cone\Root\Http\Requests\CreateRequest $request
38+
* @param \Illuminate\Database\Eloquent\Model $model
39+
* @return \Inertia\Response
40+
*/
41+
public function create(CreateRequest $request, Model $model): Response
42+
{
43+
$field = $request->resolved();
44+
45+
return Inertia::render(
46+
'Relations/Form',
47+
$field->toCreate($request, $model)
48+
);
49+
}
50+
51+
/**
52+
* Store a newly created resource in storage.
53+
*
54+
* @param \Cone\Root\Http\Requests\CreateRequest $request
55+
* @param \Illuminate\Database\Eloquent\Model $model
56+
* @return \Illuminate\Http\RedirectResponse
57+
*/
58+
public function store(CreateRequest $request, Model $model): RedirectResponse
59+
{
60+
$field = $request->resolved();
61+
62+
$relation = $field->getRelation($model);
63+
64+
$related = tap($relation->getRelated(), static function (Model $related) use ($model): void {
65+
$related->setRelation('parent', $model);
66+
});
67+
68+
$fields = $field->resolveFields($request)->available($request, $model, $related);
69+
70+
$request->validate($fields->mapToValidate($request, $related));
71+
72+
$fields->each->persist($request, $related);
73+
74+
$relation->save($related);
75+
76+
$path = sprintf('%s/%s', $request->resolved()->resolveUri($request), $related->getKey());
77+
78+
return Redirect::to($path)
79+
->with('alerts.relation-created', Alert::success(__('The relation has been created!')));
80+
}
81+
82+
/**
83+
* Display the specified resource.
84+
*
85+
* @param \Cone\Root\Http\Requests\ShowRequest $request
86+
* @param \Illuminate\Database\Eloquent\Model $model
87+
* @return \Inertia\Response
88+
*/
89+
public function show(ShowRequest $request, Model $model, Model $related): Response
90+
{
91+
return Inertia::render(
92+
'Relations/Show',
93+
$request->resolved()->toShow($request, $model, $related)
94+
);
95+
}
96+
97+
/**
98+
* Show the form for editing the specified resource.
99+
*
100+
* @param \Cone\Root\Http\Requests\UpdateRequest $request
101+
* @param \Illuminate\Database\Eloquent\Model $model
102+
* @return \Inertia\Response
103+
*/
104+
public function edit(UpdateRequest $request, Model $model, Model $related): Response
105+
{
106+
$field = $request->resolved();
107+
108+
return Inertia::render(
109+
'Relations/Form',
110+
$field->toEdit($request, $model, $related)
111+
);
112+
}
113+
114+
/**
115+
* Update the specified resource in storage.
116+
*
117+
* @param \Cone\Root\Http\Requests\UpdateRequest $request
118+
* @param \Illuminate\Database\Eloquent\Model $model
119+
* @param \Illuminate\Database\Eloquent\Model $related
120+
* @return \Illuminate\Http\RedirectResponse
121+
*/
122+
public function update(UpdateRequest $request, Model $model, Model $related): RedirectResponse
123+
{
124+
$field = $request->resolved();
125+
126+
$related->setRelation('parent', $model);
127+
128+
$fields = $field->resolveFields($request)->available($request, $model, $related);
129+
130+
$request->validate($fields->mapToValidate($request, $related));
131+
132+
$fields->each->persist($request, $related);
133+
134+
$related->save();
135+
136+
$path = sprintf('%s/%s/edit', $request->resolved()->resolveUri($request), $related->getKey());
137+
138+
return Redirect::to($path)
139+
->with('alerts.relation-updated', Alert::success(__('The relation has been updated!')));
140+
}
141+
142+
/**
143+
* Remove the specified resource from storage.
144+
*
145+
* @param \Cone\Root\Http\Requests\ResourceRequest $request
146+
* @param \Illuminate\Database\Eloquent\Model $model
147+
* @param \Illuminate\Database\Eloquent\Model $related
148+
* @return \Illuminate\Http\RedirectResponse
149+
*/
150+
public function destroy(ResourceRequest $request, Model $model, Model $related): RedirectResponse
151+
{
152+
$trashed = class_uses_recursive(SoftDeletes::class) && $related->trashed();
153+
154+
$trashed ? $related->forceDelete() : $related->delete();
155+
156+
$path = $request->resolved()->resolveUri($request);
157+
158+
return Redirect::to($path)
159+
->with('alerts.relation-deleted', Alert::success(__('The relation has been deleted!')));
160+
}
161+
}

src/Resources/Resource.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -421,7 +421,7 @@ public function toShow(Request $request, Model $model): array
421421
->subResource()
422422
->authorized($request, $model)
423423
->map(static function (Relation $relation) use ($request, $model): array {
424-
return $relation->toIndex($request, $model);
424+
return $relation->toSubResource($request, $model);
425425
}),
426426
]);
427427
}

0 commit comments

Comments
 (0)