cuddly-keyboard-70746
10/09/2022, 1:08 AMcuddly-keyboard-70746
10/09/2022, 1:09 AMcuddly-keyboard-70746
10/09/2022, 1:10 AMcuddly-keyboard-70746
10/09/2022, 1:11 AMcuddly-keyboard-70746
10/09/2022, 1:11 AMcuddly-keyboard-70746
10/09/2022, 1:12 AMbrainy-ice-92385
10/09/2022, 1:29 AMcuddly-keyboard-70746
10/09/2022, 1:48 AMcuddly-keyboard-70746
10/09/2022, 1:49 AMcuddly-keyboard-70746
10/09/2022, 1:50 AMcuddly-keyboard-70746
10/09/2022, 1:53 AMcuddly-keyboard-70746
10/09/2022, 4:20 AMcuddly-keyboard-70746
10/09/2022, 4:20 AMcuddly-keyboard-70746
10/09/2022, 4:21 AMbrainy-ice-92385
10/09/2022, 7:20 AMsquare-oyster-36295
10/09/2022, 1:18 PMmergeHeadsquare-oyster-36295
10/09/2022, 1:19 PMsquare-oyster-36295
10/09/2022, 1:34 PM<a href="/" hx-replace="#content,#sidebar:morphdom,#list:beforeend">mysterious-toddler-20573
10/09/2022, 2:38 PMmulti-swaphtml
<button hx-get="/whatever" hx-ext="multi-swap" hx-swap="multi: #foo:innerHTML, #bar:outerHTML">
  Multi-Swap It
</button>mysterious-toddler-20573
10/09/2022, 2:40 PMsquare-oyster-36295
10/09/2022, 5:25 PMability to avoid being removed?square-oyster-36295
10/09/2022, 5:28 PMsquare-oyster-36295
10/09/2022, 5:35 PMbrainy-ice-92385
10/09/2022, 6:49 PM<script src="base.js" hx-preserve></script>if (! currentHeadChild.hasAttribute('hx-preserve')) { ... do the removal ...}square-oyster-36295
10/09/2022, 6:53 PMhx-preservehx-preservebrainy-ice-92385
10/09/2022, 6:57 PMsquare-oyster-36295
10/09/2022, 6:58 PMjavascript
htmx.defineExtension('multi-swap', {
    isInlineSwap: function (swapStyle) {
        return swapStyle.indexOf('multi:') === 0;
    },
    handleSwap: function (swapStyle, target, fragment, settleInfo) {
        if (swapStyle.indexOf('multi:') === 0) {
            var elements = {};
            var elementsSplit = swapStyle.replace(/^multi\s*:\s*/, '').split(/\s*,\s*/);
            elementsSplit.map(function (element) {
                var elementSplit = element.split(/\s*:\s*/);
                if (elementSplit.length == 2) {
                    elements[elementSplit[0]] = elementSplit[1];
                } else if (elementSplit.length == 1) {
                    elements[elementSplit[0]] = "innerHTML";
                }
            });
            for (var elementSelector in elements) {
                var elementSwapStyle = elements[elementSelector];
                // TODO: HOW TO CALL SWAP?
                // swap(elementSwapStyle, elementSelector, target, fragment, settleInfo);
            }
        }
    }
});square-oyster-36295
10/09/2022, 7:05 PMhx-swaphandleSwapforhx-swaphtml
<a href="/contact" hx-ext="multi-swap" hx-swap="multi:#content:innerHTML,.exampleWithoutSwapStyle,#menu:outerHTML">Contact</a>brainy-ice-92385
10/09/2022, 7:06 PMsquare-oyster-36295
10/09/2022, 7:08 PMselectAndSwap()