refactor(searchbar): moved search-bar files to searchbar

references #419
This commit is contained in:
Brandy Carney
2015-11-02 21:06:52 -05:00
parent 3d4aad8eaa
commit 0824c3daf3
21 changed files with 29 additions and 238 deletions

View File

@ -8,7 +8,7 @@ import {ListGroupPage} from './pages/list-group'
import {CardPage} from './pages/card'
import {FormPage} from './pages/form'
import {SegmentPage} from './pages/segment'
import {SearchBarPage} from './pages/search-bar'
import {SearchBarPage} from './pages/searchbar'
import {TableSearchPage} from './pages/table-search'
import {IconsPage} from './pages/ionicons'
import {TabsPage} from './pages/tabs'

View File

@ -31,7 +31,7 @@ export * from 'ionic/components/slides/slides'
export * from 'ionic/components/radio/radio'
export * from 'ionic/components/scroll/scroll'
export * from 'ionic/components/scroll/pull-to-refresh'
export * from 'ionic/components/search-bar/search-bar'
export * from 'ionic/components/searchbar/searchbar'
export * from 'ionic/components/segment/segment'
export * from 'ionic/components/switch/switch'
export * from 'ionic/components/tabs/tabs'

View File

@ -1,120 +0,0 @@
// iOS Search Bar
// --------------------------------------------------
$search-bar-ios-padding: 0 8px !default;
$search-bar-ios-background-color: rgba(0, 0, 0, 0.2) !default;
$search-bar-ios-border-color: rgba(0, 0, 0, 0.05) !default;
$search-bar-ios-min-height: 44px !default;
$search-bar-ios-input-search-icon-color: #767676 !default;
$search-bar-ios-input-search-icon-svg: "<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 13 13'><path fill='" + $search-bar-ios-input-search-icon-color + "' d='M5,1c2.2,0,4,1.8,4,4S7.2,9,5,9S1,7.2,1,5S2.8,1,5,1 M5,0C2.2,0,0,2.2,0,5s2.2,5,5,5s5-2.2,5-5S7.8,0,5,0 L5,0z'/><line stroke='" + $search-bar-ios-input-search-icon-color + "' stroke-miterlimit='10' x1='12.6' y1='12.6' x2='8.2' y2='8.2'/></svg>" !default;
$search-bar-ios-input-search-icon-size: 13px !default;
$search-bar-ios-input-height: 28px !default;
$search-bar-ios-input-placeholder-color: #9D9D9D !default;
$search-bar-ios-input-text-color: #000 !default;
$search-bar-ios-input-background-color: #FFFFFF !default;
$search-bar-ios-input-transition: all 400ms cubic-bezier(.25, .45, .05, 1) !default;
$search-bar-ios-cancel-transition: all 400ms cubic-bezier(.25, .45, .05, 1) !default;
$search-bar-ios-input-close-icon-color: #8F8E94 !default;
$search-bar-ios-input-close-icon-svg: "<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'><path fill='" + $search-bar-ios-input-close-icon-color + "' d='M403.1,108.9c-81.2-81.2-212.9-81.2-294.2,0s-81.2,212.9,0,294.2c81.2,81.2,212.9,81.2,294.2,0S484.3,190.1,403.1,108.9z M352,340.2L340.2,352l-84.4-84.2l-84,83.8L160,339.8l84-83.8l-84-83.8l11.8-11.8l84,83.8l84.4-84.2l11.8,11.8L267.6,256L352,340.2z'/></svg>" !default;
$search-bar-ios-input-close-icon-size: 18px !default;
ion-search-bar {
padding: $search-bar-ios-padding;
background: $search-bar-ios-background-color;
border-bottom: 1px solid $search-bar-ios-border-color;
min-height: $search-bar-ios-min-height;
}
.search-bar-input {
height: $search-bar-ios-input-height;
padding: 0 28px;
font-size: 1.4rem;
font-weight: 400;
border-radius: 5px;
color: $search-bar-ios-input-text-color;
background-color: $search-bar-ios-input-background-color;
@include svg-background-image($search-bar-ios-input-search-icon-svg);
background-size: $search-bar-ios-input-search-icon-size;
background-repeat: no-repeat;
background-position: calc(50% - 40px);
&::placeholder {
color: $search-bar-ios-input-placeholder-color;
}
@include calc(padding-left, "50% - 28px");
transition: $search-bar-ios-input-transition;
}
.search-bar-close-icon {
width: 30px;
height: 100%;
@include svg-background-image($search-bar-ios-input-close-icon-svg);
background-size: $search-bar-ios-input-close-icon-size;
background-repeat: no-repeat;
background-position: center;
position: absolute;
right: 0;
top: 0;
}
.search-bar-cancel {
@extend button[clear];
transition: $search-bar-ios-cancel-transition;
min-height: 30px;
padding-left: 8px;
padding-right: 0;
margin-left: 0;
margin-right: -100%;
}
.search-bar-input-container.left-align {
.search-bar-search-icon {
margin-left: 0;
}
.search-bar-input {
padding-left: 28px;
background-position: 8px;
}
}
&.hairlines ion-search-bar {
border-bottom-width: 0.55px;
}
ion-toolbar {
ion-search-bar {
background: transparent;
border-bottom-width: 0;
.search-bar-input {
background-color: #E5E5E5;
}
}
}
// Generate Default Search Bar Colors
// --------------------------------------------------
@each $color, $value in $colors {
ion-search-bar[#{$color}] {
//background-color: $value;
.search-bar-cancel {
color: $value;
}
}
}

View File

@ -1,69 +0,0 @@
// Material Design Search Bar
// --------------------------------------------------
$search-bar-md-padding: 8px !default;
$search-bar-md-background-color: inherit !default;
$search-bar-md-input-search-icon-color: #5B5B5B !default;
$search-bar-md-input-search-icon-svg: "<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'><path fill='" + $search-bar-md-input-search-icon-color + "' d='M337.509,305.372h-17.501l-6.571-5.486c20.791-25.232,33.922-57.054,33.922-93.257C347.358,127.632,283.896,64,205.135,64C127.452,64,64,127.632,64,206.629s63.452,142.628,142.225,142.628c35.011,0,67.831-13.167,92.991-34.008l6.561,5.487v17.551L415.18,448L448,415.086L337.509,305.372z M206.225,305.372c-54.702,0-98.463-43.887-98.463-98.743c0-54.858,43.761-98.742,98.463-98.742c54.7,0,98.462,43.884,98.462,98.742C304.687,261.485,260.925,305.372,206.225,305.372z'/></svg>" !default;
$search-bar-md-input-search-icon-size: 20px !default;
$search-bar-md-input-height: 28px !default;
$search-bar-md-input-box-shadow: 0 2px 2px 0 rgba(0,0,0,.14), 0 3px 1px -2px rgba(0,0,0,.2), 0 1px 5px 0 rgba(0,0,0,.12) !default;
$search-bar-md-input-placeholder-color: #AEAEAE !default;
$search-bar-md-input-text-color: #141414 !default;
$search-bar-md-input-background-color: #FFFFFF !default;
$search-bar-md-input-border-radius: 2px !default;
$search-bar-md-input-close-icon-color: #5B5B5B !default;
$search-bar-md-input-close-icon-svg: "<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'><polygon fill='" + $search-bar-md-input-close-icon-color + "' points='405,136.798 375.202,107 256,226.202 136.798,107 107,136.798 226.202,256 107,375.202 136.798,405 256,285.798 375.202,405 405,375.202 285.798,256'/></svg>" !default;
$search-bar-md-input-close-icon-size: 22px !default;
ion-search-bar {
padding: $search-bar-md-padding;
background: $search-bar-md-background-color;
}
.search-bar-input {
padding: 8px 55px;
height: $search-bar-md-input-height;
box-shadow: $search-bar-md-input-box-shadow;
font-size: 1.6rem;
font-weight: 400;
border-radius: $search-bar-md-input-border-radius;
color: $search-bar-md-input-text-color;
background-color: $search-bar-md-input-background-color;
@include svg-background-image($search-bar-md-input-search-icon-svg);
background-size: $search-bar-md-input-search-icon-size;
background-repeat: no-repeat;
background-position: 16px center;
&::placeholder {
color: $search-bar-md-input-placeholder-color;
}
}
.search-bar-close-icon {
width: $search-bar-md-input-close-icon-size;
height: 100%;
padding: 0;
@include svg-background-image($search-bar-md-input-close-icon-svg);
background-size: $search-bar-md-input-close-icon-size;
background-repeat: no-repeat;
background-position: center;
position: absolute;
right: 13px;
top: 0;
}
.search-bar-cancel {
display: none;
}

View File

@ -1,20 +0,0 @@
<ion-content>
<h5 padding-left padding-top> Search - Default </h5>
<ion-search-bar [(ng-model)]="defaultSearch" class="e2eDefaultFloatingSearchBar"></ion-search-bar>
<h5 padding-left> Search - Custom Placeholder </h5>
<ion-search-bar [(ng-model)]="customPlaceholder" placeholder="Filter Schedules" class="e2eCustomPlaceholderFloatingSearchBar"></ion-search-bar>
<h5 padding-left> Search - Default Cancel Button </h5>
<ion-search-bar [(ng-model)]="defaultCancel" show-cancel="true" class="e2eDefaultCancelButtonFloatingSearchBar"></ion-search-bar>
<h5 padding-left> Search - Custom Cancel Button Danger </h5>
<ion-search-bar [(ng-model)]="customCancel" show-cancel="true" cancel-text="Really Long Cancel" class="e2eCustomCancelButtonFloatingSearchBar" danger></ion-search-bar>
<h5 padding-left> Search - Custom Cancel Action</h5>
<ion-search-bar [(ng-model)]="customCancelAction" show-cancel="true" cancel-text="Done" [cancel-action]="myCancelAction" class="e2eCustomCancelActionFloatingSearchBar"></ion-search-bar>
<div *ng-if="clickedCustomAction">
Clicked custom action with input = {{customCancelAction}}
</div>
</ion-content>

View File

@ -3,26 +3,26 @@
// --------------------------------------------------
ion-search-bar {
ion-searchbar {
position: relative;
display: flex;
align-items: center;
width: 100%;
}
.search-bar-icon {
.searchbar-icon {
// Don't let them tap on the icon
pointer-events: none;
}
.search-bar-input-container {
.searchbar-input-container {
position: relative;
display: block;
flex-shrink: 1;
width: 100%;
}
input[type="search"].search-bar-input {
input[type="search"].searchbar-input {
display: block;
width: 100%;
height: 100%;
@ -32,7 +32,7 @@ input[type="search"].search-bar-input {
@include appearance(none);
}
.search-bar-close-icon {
.searchbar-close-icon {
min-height: 0;
padding: 0;
margin: 0;

View File

@ -11,11 +11,11 @@ import {ConfigComponent} from '../../config/decorators';
*
* @usage
* ```html
* <ion-search-bar ng-control="searchQuery"></ion-search-bar>
* <ion-searchbar ng-control="searchQuery"></ion-searchbar>
* ```
*/
@ConfigComponent({
selector: 'ion-search-bar',
selector: 'ion-searchbar',
defaultInputs: {
'showCancel': false,
'cancelText': 'Cancel',
@ -26,12 +26,12 @@ import {ConfigComponent} from '../../config/decorators';
}
},
template:
'<div class="search-bar-input-container" [class.left-align]="shouldLeftAlign">' +
'<div class="searchbar-input-container" [class.left-align]="shouldLeftAlign">' +
'<input [(value)]="query" (focus)="inputFocused()" (blur)="inputBlurred()" ' +
'(input)="inputChanged($event)" class="search-bar-input" type="search" [attr.placeholder]="placeholder">' +
'<button clear *ng-if="query" class="search-bar-close-icon" (click)="clearInput($event)"></button>' +
'(input)="inputChanged($event)" class="searchbar-input" type="search" [attr.placeholder]="placeholder">' +
'<button clear *ng-if="query" class="searchbar-close-icon" (click)="clearInput($event)"></button>' +
'</div>' +
'<button *ng-if="showCancel" (click)="cancelAction($event, query)" class="search-bar-cancel" [class.left-align]="shouldLeftAlign">{{cancelText}}</button>',
'<button *ng-if="showCancel" (click)="cancelAction($event, query)" class="searchbar-cancel" [class.left-align]="shouldLeftAlign">{{cancelText}}</button>',
directives: [FORM_DIRECTIVES, NgIf, NgClass]
})
@ -62,7 +62,7 @@ export class SearchBar extends Ion {
// Add the margin for iOS
afterViewInit() {
this.cancelButton = this.elementRef.nativeElement.querySelector('.search-bar-cancel');
this.cancelButton = this.elementRef.nativeElement.querySelector('.searchbar-cancel');
if (this.cancelButton) {
this.cancelWidth = this.cancelButton.offsetWidth;

View File

@ -1,7 +1,7 @@
import {NgControl, FORM_DIRECTIVES, FormBuilder, Validators, Control, ControlGroup} from 'angular2/angular2';
import {App} from 'ionic/ionic';
import {SearchPipe} from 'ionic/components/search-bar/search-bar';
import {SearchPipe} from 'ionic/components/searchbar/searchbar';
function randomTitle() {

View File

@ -4,7 +4,7 @@
<ion-content>
<!-- <form [ng-form-model]="form"> -->
<ion-search-bar [(ng-model)]="searchQuery"></ion-search-bar>
<ion-searchbar [(ng-model)]="searchQuery"></ion-searchbar>
<ion-list inset #list>
<ion-item-sliding *ng-for="#item of getItems()" (click)="doThis">
{{item.title}}

View File

@ -21,5 +21,5 @@ it('custom cancel action should focus', function() {
// TODO - this test will work on iOS but fail on Android
// it('custom cancel action should alert', function() {
// element(by.css('.e2eCustomCancelActionFloatingSearchBar .search-bar-cancel')).click();
// element(by.css('.e2eCustomCancelActionFloatingSearchBar .searchbar-cancel')).click();
// });

View File

@ -1,7 +1,7 @@
import {FORM_DIRECTIVES, FormBuilder, Validators, Control, ControlGroup} from 'angular2/angular2';
import {App} from 'ionic/ionic';
import {SearchPipe} from 'ionic/components/search-bar/search-bar';
import {SearchPipe} from 'ionic/components/searchbar/searchbar';
@App({
templateUrl: 'main.html',

View File

@ -1,7 +1,7 @@
import {NgControl, FORM_DIRECTIVES, FormBuilder, Validators, Control, ControlGroup} from 'angular2/angular2';
import {App} from 'ionic/ionic';
import {SearchPipe} from 'ionic/components/search-bar/search-bar';
import {SearchPipe} from 'ionic/components/searchbar/searchbar';
function randomTitle() {

View File

@ -4,7 +4,7 @@
<ion-content>
<!-- <form [ng-form-model]="form"> -->
<ion-search-bar [(ng-model)]="searchQuery"></ion-search-bar>
<ion-searchbar [(ng-model)]="searchQuery"></ion-searchbar>
<ion-list inset #list>
<ion-item *ng-for="#item of getItems()">
{{item.title}}

View File

@ -1,7 +1,7 @@
import {App, NavController} from 'ionic/ionic';
import {Page, Config, IonicApp} from 'ionic/ionic';
import {NavParams, NavController, ViewController} from 'ionic/ionic';
import {SearchPipe} from 'ionic/components/search-bar/search-bar';
import {SearchPipe} from 'ionic/components/searchbar/searchbar';
@App({
templateUrl: 'main.html'

View File

@ -5,17 +5,17 @@
<ion-content>
<h5 padding-left padding-top> Search - Default Toolbar </h5>
<ion-toolbar>
<ion-search-bar [(ng-model)]="toolbarSearch" show-cancel="true"></ion-search-bar>
<ion-searchbar [(ng-model)]="toolbarSearch" show-cancel="true"></ion-searchbar>
</ion-toolbar>
<h5 padding-left padding-top> Search - Primary Toolbar </h5>
<ion-toolbar primary>
<ion-search-bar [(ng-model)]="toolbarSearch" show-cancel="true"></ion-search-bar>
<ion-searchbar [(ng-model)]="toolbarSearch" show-cancel="true"></ion-searchbar>
</ion-toolbar>
<h5 padding-left padding-top> Search - Danger Toolbar </h5>
<ion-toolbar danger>
<ion-search-bar [(ng-model)]="toolbarSearch" show-cancel="true"></ion-search-bar>
<ion-searchbar [(ng-model)]="toolbarSearch" show-cancel="true"></ion-searchbar>
</ion-toolbar>
</ion-content>

View File

@ -24,7 +24,7 @@ import {TextInput, TextInputElement} from '../components/text-input/text-input';
import {Label} from '../components/text-input/label';
import {Segment, SegmentButton, SegmentControlValueAccessor} from '../components/segment/segment';
import {RadioGroup, RadioButton} from '../components/radio/radio';
import {SearchBar} from '../components/search-bar/search-bar';
import {SearchBar} from '../components/searchbar/searchbar';
import {Nav} from '../components/nav/nav';
import {NavPush, NavPop} from '../components/nav/nav-push';
import {NavRouter} from '../components/nav/nav-router';

View File

@ -42,7 +42,7 @@
"components/scroll/scroll",
"components/scroll/pull-to-refresh",
"components/scroll/scroll",
"components/search-bar/search-bar",
"components/searchbar/searchbar",
"components/segment/segment",
"components/switch/switch",
"components/tabs/tabs";

View File

@ -17,7 +17,7 @@
"components/popup/modes/ios",
"components/checkbox/modes/ios",
"components/radio/modes/ios",
"components/search-bar/modes/ios",
"components/searchbar/modes/ios",
"components/segment/modes/ios",
"components/switch/modes/ios",
"components/tabs/modes/ios";

View File

@ -16,7 +16,7 @@
"components/navbar/modes/md",
"components/popup/modes/md",
"components/radio/modes/md",
"components/search-bar/modes/md",
"components/searchbar/modes/md",
"components/segment/modes/md",
"components/switch/modes/md",
"components/tabs/modes/md",

View File

@ -9,7 +9,7 @@ exports.config = {
//domain: 'localhost:8080',
specs: 'dist/e2e/**/*e2e.js',
//specs: 'dist/e2e/search-bar/**/*e2e.js',
//specs: 'dist/e2e/searchbar/**/*e2e.js',
sleepBetweenSpecs: 300,