mirror of
https://github.com/NativeScript/NativeScript.git
synced 2025-08-26 03:01:51 +08:00
feat(core): support for simultaneous pseudo states (#10656)
This commit is contained in:

committed by
GitHub

parent
a883a79e3b
commit
f970455007
@ -6,6 +6,19 @@ import { booleanConverter } from '../core/view-base';
|
||||
import { Style } from '../styling/style';
|
||||
import { Color } from '../../color';
|
||||
import { CoreTypes } from '../../core-types';
|
||||
import { EventData } from '../../data/observable';
|
||||
|
||||
function focusChangeHandler(args: EventData): void {
|
||||
const view = args.object as EditableTextBase;
|
||||
|
||||
if (args.eventName === 'focus') {
|
||||
view._addVisualState('focus');
|
||||
view._removeVisualState('blur');
|
||||
} else {
|
||||
view._addVisualState('blur');
|
||||
view._removeVisualState('focus');
|
||||
}
|
||||
}
|
||||
|
||||
export abstract class EditableTextBase extends TextBase implements EditableTextBaseDefinition {
|
||||
public static blurEvent = 'blur';
|
||||
@ -28,15 +41,12 @@ export abstract class EditableTextBase extends TextBase implements EditableTextB
|
||||
public abstract setSelection(start: number, stop?: number);
|
||||
placeholderColor: Color;
|
||||
|
||||
private _focusHandler = () => this._goToVisualState('focus');
|
||||
private _blurHandler = () => this._goToVisualState('blur');
|
||||
|
||||
@PseudoClassHandler('focus', 'blur')
|
||||
_updateTextBaseFocusStateHandler(subscribe) {
|
||||
const method = subscribe ? 'on' : 'off';
|
||||
|
||||
this[method]('focus', this._focusHandler);
|
||||
this[method]('blur', this._blurHandler);
|
||||
this[method]('focus', focusChangeHandler);
|
||||
this[method]('blur', focusChangeHandler);
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user