From 70581eb7a994cbd0d8e94c51585c4a7d38367a52 Mon Sep 17 00:00:00 2001 From: Greg Bowler Date: Thu, 20 Jul 2023 22:50:06 +0100 Subject: [PATCH] Fix remove attribute (#441) * build: upgrade dom requirement and loosen version range * docs: update examples * feature: trim whitespace when there are only template children closes #363 * maintenance: phpstorm analysis improvements * tweak: remove data-element attribute * tweak: remove attribute data-element * tweak: remove elements as last step --- src/DocumentBinder.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/DocumentBinder.php b/src/DocumentBinder.php index 83b7ac6..8ad2158 100644 --- a/src/DocumentBinder.php +++ b/src/DocumentBinder.php @@ -142,10 +142,12 @@ public function cleanupDocument():void { $xpathResult = $this->document->evaluate( "//*/@*[starts-with(name(), 'data-bind')] | //*/@*[starts-with(name(), 'data-list')] | //*/@*[starts-with(name(), 'data-template')] | //*/@*[starts-with(name(), 'data-table-key')]" ); + + $elementsToRemove = []; /** @var Attr $item */ foreach($xpathResult as $item) { if($item->ownerElement->hasAttribute("data-element")) { - $item->ownerElement->remove(); + array_push($elementsToRemove, $item->ownerElement); continue; } @@ -155,6 +157,10 @@ public function cleanupDocument():void { foreach($this->document->querySelectorAll("[data-element]") as $dataElement) { $dataElement->removeAttribute("data-element"); } + + foreach($elementsToRemove as $element) { + $element->remove(); + } } private function bind(