tns-core-modules
Version:
Telerik NativeScript Core Modules
66 lines (65 loc) • 1.9 kB
JavaScript
var observable = require("ui/core/dependency-observable");
var styleProperty = require("ui/styling/style-property");
var visualStateConstants = require("ui/styling/visual-state-constants");
var VisualState = (function () {
function VisualState() {
this._setters = {};
}
Object.defineProperty(VisualState.prototype, "setters", {
get: function () {
return this._setters;
},
enumerable: true,
configurable: true
});
return VisualState;
}());
exports.VisualState = VisualState;
function goToState(view, state) {
var root = view.page;
if (!root) {
return undefined;
}
var allStates = root._getStyleScope().getVisualStates(view);
if (!allStates) {
return undefined;
}
if (!(state in allStates)) {
state = visualStateConstants.Normal;
}
if (state !== view.visualState) {
var newState = allStates[state];
var oldState = allStates[view.visualState];
resetProperties(view, oldState, newState);
applyProperties(view, newState);
}
return state;
}
exports.goToState = goToState;
function resetProperties(view, oldState, newState) {
if (!oldState) {
return;
}
var property;
for (var name in oldState.setters) {
if (newState && (name in newState.setters)) {
continue;
}
property = styleProperty.getPropertyByName(name);
if (property) {
view.style._resetValue(property, observable.ValueSource.VisualState);
}
}
}
function applyProperties(view, state) {
if (!state) {
return;
}
var property;
for (var name in state.setters) {
property = styleProperty.getPropertyByName(name);
if (property) {
view.style._setValue(property, state.setters[name], observable.ValueSource.VisualState);
}
}
}