-
Notifications
You must be signed in to change notification settings - Fork 104
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #44 from humrochagf/master
Changing flags to match intl-tel-input
- Loading branch information
Showing
15 changed files
with
2,198 additions
and
962 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
Large diffs are not rendered by default.
Oops, something went wrong.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,214 @@ | ||
.country-select { | ||
// need position on the container so the selected flag can be | ||
// absolutely positioned over the input | ||
position: relative; | ||
// keep the input's default inline properties | ||
display: inline-block; | ||
|
||
// paul irish says this is ok | ||
// http://www.paulirish.com/2012/box-sizing-border-box-ftw/ | ||
* { | ||
-moz-box-sizing: border-box; | ||
-webkit-box-sizing: border-box; | ||
box-sizing: border-box; | ||
} | ||
|
||
.hide { | ||
display: none; | ||
} | ||
|
||
// need this during init, to get the height of the dropdown | ||
.v-hide { | ||
visibility: hidden; | ||
} | ||
|
||
// specify types to increase specificity e.g. to override bootstrap v2.3 | ||
input, input[type=text] { | ||
position: relative; | ||
|
||
// input is bottom level, below selected flag and dropdown | ||
z-index: 0; | ||
|
||
// any vertical margin the user has on their inputs would no longer work as expected | ||
// because we wrap everything in a container div. i justify the use of !important | ||
// here because i don't think the user should ever have vertical margin here - when | ||
// the input is wrapped in a container, vertical margin messes up alignment with other | ||
// inline elements (e.g. an adjacent button) in firefox, and probably other browsers. | ||
margin-top: 0 !important; | ||
margin-bottom: 0 !important; | ||
|
||
// make space for the selected flag | ||
// Note: no !important here, as the user may want to tweak this so that the | ||
// perceived input padding matches their existing styles | ||
padding-right: $selected-flag-width; | ||
|
||
// any margin-right here will push the selected-flag away | ||
margin-right: 0; | ||
} | ||
|
||
.flag-dropdown { | ||
// positioned over the top of the input | ||
position: absolute; | ||
|
||
// full height | ||
top: 0; | ||
bottom: 0; | ||
right: 0; | ||
|
||
// prevent the highlighted child from overlapping the input border | ||
padding: $border-width; | ||
} | ||
|
||
.selected-flag { | ||
// render above the input | ||
z-index: 1; | ||
position: relative; | ||
width: $selected-flag-width; | ||
|
||
// this must be full-height both for the hover highlight, and to push down the | ||
// dropdown so it appears below the input | ||
height: 100%; | ||
padding: 0 0 0 $flag-padding; | ||
|
||
// vertically center the flag | ||
.flag { | ||
position: absolute; | ||
top: 0; | ||
bottom: 0; | ||
margin: auto; | ||
} | ||
|
||
.arrow { | ||
position: absolute; | ||
// split the difference between the flag and the arrow height to verically center | ||
top: 50%; | ||
margin-top: -1 * ($arrow-height / 2); | ||
right: $arrow-padding; | ||
|
||
// css triangle | ||
width: 0; | ||
height: 0; | ||
border-left: $triangle-border solid transparent; | ||
border-right: $triangle-border solid transparent; | ||
border-top: $arrow-height solid $arrow-color; | ||
|
||
&.up { | ||
border-top: none; | ||
border-bottom: $arrow-height solid $arrow-color; | ||
} | ||
} | ||
} | ||
|
||
// the dropdown | ||
.country-list { | ||
position: absolute; | ||
// popup so render above everything else | ||
z-index: 2; | ||
|
||
// override default list styles | ||
list-style: none; | ||
// in case any container has text-align:center | ||
text-align: left; | ||
|
||
// dropdown flags need consistent width, so wrap in a container | ||
.flag { | ||
display: inline-block; | ||
width: $flag-width; | ||
} | ||
|
||
padding: 0; | ||
// margin-left to compensate for the padding on the parent | ||
margin: 0 0 0 (-$border-width); | ||
|
||
box-shadow: 1px 1px 4px rgba(0,0,0,0.2); | ||
background-color: white; | ||
border: $border-width solid $grey-border; | ||
|
||
// don't let the contents wrap AKA the container will be as wide as the contents | ||
white-space: nowrap; | ||
// except on small screens, where we force the dropdown width to match the input | ||
@media (max-width: 500px) { | ||
white-space: normal; | ||
} | ||
|
||
max-height: 200px; | ||
overflow-y: scroll; | ||
|
||
// the divider below the preferred countries | ||
.divider { | ||
padding-bottom: 5px; | ||
margin-bottom: 5px; | ||
border-bottom: $border-width solid $grey-border; | ||
} | ||
|
||
// each country item in dropdown (we must have separate class to differentiate from dividers) | ||
.country { | ||
// Note: decided not to use line-height here for alignment because it causes issues e.g. large font-sizes will overlap, and also looks bad if one country overflows onto 2 lines | ||
padding: 5px 10px; | ||
} | ||
|
||
.country.highlight { | ||
background-color: $hover-color; | ||
} | ||
|
||
.flag, .country-name { | ||
vertical-align: middle; | ||
} | ||
|
||
// spacing between country flag and name | ||
.flag { | ||
margin-right: 6px; | ||
} | ||
} | ||
|
||
&.inside { | ||
input, input[type=text] { | ||
padding-right: $input-padding; | ||
padding-left: $selected-flag-arrow-width + $input-padding; | ||
margin-left: 0; | ||
} | ||
|
||
.flag-dropdown { | ||
right: auto; | ||
left: 0; | ||
} | ||
|
||
.selected-flag { | ||
width: $selected-flag-arrow-width; | ||
} | ||
} | ||
|
||
&.inside { | ||
// hover state - show flag is clickable | ||
.flag-dropdown:hover { | ||
cursor: pointer; | ||
|
||
.selected-flag { | ||
background-color: $hover-color; | ||
} | ||
} | ||
// disable hover state when input is disabled | ||
input[disabled] + .flag-dropdown:hover, input[readonly] + .flag-dropdown:hover { | ||
cursor: default; | ||
|
||
.selected-flag { | ||
background-color: transparent; | ||
} | ||
} | ||
} | ||
|
||
.flag { | ||
width: $flag-width; | ||
height: $flag-height; | ||
box-shadow: 0px 0px 1px 0px #888; | ||
background-image: url("#{$flags-image-path}#{$flags-image-name}.#{$flags-image-extension}"); | ||
background-repeat: no-repeat; | ||
// empty state | ||
background-color: #dbdbdb; | ||
background-position: $flag-width 0; | ||
|
||
@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2 / 1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx) { | ||
background-image: url("#{$flags-image-path}#{$flags-image-name}@2x.#{$flags-image-extension}"); | ||
} | ||
} | ||
} |
Oops, something went wrong.