mirror of
https://github.com/NativeScript/NativeScript.git
synced 2025-08-14 18:12:09 +08:00
43 lines
1.2 KiB
TypeScript
43 lines
1.2 KiB
TypeScript
import { Color } from '../../color';
|
|
import { View, CSSType } from '../core/view';
|
|
import { booleanConverter } from '../core/view-base';
|
|
import { Property } from '../core/properties';
|
|
import { Switch as SwitchDefinition } from '.';
|
|
|
|
@CSSType('Switch')
|
|
export class SwitchBase extends View implements SwitchDefinition {
|
|
public static checkedChangeEvent = 'checkedChange';
|
|
|
|
public checked: boolean;
|
|
public offBackgroundColor: Color;
|
|
|
|
_onCheckedPropertyChanged(newValue: boolean) {
|
|
if (newValue) {
|
|
this._addVisualState('checked');
|
|
} else {
|
|
this._removeVisualState('checked');
|
|
}
|
|
}
|
|
}
|
|
|
|
SwitchBase.prototype.recycleNativeView = 'auto';
|
|
|
|
function onCheckedPropertyChanged(target: SwitchBase, oldValue: boolean, newValue: boolean) {
|
|
target._onCheckedPropertyChanged(newValue);
|
|
}
|
|
|
|
export const checkedProperty = new Property<SwitchBase, boolean>({
|
|
name: 'checked',
|
|
defaultValue: false,
|
|
valueConverter: booleanConverter,
|
|
valueChanged: onCheckedPropertyChanged,
|
|
});
|
|
checkedProperty.register(SwitchBase);
|
|
|
|
export const offBackgroundColorProperty = new Property<SwitchBase, Color>({
|
|
name: 'offBackgroundColor',
|
|
equalityComparer: Color.equals,
|
|
valueConverter: (v) => new Color(v),
|
|
});
|
|
offBackgroundColorProperty.register(SwitchBase);
|