@@ -154,6 +183,7 @@ export {
ComponentWithChildrenRerender,
ComponentWithDifferentViews,
ComponentWithProps,
+ ComponentWithInheritance,
ComponentWithImperativeEvent,
ComponentWithDeclarativeEvent
}
diff --git a/libraries/dio/meta/expectedResults.json b/libraries/dio/meta/expectedResults.json
index 33d25e192e..fb9150a507 100644
--- a/libraries/dio/meta/expectedResults.json
+++ b/libraries/dio/meta/expectedResults.json
@@ -1,5 +1,5 @@
{
- "success": 26,
+ "success": 28,
"failed": 6,
"skipped": 0,
"error": false,
@@ -12,8 +12,8 @@
"passed": 16
},
"advancedSupport": {
- "total": 16,
+ "total": 18,
"failed": 6,
- "passed": 10
+ "passed": 12
}
}
\ No newline at end of file
diff --git a/libraries/dio/src/advanced-tests.js b/libraries/dio/src/advanced-tests.js
index b8ed66cd9a..b76087f80a 100644
--- a/libraries/dio/src/advanced-tests.js
+++ b/libraries/dio/src/advanced-tests.js
@@ -25,7 +25,8 @@ import {
ComponentWithProperties,
ComponentWithUnregistered,
ComponentWithImperativeEvent,
- ComponentWithDeclarativeEvent
+ ComponentWithDeclarativeEvent,
+ ComponentWithInheritance
} from "./components";
// Setup the test harness. This will get cleaned out with every test.
@@ -72,6 +73,14 @@ describe("advanced support", function() {
expect(data).to.eql({ label: "passed" });
});
+ it("will pass object data to inherited properties", function() {
+ this.weight = 2;
+ render(
, scratch);
+ let wc = scratch.querySelector("#wc");
+ expect(wc.arr).to.eql(["D", "I", "O"]);
+ expect(wc.obj).to.eql({ org: "thysultan", repo: "dio.js" });
+ });
+
});
describe("events", function() {
diff --git a/libraries/dio/src/components.js b/libraries/dio/src/components.js
index 78df469ca7..696082b5c1 100644
--- a/libraries/dio/src/components.js
+++ b/libraries/dio/src/components.js
@@ -19,6 +19,7 @@ import { h, render, Component } from 'dio.js';
import 'ce-without-children';
import 'ce-with-children';
import 'ce-with-properties';
+import 'ce-with-inheritance';
import 'ce-with-event';
export class ComponentWithoutChildren extends Component {
@@ -109,6 +110,31 @@ export class ComponentWithProperties extends Component {
}
}
+export class ComponentWithInheritance extends Component {
+ render () {
+ const data = {
+ bool: true,
+ num: 42,
+ str: 'DIO',
+ arr: ['D', 'I', 'O'],
+ obj: { org: 'thysultan', repo: 'dio.js' },
+ camelCaseObj: { label: "passed" }
+ };
+ return (
+
+
+
+ );
+ }
+}
+
export class ComponentWithUnregistered extends Component {
render () {
const data = {
diff --git a/libraries/dojo/meta/expectedResults.json b/libraries/dojo/meta/expectedResults.json
index 755586be4b..aa7948790a 100644
--- a/libraries/dojo/meta/expectedResults.json
+++ b/libraries/dojo/meta/expectedResults.json
@@ -1,5 +1,5 @@
{
- "success": 32,
+ "success": 34,
"failed": 0,
"skipped": 0,
"error": false,
@@ -12,8 +12,8 @@
"passed": 16
},
"advancedSupport": {
- "total": 16,
+ "total": 18,
"failed": 0,
- "passed": 16
+ "passed": 18
}
}
\ No newline at end of file
diff --git a/libraries/dojo/src/advanced-tests.ts b/libraries/dojo/src/advanced-tests.ts
index e8bfb1eb53..e4da4fefd1 100644
--- a/libraries/dojo/src/advanced-tests.ts
+++ b/libraries/dojo/src/advanced-tests.ts
@@ -18,7 +18,8 @@
import { expect } from "chai";
import {
ComponentWithProperties,
- ComponentWithDeclarativeEvent
+ ComponentWithDeclarativeEvent,
+ ComponentWithInheritance
} from "./components";
import renderer, { w } from "@dojo/framework/core/vdom";
@@ -70,6 +71,15 @@ describe("advanced support", function() {
expect(data).to.eql({ label: "passed" });
});
+ it("will pass object data to inherited properties", function() {
+ this.weight = 2;
+ const r = renderer(() => w(ComponentWithInheritance, {}));
+ r.mount({ domNode: scratch, sync: true });
+ const wc: any = document.querySelector("ce-with-inheritance");
+ expect(wc.arr).to.eql(["d", "o", "j", "o"]);
+ expect(wc.obj).to.eql({ org: "dojo", repo: "dojo" });
+ });
+
});
describe("events", function() {
diff --git a/libraries/dojo/src/components.ts b/libraries/dojo/src/components.ts
index 436bef0f36..8a324240d7 100644
--- a/libraries/dojo/src/components.ts
+++ b/libraries/dojo/src/components.ts
@@ -20,6 +20,7 @@ import icache from '@dojo/framework/core/middleware/icache';
import 'ce-without-children';
import 'ce-with-children';
import 'ce-with-properties';
+import 'ce-with-inheritance';
import 'ce-with-event';
const factory = create({ icache });
@@ -67,6 +68,18 @@ export const ComponentWithProperties = factory(() => {
return v('ce-with-properties', data);
});
+export const ComponentWithInheritance = factory(() => {
+ const data = {
+ bool: true,
+ num: 42,
+ str: 'Dojo',
+ arr: ['d', 'o', 'j', 'o'],
+ obj: { org: 'dojo', repo: 'dojo' },
+ camelCaseObj: { label: "passed" }
+ };
+ return v('ce-with-inheritance', data);
+});
+
export const ComponentWithUnregistered = factory(() => {
const data = {
bool: true,
diff --git a/libraries/hybrids/meta/expectedResults.json b/libraries/hybrids/meta/expectedResults.json
index c15d4478b5..14aaf05758 100644
--- a/libraries/hybrids/meta/expectedResults.json
+++ b/libraries/hybrids/meta/expectedResults.json
@@ -1,19 +1,19 @@
{
"success": 30,
- "failed": 2,
+ "failed": 4,
"skipped": 0,
"error": false,
"disconnected": false,
"exitCode": 1,
- "score": 94,
+ "score": 89,
"basicSupport": {
"total": 16,
"failed": 0,
"passed": 16
},
"advancedSupport": {
- "total": 16,
- "failed": 2,
+ "total": 18,
+ "failed": 4,
"passed": 14
}
}
\ No newline at end of file
diff --git a/libraries/hybrids/src/advanced-tests.js b/libraries/hybrids/src/advanced-tests.js
index 7caa0d6f8e..58f3b6ee6c 100644
--- a/libraries/hybrids/src/advanced-tests.js
+++ b/libraries/hybrids/src/advanced-tests.js
@@ -20,6 +20,7 @@ import { define } from "hybrids";
import {
ComponentWithProperties,
+ ComponentWithInheritance,
ComponentWithDeclarativeEvent,
} from "./components";
@@ -43,12 +44,10 @@ describe("advanced support", function() {
describe("attributes and properties", function() {
define("component-with-properties", ComponentWithProperties);
-
- beforeEach(() => {
- root.appendChild(document.createElement("component-with-properties"));
- })
+ define("component-with-inheritance", ComponentWithInheritance);
it("will pass array data as a property", function(done) {
+ root.appendChild(document.createElement("component-with-properties"));
this.weight = 2;
requestAnimationFrame(() => {
const wc = root.firstElementChild.shadowRoot.querySelector('#wc');
@@ -59,6 +58,7 @@ describe("advanced support", function() {
});
it("will pass object data as a property", function(done) {
+ root.appendChild(document.createElement("component-with-properties"));
this.weight = 2;
requestAnimationFrame(() => {
const wc = root.firstElementChild.shadowRoot.querySelector('#wc');
@@ -69,6 +69,7 @@ describe("advanced support", function() {
});
it("will pass object data to a camelCase-named property", function(done) {
+ root.appendChild(document.createElement("component-with-properties"));
this.weight = 2;
requestAnimationFrame(() => {
const wc = root.firstElementChild.shadowRoot.querySelector('#wc');
@@ -78,6 +79,17 @@ describe("advanced support", function() {
});
});
+ it("will pass object data to inherited properties", function(done) {
+ root.appendChild(document.createElement("component-with-inheritance"));
+ this.weight = 2;
+ requestAnimationFrame(() => {
+ const wc = root.firstElementChild.shadowRoot.querySelector('#wc');
+ expect(wc.arr).to.eql(["h", "y", "b", "r", "i", "d", "s"]);
+ expect(wc.obj).to.eql({ library: "hybrids" });
+ done();
+ });
+ });
+
});
describe("events", function() {
diff --git a/libraries/hybrids/src/components.js b/libraries/hybrids/src/components.js
index ae5810576e..7b2d5c7700 100644
--- a/libraries/hybrids/src/components.js
+++ b/libraries/hybrids/src/components.js
@@ -18,6 +18,7 @@
import 'ce-without-children';
import 'ce-with-children';
import 'ce-with-properties';
+import 'ce-with-inheritance';
import 'ce-with-event';
import { html } from 'hybrids';
@@ -62,6 +63,20 @@ export const ComponentWithProperties = {
`,
};
+export const ComponentWithInheritance = {
+ render: () => html`
+
+ `,
+};
+
export const ComponentWithDeclarativeEvent = {
lowercaseHandled: false,
kebabHandled: false,
diff --git a/libraries/hyperapp/meta/expectedResults.json b/libraries/hyperapp/meta/expectedResults.json
index 755586be4b..aa7948790a 100644
--- a/libraries/hyperapp/meta/expectedResults.json
+++ b/libraries/hyperapp/meta/expectedResults.json
@@ -1,5 +1,5 @@
{
- "success": 32,
+ "success": 34,
"failed": 0,
"skipped": 0,
"error": false,
@@ -12,8 +12,8 @@
"passed": 16
},
"advancedSupport": {
- "total": 16,
+ "total": 18,
"failed": 0,
- "passed": 16
+ "passed": 18
}
}
\ No newline at end of file
diff --git a/libraries/hyperapp/package.json b/libraries/hyperapp/package.json
index aed382d23f..f5b5b846bb 100644
--- a/libraries/hyperapp/package.json
+++ b/libraries/hyperapp/package.json
@@ -35,7 +35,7 @@
"output": [
"results"
],
- "command": "cross-env LIBRARY_NAME=hyperapp karma start"
+ "command": "cross-env LIBRARY_NAME=hyperapp karma start || echo''"
},
"build": {
"dependencies": [
diff --git a/libraries/hyperapp/src/advanced-tests.js b/libraries/hyperapp/src/advanced-tests.js
index 941ab139cd..40da90660b 100644
--- a/libraries/hyperapp/src/advanced-tests.js
+++ b/libraries/hyperapp/src/advanced-tests.js
@@ -24,7 +24,8 @@ import {
ComponentWithDifferentViews,
ComponentWithProperties,
ComponentWithImperativeEvent,
- ComponentWithDeclarativeEvent
+ ComponentWithDeclarativeEvent,
+ ComponentWithInheritance
} from "./components";
// Setup the test harness. This will get cleaned out with every test.
@@ -69,6 +70,15 @@ describe("advanced support", function () {
expect(wc.camelCaseObj).to.eql({ label: "passed" });
});
+ it("will pass object data to inherited properties", async function () {
+ this.weight = 2;
+ ComponentWithInheritance(root);
+ await new Promise(requestAnimationFrame);
+ let wc = testContainer.querySelector("#wc");
+ expect(wc.arr).to.eql(["H", "y", "p", "e", "r", "a", "p", "p"]);
+ expect(wc.obj).to.eql({ org: "Hyperapp", repo: "hyperapp.js" });
+ });
+
});
describe("events", function () {
diff --git a/libraries/hyperapp/src/components.js b/libraries/hyperapp/src/components.js
index 73726e7934..f207f69a2f 100644
--- a/libraries/hyperapp/src/components.js
+++ b/libraries/hyperapp/src/components.js
@@ -18,6 +18,7 @@
import "ce-without-children"
import "ce-with-children"
import "ce-with-properties"
+import "ce-with-inheritance";
import "ce-with-event"
import { app, h, text } from "hyperapp"
@@ -81,6 +82,24 @@ export const ComponentWithProperties = node =>
]),
})
+export const ComponentWithInheritance = node =>
+app({
+ node,
+ init: {},
+ view: () =>
+ h("div", {}, [
+ h("ce-with-inheritance", {
+ id: "wc",
+ bool: true,
+ num: 42,
+ str: "Hyperapp",
+ arr: ["H", "y", "p", "e", "r", "a", "p", "p"],
+ obj: { org: "Hyperapp", repo: "hyperapp.js" },
+ camelCaseObj: { label: "passed" },
+ }),
+ ]),
+})
+
export const ComponentWithImperativeEvent = node => {
const _withElem = (_, opts) =>
requestAnimationFrame(_ => {
diff --git a/libraries/hyperhtml/meta/expectedResults.json b/libraries/hyperhtml/meta/expectedResults.json
index 755586be4b..aa7948790a 100644
--- a/libraries/hyperhtml/meta/expectedResults.json
+++ b/libraries/hyperhtml/meta/expectedResults.json
@@ -1,5 +1,5 @@
{
- "success": 32,
+ "success": 34,
"failed": 0,
"skipped": 0,
"error": false,
@@ -12,8 +12,8 @@
"passed": 16
},
"advancedSupport": {
- "total": 16,
+ "total": 18,
"failed": 0,
- "passed": 16
+ "passed": 18
}
}
\ No newline at end of file
diff --git a/libraries/hyperhtml/package.json b/libraries/hyperhtml/package.json
index 64db55f9b3..b3f8d56ff8 100644
--- a/libraries/hyperhtml/package.json
+++ b/libraries/hyperhtml/package.json
@@ -35,7 +35,7 @@
"output": [
"results"
],
- "command": "cross-env LIBRARY_NAME=hyperhtml karma start"
+ "command": "cross-env LIBRARY_NAME=hyperhtml karma start || echo ''"
},
"build": {
"dependencies": [
diff --git a/libraries/hyperhtml/src/advanced-tests.js b/libraries/hyperhtml/src/advanced-tests.js
index 90762c1507..337ed80cb8 100644
--- a/libraries/hyperhtml/src/advanced-tests.js
+++ b/libraries/hyperhtml/src/advanced-tests.js
@@ -27,7 +27,8 @@ import {
ComponentWithDifferentViews,
ComponentWithProperties,
ComponentWithImperativeEvent,
- ComponentWithDeclarativeEvent
+ ComponentWithDeclarativeEvent,
+ ComponentWithInheritance
} from "./components";
// Setup the test harness. This will get cleaned out with every test.
@@ -70,6 +71,14 @@ describe("advanced support", function() {
expect(wc.camelCaseObj).to.eql({ label: "passed" });
});
+ it("will pass object data to inherited properties", async function() {
+ this.weight = 2;
+ ComponentWithInheritance(root);
+ let wc = root.querySelector("#wc");
+ expect(wc.arr).to.eql(["h", "y", "p", "e", "r", "H", "T", "M", "L"]);
+ expect(wc.obj).to.eql({ org: "viperHTML", repo: "hyperHTML" });
+ });
+
});
describe("events", function() {
diff --git a/libraries/hyperhtml/src/components.js b/libraries/hyperhtml/src/components.js
index 4ab1431184..6446807968 100644
--- a/libraries/hyperhtml/src/components.js
+++ b/libraries/hyperhtml/src/components.js
@@ -18,6 +18,7 @@
import 'ce-without-children';
import 'ce-with-children';
import 'ce-with-properties';
+import 'ce-with-inheritance';
import 'ce-with-event';
import HyperHTMLELement from 'hyperhtml-element/esm';
@@ -79,6 +80,18 @@ export const ComponentWithProperties = (root) => hyper(root)`
>
`;
+export const ComponentWithInheritance = (root) => hyper(root)`
+