@fivethree/core
Version:
Fivethree Core Components
254 lines • 17 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';
var FivSearchbar = /** @class */ (function () {
function FivSearchbar(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';
}
Object.defineProperty(FivSearchbar.prototype, "small", {
get: /**
* @return {?}
*/
function () {
return this._small;
},
set: /**
* @param {?} s
* @return {?}
*/
function (s) {
if (s && !this._small) {
this.shrink();
}
else if (!s && this._small) {
this.grow();
}
this._small = s;
},
enumerable: true,
configurable: true
});
/**
* @return {?}
*/
FivSearchbar.prototype.ngOnInit = /**
* @return {?}
*/
function () {
this.state = this._small ? 'small' : 'normal';
};
/**
* @return {?}
*/
FivSearchbar.prototype.shrink = /**
* @return {?}
*/
function () {
this.state = 'small';
};
/**
* @return {?}
*/
FivSearchbar.prototype.grow = /**
* @return {?}
*/
function () {
this.state = 'normal';
};
/**
* @return {?}
*/
FivSearchbar.prototype.openSearchbar = /**
* @return {?}
*/
function () {
if (this._small) {
this.state = 'normal';
}
this._open();
};
/**
* @return {?}
*/
FivSearchbar.prototype.toggleSearchbar = /**
* @return {?}
*/
function () {
if (this.searching) {
this.closeSearchbar();
}
else {
this.openSearchbar();
}
};
/**
* @param {?} event
* @return {?}
*/
FivSearchbar.prototype.searchBarStateChange = /**
* @param {?} event
* @return {?}
*/
function (event) {
if (event.fromState === 'normal' && event.toState === 'small') {
}
if (event.fromState === 'small' && event.toState === 'normal') {
}
};
/**
* @private
* @return {?}
*/
FivSearchbar.prototype._open = /**
* @private
* @return {?}
*/
function () {
this.searching = true;
this.titleVisible = false;
this.open.emit();
};
/**
* @return {?}
*/
FivSearchbar.prototype.closeSearchbar = /**
* @return {?}
*/
function () {
if (this.small) {
this.state = 'small';
}
this.searching = false;
this.fivClose.emit();
};
/**
* @param {?} event
* @return {?}
*/
FivSearchbar.prototype.searchAnimDone = /**
* @param {?} event
* @return {?}
*/
function (event) {
if (event.fromState !== 'void') {
this.closeButtonVisible = true;
}
};
/**
* @param {?} event
* @return {?}
*/
FivSearchbar.prototype.closeAnimDone = /**
* @param {?} event
* @return {?}
*/
function (event) {
if (event.fromState !== 'void') {
this.searching = false;
}
};
/**
* @param {?} event
* @param {?} input
* @return {?}
*/
FivSearchbar.prototype.seachbarAnimDone = /**
* @param {?} event
* @param {?} input
* @return {?}
*/
function (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 = function () { return [
{ 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 }]
};
return FivSearchbar;
}());
export { FivSearchbar };
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BmaXZldGhyZWUvY29yZS8iLCJzb3VyY2VzIjpbImxpYi9zZWFyY2hiYXIvc2VhcmNoYmFyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsS0FBSyxFQUNMLFlBQVksRUFDWixNQUFNLEVBQ04sU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxPQUFPLEVBQ1AsVUFBVSxFQUNWLEtBQUssRUFDTCxPQUFPLEVBQ1AsS0FBSyxFQUNOLE1BQU0scUJBQXFCLENBQUM7QUFHN0I7SUFvREUsc0JBQW1CLFFBQW1CO1FBQW5CLGFBQVEsR0FBUixRQUFRLENBQVc7UUEzQnRDLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsaUJBQVksR0FBRyxJQUFJLENBQUM7UUFDcEIsdUJBQWtCLEdBQUcsS0FBSyxDQUFDO1FBR2xCLGVBQVUsR0FBRyxHQUFHLENBQUM7UUFDakIsZUFBVSxHQUFHLFFBQVEsQ0FBQztRQUN0QixjQUFTLEdBQUcsT0FBTyxDQUFDO1FBRTdCLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFZTCxtQkFBYyxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3ZELGFBQVEsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNqRCxTQUFJLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFdkQsVUFBSyxHQUF1QixRQUFRLENBQUM7SUFFSSxDQUFDO0lBakIxQyxzQkFBYSwrQkFBSzs7OztRQVFsQjtZQUNFLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUNyQixDQUFDOzs7OztRQVZELFVBQW1CLENBQVU7WUFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO2dCQUNyQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7YUFDZjtpQkFBTSxJQUFJLENBQUMsQ0FB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cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIE91dHB1dCxcbiAgUmVuZGVyZXIyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgdHJpZ2dlcixcbiAgdHJhbnNpdGlvbixcbiAgc3R5bGUsXG4gIGFuaW1hdGUsXG4gIHN0YXRlXG59IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgSW9uSW5wdXQgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Zpdi1zZWFyY2hiYXInLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VhcmNoYmFyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2VhcmNoYmFyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGFuaW1hdGlvbnM6IFtcbiAgICB0cmlnZ2VyKCdzZWFyY2hiYXJBbmltJywgW1xuICAgICAgdHJhbnNpdGlvbignc21hbGwgPT4gbm9ybWFsJywgW2FuaW1hdGUoJzEyNW1zIGVhc2Utb3V0JyldKSxcbiAgICAgIHRyYW5zaXRpb24oJ25vcm1hbCA9PiBzbWFsbCcsIFthbmltYXRlKCc5NW1zIGVhc2UtaW4nKV0pLFxuICAgICAgc3RhdGUoJ3NtYWxsJywgc3R5bGUoeyB3aWR0aDogJ3t7d2lkdGh9fXB4JyB9KSwge1xuICAgICAgICBwYXJhbXM6IHsgd2lkdGg6IDEyMCB9XG4gICAgICB9KSxcbiAgICAgIHN0YXRlKCdub3JtYWwnLCBzdHlsZSh7IHdpZHRoOiAnMTAwJScgfSkpXG4gICAgXSksXG4gICAgdHJpZ2dlcigndGl0bGVBbmltJywgW1xuICAgICAgdHJhbnNpdGlvbigndm9pZCA9PiAqJywgW1xuICAgICAgICBzdHlsZSh7IG9wYWNpdHk6ICcwJywgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgtMjAlKScgfSksXG4gICAgICAgIGFuaW1hdGUoXG4gICAgICAgICAgJzE3NW1zIGVhc2Utb3V0JyxcbiAgICAgICAgICBzdHlsZSh7IG9wYWNpdHk6ICcxJywgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgwKScgfSlcbiAgICAgICAgKVxuICAgICAgXSlcbiAgICBdKVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEZpdlNlYXJjaGJhciBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHNlYXJjaGluZyA9IGZhbHNlO1xuICB0aXRsZVZpc2libGUgPSB0cnVlO1xuICBjbG9zZUJ1dHRvblZpc2libGUgPSBmYWxzZTtcbiAgQElucHV0KCkgdGl0bGU6IHN0cmluZztcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZztcbiAgQElucHV0KCkgc21hbGxXaWR0aCA9IDEyMDtcbiAgQElucHV0KCkgc2VhcmNoSWNvbiA9ICdzZWFyY2gnO1xuICBASW5wdXQoKSBjbG9zZUljb24gPSAnY2xvc2UnO1xuXG4gIF9zbWFsbCA9IGZhbHNlO1xuICBASW5wdXQoKSBzZXQgc21hbGwoczogYm9vbGVhbikge1xuICAgIGlmIChzICYmICF0aGlzLl9zbWFsbCkge1xuICAgICAgdGhpcy5zaHJpbmsoKTtcbiAgICB9IGVsc2UgaWYgKCFzICYmIHRoaXMuX3NtYWxsKSB7XG4gICAgICB0aGlzLmdyb3coKTtcbiAgICB9XG4gICAgdGhpcy5fc21hbGwgPSBzO1xuICB9XG4gIGdldCBzbWFsbCgpIHtcbiAgICByZXR1cm4gdGhpcy5fc21hbGw7XG4gIH1cbiAgQE91dHB1dCgpIGZpdklucHV0Q2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGZpdkNsb3NlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIG9wZW46IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHN0YXRlOiAnc21hbGwnIHwgJ25vcm1hbCcgPSAnbm9ybWFsJztcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVuZGVyZXI6IFJlbmRlcmVyMikge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnN0YXRlID0gdGhpcy5fc21hbGwgPyAnc21hbGwnIDogJ25vcm1hbCc7XG4gIH1cblxuICBzaHJpbmsoKSB7XG4gICAgdGhpcy5zdGF0ZSA9ICdzbWFsbCc7XG4gIH1cbiAgZ3JvdygpIHtcbiAgICB0aGlzLnN0YXRlID0gJ25vcm1hbCc7XG4gIH1cblxuICBvcGVuU2VhcmNoYmFyKCkge1xuICAgIGlmICh0aGlzLl9zbWFsbCkge1xuICAgICAgdGhpcy5zdGF0ZSA9ICdub3JtYWwnO1xuICAgIH1cbiAgICB0aGlzLl9vcGVuKCk7XG4gIH1cblxuICB0b2dnbGVTZWFyY2hiYXIoKSB7XG4gICAgaWYgKHRoaXMuc2VhcmNoaW5nKSB7XG4gICAgICB0aGlzLmNsb3NlU2VhcmNoYmFyKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub3BlblNlYXJjaGJhcigpO1xuICAgIH1cbiAgfVxuXG4gIHNlYXJjaEJhclN0YXRlQ2hhbmdlKGV2ZW50KSB7XG4gICAgaWYgKGV2ZW50LmZyb21TdGF0ZSA9PT0gJ25vcm1hbCcgJiYgZXZlbnQudG9TdGF0ZSA9PT0gJ3NtYWxsJykge1xuICAgIH1cblxuICAgIGlmIChldmVudC5mcm9tU3RhdGUgPT09ICdzbWFsbCcgJiYgZXZlbnQudG9TdGF0ZSA9PT0gJ25vcm1hbCcpIHtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9vcGVuKCkge1xuICAgIHRoaXMuc2VhcmNoaW5nID0gdHJ1ZTtcbiAgICB0aGlzLnRpdGxlVmlzaWJsZSA9IGZhbHNlO1xuICAgIHRoaXMub3Blbi5lbWl0KCk7XG4gIH1cblxuICBjbG9zZVNlYXJjaGJhcigpIHtcbiAgICBpZiAodGhpcy5zbWFsbCkge1xuICAgICAgdGhpcy5zdGF0ZSA9ICdzbWFsbCc7XG4gICAgfVxuICAgIHRoaXMuc2VhcmNoaW5nID0gZmFsc2U7XG4gICAgdGhpcy5maXZDbG9zZS5lbWl0KCk7XG4gIH1cblxuICBzZWFyY2hBbmltRG9uZShldmVudCkge1xuICAgIGlmIChldmVudC5mcm9tU3RhdGUgIT09ICd2b2lkJykge1xuICAgICAgdGhpcy5jbG9zZUJ1dHRvblZpc2libGUgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGNsb3NlQW5pbURvbmUoZXZlbnQpIHtcbiAgICBpZiAoZXZlbnQuZnJvbVN0YXRlICE9PSAndm9pZCcpIHtcbiAgICAgIHRoaXMuc2VhcmNoaW5nID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgc2VhY2hiYXJBbmltRG9uZShldmVudCwgaW5wdXQ6IElvbklucHV0KSB7XG4gICAgaWYgKGV2ZW50LmZyb21TdGF0ZSAhPT0gJ3ZvaWQnKSB7XG4gICAgICB0aGlzLnRpdGxlVmlzaWJsZSA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlucHV0LnNldEZvY3VzKCk7XG4gICAgfVxuICB9XG59XG4iXX0=