diff --git a/docs/start/configuration.md b/docs/start/configuration.md index 01725843f..919a508ea 100644 --- a/docs/start/configuration.md +++ b/docs/start/configuration.md @@ -48,6 +48,7 @@ module.exports = { purge: [ ... './vendor/rappasoft/laravel-livewire-tables/resources/views/**/*.blade.php', + './vendor/rappasoft/laravel-livewire-tables/src/Traits/Styling/Defaults/**/*.php', ], ... }; @@ -57,6 +58,7 @@ module.exports = { content: [ ... './vendor/rappasoft/laravel-livewire-tables/resources/views/**/*.blade.php', + './vendor/rappasoft/laravel-livewire-tables/src/Traits/Styling/Defaults/**/*.php', ], ... }; diff --git a/docs/start/recommended.md b/docs/start/recommended.md index e0b1ca3ff..5ca4a9909 100644 --- a/docs/start/recommended.md +++ b/docs/start/recommended.md @@ -68,6 +68,7 @@ If using Tailwind, you should update your tailwind.config.js file, adding the fo ```js './vendor/rappasoft/laravel-livewire-tables/resources/views/*.blade.php', './vendor/rappasoft/laravel-livewire-tables/resources/views/**/*.blade.php', + './vendor/rappasoft/laravel-livewire-tables/src/Traits/Styling/Defaults/**/*.php', ``` It is also recommended to add the paths to any Livewire Tables components, for example: diff --git a/src/Traits/HasAllTraits.php b/src/Traits/HasAllTraits.php index ebbe7a815..0705aaccb 100644 --- a/src/Traits/HasAllTraits.php +++ b/src/Traits/HasAllTraits.php @@ -3,6 +3,7 @@ namespace Rappasoft\LaravelLivewireTables\Traits; use Rappasoft\LaravelLivewireTables\Traits\Core\{HasCustomAttributes, HasLocalisations}; +use Rappasoft\LaravelLivewireTables\Traits\Styling\Defaults\{HasDefaultFilterInputStyling}; use Rappasoft\LaravelLivewireTables\Views\Traits\Core\HasTheme; trait HasAllTraits @@ -13,6 +14,7 @@ trait HasAllTraits use WithLoadingPlaceholder; use HasTheme; use ComponentUtilities, + HasDefaultFilterInputStyling, WithActions, WithData, WithQueryString, diff --git a/src/Traits/Styling/Defaults/HasDefaultFilterInputStyling.php b/src/Traits/Styling/Defaults/HasDefaultFilterInputStyling.php new file mode 100644 index 000000000..47395e2f7 --- /dev/null +++ b/src/Traits/Styling/Defaults/HasDefaultFilterInputStyling.php @@ -0,0 +1,64 @@ +defaultFilterInputColors = $defaultFilterInputColors; + + return $this; + } + + protected function setDefaultFilterInputStyling(string $defaultFilterInputStyling): self + { + $this->defaultFilterInputStyling = $defaultFilterInputStyling; + + return $this; + } + + public function hasDefaultFilterInputColors(): bool + { + return isset($this->defaultFilterInputColors); + } + + #[Computed] + public function getDefaultFilterInputColors(): string + { + if (isset($this->defaultFilterInputColors)) { + return $this->defaultFilterInputColors; + } else { + if ($this->isTailwind()) { + return 'border-gray-300 focus:border-indigo-300 focus:ring-indigo-200 dark:bg-gray-800 dark:text-white dark:border-gray-600'; + } else { + return ''; + } + } + } + + public function hasDefaultFilterInputStyling(): bool + { + return isset($this->defaultFilterInputStyling); + } + + #[Computed] + public function getDefaultFilterInputStyling(): string + { + if (isset($this->defaultFilterInputStyling)) { + return $this->defaultFilterInputStyling; + } else { + if ($this->isTailwind()) { + return 'block w-full rounded-md shadow-sm transition duration-150 ease-in-out focus:ring focus:ring-opacity-50'; + } else { + return 'form-control'; + } + } + } +} diff --git a/tests/Unit/Traits/Styling/FilterInputDefaultStylingTest.php b/tests/Unit/Traits/Styling/FilterInputDefaultStylingTest.php new file mode 100644 index 000000000..a61f62b1c --- /dev/null +++ b/tests/Unit/Traits/Styling/FilterInputDefaultStylingTest.php @@ -0,0 +1,110 @@ +assertFalse($this->basicTable->hasDefaultFilterInputStyling()); + } + + public function test_can_get_filter_default_input_styling(): void + { + $this->assertFalse($this->basicTable->hasDefaultFilterInputStyling()); + + $this->assertSame('block w-full rounded-md shadow-sm transition duration-150 ease-in-out focus:ring focus:ring-opacity-50', $this->basicTable->getDefaultFilterInputStyling()); + } + + public function test_can_set_filter_default_input_styling(): void + { + $testTableDefault = new class extends PetsTable + { + public function configure(): void + { + parent::configure(); + + } + + public function setDefaultFilterInputStyling(string $defaultFilterInputStyling): self + { + parent::setDefaultFilterInputStyling($defaultFilterInputStyling); + + return $this; + } + }; + + $testTableDefault->configure(); + $testTableDefault->boot(); + $testTableDefault->bootedComponentUtilities(); + $testTableDefault->bootedWithData(); + $testTableDefault->bootedWithColumns(); + $testTableDefault->bootedWithColumnSelect(); + $testTableDefault->bootedWithSecondaryHeader(); + $testTableDefault->booted(); + + $this->assertFalse($testTableDefault->hasDefaultFilterInputStyling()); + + $testTableDefault->setDefaultFilterInputStyling('p-4'); + + $this->assertTrue($testTableDefault->hasDefaultFilterInputStyling()); + + $this->assertSame('p-4', $testTableDefault->getDefaultFilterInputStyling()); + + } + + public function test_has_filter_default_input_colors(): void + { + $this->assertFalse($this->basicTable->hasDefaultFilterInputColors()); + } + + public function test_can_set_filter_default_input_colors(): void + { + + $testTableDefault = new class extends PetsTable + { + public function configure(): void + { + parent::configure(); + + } + + public function setDefaultFilterInputColors(string $defaultFilterInputColors): self + { + parent::setDefaultFilterInputColors($defaultFilterInputColors); + + return $this; + } + }; + + $testTableDefault->configure(); + $testTableDefault->boot(); + $testTableDefault->bootedComponentUtilities(); + $testTableDefault->bootedWithData(); + $testTableDefault->bootedWithColumns(); + $testTableDefault->bootedWithColumnSelect(); + $testTableDefault->bootedWithSecondaryHeader(); + $testTableDefault->booted(); + $this->assertFalse($testTableDefault->hasDefaultFilterInputColors()); + + $testTableDefault->setDefaultFilterInputColors('bg-blue-500'); + + $this->assertTrue($testTableDefault->hasDefaultFilterInputColors()); + + $this->assertSame('bg-blue-500', $testTableDefault->getDefaultFilterInputColors()); + + } + + public function test_can_get_filter_default_input_colors(): void + { + $this->assertFalse($this->basicTable->hasDefaultFilterInputColors()); + + $this->assertSame('border-gray-300 focus:border-indigo-300 focus:ring-indigo-200 dark:bg-gray-800 dark:text-white dark:border-gray-600', $this->basicTable->getDefaultFilterInputColors()); + } +}