File

my-lib/input-item/input-item.ts

Extends

ListItemComponent

Implements

OnInit

Metadata

changeDetection ChangeDetectionStrategy.OnPush
encapsulation ViewEncapsulation.None
selector input-item
styleUrls input-item.less,
patch.less
templateUrl ./input-item.html

Index

Properties
Methods
Inputs
Outputs
Accessors

Constructor

constructor(ele: ElementRef, render: Renderer2)
Parameters :
Name Type Optional Description
ele ElementRef
render Renderer2

Inputs

clear

Type: boolean

Default value: false

defaultValue

Type: string

disabled

Type: any

editable

Type: boolean

Default value: true

error

Type: any

extra

Type: string | TemplateRef

labelNumber

Type: number

Default value: 5

maxLength

Type: number

moneyKeyboardAlign

Type: "left" | "right"

name

Type: string

placeholder

Type: string

readonly

Type: any

type

Type: string

updatePlaceholder

Type: boolean

Default value: false

value

Type: string

Outputs

onBlur $event type: EventEmitter<any>
onChange $event type: EventEmitter<any>
onErrorClick $event type: EventEmitter<any>
onExtraClick $event type: EventEmitter<any>
onFocus $event type: EventEmitter<any>

Methods

_onClear
_onClear(e: Event)
Parameters :
Name Type Optional Description
e Event
Returns : void
_onError
_onError(e: any)
Parameters :
Name Type Optional Description
e any
Returns : void
_onExtra
_onExtra(e: any)
Parameters :
Name Type Optional Description
e any
Returns : void
initRipple
initRipple()
Returns : void
ngOnInit
ngOnInit()
Returns : void
setItemActive
setItemActive(isActive?: boolean)
Parameters :
Name Type Optional Description
isActive boolean true
Returns : void

Properties

_disabled
_disabled: boolean
Type : boolean
Default value : false
_readonly
_readonly: boolean
Type : boolean
Default value : false
input
input: ElementRef
Type : ElementRef
Decorators : ViewChild

Accessors

disabled
setdisabled(val: any)
readonly
setreadonly(val: any)
error
seterror(val: any)
import {
    ViewEncapsulation, Component,
    Input, HostBinding, OnInit,
    InjectionToken, Inject, ChangeDetectionStrategy,
    ElementRef, Renderer2, ViewChild,
    Output, EventEmitter, TemplateRef
} from '@angular/core';
import { ListItemComponent } from '../list/list-item/list-item';
import { fromEvent, merge } from 'meepo-utils';
@Component({
    selector: 'input-item',
    templateUrl: './input-item.html',
    styleUrls: ['./input-item.less', './patch.less'],
    encapsulation: ViewEncapsulation.None,
    changeDetection: ChangeDetectionStrategy.OnPush
})
export class InputItemComponent extends ListItemComponent implements OnInit {
    @ViewChild('input') input: ElementRef;

    @Input() type: string;
    @Input() value: string;
    @Input() defaultValue: string;
    @Input() placeholder: string;
    @Input() editable: boolean = true;

    _disabled: boolean = false;
    @Input()
    set disabled(val: any) {
        const _disabled = this.isMeepoTrue(val);
        if (_disabled) {
            this.render.setAttribute(this.input.nativeElement, 'disabled', '');
            this.addToClass('am-input-disabled', true, false);
        } else {
            this.render.removeAttribute(this.input.nativeElement, 'disabled');
            this.addToClass('am-input-disabled', false, false);
        }
    }

    _readonly: boolean = false;
    @Input()
    set readonly(val: any) {
        this._readonly = this.isMeepoTrue(val);
        if (this._readonly) {
            this.render.setAttribute(this.input.nativeElement, 'readonly', '');
        } else {
            this.render.removeAttribute(this.input.nativeElement, 'readonly');
        }
    }

    @Input() clear: boolean = false;
    @Input() maxLength: number;
    @Input()
    set error(val: any) {
        const error = this.isMeepoTrue(val);
        if (error) {
            this.addToClass('am-input-error', true, false);
        } else {
            this.addToClass('am-input-error', false, false);
        }
    }
    @Input() extra: string | TemplateRef<any>;
    @Input() labelNumber: number = 5;
    @Input() updatePlaceholder: boolean = false;
    @Input() name: string;
    @Input() moneyKeyboardAlign: 'left' | 'right';

    @Output() onChange: EventEmitter<any> = new EventEmitter();
    @Output() onBlur: EventEmitter<any> = new EventEmitter();
    @Output() onFocus: EventEmitter<any> = new EventEmitter();
    @Output() onErrorClick: EventEmitter<any> = new EventEmitter();
    @Output() onExtraClick: EventEmitter<any> = new EventEmitter();

    constructor(
        ele: ElementRef, render: Renderer2
    ) {
        super(ele, render);
        this.addToClass('am-input-item', true, false);
        this.addToClass('am-input-arrow', true, false);
    }
    initRipple() { }

    _onError(e: any) {
        this.onErrorClick.emit(e);
    }

    _onExtra(e: any) {
        this.onExtraClick.emit(e);
    }

    _onClear(e: Event) {
        e.stopPropagation();
        e.preventDefault();
        this.input.nativeElement.value = '';
    }

    setItemActive(isActive?: boolean) {
        setTimeout(() => {
            this.input.nativeElement.focus();
        });
    }

    ngOnInit() {
        this.arrow = 'empty';
        const change = merge(
            // fromEvent(this.input.nativeElement, 'change'),
            // fromEvent(this.input.nativeElement, 'keyup'),
            // fromEvent(this.input.nativeElement, 'keydown'),
            fromEvent(this.input.nativeElement, 'input'),
            fromEvent(this.input.nativeElement, 'propertychange')
        );
        const blur = fromEvent(this.input.nativeElement, 'blur');
        const focus = fromEvent(this.input.nativeElement, 'focus');
        change
            .distinctUntilChanged()
            .debounceTime(300)
            .subscribe(res => {
                this.onChange.emit(res);
            });
        blur.subscribe(res => {
            setTimeout(() => {
                if (!this._readonly) {
                    this.addToClass('am-input-focus', false, false);
                    this.onBlur.emit(res);
                }
            });
        });
        focus.subscribe(res => {
            setTimeout(() => {
                if (!this._readonly) {
                    this.addToClass('am-input-focus', true, false)
                    this.onFocus.emit(res);
                }
            });
        });
    }
}
<div class="{{_name}}-thumb" *ngIf="_thumb && !thumbRef">
    <img [src]="_thumb" />
</div>
<ng-container *ngIf="thumbRef">
    <div class="{{_name}}-thumb">
        <ng-container *ngTemplateOutlet="thumbRef"></ng-container>
    </div>
</ng-container>
<div class="am-list-line" [class.am-list-line-multiple]="_multiple">
    <div class="am-input-label am-input-label-{{labelNumber}}">
        <ng-content></ng-content>
    </div>
    <div class="am-input-control">
        <input #input [attr.name]="name" [attr.placeholder]="placeholder" [attr.value]="value" [attr.type]="type">
    </div>
    <div class="am-input-extra" (click)="_onExtra($event)" *ngIf="extra && extraType === 'string'">
        {{extra}}
    </div>
    <div class="am-input-extra" (click)="_onExtra($event)" *ngIf="extra && extraType !== 'string'">
        <ng-container *ngTemplateOutlet="extra"></ng-container>
    </div>
    <div class="am-input-clear" (click)="_onClear($event)"></div>
    <div class="am-input-error-extra" (click)="_onError($event)"></div>
</div>
<div listRipple style="display: none;"></div>
Legend
Html element
Component
Html element with directive

results matching ""

    No results matching ""