@fivethree/core
Version:
Fivethree Core Components
212 lines • 15.5 kB
JavaScript
/**
* @fileoverview added by tsickle
* Generated from: lib/searchbar/searchbar.component.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Component, Input, EventEmitter, Output, Renderer2 } from '@angular/core';
import { trigger, transition, style, animate, state } from '@angular/animations';
export class FivSearchbar {
/**
* @param {?} renderer
*/
constructor(renderer) {
this.renderer = renderer;
this.searching = false;
this.titleVisible = true;
this.closeButtonVisible = false;
this.smallWidth = 120;
this.searchIcon = 'search';
this.closeIcon = 'close';
this._small = false;
this.fivInputChange = new EventEmitter();
this.fivClose = new EventEmitter();
this.open = new EventEmitter();
this.state = 'normal';
}
/**
* @param {?} s
* @return {?}
*/
set small(s) {
if (s && !this._small) {
this.shrink();
}
else if (!s && this._small) {
this.grow();
}
this._small = s;
}
/**
* @return {?}
*/
get small() {
return this._small;
}
/**
* @return {?}
*/
ngOnInit() {
this.state = this._small ? 'small' : 'normal';
}
/**
* @return {?}
*/
shrink() {
this.state = 'small';
}
/**
* @return {?}
*/
grow() {
this.state = 'normal';
}
/**
* @return {?}
*/
openSearchbar() {
if (this._small) {
this.state = 'normal';
}
this._open();
}
/**
* @return {?}
*/
toggleSearchbar() {
if (this.searching) {
this.closeSearchbar();
}
else {
this.openSearchbar();
}
}
/**
* @param {?} event
* @return {?}
*/
searchBarStateChange(event) {
if (event.fromState === 'normal' && event.toState === 'small') {
}
if (event.fromState === 'small' && event.toState === 'normal') {
}
}
/**
* @private
* @return {?}
*/
_open() {
this.searching = true;
this.titleVisible = false;
this.open.emit();
}
/**
* @return {?}
*/
closeSearchbar() {
if (this.small) {
this.state = 'small';
}
this.searching = false;
this.fivClose.emit();
}
/**
* @param {?} event
* @return {?}
*/
searchAnimDone(event) {
if (event.fromState !== 'void') {
this.closeButtonVisible = true;
}
}
/**
* @param {?} event
* @return {?}
*/
closeAnimDone(event) {
if (event.fromState !== 'void') {
this.searching = false;
}
}
/**
* @param {?} event
* @param {?} input
* @return {?}
*/
seachbarAnimDone(event, input) {
if (event.fromState !== 'void') {
this.titleVisible = true;
}
else {
input.setFocus();
}
}
}
FivSearchbar.decorators = [
{ type: Component, args: [{
selector: 'fiv-searchbar',
template: "<ion-toolbar [@searchbarAnim]=\"{value:state, params: {width: smallWidth}}\"\n (@searchbarAnim.done)=\"searchBarStateChange($event)\" [ngClass]=\"{'small': state === 'small'}\">\n <ion-buttons slot=\"start\">\n <ng-content select=\"[start]\"></ng-content>\n\n </ion-buttons>\n <ion-title [@titleAnim] *ngIf=\"titleVisible && state !== 'small'\">{{title}}</ion-title>\n <ion-input (ionChange)=\"fivInputChange.emit($event)\" [placeholder]=\"!titleVisible ? placeholder : ''\" autofocus #input\n class=\"searchbarbar\" [@titleAnim] (@titleAnim.done)=\"seachbarAnimDone($event,input)\" *ngIf=\"searching\">\n </ion-input>\n\n <ion-buttons slot=\"end\">\n <ion-button (click)=\"toggleSearchbar()\">\n <fiv-icon slot=\"icon-only\" [name]=\"searching ? closeIcon : searchIcon\"></fiv-icon>\n </ion-button>\n <ng-content select=\"[end]\"></ng-content>\n </ion-buttons>\n</ion-toolbar>",
animations: [
trigger('searchbarAnim', [
transition('small => normal', [animate('125ms ease-out')]),
transition('normal => small', [animate('95ms ease-in')]),
state('small', style({ width: '{{width}}px' }), {
params: { width: 120 }
}),
state('normal', style({ width: '100%' }))
]),
trigger('titleAnim', [
transition('void => *', [
style({ opacity: '0', transform: 'translateY(-20%)' }),
animate('175ms ease-out', style({ opacity: '1', transform: 'translateY(0)' }))
])
])
],
styles: [":host{position:relative;display:block;width:100%;--fiv-toolbar-background:var(--ion-color-light)}ion-toolbar{box-shadow:0 1px 4px rgba(0,0,0,.25);transition:border-bottom-right-radius 85ms;margin-top:env(safe-area-inset-top);--background:var(--fiv-toolbar-background)}ion-toolbar.small{border-bottom-right-radius:12px}.searchbarbar{float:right}"]
}] }
];
/** @nocollapse */
FivSearchbar.ctorParameters = () => [
{ type: Renderer2 }
];
FivSearchbar.propDecorators = {
title: [{ type: Input }],
placeholder: [{ type: Input }],
smallWidth: [{ type: Input }],
searchIcon: [{ type: Input }],
closeIcon: [{ type: Input }],
small: [{ type: Input }],
fivInputChange: [{ type: Output }],
fivClose: [{ type: Output }],
open: [{ type: Output }]
};
if (false) {
/** @type {?} */
FivSearchbar.prototype.searching;
/** @type {?} */
FivSearchbar.prototype.titleVisible;
/** @type {?} */
FivSearchbar.prototype.closeButtonVisible;
/** @type {?} */
FivSearchbar.prototype.title;
/** @type {?} */
FivSearchbar.prototype.placeholder;
/** @type {?} */
FivSearchbar.prototype.smallWidth;
/** @type {?} */
FivSearchbar.prototype.searchIcon;
/** @type {?} */
FivSearchbar.prototype.closeIcon;
/** @type {?} */
FivSearchbar.prototype._small;
/** @type {?} */
FivSearchbar.prototype.fivInputChange;
/** @type {?} */
FivSearchbar.prototype.fivClose;
/** @type {?} */
FivSearchbar.prototype.open;
/** @type {?} */
FivSearchbar.prototype.state;
/** @type {?} */
FivSearchbar.prototype.renderer;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BmaXZldGhyZWUvY29yZS8iLCJzb3VyY2VzIjpbImxpYi9zZWFyY2hiYXIvc2VhcmNoYmFyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsS0FBSyxFQUNMLFlBQVksRUFDWixNQUFNLEVBQ04sU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxPQUFPLEVBQ1AsVUFBVSxFQUNWLEtBQUssRUFDTCxPQUFPLEVBQ1AsS0FBSyxFQUNOLE1BQU0scUJBQXFCLENBQUM7QUEyQjdCLE1BQU0sT0FBTyxZQUFZOzs7O0lBNEJ2QixZQUFtQixRQUFtQjtRQUFuQixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBM0J0QyxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLGlCQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLHVCQUFrQixHQUFHLEtBQUssQ0FBQztRQUdsQixlQUFVLEdBQUcsR0FBRyxDQUFDO1FBQ2pCLGVBQVUsR0FBRyxRQUFRLENBQUM7UUFDdEIsY0FBUyxHQUFHLE9BQU8sQ0FBQztRQUU3QixXQUFNLEdBQUcsS0FBSyxDQUFDO1FBWUwsbUJBQWMsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUN2RCxhQUFRLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDakQsU0FBSSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBRXZELFVBQUssR0FBdUIsUUFBUSxDQUFDO0lBRUksQ0FBQzs7Ozs7SUFqQjFDLElBQWEsS0FBSyxDQUFDLENBQVU7UUFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ3JCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUNmO2FBQU0sSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQzVCLElBQUksQ0FB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RSxDQUFDLEVBQUU7NEJBQzlDLE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUU7eUJBQ3ZCLENBQUM7d0JBQ0YsS0FBSyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztxQkFDMUMsQ0FBQztvQkFDRixPQUFPLENBQUMsV0FBVyxFQUFFO3dCQUNuQixVQUFVLENBQUMsV0FBVyxFQUFFOzRCQUN0QixLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxrQkFBa0IsRUFBRSxDQUFDOzRCQUN0RCxPQUFPLENBQ0wsZ0JBQWdCLEVBQ2hCLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQ3BEO3lCQUNGLENBQUM7cUJBQ0gsQ0FBQztpQkFDSDs7YUFDRjs7OztZQWxDQyxTQUFTOzs7b0JBdUNSLEtBQUs7MEJBQ0wsS0FBSzt5QkFDTCxLQUFLO3lCQUNMLEtBQUs7d0JBQ0wsS0FBSztvQkFHTCxLQUFLOzZCQVdMLE1BQU07dUJBQ04sTUFBTTttQkFDTixNQUFNOzs7O0lBdkJQLGlDQUFrQjs7SUFDbEIsb0NBQW9COztJQUNwQiwwQ0FBMkI7O0lBQzNCLDZCQUF1Qjs7SUFDdkIsbUNBQTZCOztJQUM3QixrQ0FBMEI7O0lBQzFCLGtDQUErQjs7SUFDL0IsaUNBQTZCOztJQUU3Qiw4QkFBZTs7SUFZZixzQ0FBaUU7O0lBQ2pFLGdDQUEyRDs7SUFDM0QsNEJBQXVEOztJQUV2RCw2QkFBcUM7O0lBRXpCLGdDQUEwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgT25Jbml0LFxuICBJbnB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBPdXRwdXQsXG4gIFJlbmRlcmVyMlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIHRyaWdnZXIsXG4gIHRyYW5zaXRpb24sXG4gIHN0eWxlLFxuICBhbmltYXRlLFxuICBzdGF0ZVxufSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7IElvbklucHV0IH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmaXYtc2VhcmNoYmFyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NlYXJjaGJhci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NlYXJjaGJhci5jb21wb25lbnQuc2NzcyddLFxuICBhbmltYXRpb25zOiBbXG4gICAgdHJpZ2dlcignc2VhcmNoYmFyQW5pbScsIFtcbiAgICAgIHRyYW5zaXRpb24oJ3NtYWxsID0+IG5vcm1hbCcsIFthbmltYXRlKCcxMjVtcyBlYXNlLW91dCcpXSksXG4gICAgICB0cmFuc2l0aW9uKCdub3JtYWwgPT4gc21hbGwnLCBbYW5pbWF0ZSgnOTVtcyBlYXNlLWluJyldKSxcbiAgICAgIHN0YXRlKCdzbWFsbCcsIHN0eWxlKHsgd2lkdGg6ICd7e3dpZHRofX1weCcgfSksIHtcbiAgICAgICAgcGFyYW1zOiB7IHdpZHRoOiAxMjAgfVxuICAgICAgfSksXG4gICAgICBzdGF0ZSgnbm9ybWFsJywgc3R5bGUoeyB3aWR0aDogJzEwMCUnIH0pKVxuICAgIF0pLFxuICAgIHRyaWdnZXIoJ3RpdGxlQW5pbScsIFtcbiAgICAgIHRyYW5zaXRpb24oJ3ZvaWQgPT4gKicsIFtcbiAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAnMCcsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoLTIwJSknIH0pLFxuICAgICAgICBhbmltYXRlKFxuICAgICAgICAgICcxNzVtcyBlYXNlLW91dCcsXG4gICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAnMScsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoMCknIH0pXG4gICAgICAgIClcbiAgICAgIF0pXG4gICAgXSlcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBGaXZTZWFyY2hiYXIgaW1wbGVtZW50cyBPbkluaXQge1xuICBzZWFyY2hpbmcgPSBmYWxzZTtcbiAgdGl0bGVWaXNpYmxlID0gdHJ1ZTtcbiAgY2xvc2VCdXR0b25WaXNpYmxlID0gZmFsc2U7XG4gIEBJbnB1dCgpIHRpdGxlOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHNtYWxsV2lkdGggPSAxMjA7XG4gIEBJbnB1dCgpIHNlYXJjaEljb24gPSAnc2VhcmNoJztcbiAgQElucHV0KCkgY2xvc2VJY29uID0gJ2Nsb3NlJztcblxuICBfc21hbGwgPSBmYWxzZTtcbiAgQElucHV0KCkgc2V0IHNtYWxsKHM6IGJvb2xlYW4pIHtcbiAgICBpZiAocyAmJiAhdGhpcy5fc21hbGwpIHtcbiAgICAgIHRoaXMuc2hyaW5rKCk7XG4gICAgfSBlbHNlIGlmICghcyAmJiB0aGlzLl9zbWFsbCkge1xuICAgICAgdGhpcy5ncm93KCk7XG4gICAgfVxuICAgIHRoaXMuX3NtYWxsID0gcztcbiAgfVxuICBnZXQgc21hbGwoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NtYWxsO1xuICB9XG4gIEBPdXRwdXQoKSBmaXZJbnB1dENoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBmaXZDbG9zZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBvcGVuOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBzdGF0ZTogJ3NtYWxsJyB8ICdub3JtYWwnID0gJ25vcm1hbCc7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHJlbmRlcmVyOiBSZW5kZXJlcjIpIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5zdGF0ZSA9IHRoaXMuX3NtYWxsID8gJ3NtYWxsJyA6ICdub3JtYWwnO1xuICB9XG5cbiAgc2hyaW5rKCkge1xuICAgIHRoaXMuc3RhdGUgPSAnc21hbGwnO1xuICB9XG4gIGdyb3coKSB7XG4gICAgdGhpcy5zdGF0ZSA9ICdub3JtYWwnO1xuICB9XG5cbiAgb3BlblNlYXJjaGJhcigpIHtcbiAgICBpZiAodGhpcy5fc21hbGwpIHtcbiAgICAgIHRoaXMuc3RhdGUgPSAnbm9ybWFsJztcbiAgICB9XG4gICAgdGhpcy5fb3BlbigpO1xuICB9XG5cbiAgdG9nZ2xlU2VhcmNoYmFyKCkge1xuICAgIGlmICh0aGlzLnNlYXJjaGluZykge1xuICAgICAgdGhpcy5jbG9zZVNlYXJjaGJhcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9wZW5TZWFyY2hiYXIoKTtcbiAgICB9XG4gIH1cblxuICBzZWFyY2hCYXJTdGF0ZUNoYW5nZShldmVudCkge1xuICAgIGlmIChldmVudC5mcm9tU3RhdGUgPT09ICdub3JtYWwnICYmIGV2ZW50LnRvU3RhdGUgPT09ICdzbWFsbCcpIHtcbiAgICB9XG5cbiAgICBpZiAoZXZlbnQuZnJvbVN0YXRlID09PSAnc21hbGwnICYmIGV2ZW50LnRvU3RhdGUgPT09ICdub3JtYWwnKSB7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfb3BlbigpIHtcbiAgICB0aGlzLnNlYXJjaGluZyA9IHRydWU7XG4gICAgdGhpcy50aXRsZVZpc2libGUgPSBmYWxzZTtcbiAgICB0aGlzLm9wZW4uZW1pdCgpO1xuICB9XG5cbiAgY2xvc2VTZWFyY2hiYXIoKSB7XG4gICAgaWYgKHRoaXMuc21hbGwpIHtcbiAgICAgIHRoaXMuc3RhdGUgPSAnc21hbGwnO1xuICAgIH1cbiAgICB0aGlzLnNlYXJjaGluZyA9IGZhbHNlO1xuICAgIHRoaXMuZml2Q2xvc2UuZW1pdCgpO1xuICB9XG5cbiAgc2VhcmNoQW5pbURvbmUoZXZlbnQpIHtcbiAgICBpZiAoZXZlbnQuZnJvbVN0YXRlICE9PSAndm9pZCcpIHtcbiAgICAgIHRoaXMuY2xvc2VCdXR0b25WaXNpYmxlID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBjbG9zZUFuaW1Eb25lKGV2ZW50KSB7XG4gICAgaWYgKGV2ZW50LmZyb21TdGF0ZSAhPT0gJ3ZvaWQnKSB7XG4gICAgICB0aGlzLnNlYXJjaGluZyA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHNlYWNoYmFyQW5pbURvbmUoZXZlbnQsIGlucHV0OiBJb25JbnB1dCkge1xuICAgIGlmIChldmVudC5mcm9tU3RhdGUgIT09ICd2b2lkJykge1xuICAgICAgdGhpcy50aXRsZVZpc2libGUgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBpbnB1dC5zZXRGb2N1cygpO1xuICAgIH1cbiAgfVxufVxuIl19