Added pressed, active and disabled states for button.

This commit is contained in:
Nedyalko Nikolov
2016-10-21 14:26:37 +03:00
parent 8d178754a2
commit a63f46ee83
4 changed files with 94 additions and 7 deletions

View File

@@ -82,7 +82,7 @@ export class Button extends common.Button {
}
}
@PseudoClassHandler("normal", "highlighted")
@PseudoClassHandler("normal", "highlighted", "pressed", "active")
_updateHandler(subscribe: boolean) {
if (subscribe) {
if (!this._stateChangedHandler) {

View File

@@ -552,6 +552,11 @@ export class View extends ProxyObject implements definition.View {
}
set isEnabled(value: boolean) {
this._setValue(View.isEnabledProperty, value);
if (value === false) {
this._goToVisualState('disabled');
} else {
this._goToVisualState('normal');
}
}
get page(): definition.View {
@@ -757,17 +762,41 @@ export class View extends ProxyObject implements definition.View {
//
}
private pseudoClassAliases = {
'highlighted': [
'active',
'pressed'
]
};
private getAllAliasedStates(name: string): Array<string> {
let allStates = [];
allStates.push(name);
if (name in this.pseudoClassAliases) {
for (let i = 0; i < this.pseudoClassAliases[name].length; i++) {
allStates.push(this.pseudoClassAliases[name][i]);
}
}
return allStates;
}
public addPseudoClass(name: string): void {
if (!this.cssPseudoClasses.has(name)) {
this.cssPseudoClasses.add(name);
this.notifyPseudoClassChanged(name);
let allStates = this.getAllAliasedStates(name);
for (let i = 0; i < allStates.length; i++) {
if (!this.cssPseudoClasses.has(allStates[i])) {
this.cssPseudoClasses.add(allStates[i]);
this.notifyPseudoClassChanged(allStates[i]);
}
}
}
public deletePseudoClass(name: string): void {
if (this.cssPseudoClasses.has(name)) {
this.cssPseudoClasses.delete(name);
this.notifyPseudoClassChanged(name);
let allStates = this.getAllAliasedStates(name);
for (let i = 0; i < allStates.length; i++) {
if (this.cssPseudoClasses.has(allStates[i])) {
this.cssPseudoClasses.delete(allStates[i]);
this.notifyPseudoClassChanged(allStates[i]);
}
}
}