import { EditableTextBase as EditableTextBaseDefinition, KeyboardType, ReturnKeyType, UpdateTextTrigger, AutocapitalizationType } from "."; import { TextBase, Property, CssProperty, Style, Color, booleanConverter, makeValidator, makeParser } from "../text-base"; export * from "../text-base"; export abstract class EditableTextBase extends TextBase implements EditableTextBaseDefinition { public keyboardType: KeyboardType; public returnKeyType: ReturnKeyType; public updateTextTrigger: UpdateTextTrigger; public autocapitalizationType: AutocapitalizationType; public editable: boolean; public autocorrect: boolean; public hint: string; public abstract dismissSoftInput(); } // TODO: Why not name it - hintColor property?? // TODO: Or rename hintProperty to 'placeholder' and make it CSSProperty?? // https://developer.mozilla.org/en-US/docs/Web/CSS/:-moz-placeholder export const placeholderColorProperty = new CssProperty({ name: "placeholderColor", cssName: "placeholder-color", equalityComparer: Color.equals, valueConverter: (v) => new Color(v) }); placeholderColorProperty.register(Style); const keyboardTypeConverter = makeParser(makeValidator("datetime", "phone", "number", "url", "email")); export const keyboardTypeProperty = new Property({ name: "keyboardType", valueConverter: keyboardTypeConverter }); keyboardTypeProperty.register(EditableTextBase); const returnKeyTypeConverter = makeParser(makeValidator("done", "next", "go", "search", "send")); export const returnKeyTypeProperty = new Property({ name: "returnKeyType", valueConverter: returnKeyTypeConverter }); returnKeyTypeProperty.register(EditableTextBase); export const editableProperty = new Property({ name: "editable", defaultValue: true, valueConverter: booleanConverter }); editableProperty.register(EditableTextBase); export const updateTextTriggerProperty = new Property({ name: "updateTextTrigger", defaultValue: "textChanged" }); updateTextTriggerProperty.register(EditableTextBase); const autocapitalizationTypeConverter = makeParser(makeValidator("none", "words", "sentences", "allcharacters")); export const autocapitalizationTypeProperty = new Property({ name: "autocapitalizationType", defaultValue: "sentences", valueConverter: autocapitalizationTypeConverter }); autocapitalizationTypeProperty.register(EditableTextBase); export const autocorrectProperty = new Property({ name: "autocorrect", valueConverter: booleanConverter }); autocorrectProperty.register(EditableTextBase); export const hintProperty = new Property({ name: "hint", defaultValue: "" }); hintProperty.register(EditableTextBase);