Files
NativeScript/packages/core/ui/switch/switch-common.ts
2025-01-12 19:18:08 -08:00

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);