# Page snapshot ```yaml - main [ref=e4]: - generic [ref=e6]: - complementary - generic [ref=e7]: - generic [ref=e8]: - generic [ref=e11]: - link "()" [ref=e12] [cursor=pointer]: - /url: /sx/ - generic [ref=e14]: () - paragraph [ref=e15]: The framework-free reactive hypermedium - paragraph [ref=e17]: © Giles Bradshaw 2026· /sx/(geography.(hypermedia.(example.delete-row))) - generic [ref=e18]: - link "← Etc" [ref=e19] [cursor=pointer]: - /url: /sx/(etc) - link "Geography" [ref=e20] [cursor=pointer]: - /url: /sx/(geography) - link "Language →" [ref=e21] [cursor=pointer]: - /url: /sx/(language) - generic [ref=e22]: - link "← Reactive Islands" [ref=e23] [cursor=pointer]: - /url: /sx/(geography.(reactive)) - link "Hypermedia Lakes" [ref=e24] [cursor=pointer]: - /url: /sx/(geography.(hypermedia)) - link "Scopes →" [ref=e25] [cursor=pointer]: - /url: /sx/(geography.(scopes)) - generic [ref=e26]: - link "← Reference" [ref=e27] [cursor=pointer]: - /url: /sx/(geography.(hypermedia.(reference))) - link "Examples" [ref=e28] [cursor=pointer]: - /url: /sx/(geography.(hypermedia.(example))) - link "Reference →" [ref=e29] [cursor=pointer]: - /url: /sx/(geography.(hypermedia.(reference))) - generic [ref=e30]: - link "← Polling" [ref=e31] [cursor=pointer]: - /url: /sx/(geography.(hypermedia.(example.polling))) - link "Delete Row" [ref=e32] [cursor=pointer]: - /url: /sx/(geography.(hypermedia.(example.delete-row))) - link "Inline Edit →" [ref=e33] [cursor=pointer]: - /url: /sx/(geography.(hypermedia.(example.inline-edit))) - generic [ref=e37]: - paragraph [ref=e38]: sx-delete with sx-swap "outerHTML" and an empty response removes the row from the DOM. - generic [ref=e40]: - generic [ref=e41]: - heading "Demo" [level=3] [ref=e42] - paragraph [ref=e43]: Click delete to remove a row. Uses sx-confirm for confirmation. - table [ref=e47]: - rowgroup [ref=e48]: - row "Item" [ref=e49]: - columnheader "Item" [ref=e50] - columnheader [ref=e51] - rowgroup [ref=e52]: - row "Fix login bug delete" [ref=e53]: - cell "Fix login bug" [ref=e54] - cell "delete" [ref=e55]: - button "delete" [ref=e56] [cursor=pointer] - row "Write documentation delete" [ref=e57]: - cell "Write documentation" [ref=e58] - cell "delete" [ref=e59]: - button "delete" [ref=e60] [cursor=pointer] - row "Deploy to production delete" [ref=e61]: - cell "Deploy to production" [ref=e62] - cell "delete" [ref=e63]: - button "delete" [ref=e64] [cursor=pointer] - row "Add unit tests delete" [ref=e65]: - cell "Add unit tests" [ref=e66] - cell "delete" [ref=e67]: - button "delete" [ref=e68] [cursor=pointer] - heading "S-expression" [level=3] [ref=e69] - code [ref=e73]: (button :sx-delete "/sx/(geography.(hypermedia.(example.(api.(delete.1)))))" :sx-target "#row-1" :sx-swap "outerHTML" :sx-confirm "Delete this item?" "delete") - heading "Component" [level=3] [ref=e74] - code [ref=e79]: (defcomp ~examples/delete-row (id name) (tr :id (str "row-" id) (~tw :tokens "border-b border-stone-100 transition-all") (td (~tw :tokens "px-3 py-2 text-stone-700") name) (td (~tw :tokens "px-3 py-2") (button :sx-delete (str "/sx/(geography.(hypermedia.(example.(api.(delete." id ")))))") :sx-target (str "#row-" id) :sx-swap "outerHTML" :sx-confirm "Delete this item?" (~tw :tokens "text-rose-500 hover:text-rose-700 text-sm") "delete")))) - heading "Server handler" [level=3] [ref=e80] - code [ref=e84]: (:path "/sx/(geography.(hypermedia.(example.(api.(delete.)))))" :method :delete :csrf false ("item-id") (<> (~docs/oob-code :target-id "delete-comp" :text (helper "component-source" "~examples/delete-row")) (~docs/oob-code :target-id "delete-wire" :text "(empty — row removed by outerHTML swap)"))) - generic [ref=e85]: - heading "Wire response" [level=3] [ref=e86] - button "Clear component cache" [ref=e87] [cursor=pointer] - paragraph [ref=e88]: Empty body — outerHTML swap replaces the target element with nothing. - code [ref=e93]: (empty — row removed by outerHTML swap) ```