Skip to content

Commit 73b9083

Browse files
committed
wip
1 parent d9fbe2b commit 73b9083

36 files changed

Lines changed: 1147 additions & 760 deletions

app/Concerns/TabbedLayout.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public function bootedTabbedLayout(): void
1919
return;
2020
}
2121

22-
if (! Str::startsWith(static::$view, 'filament::resources.pages')) {
22+
if (! Str::startsWith(static::$view, 'filament-panels::resources.pages')) {
2323
return;
2424
}
2525

app/Filament/Resources/ProfileResource/Concerns/HasTabs.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,8 @@ public function getActiveTab(): string
5555
private function isActiveWhen(string $page): bool
5656
{
5757
return request()->routeIs([
58-
"filament.resources.profile.$page.*",
59-
"filament.resources.users.$page.*",
58+
"filament.admin.resources.profile.$page.*",
59+
"filament.admin.resources.users.$page.*",
6060
]);
6161
}
6262
}

app/Filament/Resources/ProfileResource/Pages/EditArea.php

Lines changed: 2 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -4,57 +4,14 @@
44

55
namespace App\Filament\Resources\ProfileResource\Pages;
66

7-
use App\Forms\Components\Location;
8-
use App\Forms\Components\Subsection;
9-
use App\Models\City;
10-
use App\Models\User;
11-
use Filament\Forms\Components\Placeholder;
12-
use Filament\Forms\Components\Select;
7+
use App\Filament\Resources\ProfileResource\Schemas\AreaForm;
138
use Filament\Forms\Form;
14-
use Filament\Forms\Get;
159

1610
class EditArea extends EditRecord
1711
{
1812
public function form(Form $form): Form
1913
{
2014
return $form
21-
->columns(1)
22-
->schema(static::getSchema());
23-
}
24-
25-
public static function getSchema(): array
26-
{
27-
return [
28-
Subsection::make()
29-
->icon('heroicon-o-map-pin')
30-
->columns()
31-
->schema([
32-
Placeholder::make('activity_county')
33-
->label(__('field.county'))
34-
->content(fn (?User $record) => $record?->activityCounty?->name),
35-
36-
Select::make('activity_cities')
37-
->label(__('field.cities'))
38-
->placeholder(__('placeholder.cities'))
39-
->relationship('activityCities', 'name')
40-
->multiple()
41-
->allowHtml()
42-
->searchable()
43-
->required()
44-
->getSearchResultsUsing(
45-
fn (string $search, Get $get) => City::query()
46-
->where('county_id', $get('activity_county_id'))
47-
->search($search)
48-
->limit(100)
49-
->get()
50-
->mapWithKeys(fn (City $city) => [
51-
$city->getKey() => Location::getRenderedOptionLabel($city),
52-
])
53-
)
54-
->getOptionLabelFromRecordUsing(
55-
fn (City $record) => Location::getRenderedOptionLabel($record)
56-
),
57-
]),
58-
];
15+
->schema(AreaForm::getSchema());
5916
}
6017
}

app/Filament/Resources/ProfileResource/Pages/EditEmployers.php

Lines changed: 2 additions & 151 deletions
Original file line numberDiff line numberDiff line change
@@ -4,163 +4,14 @@
44

55
namespace App\Filament\Resources\ProfileResource\Pages;
66

7-
use App\Enums\Employer\Funding;
8-
use App\Enums\Employer\Type;
9-
use App\Forms\Components\Location;
10-
use App\Forms\Components\Repeater;
11-
use App\Forms\Components\Subsection;
12-
use Filament\Forms\Components\Checkbox;
13-
use Filament\Forms\Components\DatePicker;
14-
use Filament\Forms\Components\Group;
15-
use Filament\Forms\Components\Section;
16-
use Filament\Forms\Components\Select;
17-
use Filament\Forms\Components\TextInput;
7+
use App\Filament\Resources\ProfileResource\Schemas\EmployersForm;
188
use Filament\Forms\Form;
199

2010
class EditEmployers extends EditRecord
2111
{
2212
public function form(Form $form): Form
2313
{
2414
return $form
25-
->columns(1)
26-
->schema(static::getSchema());
27-
}
28-
29-
public static function getSchema(): array
30-
{
31-
return [
32-
Repeater::make('employers')
33-
->relationship('employers')
34-
->label(__('employer.label.plural'))
35-
->createItemButtonLabel(__('employer.action.create'))
36-
->minItems(1)
37-
->schema([
38-
Subsection::make()
39-
->icon('heroicon-o-building-office')
40-
->columns(2)
41-
->schema([
42-
TextInput::make('name')
43-
->label(__('field.employer_name'))
44-
->placeholder(__('placeholder.employer_name'))
45-
->maxLength(200)
46-
->required(),
47-
48-
Select::make('type')
49-
->label(__('field.employer_type'))
50-
->placeholder(__('placeholder.choose'))
51-
->options(Type::options())
52-
->enum(Type::class)
53-
->required(),
54-
55-
Select::make('funding')
56-
->label(__('field.funding'))
57-
->placeholder(__('placeholder.choose'))
58-
->options(Funding::options())
59-
->enum(Funding::class),
60-
61-
Group::make()
62-
->extraAttributes(['class' => 'flex h-full justify-end items-center'])
63-
->schema([
64-
Checkbox::make('is_project_based')
65-
->label(__('field.employer_project_based'))
66-
->live()
67-
->afterStateUpdated(function (callable $set) {
68-
$set('project', null);
69-
}),
70-
]),
71-
72-
Section::make()
73-
->columnSpanFull()
74-
->pointer('right')
75-
->hidden(fn (callable $get) => $get('is_project_based') === false)
76-
->schema([
77-
TextInput::make('project')
78-
->label(__('field.employer_project'))
79-
->placeholder(__('placeholder.employer_project'))
80-
->live()
81-
->maxLength(200)
82-
->afterStateHydrated(function (callable $set, $state) {
83-
$set('is_project_based', $state !== null);
84-
}),
85-
]),
86-
87-
Location::make(),
88-
89-
TextInput::make('email')
90-
->label(__('field.employer_email'))
91-
->placeholder(__('placeholder.email'))
92-
->maxLength(200)
93-
->email(),
94-
95-
TextInput::make('phone')
96-
->label(__('field.employer_phone'))
97-
->placeholder(__('placeholder.phone'))
98-
->tel()
99-
->maxLength(15),
100-
101-
DatePicker::make('start_date')
102-
->label(__('field.start_date'))
103-
->placeholder(__('placeholder.date')),
104-
105-
Group::make()
106-
->schema([
107-
DatePicker::make('end_date')
108-
->label(__('field.end_date'))
109-
->placeholder(__('placeholder.date'))
110-
->afterOrEqual('start_date')
111-
->disabled(function (callable $get) {
112-
return $get('is_ongoing') === true;
113-
})
114-
->afterStateHydrated(function (callable $set, $state) {
115-
$set('is_ongoing', $state === null);
116-
}),
117-
118-
Group::make()
119-
->extraAttributes(['class' => 'flex justify-end'])
120-
->columnSpanFull()
121-
->schema([
122-
Checkbox::make('is_ongoing')
123-
->label(__('field.employer_ongoing'))
124-
->live()
125-
->afterStateUpdated(function (callable $set) {
126-
$set('end_date', null);
127-
}),
128-
]),
129-
]),
130-
131-
Checkbox::make('has_gp_agreement')
132-
->label(__('field.has_gp_agreement'))
133-
->live()
134-
->afterStateUpdated(function (callable $set) {
135-
$set('end_date', null);
136-
}),
137-
138-
Section::make()
139-
->columnSpanFull()
140-
->hidden(fn (callable $get) => $get('has_gp_agreement') === false)
141-
->columns()
142-
->pointer()
143-
->schema([
144-
TextInput::make('gp_name')
145-
->label(__('field.gp_name'))
146-
->placeholder(__('placeholder.gp_name'))
147-
->maxLength(200)
148-
->columnSpanFull(),
149-
150-
TextInput::make('gp_email')
151-
->label(__('field.gp_email'))
152-
->placeholder(__('placeholder.email'))
153-
->maxLength(200)
154-
->email(),
155-
156-
TextInput::make('gp_phone')
157-
->label(__('field.gp_phone'))
158-
->placeholder(__('placeholder.phone'))
159-
->tel()
160-
->maxLength(15),
161-
]),
162-
]),
163-
]),
164-
];
15+
->schema(EmployersForm::getSchema());
16516
}
16617
}

app/Filament/Resources/ProfileResource/Pages/EditGeneral.php

Lines changed: 2 additions & 98 deletions
Original file line numberDiff line numberDiff line change
@@ -4,110 +4,14 @@
44

55
namespace App\Filament\Resources\ProfileResource\Pages;
66

7-
use App\Enums\Gender;
8-
use App\Forms\Components\Location;
9-
use App\Forms\Components\Subsection;
10-
use App\Rules\ValidCNP;
11-
use Filament\Forms\Components\DatePicker;
12-
use Filament\Forms\Components\Select;
13-
use Filament\Forms\Components\SpatieMediaLibraryFileUpload;
14-
use Filament\Forms\Components\TextInput;
7+
use App\Filament\Resources\ProfileResource\Schemas\GeneralForm;
158
use Filament\Forms\Form;
169

1710
class EditGeneral extends EditRecord
1811
{
1912
public function form(Form $form): Form
2013
{
2114
return $form
22-
->columns(1)
23-
->schema(static::getSchema());
24-
}
25-
26-
public static function getSchema(): array
27-
{
28-
return [
29-
Subsection::make()
30-
->icon('heroicon-o-user')
31-
->columns(2)
32-
->schema([
33-
TextInput::make('first_name')
34-
->label(__('field.first_name'))
35-
->placeholder(__('placeholder.first_name'))
36-
->maxLength(50)
37-
->required(),
38-
39-
TextInput::make('last_name')
40-
->label(__('field.last_name'))
41-
->placeholder(__('placeholder.last_name'))
42-
->maxLength(50)
43-
->required(),
44-
45-
DatePicker::make('date_of_birth')
46-
->label(__('field.date_of_birth'))
47-
->placeholder(__('placeholder.date'))
48-
->nullable(),
49-
50-
Select::make('gender')
51-
->label(__('field.gender'))
52-
->placeholder(__('placeholder.choose'))
53-
->options(Gender::options())
54-
->enum(Gender::class),
55-
56-
TextInput::make('cnp')
57-
->label(__('field.cnp'))
58-
->placeholder(__('placeholder.cnp'))
59-
->unique(ignoreRecord: true)
60-
->nullable()
61-
->rule(new ValidCNP),
62-
]),
63-
64-
Subsection::make()
65-
->icon('heroicon-o-map-pin')
66-
->columns(2)
67-
->schema([
68-
Location::make(),
69-
70-
TextInput::make('email')
71-
->label(__('field.email'))
72-
->placeholder(__('placeholder.email'))
73-
->unique(ignoreRecord: true)
74-
->email()
75-
->maxLength(200)
76-
->required(),
77-
78-
TextInput::make('phone')
79-
->label(__('field.phone'))
80-
->placeholder(__('placeholder.phone'))
81-
->tel()
82-
->required()
83-
->maxLength(15),
84-
]),
85-
86-
Subsection::make()
87-
->icon('heroicon-o-document')
88-
->columns(2)
89-
->schema([
90-
TextInput::make('accreditation_number')
91-
->label(__('field.accreditation_number'))
92-
->placeholder(__('placeholder.accreditation_number'))
93-
->nullable()
94-
->maxLength(200),
95-
96-
DatePicker::make('accreditation_date')
97-
->label(__('field.accreditation_date'))
98-
->placeholder(__('placeholder.date')),
99-
100-
SpatieMediaLibraryFileUpload::make('accreditation_document')
101-
->label(__('field.accreditation_document'))
102-
->collection('accreditation_document')
103-
->acceptedFileTypes([
104-
'application/pdf',
105-
'image/jpeg',
106-
'image/png',
107-
])
108-
->maxSize(1024 * 1024 * 5)
109-
->columnSpanFull(),
110-
]),
111-
];
15+
->schema(GeneralForm::getSchema());
11216
}
11317
}

app/Filament/Resources/ProfileResource/Pages/EditRecord.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
use Filament\Actions\Action;
1111
use Filament\Resources\Pages\EditRecord as BaseEditRecord;
1212

13-
class EditRecord extends BaseEditRecord implements WithTabs
13+
abstract class EditRecord extends BaseEditRecord implements WithTabs
1414
{
1515
use Concerns\HasTabs;
1616
use Concerns\ResolvesRecord;

0 commit comments

Comments
 (0)