Skip to content

Commit df6a418

Browse files
authored
feat(view): add raw html element (#738)
1 parent 3eb0c59 commit df6a418

File tree

7 files changed

+20
-10
lines changed

7 files changed

+20
-10
lines changed
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
use Tempest\View\Elements\ViewComponentElement;
88
use Tempest\View\ViewComponent;
99

10-
final readonly class Form implements ViewComponent
10+
final readonly class XForm implements ViewComponent
1111
{
1212
public static function getName(): string
1313
{

src/Tempest/View/src/Components/Input.php renamed to src/Tempest/View/src/Components/XInput.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
use Tempest\View\Elements\ViewComponentElement;
1010
use Tempest\View\ViewComponent;
1111

12-
final readonly class Input implements ViewComponent
12+
final readonly class XInput implements ViewComponent
1313
{
1414
public function __construct(
1515
private Session $session,

src/Tempest/View/src/Components/Submit.php renamed to src/Tempest/View/src/Components/XSubmit.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
use Tempest\View\Elements\ViewComponentElement;
88
use Tempest\View\ViewComponent;
99

10-
final readonly class Submit implements ViewComponent
10+
final readonly class XSubmit implements ViewComponent
1111
{
1212
public static function getName(): string
1313
{

src/Tempest/View/src/Elements/ElementFactory.php

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,11 @@ private function makeElement(DOMNode $node, ?Element $parent): ?Element
6363

6464
if (! $node instanceof DOMElement
6565
|| $node->tagName === 'pre'
66-
|| $node->tagName === 'code') {
66+
|| $node->tagName === 'code'
67+
|| $node->tagName === 'x-raw'
68+
) {
6769
$content = '';
70+
6871
foreach ($node->childNodes as $child) {
6972
$content .= $node->ownerDocument->saveHTML($child);
7073
}
@@ -82,9 +85,9 @@ private function makeElement(DOMNode $node, ?Element $parent): ?Element
8285
}
8386

8487
$element = new ViewComponentElement(
85-
$this->compiler,
86-
$viewComponentClass,
87-
$attributes,
88+
compiler: $this->compiler,
89+
viewComponent: $viewComponentClass,
90+
attributes: $attributes,
8891
);
8992
} elseif ($node->tagName === 'x-slot') {
9093
$element = new SlotElement(

src/Tempest/View/src/Elements/RawElement.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ public function __construct(
2121

2222
public function compile(): string
2323
{
24-
if ($this->tag === null) {
24+
if ($this->tag === null || $this->tag === 'x-raw') {
2525
return $this->content;
2626
}
2727

tests/Integration/View/TempestViewRendererTest.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -416,4 +416,11 @@ public function test_view_component_with_multiple_attributes(): void
416416
$html = $this->render(view('<x-view-component-with-multiple-attributes :a="\'a\'" b="b"></x-view-component-with-multiple-attributes>'));
417417
$this->assertStringEqualsStringIgnoringLineEndings($expected, $html);
418418
}
419+
420+
public function test_raw_component(): void
421+
{
422+
$html = $this->render('<x-raw><div :prop="$foo">{{ $bar }}</div></x-raw>');
423+
424+
$this->assertStringEqualsStringIgnoringLineEndings('<div :prop="$foo">{{ $bar }}</div>', $html);
425+
}
419426
}

tests/Integration/View/ViewComponentDiscoveryTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
namespace Tests\Tempest\Integration\View;
66

7-
use Tempest\View\Components\Input;
7+
use Tempest\View\Components\XInput;
88
use Tempest\View\Exceptions\DuplicateViewComponent;
99
use Tempest\View\ViewComponentDiscovery;
1010
use Tests\Tempest\Integration\FrameworkIntegrationTestCase;
@@ -22,7 +22,7 @@ public function test_duplicates(): void
2222
$discovery->discoverPath(__DIR__ . '/duplicateComponent.view.php');
2323
} catch (DuplicateViewComponent $duplicateViewComponent) {
2424
$this->assertStringContainsString(__DIR__ . '/duplicateComponent.view.php', $duplicateViewComponent->getMessage());
25-
$this->assertStringContainsString(Input::class, $duplicateViewComponent->getMessage());
25+
$this->assertStringContainsString(XInput::class, $duplicateViewComponent->getMessage());
2626
$this->assertStringContainsString('x-input', $duplicateViewComponent->getMessage());
2727
}
2828
}

0 commit comments

Comments
 (0)