Prepare modules
This commit is contained in:
110
Livewire/VuexyAdmin/GlobalSettingOffCanvasForm.php
Normal file
110
Livewire/VuexyAdmin/GlobalSettingOffCanvasForm.php
Normal file
@ -0,0 +1,110 @@
|
||||
<?php
|
||||
|
||||
namespace Koneko\VuexyAdmin\Livewire\VuexyAdmin;
|
||||
|
||||
use Illuminate\Validation\Rule;
|
||||
use Koneko\VuexyAdmin\Models\Setting;
|
||||
use Koneko\VuexyAdmin\Livewire\Form\AbstractFormOffCanvasComponent;
|
||||
|
||||
/**
|
||||
* Class GlobalSettingOffCanvasForm
|
||||
*
|
||||
* Componente Livewire para gestionar parámetros globales del sistema.
|
||||
* Permite almacenar configuraciones personalizadas y valores múltiples tipos.
|
||||
*
|
||||
* @package Koneko\VuexyAdmin\Livewire\Settings
|
||||
*/
|
||||
class GlobalSettingOffCanvasForm extends AbstractFormOffCanvasComponent
|
||||
{
|
||||
public $id, $key, $category, $user_id,
|
||||
$value_string, $value_integer, $value_boolean,
|
||||
$value_float, $value_text;
|
||||
|
||||
public $confirmDeletion;
|
||||
|
||||
protected $casts = [
|
||||
'value_boolean' => 'boolean',
|
||||
'value_integer' => 'integer',
|
||||
'value_float' => 'float',
|
||||
];
|
||||
|
||||
protected $listeners = [
|
||||
'editGlobalSetting' => 'loadFormModel',
|
||||
'confirmDeletionGlobalSetting' => 'loadFormModelForDeletion',
|
||||
];
|
||||
|
||||
protected function model(): string
|
||||
{
|
||||
return Setting::class;
|
||||
}
|
||||
|
||||
protected function fields(): array
|
||||
{
|
||||
return [
|
||||
'key', 'category', 'user_id',
|
||||
'value_string', 'value_integer', 'value_boolean',
|
||||
'value_float', 'value_text'
|
||||
];
|
||||
}
|
||||
|
||||
protected function defaults(): array
|
||||
{
|
||||
return [
|
||||
'category' => 'general',
|
||||
];
|
||||
}
|
||||
|
||||
protected function focusOnOpen(): string
|
||||
{
|
||||
return 'key';
|
||||
}
|
||||
|
||||
protected function dynamicRules(string $mode): array
|
||||
{
|
||||
if ($mode === 'delete') {
|
||||
return ['confirmDeletion' => 'accepted'];
|
||||
}
|
||||
|
||||
$uniqueRule = Rule::unique('settings', 'key')
|
||||
->where(fn ($q) => $q
|
||||
->where('user_id', $this->user_id)
|
||||
->where('category', $this->category)
|
||||
);
|
||||
|
||||
if ($mode === 'edit') {
|
||||
$uniqueRule = $uniqueRule->ignore($this->id);
|
||||
}
|
||||
|
||||
return [
|
||||
'key' => ['required', 'string', $uniqueRule],
|
||||
'category' => ['nullable', 'string', 'max:96'],
|
||||
'user_id' => ['nullable', 'integer', 'exists:users,id'],
|
||||
'value_string' => ['nullable', 'string', 'max:255'],
|
||||
'value_integer' => ['nullable', 'integer'],
|
||||
'value_boolean' => ['nullable', 'boolean'],
|
||||
'value_float' => ['nullable', 'numeric'],
|
||||
'value_text' => ['nullable', 'string'],
|
||||
];
|
||||
}
|
||||
|
||||
protected function attributes(): array
|
||||
{
|
||||
return [
|
||||
'key' => 'clave de configuración',
|
||||
'category' => 'categoría',
|
||||
];
|
||||
}
|
||||
|
||||
protected function messages(): array
|
||||
{
|
||||
return [
|
||||
'key.required' => 'La clave del parámetro es obligatoria.',
|
||||
'key.unique' => 'Ya existe una configuración con esta clave en esa categoría.',
|
||||
];
|
||||
}
|
||||
|
||||
protected function viewPath(): string
|
||||
{
|
||||
return 'vuexy-admin::livewire.global-settings.offcanvas-form';
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user