diff --git a/CHANGELOG.md b/CHANGELOG.md index 7a7677d..cc00340 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,8 @@ # Change Log -## 0.1.2 Under development +## 0.1.2 March 25, 2024 + +- Bug #6: Add method `render()` in `CssClass::class` (@terabytesoftw) ## 0.1.1 March 9, 2024 diff --git a/README.md b/README.md index 9b6ce5a..3b60afd 100644 --- a/README.md +++ b/README.md @@ -311,6 +311,30 @@ $attributes = Attributes::render( ); ``` +### Render HMTL class attribute + +The `CssClass::class` helper can be used to render the `class` attribute. + +The method accepts one parameter: + +- `class:` (string): The class to render. +- `baseClass:` (string): The base class to use. +- `inList:` (array): The list of classes to validate. + +```php +assertArrayHasKey('keyed-class', $merged); $this->assertEquals('new-class', $merged['keyed-class']); } + + public function testRender(): void + { + $this->assertSame( + 'p-4 mb-4 text-sm text-yellow-800 rounded-lg bg-yellow-50 dark:bg-gray-800 dark:text-yellow-400', + CssClass::render( + 'yellow', + 'p-4 mb-4 text-sm text-%1$s-800 rounded-lg bg-%1$s-50 dark:bg-gray-800 dark:text-%1$s-400', + ['blue', 'gray', 'green', 'red', 'yellow'], + ) + ); + } + + public function testRenderWithInvalidValue(): void + { + $this->expectException(\InvalidArgumentException::class); + $this->expectExceptionMessage( + 'Invalid value: "indigo". Available values: "blue", "gray", "green", "red", "yellow".' + ); + + CssClass::render( + 'indigo', + 'p-4 mb-4 text-sm text-%1$s-800 rounded-lg bg-%1$s-50 dark:bg-gray-800 dark:text-%1$s-400', + ['blue', 'gray', 'green', 'red', 'yellow'], + ); + } }