Skip to content

Commit ecd990e

Browse files
committed
prep release
1 parent d42c3e9 commit ecd990e

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+32625
-21050
lines changed

dist/ext/client-side-templates.js

Lines changed: 48 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,32 @@ htmx.defineExtension('client-side-templates', {
1313
}
1414
}
1515

16+
var mustacheArrayTemplate = htmx.closest(elt, "[mustache-array-template]");
17+
if (mustacheArrayTemplate) {
18+
var data = JSON.parse(text);
19+
var templateId = mustacheArrayTemplate.getAttribute('mustache-array-template');
20+
var template = htmx.find("#" + templateId);
21+
if (template) {
22+
return Mustache.render(template.innerHTML, {"data": data });
23+
} else {
24+
throw "Unknown mustache template: " + templateId;
25+
}
26+
}
27+
1628
var handlebarsTemplate = htmx.closest(elt, "[handlebars-template]");
1729
if (handlebarsTemplate) {
1830
var data = JSON.parse(text);
1931
var templateName = handlebarsTemplate.getAttribute('handlebars-template');
2032
return Handlebars.partials[templateName](data);
2133
}
2234

35+
var handlebarsArrayTemplate = htmx.closest(elt, "[handlebars-array-template]");
36+
if (handlebarsArrayTemplate) {
37+
var data = JSON.parse(text);
38+
var templateName = handlebarsArrayTemplate.getAttribute('handlebars-array-template');
39+
return Handlebars.partials[templateName]({"data": data});
40+
}
41+
2342
var nunjucksTemplate = htmx.closest(elt, "[nunjucks-template]");
2443
if (nunjucksTemplate) {
2544
var data = JSON.parse(text);
@@ -30,8 +49,36 @@ htmx.defineExtension('client-side-templates', {
3049
} else {
3150
return nunjucks.render(templateName, data);
3251
}
33-
}
52+
}
53+
54+
var xsltTemplate = htmx.closest(elt, "[xslt-template]");
55+
if (xsltTemplate) {
56+
var templateId = xsltTemplate.getAttribute('xslt-template');
57+
var template = htmx.find("#" + templateId);
58+
if (template) {
59+
var content = template.innerHTML ? new DOMParser().parseFromString(template.innerHTML, 'application/xml')
60+
: template.contentDocument;
61+
var processor = new XSLTProcessor();
62+
processor.importStylesheet(content);
63+
var data = new DOMParser().parseFromString(text, "application/xml");
64+
var frag = processor.transformToFragment(data, document);
65+
return new XMLSerializer().serializeToString(frag);
66+
} else {
67+
throw "Unknown XSLT template: " + templateId;
68+
}
69+
}
3470

71+
var nunjucksArrayTemplate = htmx.closest(elt, "[nunjucks-array-template]");
72+
if (nunjucksArrayTemplate) {
73+
var data = JSON.parse(text);
74+
var templateName = nunjucksArrayTemplate.getAttribute('nunjucks-array-template');
75+
var template = htmx.find('#' + templateName);
76+
if (template) {
77+
return nunjucks.renderString(template.innerHTML, {"data": data});
78+
} else {
79+
return nunjucks.render(templateName, {"data": data});
80+
}
81+
}
3582
return text;
3683
}
3784
});

dist/ext/disable-element.js

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,14 @@ htmx.defineExtension('disable-element', {
55
onEvent: function (name, evt) {
66
let elt = evt.detail.elt;
77
let target = elt.getAttribute("hx-disable-element");
8-
let targetElement = (target == "self") ? elt : document.querySelector(target);
8+
let targetElements = (target == "self") ? [ elt ] : document.querySelectorAll(target);
99

10-
if (name === "htmx:beforeRequest" && targetElement) {
11-
targetElement.disabled = true;
12-
} else if (name == "htmx:afterRequest" && targetElement) {
13-
targetElement.disabled = false;
10+
for (var i = 0; i < targetElements.length; i++) {
11+
if (name === "htmx:beforeRequest" && targetElements[i]) {
12+
targetElements[i].disabled = true;
13+
} else if (name == "htmx:afterRequest" && targetElements[i]) {
14+
targetElements[i].disabled = false;
15+
}
1416
}
1517
}
1618
});

dist/ext/loading-states.js

Lines changed: 48 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -25,28 +25,28 @@
2525
if (delayElt) {
2626
const delayInMilliseconds =
2727
delayElt.getAttribute('data-loading-delay') || 200
28-
const timeout = setTimeout(() => {
28+
const timeout = setTimeout(function () {
2929
doCallback()
3030

31-
loadingStatesUndoQueue.push(() => {
32-
mayProcessUndoCallback(targetElt, () => undoCallback())
31+
loadingStatesUndoQueue.push(function () {
32+
mayProcessUndoCallback(targetElt, undoCallback)
3333
})
3434
}, delayInMilliseconds)
3535

36-
loadingStatesUndoQueue.push(() => {
37-
mayProcessUndoCallback(targetElt, () => clearTimeout(timeout))
36+
loadingStatesUndoQueue.push(function () {
37+
mayProcessUndoCallback(targetElt, function () { clearTimeout(timeout) })
3838
})
3939
} else {
4040
doCallback()
41-
loadingStatesUndoQueue.push(() => {
42-
mayProcessUndoCallback(targetElt, () => undoCallback())
41+
loadingStatesUndoQueue.push(function () {
42+
mayProcessUndoCallback(targetElt, undoCallback)
4343
})
4444
}
4545
}
4646

4747
function getLoadingStateElts(loadingScope, type, path) {
48-
return Array.from(htmx.findAll(loadingScope, `[${type}]`)).filter(
49-
(elt) => mayProcessLoadingStateByPath(elt, path)
48+
return Array.from(htmx.findAll(loadingScope, "[" + type + "]")).filter(
49+
function (elt) { return mayProcessLoadingStateByPath(elt, path) }
5050
)
5151
}
5252

@@ -74,95 +74,99 @@
7474

7575
let loadingStateEltsByType = {}
7676

77-
loadingStateTypes.forEach((type) => {
77+
loadingStateTypes.forEach(function (type) {
7878
loadingStateEltsByType[type] = getLoadingStateElts(
7979
container,
8080
type,
8181
evt.detail.pathInfo.requestPath
8282
)
8383
})
8484

85-
loadingStateEltsByType['data-loading'].forEach((sourceElt) => {
86-
getLoadingTarget(sourceElt).forEach((targetElt) => {
85+
loadingStateEltsByType['data-loading'].forEach(function (sourceElt) {
86+
getLoadingTarget(sourceElt).forEach(function (targetElt) {
8787
queueLoadingState(
8888
sourceElt,
8989
targetElt,
90-
() =>
91-
(targetElt.style.display =
90+
function () {
91+
targetElt.style.display =
9292
sourceElt.getAttribute('data-loading') ||
93-
'inline-block'),
94-
() => (targetElt.style.display = 'none')
93+
'inline-block' },
94+
function () { targetElt.style.display = 'none' }
9595
)
9696
})
9797
})
9898

9999
loadingStateEltsByType['data-loading-class'].forEach(
100-
(sourceElt) => {
100+
function (sourceElt) {
101101
const classNames = sourceElt
102102
.getAttribute('data-loading-class')
103103
.split(' ')
104104

105-
getLoadingTarget(sourceElt).forEach((targetElt) => {
105+
getLoadingTarget(sourceElt).forEach(function (targetElt) {
106106
queueLoadingState(
107107
sourceElt,
108108
targetElt,
109-
() =>
110-
classNames.forEach((className) =>
111-
targetElt.classList.add(className)
112-
),
113-
() =>
114-
classNames.forEach((className) =>
115-
targetElt.classList.remove(className)
116-
)
109+
function () {
110+
classNames.forEach(function (className) {
111+
targetElt.classList.add(className)
112+
})
113+
},
114+
function() {
115+
classNames.forEach(function (className) {
116+
targetElt.classList.remove(className)
117+
})
118+
}
117119
)
118120
})
119121
}
120122
)
121123

122124
loadingStateEltsByType['data-loading-class-remove'].forEach(
123-
(sourceElt) => {
125+
function (sourceElt) {
124126
const classNames = sourceElt
125127
.getAttribute('data-loading-class-remove')
126128
.split(' ')
127129

128-
getLoadingTarget(sourceElt).forEach((targetElt) => {
130+
getLoadingTarget(sourceElt).forEach(function (targetElt) {
129131
queueLoadingState(
130132
sourceElt,
131133
targetElt,
132-
() =>
133-
classNames.forEach((className) =>
134-
targetElt.classList.remove(className)
135-
),
136-
() =>
137-
classNames.forEach((className) =>
138-
targetElt.classList.add(className)
139-
)
134+
function () {
135+
classNames.forEach(function (className) {
136+
targetElt.classList.remove(className)
137+
})
138+
},
139+
function() {
140+
classNames.forEach(function (className) {
141+
targetElt.classList.add(className)
142+
})
143+
}
140144
)
141145
})
142146
}
143147
)
144148

145149
loadingStateEltsByType['data-loading-disable'].forEach(
146-
(sourceElt) => {
147-
getLoadingTarget(sourceElt).forEach((targetElt) => {
150+
function (sourceElt) {
151+
getLoadingTarget(sourceElt).forEach(function (targetElt) {
148152
queueLoadingState(
149153
sourceElt,
150154
targetElt,
151-
() => (targetElt.disabled = true),
152-
() => (targetElt.disabled = false)
155+
function() { targetElt.disabled = true },
156+
function() { targetElt.disabled = false }
153157
)
154158
})
155159
}
156160
)
157161

158162
loadingStateEltsByType['data-loading-aria-busy'].forEach(
159-
(sourceElt) => {
160-
getLoadingTarget(sourceElt).forEach((targetElt) => {
163+
function (sourceElt) {
164+
getLoadingTarget(sourceElt).forEach(function (targetElt) {
161165
queueLoadingState(
162166
sourceElt,
163167
targetElt,
164-
() => (targetElt.setAttribute("aria-busy", "true")),
165-
() => (targetElt.removeAttribute("aria-busy"))
168+
function () { targetElt.setAttribute("aria-busy", "true") },
169+
function () { targetElt.removeAttribute("aria-busy") }
166170
)
167171
})
168172
}

dist/ext/morphdom-swap.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ htmx.defineExtension('morphdom-swap', {
55
handleSwap: function (swapStyle, target, fragment) {
66
if (swapStyle === 'morphdom') {
77
if (fragment.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {
8-
morphdom(target, fragment.firstElementChild);
8+
// IE11 doesn't support DocumentFragment.firstElementChild
9+
morphdom(target, fragment.firstElementChild || fragment.firstChild);
910
return [target];
1011
} else {
1112
morphdom(target, fragment.outerHTML);

0 commit comments

Comments
 (0)