webroot/vendor/symfony/ux-twig-component/CHANGELOG.md

182 lines
5.9 KiB
Markdown

# CHANGELOG
## 2.20.0
- Add Anonymous Component support for 3rd-party bundles #2019
- Deprecate `cva` Twig function in favor of [`html_cva` from `twig/html-extra`](https://twig.symfony.com/html_cva) #2144
## 2.17.0
- Add nested attribute support #1405
## 2.16.0
- Introduce CVA to style TwigComponent #1416
- Drop Twig 2 support #1436
- Fix full context is stored in profiler #1552
- Add CVA (Class variant authority) integration #1416
## 2.15.0
- Add the ability to render specific attributes from the `attributes` variable #1442
- Restrict Twig 3.9 for now #1486
- Build reproducible TemplateMap to fix possible post-deploy breakage #1497
## 2.14.0
- Make `ComponentAttributes` traversable/countable
- Fixed lexing some `{# twig comments #}` with HTML Twig syntax
- Fix various usages of deprecated Twig code
## 2.13.0
- [BC BREAK] Add component metadata to `PreMountEvent` and `PostMountEvent`
- Added configuration to separate your components into different "namespaces"
- Add `outerScope` variable reach variables from the parent template of an
"embedded" component.
- Deprecate calling `ComponentTemplateFinder` constructor without `directory` argument.
- Add profiler integration: `TwigComponentDataCollector` and debug toolbar templates
- Add search feature in `debug:twig-component` command.
- Fix inconsistencies with how `{% component %}`/`<twig:component>` syntaxes are
rendered vs `component()`: `PostRenderEvent` is now dispatched & the template
resolution happens at runtime.
- Fix priority of passed in props vs default props with anonymous components.
- Add Symfony 7 support.
- TwigPreLexer: improve performance.
- Fix twig:lint bug with anonymous component tag.
## 2.12.0
- Added a `debug:twig-component` command.
- Fixed bad exception when the error comes from a Twig template.
- Fixed deprecation with `TemplateCacheWarmer` return type.
## 2.11.0
- Support ...spread operator with html syntax (requires Twig 3.7.0 or higher)
- Add support for anonymous Twig components.
- Add `RenderedComponent::crawler()` and `toString()` methods.
- Allow a block outside a Twig component to be available inside via `outerBlocks`.
- Fix `<twig:component>` syntax where an attribute is set to an empty value.
- Add component debug command for TwigComponent and LiveComponent.
## 2.9.0
- The `ComponentAttributes::defaults()` method now accepts any iterable argument.
The `ComponentAttributes::add()` method has been deprecated. To add a Stimulus
controller to the attributes, use `{{ attributes.defaults(stimulus_controller('...')) }}`.
## 2.8.0
- Add new HTML syntax for rendering components: `<twig:ComponentName>`
- `true` attribute values now render just the attribute name, `false` excludes it entirely.
- Add helpers for testing components.
- The first argument to `AsTwigComponent` is now optional and defaults to the class name.
- Allow passing a FQCN to `ComponentFactory` methods.
## 2.7.0
- `PreMount` and `PostMount` hooks can now return nothing.
## 2.5
- [BC BREAK] The `PreRenderEvent` namespace was changed from `Symfony\UX\TwigComponent\EventListener`
to `Symfony\UX\TwigComponent\Event`.
- Add new autowireable `ComponentRendererInterface`
- Added `PostRenderEvent` and `PreCreateForRenderEvent` which are dispatched just
before or after a component is rendered.
- Added `PostMountEvent` and `PreMountEvent` which are dispatched just before
or after the component's data is mounted.
- Added Twig template namespaces - #460.
## 2.2
- Allow to pass stringable object as non mapped component attribute.
- Add _embedded_ components.
- Allow `ExposeInTemplate` to be used on public component methods.
## 2.1
- Make public component properties available directly in the template (`{{ prop }}` vs `{{ this.prop }}`).
- Add `PreMount` priority parameter.
- Add `PostMount` hook component hook to intercept extra props.
- Add attributes system that takes extra props passed to `component()` and converts them
into a `ComponentAttributes` object available in your template as `attributes`.
- Add `PreRenderEvent` to intercept/manipulate twig template/variables before rendering.
- Add `ExposeInTemplate` attribute to make non-public properties available in component
templates directly.
- Add _Computed Properties_ system.
## 2.0.0
- Support for `stimulus` version 2 was removed and support for `@hotwired/stimulus`
version 3 was added. See the [@symfony/stimulus-bridge CHANGELOG](https://github.com/symfony/stimulus-bridge/blob/main/CHANGELOG.md#300)
for more details.
- Minimum PHP version was bumped to 8.0 so that PHP 8 attributes could be used.
- The `ComponentInterface` was dropped and replaced by the `AsTwigComponent` attribute.
The `getComponentName()` was replaced by a `name` argument to the attribute.
Before:
```php
use Symfony\UX\TwigComponent\ComponentInterface;
class AlertComponent implements ComponentInterface
{
public string $type = 'success';
public string $message;
public static function getComponentName(): string
{
return 'alert';
}
}
```
After:
```php
use Symfony\UX\TwigComponent\Attribute\AsTwigComponent;
#[AsTwigComponent('alert')]
class AlertComponent
{
public string $type = 'success';
public string $message;
}
```
- If you're using a version _lower_ than Symfony 5.3, you will need
to manually tag all component services with `twig.component`. This is
because Symfony 5.3 introduces autoconfiguration for PHP 8 attributes,
which this library leverages.
- The template for a component can now be controlled via the `template` argument
to the `AsTwigComponent` attribute:
```php
use Symfony\UX\TwigComponent\Attribute\AsTwigComponent;
#[AsTwigComponent('alert', template: 'other/path/alert.html.twig')]
class AlertComponent
{
// ...
}
```
## Pre-Release
- The TwigComponent library was introduced!