diff --git a/src/Folder/Folder.php b/src/Folder/Folder.php
index eda0cdd..86b9689 100644
--- a/src/Folder/Folder.php
+++ b/src/Folder/Folder.php
@@ -104,7 +104,7 @@ protected function isSafeToFold(ComponentSource $source, ComponentNode $node): b
&& isset($node->parentsAttributes[$prop])
&& ! $node->parentsAttributes[$prop]->isStaticValue()
) {
- $dynamicAttributes[$prop] = $node->parentsAttributes[$prop];
+ return false;
}
}
diff --git a/tests/Folder/FolderTest.php b/tests/Folder/FolderTest.php
index 4bb96d5..af00144 100644
--- a/tests/Folder/FolderTest.php
+++ b/tests/Folder/FolderTest.php
@@ -238,6 +238,29 @@
expect($folded)->toBeInstanceOf(TextNode::class);
});
+test('does not fold components if a dynamic prop comes from parent using aware even when marked as safe', function () {
+ $input = '';
+
+ $node = app(Parser::class)->parse($input)[0];
+ $node->setParentsAttributes(
+ app(AttributeParser::class)->parse(':type="$type"')
+ );
+
+ $folded = app(Folder::class)->fold($node);
+
+ expect($folded)->toBeInstanceOf(ComponentNode::class);
+});
+
+test('folds components when a prop is passed directly even if aware is declared', function () {
+ $input = '';
+
+ $node = app(Parser::class)->parse($input)[0];
+
+ $folded = app(Folder::class)->fold($node);
+
+ expect($folded)->toBeInstanceOf(TextNode::class);
+});
+
test('does not fold components with no blaze directive', function () {
$input = '';
diff --git a/tests/fixtures/views/components/foldable/input-aware-safe.blade.php b/tests/fixtures/views/components/foldable/input-aware-safe.blade.php
new file mode 100644
index 0000000..40d6010
--- /dev/null
+++ b/tests/fixtures/views/components/foldable/input-aware-safe.blade.php
@@ -0,0 +1,9 @@
+@blaze(fold: true, safe: ['type'])
+
+@aware(['type' => 'text'])
+
+@if ($type == 'number')
+
+@else
+
+@endif