diff --git a/ionic/components/searchbar/modes/ios.scss b/ionic/components/searchbar/modes/ios.scss index 441f79dca5..44703b3291 100644 --- a/ionic/components/searchbar/modes/ios.scss +++ b/ionic/components/searchbar/modes/ios.scss @@ -30,6 +30,21 @@ ion-searchbar { min-height: $searchbar-ios-min-height; } +.searchbar-search-icon { + width: $searchbar-ios-input-search-icon-size + 1; + height: $searchbar-ios-input-search-icon-size + 1; + + @include svg-background-image($searchbar-ios-input-search-icon-svg); + background-size: $searchbar-ios-input-search-icon-size; + background-repeat: no-repeat; + position: absolute; + left: 10px; + top: 9px; + + @include calc(margin-left, "50% - 60px"); + transition: $searchbar-ios-input-transition; +} + .searchbar-input { height: $searchbar-ios-input-height; padding: 0 28px; @@ -40,15 +55,9 @@ ion-searchbar { border-radius: 5px; color: $searchbar-ios-input-text-color; background-color: $searchbar-ios-input-background-color; + background-position: 8px center; - @include svg-background-image($searchbar-ios-input-search-icon-svg); - background-size: $searchbar-ios-input-search-icon-size; - background-repeat: no-repeat; - background-position: calc(50% - 40px); - - &::placeholder { - color: $searchbar-ios-input-placeholder-color; - } + @include placeholder($searchbar-ios-input-placeholder-color); @include calc(padding-left, "50% - 28px"); transition: $searchbar-ios-input-transition; @@ -114,6 +123,10 @@ ion-searchbar.left-align { } +.searchbar-cancel-icon { + display: none; +} + // Generate Default Search Bar Colors // -------------------------------------------------- diff --git a/ionic/components/searchbar/modes/md.scss b/ionic/components/searchbar/modes/md.scss index bd360c02be..ae431fc0e7 100644 --- a/ionic/components/searchbar/modes/md.scss +++ b/ionic/components/searchbar/modes/md.scss @@ -20,11 +20,6 @@ $searchbar-md-input-close-icon-color: #5B5B5B !default; $searchbar-md-input-close-icon-svg: "" !default; $searchbar-md-input-close-icon-size: 22px !default; -$searchbar-md-input-cancel-icon-color: #5B5B5B !default; -$searchbar-md-input-cancel-icon-svg: "" !default; -$searchbar-md-input-cancel-icon-size: 22px !default; - - ion-searchbar { padding: $searchbar-md-padding; background: $searchbar-md-background-color; @@ -34,6 +29,42 @@ ion-searchbar { padding: 3px; } +.searchbar-search-icon, +.searchbar-cancel-icon { + width: $searchbar-md-input-search-icon-size + 1; + height: $searchbar-md-input-search-icon-size + 1; + + background-size: $searchbar-md-input-search-icon-size; + background-repeat: no-repeat; + position: absolute; +} + +.searchbar-search-icon { + top: 11px; + left: 16px; + @include svg-background-image($searchbar-md-input-search-icon-svg); +} + +.searchbar-cancel-icon { + display: none; + height: 100%; + margin: 0; + top: 0; + left: 10px; +} + +.focused { + + .searchbar-search-icon { + display: none; + } + + .searchbar-cancel-icon { + display: inline-flex; + } + +} + .searchbar-input { padding: 6px 55px; @@ -46,15 +77,9 @@ ion-searchbar { border-radius: $searchbar-md-input-border-radius; color: $searchbar-md-input-text-color; background-color: $searchbar-md-input-background-color; + background-position: 8px center; - @include svg-background-image($searchbar-md-input-search-icon-svg); - background-size: $searchbar-md-input-search-icon-size; - background-repeat: no-repeat; - background-position: 16px center; - - &::placeholder { - color: $searchbar-md-input-placeholder-color; - } + @include placeholder($searchbar-md-input-placeholder-color); } .searchbar-close-icon { @@ -71,13 +96,6 @@ ion-searchbar { top: 0; } -.left-align .searchbar-input { - @include svg-background-image($searchbar-md-input-cancel-icon-svg); - background-size: $searchbar-md-input-cancel-icon-size; - background-repeat: no-repeat; - background-position: 16px center; -} - .searchbar-cancel { display: none; } diff --git a/ionic/components/searchbar/searchbar.ts b/ionic/components/searchbar/searchbar.ts index 820374e910..e33a304e5e 100644 --- a/ionic/components/searchbar/searchbar.ts +++ b/ionic/components/searchbar/searchbar.ts @@ -3,6 +3,7 @@ import {ElementRef, Pipe, NgControl, Renderer, FORM_DIRECTIVES, NgIf, NgClass} f import {Ion} from '../ion'; import {Config} from '../../config/config'; import {ConfigComponent} from '../../config/decorators'; +import {Icon} from '../icon/icon'; /** * @name Search Bar @@ -21,21 +22,25 @@ import {ConfigComponent} from '../../config/decorators'; 'cancelText': 'Cancel', 'placeholder': 'Search', 'cancelAction': function(event, query) { - // The cancel button now works on its own to blur the input console.log('Default Cancel'); + this.element = this.elementRef.nativeElement.querySelector('input'); + this.element.blur(); } }, host: { '[class.left-align]': 'shouldLeftAlign', + '[class.focused]': 'isFocused', } template: '
' + '', - directives: [FORM_DIRECTIVES, NgIf, NgClass] + directives: [FORM_DIRECTIVES, NgIf, NgClass, Icon] }) export class SearchBar extends Ion {