UNPKG

@fivethree/core

Version:
212 lines 15.5 kB
/** * @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