Skip to content

Commit 9bb4aab

Browse files
committed
v1.0.8 release
Feature improvements: - Improvements (and associated bug fixes) when converters return arrays. With minor breakng change for some advanced scenarios: Converters which return arrays now have an improved heuristic behavior to determine whether to return the array (retArray) as value for the first argument, or as an array of values for multiple bindTo/bindFrom targets. (If bindTo/bindFrom is an array of length l, l > 1 and the converter is returning an array retArray of length l, then treat retArray as an array of values for the multiple targets bindTo/bindFrom targets) In addition the heurisic default behavior can be overidden by setting retArray.arg0 = true/false. See http://jsviews.com/#tagoptions@bindto and http://jsviews.com/#hierarchypatterns@picker-multi Several bug fixes, and code improvements, particularly for data-linked <select> tags (including multiselect), and {{checkboxgroup}} tags: - #450 multiiselect not updating when linked array changes - #449 If the selected value of a data-linked <select> is set prior to adding options, selection is not always established correctly Additional small corrections or improvements to documentation, and some additional unit tests...
1 parent 3b3f669 commit 9bb4aab

30 files changed

+4932
-2311
lines changed

jquery.observable.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/*! JsObservable v1.0.7: http://jsviews.com/#jsobservable */
1+
/*! JsObservable v1.0.8: http://jsviews.com/#jsobservable */
22
/*
33
* Subcomponent of JsViews
44
* Data change events for data-linking
@@ -44,7 +44,7 @@ if (!$ || !$.fn) {
4444
throw "jquery.observable.js requires jQuery"; // We require jQuery
4545
}
4646

47-
var versionNumber = "v1.0.7",
47+
var versionNumber = "v1.0.8",
4848
_ocp = "_ocp", // Observable contextual parameter
4949
$observe, $observable,
5050

jquery.observable.min.js

+2-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

jquery.observable.min.js.map

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

jquery.views.js

+115-61
Large diffs are not rendered by default.

jquery.views.min.js

+3-3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

jquery.views.min.js.map

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

jsrender.js

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/*! JsRender v1.0.7: http://jsviews.com/#jsrender */
1+
/*! JsRender v1.0.8: http://jsviews.com/#jsrender */
22
/*! **VERSION FOR WEB** (For NODE.JS see http://jsviews.com/download/jsrender-node.js) */
33
/*
44
* Best-of-breed templating in browser or on Node.js.
@@ -44,7 +44,7 @@ var setGlobals = $ === false; // Only set globals if script block in browser (no
4444

4545
$ = $ && $.fn ? $ : global.jQuery; // $ is jQuery passed in by CommonJS loader (Browserify), or global jQuery.
4646

47-
var versionNumber = "v1.0.7",
47+
var versionNumber = "v1.0.8",
4848
jsvStoreName, rTag, rTmplString, topView, $views, $expando,
4949
_ocp = "_ocp", // Observable contextual parameter
5050

@@ -617,8 +617,8 @@ function convertArgs(tagElse, bound) { // tag.cvtArgs() or tag.cvtArgs(tagElse?,
617617
}
618618
bindFrom = bindFrom || [0];
619619
l = bindFrom.length;
620-
if (!$isArray(converter) || converter.length !== l) {
621-
converter = [converter];
620+
if (!$isArray(converter) || (converter.arg0 !== false && (l === 1 || converter.length !== l || converter.arg0))) {
621+
converter = [converter]; // Returning converter as first arg, even if converter value is an array
622622
bindFrom = [0];
623623
l = 1;
624624
}
@@ -1008,7 +1008,7 @@ View.prototype = {
10081008
if ($subSettings._cchCt > this.cache._ct) {
10091009
this.cache = {_ct: $subSettings._cchCt};
10101010
}
1011-
return this.cache[key] || (this.cache[key] = cpFnStore[key](this.data, this, $sub));
1011+
return this.cache[key] !== undefined ? this.cache[key] : (this.cache[key] = cpFnStore[key](this.data, this, $sub));
10121012
},
10131013
_is: "view"
10141014
};

jsrender.min.js

+2-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

jsrender.min.js.map

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

jsviews.js

+118-64
Large diffs are not rendered by default.

jsviews.min.js

+4-4
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

jsviews.min.js.map

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "jsviews",
3-
"version": "v1.0.7",
3+
"version": "v1.0.8",
44
"description": "Next-generation MVVM and MVP framework - built on top of JsRender templates. Bringing templates to life...",
55
"main": "./jsviews.js",
66
"author": {
@@ -35,7 +35,7 @@
3535
"browserify": "^11.0.1",
3636
"glob-stream": "^5.0.0",
3737
"gulp": "^3.9.0",
38-
"jsrender": "^1.0.7",
38+
"jsrender": "^1.0.8",
3939
"qunit": "^0.7.6"
4040
},
4141
"dependencies": {

test/browserify/bundles/1-bundle.js

+6-6
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

test/browserify/bundles/10-errors-bundle.js

+123-69
Large diffs are not rendered by default.

test/browserify/bundles/11-errors-bundle.js

+239-131
Large diffs are not rendered by default.

test/browserify/bundles/12-nested-bundle.js

+6-6
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

test/browserify/bundles/2-bundle.js

+6-6
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

test/browserify/bundles/3-bundle.js

+6-6
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

test/browserify/bundles/4-bundle.js

+3-3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

test/browserify/bundles/5-bundle.js

+3-3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

test/browserify/bundles/6-bundle.js

+123-69
Large diffs are not rendered by default.

test/browserify/bundles/7-bundle.js

+123-69
Large diffs are not rendered by default.

test/browserify/bundles/8-bundle.js

+119-65
Large diffs are not rendered by default.

test/browserify/bundles/8B-bundle.js

+124-70
Large diffs are not rendered by default.

test/browserify/bundles/9-bundle.js

+119-65
Large diffs are not rendered by default.

test/unit-tests/requirejs-config.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// Configure loading modules from the download directory,
22
requirejs.config({
3-
"baseUrl": "//www.jsviews.com/download", // Or point to correct local path on your system: "baseUrl": "/",
4-
// "baseUrl": "../../", // Or point to correct local path on your system: "baseUrl": "/",
3+
"baseUrl": "//www.jsviews.com/download", // Or point to correct local path on your system: "baseUrl": "/download",
4+
// "baseUrl": "../../download", // Or point to correct local path on your system: "baseUrl": "/download",
55
"paths": {
66
"jquery": "//code.jquery.com/jquery-3.5.1",
77
"jsrender": "./jsrender",

test/unit-tests/tests-jsrender-no-jquery.js

+26
Original file line numberDiff line numberDiff line change
@@ -474,6 +474,7 @@ QUnit.test("expressions", function(assert) {
474474
assert.equal($.templates("{{:!true === false}}").render({}), "true", "!true === false");
475475
assert.equal($.templates("{{:false === !true}}").render({}), "true", "false === !true");
476476
assert.equal($.templates("{{:false === !null}}").render({}), "false", "false === !null");
477+
assert.equal($.templates("{{:\"'\" + 1 + '\"' + 2 + '\\' + 3}}").render({}), "'1\"2\\3", "'1\"2\\3");
477478
});
478479

479480
QUnit.module("{{for}}");
@@ -1233,6 +1234,31 @@ QUnit.test("itemVar", function(assert) {
12331234
"itemVar with {{props}}{{else}}{{/props}}, and passing context to nested templates");
12341235
});
12351236

1237+
QUnit.test("contextual parameter", function(assert) {
1238+
var teams = [
1239+
{title: "The A Team", members: [{name: "Jeff"}, {name: "Maria"}]},
1240+
{title: "The B Team", members: [{name: "Francis"}]}
1241+
];
1242+
1243+
assert.equal($.templates(
1244+
"{{if members.length ~teamTitle=title ~teamData=#data ~teamIndex=#index}}"
1245+
+ "{{for members itemVar='~member'}}"
1246+
+ "{{:~teamTitle}} "
1247+
+ "{{:~teamData.title}} "
1248+
+ "{{:~teamIndex}} "
1249+
+ "{{:~member.name}} "
1250+
+ "{{/for}}"
1251+
+ "{{/if}}"
1252+
).render(teams),
1253+
"The A Team The A Team 0 Jeff The A Team The A Team 0 Maria The B Team The B Team 1 Francis ",
1254+
"contextual parameter passing to inner context");
1255+
1256+
assert.equal($.templates(
1257+
"{^{if 1 ~a='A'+\"B\"+'\"'+\"'\"+\"\\'\"}}{^{:'Inner'+~a}}{{/if}}").render(),
1258+
"InnerAB\"'\\'",
1259+
"contextual parameter correctly escaping quotes and backslash");
1260+
});
1261+
12361262
QUnit.module("api no jQuery");
12371263
QUnit.test("templates", function(assert) {
12381264
// ................................ Arrange ..................................

0 commit comments

Comments
 (0)