ember-assembly
Version:
A collection of beautiful UI components built by Goods
66 lines (56 loc) • 1.45 kB
text/typescript
import Component from '@glimmer/component';
/* @ts-ignore */
import { htmlSafe } from '@ember/template';
import { action } from '@ember/object';
import { isNone } from '@ember/utils';
import { SafeString } from 'handlebars';
export type Size = 'default';
export type Appearance = 'default' | 'strong';
interface AsmUiTextInputArgs {
value: string;
onUpdate?: Function | null;
onFocusOut?: Function | null;
inputId?: string;
required?: boolean;
type?: string;
isDisabled?: boolean;
max?: number | null;
min?: number | null;
width?: string; //Accepts any standard CSS width value
hasError?: boolean;
}
export default class AsmUiTextInput extends Component<AsmUiTextInputArgs> {
get required(): boolean {
return this.args.required ?? false;
}
get type(): string {
return this.args.type ?? 'text';
}
get isDisabled(): boolean {
return this.args.isDisabled ?? false;
}
get hasError(): boolean {
return this.args.hasError ?? false;
}
get style(): SafeString {
if (this.args.width) {
return htmlSafe(`width: ${this.args.width}`);
} else {
return htmlSafe('');
}
}
onUpdate(event: InputEvent) {
//@ts-ignore
let value = event.target?.value ?? '';
if (!isNone(this.args.onUpdate)) {
return this.args.onUpdate(value);
}
}
didFocusOut() {
if (!isNone(this.args.onFocusOut)) {
this.args.onFocusOut();
}
}
}