Added IgniteObject to support full end to end properties.
This commit is contained in:
@ -1,4 +1,4 @@
|
||||
import { IgniteProperty, IgniteCallback } from './ignite-html.js';
|
||||
import { IgniteProperty, IgniteCallback, IgniteRenderingContext } from './ignite-html.js';
|
||||
import { IgniteTemplate } from './ignite-template.js';
|
||||
|
||||
/**
|
||||
@ -139,12 +139,8 @@ class IgniteElement extends HTMLElement {
|
||||
*/
|
||||
createVariables() {
|
||||
var vars = this.variables;
|
||||
|
||||
if (vars != null) {
|
||||
var keys = Object.keys(vars);
|
||||
for (var i = 0; i < keys.length; i++) {
|
||||
this[keys[i]] = vars[keys[i]];
|
||||
}
|
||||
Object.keys(vars).forEach(name => this[name] = vars[name]);
|
||||
}
|
||||
}
|
||||
|
||||
@ -154,15 +150,23 @@ class IgniteElement extends HTMLElement {
|
||||
*/
|
||||
resetVariables() {
|
||||
var vars = this.variables;
|
||||
|
||||
if (vars != null) {
|
||||
var keys = Object.keys(vars);
|
||||
for (var i = 0; i < keys.length; i++) {
|
||||
this[keys[i]] = vars[keys[i]];
|
||||
}
|
||||
Object.keys(vars).forEach(name => this[name] = vars[name]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets all the property values from this element and returns it.
|
||||
*/
|
||||
getProperties() {
|
||||
var ret = {};
|
||||
var props = this.properties;
|
||||
IgniteRenderingContext.push();
|
||||
Object.keys(props).forEach(name => ret[name] = this[name]);
|
||||
IgniteRenderingContext.pop();
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates the getters/setters for properties in this
|
||||
* ignite element and initializes everything.
|
||||
@ -170,37 +174,14 @@ class IgniteElement extends HTMLElement {
|
||||
*/
|
||||
createProperties() {
|
||||
var props = this.properties;
|
||||
|
||||
if (props != null) {
|
||||
var keys = Object.keys(props);
|
||||
for (var i = 0; i < keys.length; i++) {
|
||||
let propValue = props[keys[i]];
|
||||
let propName = keys[i];
|
||||
|
||||
//Create a new property, if the propValue is a property, use that instead.
|
||||
var prop = null;
|
||||
if (propValue instanceof IgniteProperty) {
|
||||
prop = propValue;
|
||||
} else {
|
||||
prop = new IgniteProperty(propValue);
|
||||
}
|
||||
|
||||
this[`_${propName}`] = prop;
|
||||
|
||||
Object.defineProperty(this, propName, {
|
||||
get: () => {
|
||||
if (IgniteRenderingContext.rendering == false) {
|
||||
return this[`_${propName}`].value;
|
||||
} else {
|
||||
return this[`_${propName}`];
|
||||
}
|
||||
},
|
||||
|
||||
set: (value) => {
|
||||
this[`_${propName}`].value = value;
|
||||
}
|
||||
Object.keys(props).forEach(name => {
|
||||
var prop = (props[name] instanceof IgniteProperty ? props[name] : new IgniteProperty(props[name]));
|
||||
Object.defineProperty(this, name, {
|
||||
get: () => { return (IgniteRenderingContext.rendering ? prop : prop.value); },
|
||||
set: (value) => { prop.value = value; }
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@ -210,12 +191,8 @@ class IgniteElement extends HTMLElement {
|
||||
*/
|
||||
resetProperties() {
|
||||
var props = this.properties;
|
||||
|
||||
if (props != null) {
|
||||
var keys = Object.keys(props);
|
||||
for (var i = 0; i < keys.length; i++) {
|
||||
this[keys[i]] = props[keys[i]];
|
||||
}
|
||||
Object.keys(props).forEach(name => this[name] = props[name]);
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user