From 7fb6b482b7066c67d46c6e63bb89d43502a410c8 Mon Sep 17 00:00:00 2001 From: f4ilji Date: Thu, 9 Jan 2025 09:53:27 +0500 Subject: [PATCH] Changes --- .../Resources/ContactWidgetResource.php | 107 ++++++++++++++++++ .../Pages/CreateContactWidget.php | 12 ++ .../Pages/EditContactWidget.php | 19 ++++ .../Pages/ListContactWidgets.php | 19 ++++ app/Models/ContactWidget.php | 17 +++ bootstrap/.gitignore | 2 + ...30_145441_create_contact_widgets_table.php | 31 +++++ 7 files changed, 207 insertions(+) create mode 100644 app/Filament/Resources/ContactWidgetResource.php create mode 100644 app/Filament/Resources/ContactWidgetResource/Pages/CreateContactWidget.php create mode 100644 app/Filament/Resources/ContactWidgetResource/Pages/EditContactWidget.php create mode 100644 app/Filament/Resources/ContactWidgetResource/Pages/ListContactWidgets.php create mode 100644 app/Models/ContactWidget.php create mode 100644 bootstrap/.gitignore create mode 100644 database/migrations/2024_12_30_145441_create_contact_widgets_table.php diff --git a/app/Filament/Resources/ContactWidgetResource.php b/app/Filament/Resources/ContactWidgetResource.php new file mode 100644 index 0000000..607c2ff --- /dev/null +++ b/app/Filament/Resources/ContactWidgetResource.php @@ -0,0 +1,107 @@ +schema([ + Forms\Components\Section::make('')->schema([ + Tabs::make('Tabs') + ->tabs([ + Tabs\Tab::make('Основная информация') + ->schema([ + Forms\Components\Grid::make(2)->schema([ + TextInput::make('title')->label('Название ресурса')->required() + ->live(onBlur: true) + ->afterStateUpdated(function (string $operation, string|null $state, Forms\Set $set) { + $set('slug', Str::slug($state)); + $set('seo.title', $state); + }), + TextInput::make('slug')->label('Slug')->unique(ignoreRecord: true)->readOnly()->required(), + Toggle::make('is_active')->default(true)->label('Активный ресурс')->inline(false), + ]) + ]), + Tabs\Tab::make('Содержание ресурса') + ->schema([ + Repeater::make('content')->label('Ресурсы')->schema([ + TextInput::make('title')->label('Главный заголовок столбца')->required(), + Repeater::make('items')->label('Контакты')->schema([ + TextInput::make('header')->label('Заголовок')->required(), + Repeater::make('details')->label('Компонент контакта')->schema([ + Forms\Components\Grid::make(2)->schema([ + TextInput::make('content')->label('содержание')->required(), + TextInput::make('url')->label('Ссылка(Необязательно)'), + ]), + ]), + ]), + ])->collapsed()->required(), + ]), + + ]), + ]), + ]); + } + + public static function table(Table $table): Table + { + return $table + ->columns([ + TextColumn::make('id')->label('ID')->sortable(), + TextColumn::make('title')->label('Название')->sortable()->searchable(), + TextColumn::make('created_at')->label('Дата создания')->sortable(), + Tables\Columns\ToggleColumn::make('is_active')->label('Активно')->sortable(), + ]) + ->filters([ + // + ]) + ->actions([ + Tables\Actions\EditAction::make(), + ]) + ->bulkActions([ + Tables\Actions\BulkActionGroup::make([ + Tables\Actions\DeleteBulkAction::make(), + ]), + ]); + } + + public static function getRelations(): array + { + return [ + // + ]; + } + + public static function getPages(): array + { + return [ + 'index' => Pages\ListContactWidgets::route('/'), + 'create' => Pages\CreateContactWidget::route('/create'), + 'edit' => Pages\EditContactWidget::route('/{record}/edit'), + ]; + } +} diff --git a/app/Filament/Resources/ContactWidgetResource/Pages/CreateContactWidget.php b/app/Filament/Resources/ContactWidgetResource/Pages/CreateContactWidget.php new file mode 100644 index 0000000..29414ab --- /dev/null +++ b/app/Filament/Resources/ContactWidgetResource/Pages/CreateContactWidget.php @@ -0,0 +1,12 @@ + 'array', + ]; +} diff --git a/bootstrap/.gitignore b/bootstrap/.gitignore new file mode 100644 index 0000000..f3f2018 --- /dev/null +++ b/bootstrap/.gitignore @@ -0,0 +1,2 @@ +cache +ssr \ No newline at end of file diff --git a/database/migrations/2024_12_30_145441_create_contact_widgets_table.php b/database/migrations/2024_12_30_145441_create_contact_widgets_table.php new file mode 100644 index 0000000..dc402eb --- /dev/null +++ b/database/migrations/2024_12_30_145441_create_contact_widgets_table.php @@ -0,0 +1,31 @@ +id(); + $table->string('title'); + $table->string('slug'); + $table->text('content'); + $table->boolean('is_active')->default(true); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('contact_widgets'); + } +};