From 191464c98c5fc8787a0ba8b847d802cffafee9ab Mon Sep 17 00:00:00 2001 From: Adam Bradley Date: Wed, 7 May 2014 13:40:28 -0500 Subject: [PATCH 1/9] fix(CustomEvent): fix IE CustomEvent polyfill #1131 #1231 #861 --- js/utils/events.js | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/js/utils/events.js b/js/utils/events.js index dd2229173f..5d71de169a 100644 --- a/js/utils/events.js +++ b/js/utils/events.js @@ -13,9 +13,10 @@ (function(ionic) { // Custom event polyfill - ionic.CustomEvent = window.CustomEvent || (function() { - var CustomEvent; - CustomEvent = function(event, params) { + ionic.CustomEvent = (function() { + if( typeof window.CustomEvent === 'function' ) return CustomEvent; + + var customEvent = function(event, params) { var evt; params = params || { bubbles: false, @@ -35,8 +36,8 @@ } return evt; } - CustomEvent.prototype = window.Event.prototype; - return CustomEvent; + customEvent.prototype = window.Event.prototype; + return customEvent; })(); From 98ee7ee293fbb7f9887150a95b18cc1da2326383 Mon Sep 17 00:00:00 2001 From: Adam Bradley Date: Wed, 7 May 2014 13:42:48 -0500 Subject: [PATCH 2/9] chore(log): use console.log instead of .debug Console statements get removed during builds, but when testing IE 10 does not support console.debug. --- js/utils/keyboard.js | 20 ++++++++++---------- js/utils/tap.js | 10 +++++----- js/views/scrollView.js | 2 +- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/js/utils/keyboard.js b/js/utils/keyboard.js index 479ea7b04c..23c2d918a2 100644 --- a/js/utils/keyboard.js +++ b/js/utils/keyboard.js @@ -60,9 +60,9 @@ function keyboardSetShow(e) { clearTimeout(keyboardFocusOutTimer); keyboardFocusInTimer = setTimeout(function(){ - if ( keyboardLastShow + 350 > Date.now() ) return; + if ( keyboardLastShow + 350 > Date.now() ) return; keyboardLastShow = Date.now(); - var keyboardHeight; + var keyboardHeight; var elementBounds = keyboardActiveElement.getBoundingClientRect(); var count = 0; @@ -79,8 +79,8 @@ function keyboardSetShow(e) { clearInterval(pollKeyboardHeight); } count++; - - }, 100); + + }, 100); }, 32); } @@ -96,12 +96,12 @@ function keyboardShow(element, elementTop, elementBottom, viewportHeight, keyboa details.contentHeight = viewportHeight - keyboardHeight; - console.debug('keyboardShow', keyboardHeight, details.contentHeight); + console.log('keyboardShow', keyboardHeight, details.contentHeight); // distance from top of input to the top of the keyboard details.keyboardTopOffset = details.elementTop - details.contentHeight; - console.debug('keyboardTopOffset', details.elementTop, details.contentHeight, details.keyboardTopOffset); + console.log('keyboardTopOffset', details.elementTop, details.contentHeight, details.keyboardTopOffset); // figure out if the element is under the keyboard details.isElementUnderKeyboard = (details.elementBottom > details.contentHeight); @@ -132,7 +132,7 @@ function keyboardFocusOut(e) { } function keyboardHide() { - console.debug('keyboardHide'); + console.log('keyboardHide'); ionic.keyboard.isOpen = false; ionic.trigger('resetScrollView', { @@ -177,10 +177,10 @@ function keyboardOrientationChange() { } updatedViewportHeight = window.innerHeight; - + if (updatedViewportHeight !== keyboardViewportHeight){ if (updatedViewportHeight < keyboardViewportHeight){ - ionic.keyboard.landscape = true; + ionic.keyboard.landscape = true; } else { ionic.keyboard.landscape = false; @@ -193,7 +193,7 @@ function keyboardOrientationChange() { }, 50); } else { - keyboardViewportHeight = updatedViewportHeight; + keyboardViewportHeight = updatedViewportHeight; } } diff --git a/js/utils/tap.js b/js/utils/tap.js index 4ec1985389..ebf7075e90 100644 --- a/js/utils/tap.js +++ b/js/utils/tap.js @@ -216,7 +216,7 @@ function tapClick(e) { var c = getPointerCoordinates(e); - console.debug('tapClick', e.type, ele.tagName, '('+c.x+','+c.y+')'); + console.log('tapClick', e.type, ele.tagName, '('+c.x+','+c.y+')'); triggerMouseEvent('click', ele, c.x, c.y); // if it's an input, focus in on the target, otherwise blur @@ -240,7 +240,7 @@ function tapClickGateKeeper(e) { // do not allow through any click events that were not created by ionic.tap if( (ionic.scroll.isScrolling && ionic.tap.containsOrIsTextInput(e.target) ) || (!e.isIonicTap && !ionic.tap.requiresNativeClick(e.target)) ) { - console.debug('clickPrevent', e.target.tagName); + console.log('clickPrevent', e.target.tagName); e.stopPropagation(); if( !ionic.tap.isLabelWithTextInput(e.target) ) { @@ -256,7 +256,7 @@ function tapMouseDown(e) { if(e.isIonicTap || tapIgnoreEvent(e)) return; if(tapEnabledTouchEvents) { - console.debug('mousedown', 'stop event'); + console.log('mousedown', 'stop event'); e.stopPropagation(); if( !ionic.tap.isTextInput(e.target) ) { @@ -412,7 +412,7 @@ function tapHandleFocus(ele) { function tapFocusOutActive() { var ele = tapActiveElement(); if(ele && (/input|textarea|select/i).test(ele.tagName) ) { - console.debug('tapFocusOutActive', ele.tagName); + console.log('tapFocusOutActive', ele.tagName); ele.blur(); } tapActiveElement(null); @@ -432,7 +432,7 @@ function tapFocusIn(e) { // 2) There is an active element which is a text input // 3) A text input was just set to be focused on by a touch event // 4) A new focus has been set, however the target isn't the one the touch event wanted - console.debug('focusin', 'tapTouchFocusedInput'); + console.log('focusin', 'tapTouchFocusedInput'); tapTouchFocusedInput.focus(); tapTouchFocusedInput = null; } diff --git a/js/views/scrollView.js b/js/views/scrollView.js index a6562b901a..ff17c52295 100644 --- a/js/views/scrollView.js +++ b/js/views/scrollView.js @@ -650,7 +650,7 @@ ionic.views.Scroll = ionic.views.View.inherit({ //middle of the scrollview, where we want to scroll to var scrollViewMidpointOffset = container.clientHeight * 0.5; var scrollTop = e.detail.keyboardTopOffset + scrollViewMidpointOffset; - console.debug('scrollChildIntoView', scrollTop); + console.log('scrollChildIntoView', scrollTop); ionic.tap.cloneFocusedInput(container, self); self.scrollBy(0, scrollTop, true); self.onScroll(); From 930794cd9a94afaf0366b152da14a5eabea64e6c Mon Sep 17 00:00:00 2001 From: Adam Bradley Date: Wed, 7 May 2014 13:43:38 -0500 Subject: [PATCH 3/9] fix(button): fix icon vertical alignments for IE 10 --- scss/_button.scss | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/scss/_button.scss b/scss/_button.scss index 32a668db9f..e36eaf929d 100644 --- a/scss/_button.scss +++ b/scss/_button.scss @@ -11,7 +11,7 @@ position: relative; display: inline-block; margin: 0; - padding: 1px $button-padding 0 $button-padding; + padding: 0 $button-padding; min-width: ($button-padding * 3) + $button-font-size; min-height: $button-height + 5px; @@ -41,6 +41,7 @@ .icon { vertical-align: top; + pointer-events: none; } .icon:before, @@ -51,7 +52,8 @@ padding: 0 0 $button-border-width 0; vertical-align: inherit; font-size: $button-icon-size; - line-height: $button-height - $button-border-width + 1; + line-height: $button-height - $button-border-width; + pointer-events: none; } &.icon-left:before { float: left; @@ -125,18 +127,19 @@ } .button-small { - padding: 0 $button-small-padding; + padding: 2px $button-small-padding 1px; min-width: $button-small-height; - min-height: $button-small-height + 3; + min-height: $button-small-height + 2; font-size: $button-small-font-size; - line-height: $button-small-height - $button-border-width + 1; + line-height: $button-small-height - $button-border-width - 1; .icon:before, &.icon:before, &.icon-left:before, &.icon-right:before { font-size: $button-small-icon-size; - line-height: $button-small-height - $button-border-width - 1; + line-height: $button-small-icon-size + 3; + margin-top: 3px; } } From 08f0adb12b84e817a814524aada57bbb7b747933 Mon Sep 17 00:00:00 2001 From: Adam Bradley Date: Wed, 7 May 2014 13:44:31 -0500 Subject: [PATCH 4/9] fix(input): transparent bg for .item-input-inset input --- scss/_form.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scss/_form.scss b/scss/_form.scss index d3f7cbd395..427846bed3 100644 --- a/scss/_form.scss +++ b/scss/_form.scss @@ -101,7 +101,7 @@ textarea { .item-input-inset .item-input-wrapper input { padding-left: 4px; height: 29px; - background: inherit; + background: transparent; line-height: 18px; } From a4a258ee72aaa5e7617cbc4b5a41c4000be8a36e Mon Sep 17 00:00:00 2001 From: Adam Bradley Date: Wed, 7 May 2014 13:46:30 -0500 Subject: [PATCH 5/9] refactor(icon): use :before when assigning ionicons In order to assign the Ionicons font to the actual icon, and not the font-family for button text, using the :before pseudo instead --- scss/ionicons/_ionicons-icons.scss | 1054 ++++++++++++++-------------- 1 file changed, 527 insertions(+), 527 deletions(-) diff --git a/scss/ionicons/_ionicons-icons.scss b/scss/ionicons/_ionicons-icons.scss index 30aa9da21f..ae4f903170 100755 --- a/scss/ionicons/_ionicons-icons.scss +++ b/scss/ionicons/_ionicons-icons.scss @@ -1,532 +1,532 @@ // Ionicons Icons // -------------------------- -.ionicons, -.#{$ionicons-prefix}alert, -.#{$ionicons-prefix}alert-circled, -.#{$ionicons-prefix}android-add, -.#{$ionicons-prefix}android-add-contact, -.#{$ionicons-prefix}android-alarm, -.#{$ionicons-prefix}android-archive, -.#{$ionicons-prefix}android-arrow-back, -.#{$ionicons-prefix}android-arrow-down-left, -.#{$ionicons-prefix}android-arrow-down-right, -.#{$ionicons-prefix}android-arrow-up-left, -.#{$ionicons-prefix}android-arrow-up-right, -.#{$ionicons-prefix}android-battery, -.#{$ionicons-prefix}android-book, -.#{$ionicons-prefix}android-calendar, -.#{$ionicons-prefix}android-call, -.#{$ionicons-prefix}android-camera, -.#{$ionicons-prefix}android-chat, -.#{$ionicons-prefix}android-checkmark, -.#{$ionicons-prefix}android-clock, -.#{$ionicons-prefix}android-close, -.#{$ionicons-prefix}android-contact, -.#{$ionicons-prefix}android-contacts, -.#{$ionicons-prefix}android-data, -.#{$ionicons-prefix}android-developer, -.#{$ionicons-prefix}android-display, -.#{$ionicons-prefix}android-download, -.#{$ionicons-prefix}android-dropdown, -.#{$ionicons-prefix}android-earth, -.#{$ionicons-prefix}android-folder, -.#{$ionicons-prefix}android-forums, -.#{$ionicons-prefix}android-friends, -.#{$ionicons-prefix}android-hand, -.#{$ionicons-prefix}android-image, -.#{$ionicons-prefix}android-inbox, -.#{$ionicons-prefix}android-information, -.#{$ionicons-prefix}android-keypad, -.#{$ionicons-prefix}android-lightbulb, -.#{$ionicons-prefix}android-locate, -.#{$ionicons-prefix}android-location, -.#{$ionicons-prefix}android-mail, -.#{$ionicons-prefix}android-microphone, -.#{$ionicons-prefix}android-mixer, -.#{$ionicons-prefix}android-more, -.#{$ionicons-prefix}android-note, -.#{$ionicons-prefix}android-playstore, -.#{$ionicons-prefix}android-printer, -.#{$ionicons-prefix}android-promotion, -.#{$ionicons-prefix}android-reminder, -.#{$ionicons-prefix}android-remove, -.#{$ionicons-prefix}android-search, -.#{$ionicons-prefix}android-send, -.#{$ionicons-prefix}android-settings, -.#{$ionicons-prefix}android-share, -.#{$ionicons-prefix}android-social, -.#{$ionicons-prefix}android-social-user, -.#{$ionicons-prefix}android-sort, -.#{$ionicons-prefix}android-star, -.#{$ionicons-prefix}android-stopwatch, -.#{$ionicons-prefix}android-storage, -.#{$ionicons-prefix}android-system-back, -.#{$ionicons-prefix}android-system-home, -.#{$ionicons-prefix}android-system-windows, -.#{$ionicons-prefix}android-timer, -.#{$ionicons-prefix}android-trash, -.#{$ionicons-prefix}android-volume, -.#{$ionicons-prefix}android-wifi, -.#{$ionicons-prefix}archive, -.#{$ionicons-prefix}arrow-down-a, -.#{$ionicons-prefix}arrow-down-b, -.#{$ionicons-prefix}arrow-down-c, -.#{$ionicons-prefix}arrow-expand, -.#{$ionicons-prefix}arrow-graph-down-left, -.#{$ionicons-prefix}arrow-graph-down-right, -.#{$ionicons-prefix}arrow-graph-up-left, -.#{$ionicons-prefix}arrow-graph-up-right, -.#{$ionicons-prefix}arrow-left-a, -.#{$ionicons-prefix}arrow-left-b, -.#{$ionicons-prefix}arrow-left-c, -.#{$ionicons-prefix}arrow-move, -.#{$ionicons-prefix}arrow-resize, -.#{$ionicons-prefix}arrow-return-left, -.#{$ionicons-prefix}arrow-return-right, -.#{$ionicons-prefix}arrow-right-a, -.#{$ionicons-prefix}arrow-right-b, -.#{$ionicons-prefix}arrow-right-c, -.#{$ionicons-prefix}arrow-shrink, -.#{$ionicons-prefix}arrow-swap, -.#{$ionicons-prefix}arrow-up-a, -.#{$ionicons-prefix}arrow-up-b, -.#{$ionicons-prefix}arrow-up-c, -.#{$ionicons-prefix}at, -.#{$ionicons-prefix}bag, -.#{$ionicons-prefix}battery-charging, -.#{$ionicons-prefix}battery-empty, -.#{$ionicons-prefix}battery-full, -.#{$ionicons-prefix}battery-half, -.#{$ionicons-prefix}battery-low, -.#{$ionicons-prefix}beaker, -.#{$ionicons-prefix}beer, -.#{$ionicons-prefix}bluetooth, -.#{$ionicons-prefix}bookmark, -.#{$ionicons-prefix}briefcase, -.#{$ionicons-prefix}bug, -.#{$ionicons-prefix}calculator, -.#{$ionicons-prefix}calendar, -.#{$ionicons-prefix}camera, -.#{$ionicons-prefix}card, -.#{$ionicons-prefix}chatbox, -.#{$ionicons-prefix}chatbox-working, -.#{$ionicons-prefix}chatboxes, -.#{$ionicons-prefix}chatbubble, -.#{$ionicons-prefix}chatbubble-working, -.#{$ionicons-prefix}chatbubbles, -.#{$ionicons-prefix}checkmark, -.#{$ionicons-prefix}checkmark-circled, -.#{$ionicons-prefix}checkmark-round, -.#{$ionicons-prefix}chevron-down, -.#{$ionicons-prefix}chevron-left, -.#{$ionicons-prefix}chevron-right, -.#{$ionicons-prefix}chevron-up, -.#{$ionicons-prefix}clipboard, -.#{$ionicons-prefix}clock, -.#{$ionicons-prefix}close, -.#{$ionicons-prefix}close-circled, -.#{$ionicons-prefix}close-round, -.#{$ionicons-prefix}cloud, -.#{$ionicons-prefix}code, -.#{$ionicons-prefix}code-download, -.#{$ionicons-prefix}code-working, -.#{$ionicons-prefix}coffee, -.#{$ionicons-prefix}compass, -.#{$ionicons-prefix}compose, -.#{$ionicons-prefix}connection-bars, -.#{$ionicons-prefix}contrast, -.#{$ionicons-prefix}disc, -.#{$ionicons-prefix}document, -.#{$ionicons-prefix}document-text, -.#{$ionicons-prefix}drag, -.#{$ionicons-prefix}earth, -.#{$ionicons-prefix}edit, -.#{$ionicons-prefix}egg, -.#{$ionicons-prefix}eject, -.#{$ionicons-prefix}email, -.#{$ionicons-prefix}eye, -.#{$ionicons-prefix}eye-disabled, -.#{$ionicons-prefix}female, -.#{$ionicons-prefix}filing, -.#{$ionicons-prefix}film-marker, -.#{$ionicons-prefix}flag, -.#{$ionicons-prefix}flash, -.#{$ionicons-prefix}flash-off, -.#{$ionicons-prefix}flask, -.#{$ionicons-prefix}folder, -.#{$ionicons-prefix}fork, -.#{$ionicons-prefix}fork-repo, -.#{$ionicons-prefix}forward, -.#{$ionicons-prefix}game-controller-a, -.#{$ionicons-prefix}game-controller-b, -.#{$ionicons-prefix}gear-a, -.#{$ionicons-prefix}gear-b, -.#{$ionicons-prefix}grid, -.#{$ionicons-prefix}hammer, -.#{$ionicons-prefix}headphone, -.#{$ionicons-prefix}heart, -.#{$ionicons-prefix}help, -.#{$ionicons-prefix}help-buoy, -.#{$ionicons-prefix}help-circled, -.#{$ionicons-prefix}home, -.#{$ionicons-prefix}icecream, -.#{$ionicons-prefix}icon-social-google-plus, -.#{$ionicons-prefix}icon-social-google-plus-outline, -.#{$ionicons-prefix}image, -.#{$ionicons-prefix}images, -.#{$ionicons-prefix}information, -.#{$ionicons-prefix}information-circled, -.#{$ionicons-prefix}ionic, -.#{$ionicons-prefix}ios7-alarm, -.#{$ionicons-prefix}ios7-alarm-outline, -.#{$ionicons-prefix}ios7-albums, -.#{$ionicons-prefix}ios7-albums-outline, -.#{$ionicons-prefix}ios7-arrow-back, -.#{$ionicons-prefix}ios7-arrow-down, -.#{$ionicons-prefix}ios7-arrow-forward, -.#{$ionicons-prefix}ios7-arrow-left, -.#{$ionicons-prefix}ios7-arrow-right, -.#{$ionicons-prefix}ios7-arrow-thin-down, -.#{$ionicons-prefix}ios7-arrow-thin-left, -.#{$ionicons-prefix}ios7-arrow-thin-right, -.#{$ionicons-prefix}ios7-arrow-thin-up, -.#{$ionicons-prefix}ios7-arrow-up, -.#{$ionicons-prefix}ios7-at, -.#{$ionicons-prefix}ios7-at-outline, -.#{$ionicons-prefix}ios7-bell, -.#{$ionicons-prefix}ios7-bell-outline, -.#{$ionicons-prefix}ios7-bolt, -.#{$ionicons-prefix}ios7-bolt-outline, -.#{$ionicons-prefix}ios7-bookmarks, -.#{$ionicons-prefix}ios7-bookmarks-outline, -.#{$ionicons-prefix}ios7-box, -.#{$ionicons-prefix}ios7-box-outline, -.#{$ionicons-prefix}ios7-briefcase, -.#{$ionicons-prefix}ios7-briefcase-outline, -.#{$ionicons-prefix}ios7-browsers, -.#{$ionicons-prefix}ios7-browsers-outline, -.#{$ionicons-prefix}ios7-calculator, -.#{$ionicons-prefix}ios7-calculator-outline, -.#{$ionicons-prefix}ios7-calendar, -.#{$ionicons-prefix}ios7-calendar-outline, -.#{$ionicons-prefix}ios7-camera, -.#{$ionicons-prefix}ios7-camera-outline, -.#{$ionicons-prefix}ios7-cart, -.#{$ionicons-prefix}ios7-cart-outline, -.#{$ionicons-prefix}ios7-chatboxes, -.#{$ionicons-prefix}ios7-chatboxes-outline, -.#{$ionicons-prefix}ios7-chatbubble, -.#{$ionicons-prefix}ios7-chatbubble-outline, -.#{$ionicons-prefix}ios7-checkmark, -.#{$ionicons-prefix}ios7-checkmark-empty, -.#{$ionicons-prefix}ios7-checkmark-outline, -.#{$ionicons-prefix}ios7-circle-filled, -.#{$ionicons-prefix}ios7-circle-outline, -.#{$ionicons-prefix}ios7-clock, -.#{$ionicons-prefix}ios7-clock-outline, -.#{$ionicons-prefix}ios7-close, -.#{$ionicons-prefix}ios7-close-empty, -.#{$ionicons-prefix}ios7-close-outline, -.#{$ionicons-prefix}ios7-cloud, -.#{$ionicons-prefix}ios7-cloud-download, -.#{$ionicons-prefix}ios7-cloud-download-outline, -.#{$ionicons-prefix}ios7-cloud-outline, -.#{$ionicons-prefix}ios7-cloud-upload, -.#{$ionicons-prefix}ios7-cloud-upload-outline, -.#{$ionicons-prefix}ios7-cloudy, -.#{$ionicons-prefix}ios7-cloudy-night, -.#{$ionicons-prefix}ios7-cloudy-night-outline, -.#{$ionicons-prefix}ios7-cloudy-outline, -.#{$ionicons-prefix}ios7-cog, -.#{$ionicons-prefix}ios7-cog-outline, -.#{$ionicons-prefix}ios7-compose, -.#{$ionicons-prefix}ios7-compose-outline, -.#{$ionicons-prefix}ios7-contact, -.#{$ionicons-prefix}ios7-contact-outline, -.#{$ionicons-prefix}ios7-copy, -.#{$ionicons-prefix}ios7-copy-outline, -.#{$ionicons-prefix}ios7-download, -.#{$ionicons-prefix}ios7-download-outline, -.#{$ionicons-prefix}ios7-drag, -.#{$ionicons-prefix}ios7-email, -.#{$ionicons-prefix}ios7-email-outline, -.#{$ionicons-prefix}ios7-eye, -.#{$ionicons-prefix}ios7-eye-outline, -.#{$ionicons-prefix}ios7-fastforward, -.#{$ionicons-prefix}ios7-fastforward-outline, -.#{$ionicons-prefix}ios7-filing, -.#{$ionicons-prefix}ios7-filing-outline, -.#{$ionicons-prefix}ios7-film, -.#{$ionicons-prefix}ios7-film-outline, -.#{$ionicons-prefix}ios7-flag, -.#{$ionicons-prefix}ios7-flag-outline, -.#{$ionicons-prefix}ios7-folder, -.#{$ionicons-prefix}ios7-folder-outline, -.#{$ionicons-prefix}ios7-gear, -.#{$ionicons-prefix}ios7-gear-outline, -.#{$ionicons-prefix}ios7-glasses, -.#{$ionicons-prefix}ios7-glasses-outline, -.#{$ionicons-prefix}ios7-heart, -.#{$ionicons-prefix}ios7-heart-outline, -.#{$ionicons-prefix}ios7-help, -.#{$ionicons-prefix}ios7-help-empty, -.#{$ionicons-prefix}ios7-help-outline, -.#{$ionicons-prefix}ios7-infinite, -.#{$ionicons-prefix}ios7-infinite-outline, -.#{$ionicons-prefix}ios7-information, -.#{$ionicons-prefix}ios7-information-empty, -.#{$ionicons-prefix}ios7-information-outline, -.#{$ionicons-prefix}ios7-ionic-outline, -.#{$ionicons-prefix}ios7-keypad, -.#{$ionicons-prefix}ios7-keypad-outline, -.#{$ionicons-prefix}ios7-lightbulb, -.#{$ionicons-prefix}ios7-lightbulb-outline, -.#{$ionicons-prefix}ios7-location, -.#{$ionicons-prefix}ios7-location-outline, -.#{$ionicons-prefix}ios7-locked, -.#{$ionicons-prefix}ios7-locked-outline, -.#{$ionicons-prefix}ios7-medkit, -.#{$ionicons-prefix}ios7-medkit-outline, -.#{$ionicons-prefix}ios7-mic, -.#{$ionicons-prefix}ios7-mic-off, -.#{$ionicons-prefix}ios7-mic-outline, -.#{$ionicons-prefix}ios7-minus, -.#{$ionicons-prefix}ios7-minus-empty, -.#{$ionicons-prefix}ios7-minus-outline, -.#{$ionicons-prefix}ios7-monitor, -.#{$ionicons-prefix}ios7-monitor-outline, -.#{$ionicons-prefix}ios7-moon, -.#{$ionicons-prefix}ios7-moon-outline, -.#{$ionicons-prefix}ios7-more, -.#{$ionicons-prefix}ios7-more-outline, -.#{$ionicons-prefix}ios7-musical-note, -.#{$ionicons-prefix}ios7-musical-notes, -.#{$ionicons-prefix}ios7-navigate, -.#{$ionicons-prefix}ios7-navigate-outline, -.#{$ionicons-prefix}ios7-paperplane, -.#{$ionicons-prefix}ios7-paperplane-outline, -.#{$ionicons-prefix}ios7-partlysunny, -.#{$ionicons-prefix}ios7-partlysunny-outline, -.#{$ionicons-prefix}ios7-pause, -.#{$ionicons-prefix}ios7-pause-outline, -.#{$ionicons-prefix}ios7-people, -.#{$ionicons-prefix}ios7-people-outline, -.#{$ionicons-prefix}ios7-person, -.#{$ionicons-prefix}ios7-person-outline, -.#{$ionicons-prefix}ios7-personadd, -.#{$ionicons-prefix}ios7-personadd-outline, -.#{$ionicons-prefix}ios7-photos, -.#{$ionicons-prefix}ios7-photos-outline, -.#{$ionicons-prefix}ios7-pie, -.#{$ionicons-prefix}ios7-pie-outline, -.#{$ionicons-prefix}ios7-play, -.#{$ionicons-prefix}ios7-play-outline, -.#{$ionicons-prefix}ios7-plus, -.#{$ionicons-prefix}ios7-plus-empty, -.#{$ionicons-prefix}ios7-plus-outline, -.#{$ionicons-prefix}ios7-pricetag, -.#{$ionicons-prefix}ios7-pricetag-outline, -.#{$ionicons-prefix}ios7-printer, -.#{$ionicons-prefix}ios7-printer-outline, -.#{$ionicons-prefix}ios7-rainy, -.#{$ionicons-prefix}ios7-rainy-outline, -.#{$ionicons-prefix}ios7-recording, -.#{$ionicons-prefix}ios7-recording-outline, -.#{$ionicons-prefix}ios7-redo, -.#{$ionicons-prefix}ios7-redo-outline, -.#{$ionicons-prefix}ios7-refresh, -.#{$ionicons-prefix}ios7-refresh-empty, -.#{$ionicons-prefix}ios7-refresh-outline, -.#{$ionicons-prefix}ios7-reload, -.#{$ionicons-prefix}ios7-rewind, -.#{$ionicons-prefix}ios7-rewind-outline, -.#{$ionicons-prefix}ios7-search, -.#{$ionicons-prefix}ios7-search-strong, -.#{$ionicons-prefix}ios7-skipbackward, -.#{$ionicons-prefix}ios7-skipbackward-outline, -.#{$ionicons-prefix}ios7-skipforward, -.#{$ionicons-prefix}ios7-skipforward-outline, -.#{$ionicons-prefix}ios7-snowy, -.#{$ionicons-prefix}ios7-speedometer, -.#{$ionicons-prefix}ios7-speedometer-outline, -.#{$ionicons-prefix}ios7-star, -.#{$ionicons-prefix}ios7-star-outline, -.#{$ionicons-prefix}ios7-stopwatch, -.#{$ionicons-prefix}ios7-stopwatch-outline, -.#{$ionicons-prefix}ios7-sunny, -.#{$ionicons-prefix}ios7-sunny-outline, -.#{$ionicons-prefix}ios7-telephone, -.#{$ionicons-prefix}ios7-telephone-outline, -.#{$ionicons-prefix}ios7-thunderstorm, -.#{$ionicons-prefix}ios7-thunderstorm-outline, -.#{$ionicons-prefix}ios7-time, -.#{$ionicons-prefix}ios7-time-outline, -.#{$ionicons-prefix}ios7-timer, -.#{$ionicons-prefix}ios7-timer-outline, -.#{$ionicons-prefix}ios7-trash, -.#{$ionicons-prefix}ios7-trash-outline, -.#{$ionicons-prefix}ios7-undo, -.#{$ionicons-prefix}ios7-undo-outline, -.#{$ionicons-prefix}ios7-unlocked, -.#{$ionicons-prefix}ios7-unlocked-outline, -.#{$ionicons-prefix}ios7-upload, -.#{$ionicons-prefix}ios7-upload-outline, -.#{$ionicons-prefix}ios7-videocam, -.#{$ionicons-prefix}ios7-videocam-outline, -.#{$ionicons-prefix}ios7-volume-high, -.#{$ionicons-prefix}ios7-volume-low, -.#{$ionicons-prefix}ios7-wineglass, -.#{$ionicons-prefix}ios7-wineglass-outline, -.#{$ionicons-prefix}ios7-world, -.#{$ionicons-prefix}ios7-world-outline, -.#{$ionicons-prefix}ipad, -.#{$ionicons-prefix}iphone, -.#{$ionicons-prefix}ipod, -.#{$ionicons-prefix}jet, -.#{$ionicons-prefix}key, -.#{$ionicons-prefix}knife, -.#{$ionicons-prefix}laptop, -.#{$ionicons-prefix}leaf, -.#{$ionicons-prefix}levels, -.#{$ionicons-prefix}lightbulb, -.#{$ionicons-prefix}link, -.#{$ionicons-prefix}load-a, -.#{$ionicons-prefix}load-b, -.#{$ionicons-prefix}load-c, -.#{$ionicons-prefix}load-d, -.#{$ionicons-prefix}location, -.#{$ionicons-prefix}locked, -.#{$ionicons-prefix}log-in, -.#{$ionicons-prefix}log-out, -.#{$ionicons-prefix}loop, -.#{$ionicons-prefix}magnet, -.#{$ionicons-prefix}male, -.#{$ionicons-prefix}man, -.#{$ionicons-prefix}map, -.#{$ionicons-prefix}medkit, -.#{$ionicons-prefix}mic-a, -.#{$ionicons-prefix}mic-b, -.#{$ionicons-prefix}mic-c, -.#{$ionicons-prefix}minus, -.#{$ionicons-prefix}minus-circled, -.#{$ionicons-prefix}minus-round, -.#{$ionicons-prefix}model-s, -.#{$ionicons-prefix}monitor, -.#{$ionicons-prefix}more, -.#{$ionicons-prefix}music-note, -.#{$ionicons-prefix}navicon, -.#{$ionicons-prefix}navicon-round, -.#{$ionicons-prefix}navigate, -.#{$ionicons-prefix}no-smoking, -.#{$ionicons-prefix}nuclear, -.#{$ionicons-prefix}paper-airplane, -.#{$ionicons-prefix}paperclip, -.#{$ionicons-prefix}pause, -.#{$ionicons-prefix}person, -.#{$ionicons-prefix}person-add, -.#{$ionicons-prefix}person-stalker, -.#{$ionicons-prefix}pie-graph, -.#{$ionicons-prefix}pin, -.#{$ionicons-prefix}pinpoint, -.#{$ionicons-prefix}pizza, -.#{$ionicons-prefix}plane, -.#{$ionicons-prefix}play, -.#{$ionicons-prefix}playstation, -.#{$ionicons-prefix}plus, -.#{$ionicons-prefix}plus-circled, -.#{$ionicons-prefix}plus-round, -.#{$ionicons-prefix}pound, -.#{$ionicons-prefix}power, -.#{$ionicons-prefix}pricetag, -.#{$ionicons-prefix}pricetags, -.#{$ionicons-prefix}printer, -.#{$ionicons-prefix}radio-waves, -.#{$ionicons-prefix}record, -.#{$ionicons-prefix}refresh, -.#{$ionicons-prefix}reply, -.#{$ionicons-prefix}reply-all, -.#{$ionicons-prefix}search, -.#{$ionicons-prefix}settings, -.#{$ionicons-prefix}share, -.#{$ionicons-prefix}shuffle, -.#{$ionicons-prefix}skip-backward, -.#{$ionicons-prefix}skip-forward, -.#{$ionicons-prefix}social-android, -.#{$ionicons-prefix}social-android-outline, -.#{$ionicons-prefix}social-apple, -.#{$ionicons-prefix}social-apple-outline, -.#{$ionicons-prefix}social-bitcoin, -.#{$ionicons-prefix}social-bitcoin-outline, -.#{$ionicons-prefix}social-buffer, -.#{$ionicons-prefix}social-buffer-outline, -.#{$ionicons-prefix}social-designernews, -.#{$ionicons-prefix}social-designernews-outline, -.#{$ionicons-prefix}social-dribbble, -.#{$ionicons-prefix}social-dribbble-outline, -.#{$ionicons-prefix}social-dropbox, -.#{$ionicons-prefix}social-dropbox-outline, -.#{$ionicons-prefix}social-facebook, -.#{$ionicons-prefix}social-facebook-outline, -.#{$ionicons-prefix}social-freebsd-devil, -.#{$ionicons-prefix}social-github, -.#{$ionicons-prefix}social-github-outline, -.#{$ionicons-prefix}social-googleplus, -.#{$ionicons-prefix}social-googleplus-outline, -.#{$ionicons-prefix}social-hackernews, -.#{$ionicons-prefix}social-hackernews-outline, -.#{$ionicons-prefix}social-linkedin, -.#{$ionicons-prefix}social-linkedin-outline, -.#{$ionicons-prefix}social-pinterest, -.#{$ionicons-prefix}social-pinterest-outline, -.#{$ionicons-prefix}social-reddit, -.#{$ionicons-prefix}social-reddit-outline, -.#{$ionicons-prefix}social-rss, -.#{$ionicons-prefix}social-rss-outline, -.#{$ionicons-prefix}social-skype, -.#{$ionicons-prefix}social-skype-outline, -.#{$ionicons-prefix}social-tumblr, -.#{$ionicons-prefix}social-tumblr-outline, -.#{$ionicons-prefix}social-tux, -.#{$ionicons-prefix}social-twitter, -.#{$ionicons-prefix}social-twitter-outline, -.#{$ionicons-prefix}social-vimeo, -.#{$ionicons-prefix}social-vimeo-outline, -.#{$ionicons-prefix}social-windows, -.#{$ionicons-prefix}social-windows-outline, -.#{$ionicons-prefix}social-wordpress, -.#{$ionicons-prefix}social-wordpress-outline, -.#{$ionicons-prefix}social-yahoo, -.#{$ionicons-prefix}social-yahoo-outline, -.#{$ionicons-prefix}social-youtube, -.#{$ionicons-prefix}social-youtube-outline, -.#{$ionicons-prefix}speakerphone, -.#{$ionicons-prefix}speedometer, -.#{$ionicons-prefix}spoon, -.#{$ionicons-prefix}star, -.#{$ionicons-prefix}stats-bars, -.#{$ionicons-prefix}steam, -.#{$ionicons-prefix}stop, -.#{$ionicons-prefix}thermometer, -.#{$ionicons-prefix}thumbsdown, -.#{$ionicons-prefix}thumbsup, -.#{$ionicons-prefix}trash-a, -.#{$ionicons-prefix}trash-b, -.#{$ionicons-prefix}umbrella, -.#{$ionicons-prefix}unlocked, -.#{$ionicons-prefix}upload, -.#{$ionicons-prefix}usb, -.#{$ionicons-prefix}videocamera, -.#{$ionicons-prefix}volume-high, -.#{$ionicons-prefix}volume-low, -.#{$ionicons-prefix}volume-medium, -.#{$ionicons-prefix}volume-mute, -.#{$ionicons-prefix}waterdrop, -.#{$ionicons-prefix}wifi, -.#{$ionicons-prefix}wineglass, -.#{$ionicons-prefix}woman, -.#{$ionicons-prefix}wrench, -.#{$ionicons-prefix}xbox +.ionicons:before, +.#{$ionicons-prefix}alert:before, +.#{$ionicons-prefix}alert-circled:before, +.#{$ionicons-prefix}android-add:before, +.#{$ionicons-prefix}android-add-contact:before, +.#{$ionicons-prefix}android-alarm:before, +.#{$ionicons-prefix}android-archive:before, +.#{$ionicons-prefix}android-arrow-back:before, +.#{$ionicons-prefix}android-arrow-down-left:before, +.#{$ionicons-prefix}android-arrow-down-right:before, +.#{$ionicons-prefix}android-arrow-up-left:before, +.#{$ionicons-prefix}android-arrow-up-right:before, +.#{$ionicons-prefix}android-battery:before, +.#{$ionicons-prefix}android-book:before, +.#{$ionicons-prefix}android-calendar:before, +.#{$ionicons-prefix}android-call:before, +.#{$ionicons-prefix}android-camera:before, +.#{$ionicons-prefix}android-chat:before, +.#{$ionicons-prefix}android-checkmark:before, +.#{$ionicons-prefix}android-clock:before, +.#{$ionicons-prefix}android-close:before, +.#{$ionicons-prefix}android-contact:before, +.#{$ionicons-prefix}android-contacts:before, +.#{$ionicons-prefix}android-data:before, +.#{$ionicons-prefix}android-developer:before, +.#{$ionicons-prefix}android-display:before, +.#{$ionicons-prefix}android-download:before, +.#{$ionicons-prefix}android-dropdown:before, +.#{$ionicons-prefix}android-earth:before, +.#{$ionicons-prefix}android-folder:before, +.#{$ionicons-prefix}android-forums:before, +.#{$ionicons-prefix}android-friends:before, +.#{$ionicons-prefix}android-hand:before, +.#{$ionicons-prefix}android-image:before, +.#{$ionicons-prefix}android-inbox:before, +.#{$ionicons-prefix}android-information:before, +.#{$ionicons-prefix}android-keypad:before, +.#{$ionicons-prefix}android-lightbulb:before, +.#{$ionicons-prefix}android-locate:before, +.#{$ionicons-prefix}android-location:before, +.#{$ionicons-prefix}android-mail:before, +.#{$ionicons-prefix}android-microphone:before, +.#{$ionicons-prefix}android-mixer:before, +.#{$ionicons-prefix}android-more:before, +.#{$ionicons-prefix}android-note:before, +.#{$ionicons-prefix}android-playstore:before, +.#{$ionicons-prefix}android-printer:before, +.#{$ionicons-prefix}android-promotion:before, +.#{$ionicons-prefix}android-reminder:before, +.#{$ionicons-prefix}android-remove:before, +.#{$ionicons-prefix}android-search:before, +.#{$ionicons-prefix}android-send:before, +.#{$ionicons-prefix}android-settings:before, +.#{$ionicons-prefix}android-share:before, +.#{$ionicons-prefix}android-social:before, +.#{$ionicons-prefix}android-social-user:before, +.#{$ionicons-prefix}android-sort:before, +.#{$ionicons-prefix}android-star:before, +.#{$ionicons-prefix}android-stopwatch:before, +.#{$ionicons-prefix}android-storage:before, +.#{$ionicons-prefix}android-system-back:before, +.#{$ionicons-prefix}android-system-home:before, +.#{$ionicons-prefix}android-system-windows:before, +.#{$ionicons-prefix}android-timer:before, +.#{$ionicons-prefix}android-trash:before, +.#{$ionicons-prefix}android-volume:before, +.#{$ionicons-prefix}android-wifi:before, +.#{$ionicons-prefix}archive:before, +.#{$ionicons-prefix}arrow-down-a:before, +.#{$ionicons-prefix}arrow-down-b:before, +.#{$ionicons-prefix}arrow-down-c:before, +.#{$ionicons-prefix}arrow-expand:before, +.#{$ionicons-prefix}arrow-graph-down-left:before, +.#{$ionicons-prefix}arrow-graph-down-right:before, +.#{$ionicons-prefix}arrow-graph-up-left:before, +.#{$ionicons-prefix}arrow-graph-up-right:before, +.#{$ionicons-prefix}arrow-left-a:before, +.#{$ionicons-prefix}arrow-left-b:before, +.#{$ionicons-prefix}arrow-left-c:before, +.#{$ionicons-prefix}arrow-move:before, +.#{$ionicons-prefix}arrow-resize:before, +.#{$ionicons-prefix}arrow-return-left:before, +.#{$ionicons-prefix}arrow-return-right:before, +.#{$ionicons-prefix}arrow-right-a:before, +.#{$ionicons-prefix}arrow-right-b:before, +.#{$ionicons-prefix}arrow-right-c:before, +.#{$ionicons-prefix}arrow-shrink:before, +.#{$ionicons-prefix}arrow-swap:before, +.#{$ionicons-prefix}arrow-up-a:before, +.#{$ionicons-prefix}arrow-up-b:before, +.#{$ionicons-prefix}arrow-up-c:before, +.#{$ionicons-prefix}at:before, +.#{$ionicons-prefix}bag:before, +.#{$ionicons-prefix}battery-charging:before, +.#{$ionicons-prefix}battery-empty:before, +.#{$ionicons-prefix}battery-full:before, +.#{$ionicons-prefix}battery-half:before, +.#{$ionicons-prefix}battery-low:before, +.#{$ionicons-prefix}beaker:before, +.#{$ionicons-prefix}beer:before, +.#{$ionicons-prefix}bluetooth:before, +.#{$ionicons-prefix}bookmark:before, +.#{$ionicons-prefix}briefcase:before, +.#{$ionicons-prefix}bug:before, +.#{$ionicons-prefix}calculator:before, +.#{$ionicons-prefix}calendar:before, +.#{$ionicons-prefix}camera:before, +.#{$ionicons-prefix}card:before, +.#{$ionicons-prefix}chatbox:before, +.#{$ionicons-prefix}chatbox-working:before, +.#{$ionicons-prefix}chatboxes:before, +.#{$ionicons-prefix}chatbubble:before, +.#{$ionicons-prefix}chatbubble-working:before, +.#{$ionicons-prefix}chatbubbles:before, +.#{$ionicons-prefix}checkmark:before, +.#{$ionicons-prefix}checkmark-circled:before, +.#{$ionicons-prefix}checkmark-round:before, +.#{$ionicons-prefix}chevron-down:before, +.#{$ionicons-prefix}chevron-left:before, +.#{$ionicons-prefix}chevron-right:before, +.#{$ionicons-prefix}chevron-up:before, +.#{$ionicons-prefix}clipboard:before, +.#{$ionicons-prefix}clock:before, +.#{$ionicons-prefix}close:before, +.#{$ionicons-prefix}close-circled:before, +.#{$ionicons-prefix}close-round:before, +.#{$ionicons-prefix}cloud:before, +.#{$ionicons-prefix}code:before, +.#{$ionicons-prefix}code-download:before, +.#{$ionicons-prefix}code-working:before, +.#{$ionicons-prefix}coffee:before, +.#{$ionicons-prefix}compass:before, +.#{$ionicons-prefix}compose:before, +.#{$ionicons-prefix}connection-bars:before, +.#{$ionicons-prefix}contrast:before, +.#{$ionicons-prefix}disc:before, +.#{$ionicons-prefix}document:before, +.#{$ionicons-prefix}document-text:before, +.#{$ionicons-prefix}drag:before, +.#{$ionicons-prefix}earth:before, +.#{$ionicons-prefix}edit:before, +.#{$ionicons-prefix}egg:before, +.#{$ionicons-prefix}eject:before, +.#{$ionicons-prefix}email:before, +.#{$ionicons-prefix}eye:before, +.#{$ionicons-prefix}eye-disabled:before, +.#{$ionicons-prefix}female:before, +.#{$ionicons-prefix}filing:before, +.#{$ionicons-prefix}film-marker:before, +.#{$ionicons-prefix}flag:before, +.#{$ionicons-prefix}flash:before, +.#{$ionicons-prefix}flash-off:before, +.#{$ionicons-prefix}flask:before, +.#{$ionicons-prefix}folder:before, +.#{$ionicons-prefix}fork:before, +.#{$ionicons-prefix}fork-repo:before, +.#{$ionicons-prefix}forward:before, +.#{$ionicons-prefix}game-controller-a:before, +.#{$ionicons-prefix}game-controller-b:before, +.#{$ionicons-prefix}gear-a:before, +.#{$ionicons-prefix}gear-b:before, +.#{$ionicons-prefix}grid:before, +.#{$ionicons-prefix}hammer:before, +.#{$ionicons-prefix}headphone:before, +.#{$ionicons-prefix}heart:before, +.#{$ionicons-prefix}help:before, +.#{$ionicons-prefix}help-buoy:before, +.#{$ionicons-prefix}help-circled:before, +.#{$ionicons-prefix}home:before, +.#{$ionicons-prefix}icecream:before, +.#{$ionicons-prefix}icon-social-google-plus:before, +.#{$ionicons-prefix}icon-social-google-plus-outline:before, +.#{$ionicons-prefix}image:before, +.#{$ionicons-prefix}images:before, +.#{$ionicons-prefix}information:before, +.#{$ionicons-prefix}information-circled:before, +.#{$ionicons-prefix}ionic:before, +.#{$ionicons-prefix}ios7-alarm:before, +.#{$ionicons-prefix}ios7-alarm-outline:before, +.#{$ionicons-prefix}ios7-albums:before, +.#{$ionicons-prefix}ios7-albums-outline:before, +.#{$ionicons-prefix}ios7-arrow-back:before, +.#{$ionicons-prefix}ios7-arrow-down:before, +.#{$ionicons-prefix}ios7-arrow-forward:before, +.#{$ionicons-prefix}ios7-arrow-left:before, +.#{$ionicons-prefix}ios7-arrow-right:before, +.#{$ionicons-prefix}ios7-arrow-thin-down:before, +.#{$ionicons-prefix}ios7-arrow-thin-left:before, +.#{$ionicons-prefix}ios7-arrow-thin-right:before, +.#{$ionicons-prefix}ios7-arrow-thin-up:before, +.#{$ionicons-prefix}ios7-arrow-up:before, +.#{$ionicons-prefix}ios7-at:before, +.#{$ionicons-prefix}ios7-at-outline:before, +.#{$ionicons-prefix}ios7-bell:before, +.#{$ionicons-prefix}ios7-bell-outline:before, +.#{$ionicons-prefix}ios7-bolt:before, +.#{$ionicons-prefix}ios7-bolt-outline:before, +.#{$ionicons-prefix}ios7-bookmarks:before, +.#{$ionicons-prefix}ios7-bookmarks-outline:before, +.#{$ionicons-prefix}ios7-box:before, +.#{$ionicons-prefix}ios7-box-outline:before, +.#{$ionicons-prefix}ios7-briefcase:before, +.#{$ionicons-prefix}ios7-briefcase-outline:before, +.#{$ionicons-prefix}ios7-browsers:before, +.#{$ionicons-prefix}ios7-browsers-outline:before, +.#{$ionicons-prefix}ios7-calculator:before, +.#{$ionicons-prefix}ios7-calculator-outline:before, +.#{$ionicons-prefix}ios7-calendar:before, +.#{$ionicons-prefix}ios7-calendar-outline:before, +.#{$ionicons-prefix}ios7-camera:before, +.#{$ionicons-prefix}ios7-camera-outline:before, +.#{$ionicons-prefix}ios7-cart:before, +.#{$ionicons-prefix}ios7-cart-outline:before, +.#{$ionicons-prefix}ios7-chatboxes:before, +.#{$ionicons-prefix}ios7-chatboxes-outline:before, +.#{$ionicons-prefix}ios7-chatbubble:before, +.#{$ionicons-prefix}ios7-chatbubble-outline:before, +.#{$ionicons-prefix}ios7-checkmark:before, +.#{$ionicons-prefix}ios7-checkmark-empty:before, +.#{$ionicons-prefix}ios7-checkmark-outline:before, +.#{$ionicons-prefix}ios7-circle-filled:before, +.#{$ionicons-prefix}ios7-circle-outline:before, +.#{$ionicons-prefix}ios7-clock:before, +.#{$ionicons-prefix}ios7-clock-outline:before, +.#{$ionicons-prefix}ios7-close:before, +.#{$ionicons-prefix}ios7-close-empty:before, +.#{$ionicons-prefix}ios7-close-outline:before, +.#{$ionicons-prefix}ios7-cloud:before, +.#{$ionicons-prefix}ios7-cloud-download:before, +.#{$ionicons-prefix}ios7-cloud-download-outline:before, +.#{$ionicons-prefix}ios7-cloud-outline:before, +.#{$ionicons-prefix}ios7-cloud-upload:before, +.#{$ionicons-prefix}ios7-cloud-upload-outline:before, +.#{$ionicons-prefix}ios7-cloudy:before, +.#{$ionicons-prefix}ios7-cloudy-night:before, +.#{$ionicons-prefix}ios7-cloudy-night-outline:before, +.#{$ionicons-prefix}ios7-cloudy-outline:before, +.#{$ionicons-prefix}ios7-cog:before, +.#{$ionicons-prefix}ios7-cog-outline:before, +.#{$ionicons-prefix}ios7-compose:before, +.#{$ionicons-prefix}ios7-compose-outline:before, +.#{$ionicons-prefix}ios7-contact:before, +.#{$ionicons-prefix}ios7-contact-outline:before, +.#{$ionicons-prefix}ios7-copy:before, +.#{$ionicons-prefix}ios7-copy-outline:before, +.#{$ionicons-prefix}ios7-download:before, +.#{$ionicons-prefix}ios7-download-outline:before, +.#{$ionicons-prefix}ios7-drag:before, +.#{$ionicons-prefix}ios7-email:before, +.#{$ionicons-prefix}ios7-email-outline:before, +.#{$ionicons-prefix}ios7-eye:before, +.#{$ionicons-prefix}ios7-eye-outline:before, +.#{$ionicons-prefix}ios7-fastforward:before, +.#{$ionicons-prefix}ios7-fastforward-outline:before, +.#{$ionicons-prefix}ios7-filing:before, +.#{$ionicons-prefix}ios7-filing-outline:before, +.#{$ionicons-prefix}ios7-film:before, +.#{$ionicons-prefix}ios7-film-outline:before, +.#{$ionicons-prefix}ios7-flag:before, +.#{$ionicons-prefix}ios7-flag-outline:before, +.#{$ionicons-prefix}ios7-folder:before, +.#{$ionicons-prefix}ios7-folder-outline:before, +.#{$ionicons-prefix}ios7-gear:before, +.#{$ionicons-prefix}ios7-gear-outline:before, +.#{$ionicons-prefix}ios7-glasses:before, +.#{$ionicons-prefix}ios7-glasses-outline:before, +.#{$ionicons-prefix}ios7-heart:before, +.#{$ionicons-prefix}ios7-heart-outline:before, +.#{$ionicons-prefix}ios7-help:before, +.#{$ionicons-prefix}ios7-help-empty:before, +.#{$ionicons-prefix}ios7-help-outline:before, +.#{$ionicons-prefix}ios7-infinite:before, +.#{$ionicons-prefix}ios7-infinite-outline:before, +.#{$ionicons-prefix}ios7-information:before, +.#{$ionicons-prefix}ios7-information-empty:before, +.#{$ionicons-prefix}ios7-information-outline:before, +.#{$ionicons-prefix}ios7-ionic-outline:before, +.#{$ionicons-prefix}ios7-keypad:before, +.#{$ionicons-prefix}ios7-keypad-outline:before, +.#{$ionicons-prefix}ios7-lightbulb:before, +.#{$ionicons-prefix}ios7-lightbulb-outline:before, +.#{$ionicons-prefix}ios7-location:before, +.#{$ionicons-prefix}ios7-location-outline:before, +.#{$ionicons-prefix}ios7-locked:before, +.#{$ionicons-prefix}ios7-locked-outline:before, +.#{$ionicons-prefix}ios7-medkit:before, +.#{$ionicons-prefix}ios7-medkit-outline:before, +.#{$ionicons-prefix}ios7-mic:before, +.#{$ionicons-prefix}ios7-mic-off:before, +.#{$ionicons-prefix}ios7-mic-outline:before, +.#{$ionicons-prefix}ios7-minus:before, +.#{$ionicons-prefix}ios7-minus-empty:before, +.#{$ionicons-prefix}ios7-minus-outline:before, +.#{$ionicons-prefix}ios7-monitor:before, +.#{$ionicons-prefix}ios7-monitor-outline:before, +.#{$ionicons-prefix}ios7-moon:before, +.#{$ionicons-prefix}ios7-moon-outline:before, +.#{$ionicons-prefix}ios7-more:before, +.#{$ionicons-prefix}ios7-more-outline:before, +.#{$ionicons-prefix}ios7-musical-note:before, +.#{$ionicons-prefix}ios7-musical-notes:before, +.#{$ionicons-prefix}ios7-navigate:before, +.#{$ionicons-prefix}ios7-navigate-outline:before, +.#{$ionicons-prefix}ios7-paperplane:before, +.#{$ionicons-prefix}ios7-paperplane-outline:before, +.#{$ionicons-prefix}ios7-partlysunny:before, +.#{$ionicons-prefix}ios7-partlysunny-outline:before, +.#{$ionicons-prefix}ios7-pause:before, +.#{$ionicons-prefix}ios7-pause-outline:before, +.#{$ionicons-prefix}ios7-people:before, +.#{$ionicons-prefix}ios7-people-outline:before, +.#{$ionicons-prefix}ios7-person:before, +.#{$ionicons-prefix}ios7-person-outline:before, +.#{$ionicons-prefix}ios7-personadd:before, +.#{$ionicons-prefix}ios7-personadd-outline:before, +.#{$ionicons-prefix}ios7-photos:before, +.#{$ionicons-prefix}ios7-photos-outline:before, +.#{$ionicons-prefix}ios7-pie:before, +.#{$ionicons-prefix}ios7-pie-outline:before, +.#{$ionicons-prefix}ios7-play:before, +.#{$ionicons-prefix}ios7-play-outline:before, +.#{$ionicons-prefix}ios7-plus:before, +.#{$ionicons-prefix}ios7-plus-empty:before, +.#{$ionicons-prefix}ios7-plus-outline:before, +.#{$ionicons-prefix}ios7-pricetag:before, +.#{$ionicons-prefix}ios7-pricetag-outline:before, +.#{$ionicons-prefix}ios7-printer:before, +.#{$ionicons-prefix}ios7-printer-outline:before, +.#{$ionicons-prefix}ios7-rainy:before, +.#{$ionicons-prefix}ios7-rainy-outline:before, +.#{$ionicons-prefix}ios7-recording:before, +.#{$ionicons-prefix}ios7-recording-outline:before, +.#{$ionicons-prefix}ios7-redo:before, +.#{$ionicons-prefix}ios7-redo-outline:before, +.#{$ionicons-prefix}ios7-refresh:before, +.#{$ionicons-prefix}ios7-refresh-empty:before, +.#{$ionicons-prefix}ios7-refresh-outline:before, +.#{$ionicons-prefix}ios7-reload:before, +.#{$ionicons-prefix}ios7-rewind:before, +.#{$ionicons-prefix}ios7-rewind-outline:before, +.#{$ionicons-prefix}ios7-search:before, +.#{$ionicons-prefix}ios7-search-strong:before, +.#{$ionicons-prefix}ios7-skipbackward:before, +.#{$ionicons-prefix}ios7-skipbackward-outline:before, +.#{$ionicons-prefix}ios7-skipforward:before, +.#{$ionicons-prefix}ios7-skipforward-outline:before, +.#{$ionicons-prefix}ios7-snowy:before, +.#{$ionicons-prefix}ios7-speedometer:before, +.#{$ionicons-prefix}ios7-speedometer-outline:before, +.#{$ionicons-prefix}ios7-star:before, +.#{$ionicons-prefix}ios7-star-outline:before, +.#{$ionicons-prefix}ios7-stopwatch:before, +.#{$ionicons-prefix}ios7-stopwatch-outline:before, +.#{$ionicons-prefix}ios7-sunny:before, +.#{$ionicons-prefix}ios7-sunny-outline:before, +.#{$ionicons-prefix}ios7-telephone:before, +.#{$ionicons-prefix}ios7-telephone-outline:before, +.#{$ionicons-prefix}ios7-thunderstorm:before, +.#{$ionicons-prefix}ios7-thunderstorm-outline:before, +.#{$ionicons-prefix}ios7-time:before, +.#{$ionicons-prefix}ios7-time-outline:before, +.#{$ionicons-prefix}ios7-timer:before, +.#{$ionicons-prefix}ios7-timer-outline:before, +.#{$ionicons-prefix}ios7-trash:before, +.#{$ionicons-prefix}ios7-trash-outline:before, +.#{$ionicons-prefix}ios7-undo:before, +.#{$ionicons-prefix}ios7-undo-outline:before, +.#{$ionicons-prefix}ios7-unlocked:before, +.#{$ionicons-prefix}ios7-unlocked-outline:before, +.#{$ionicons-prefix}ios7-upload:before, +.#{$ionicons-prefix}ios7-upload-outline:before, +.#{$ionicons-prefix}ios7-videocam:before, +.#{$ionicons-prefix}ios7-videocam-outline:before, +.#{$ionicons-prefix}ios7-volume-high:before, +.#{$ionicons-prefix}ios7-volume-low:before, +.#{$ionicons-prefix}ios7-wineglass:before, +.#{$ionicons-prefix}ios7-wineglass-outline:before, +.#{$ionicons-prefix}ios7-world:before, +.#{$ionicons-prefix}ios7-world-outline:before, +.#{$ionicons-prefix}ipad:before, +.#{$ionicons-prefix}iphone:before, +.#{$ionicons-prefix}ipod:before, +.#{$ionicons-prefix}jet:before, +.#{$ionicons-prefix}key:before, +.#{$ionicons-prefix}knife:before, +.#{$ionicons-prefix}laptop:before, +.#{$ionicons-prefix}leaf:before, +.#{$ionicons-prefix}levels:before, +.#{$ionicons-prefix}lightbulb:before, +.#{$ionicons-prefix}link:before, +.#{$ionicons-prefix}load-a:before, +.#{$ionicons-prefix}load-b:before, +.#{$ionicons-prefix}load-c:before, +.#{$ionicons-prefix}load-d:before, +.#{$ionicons-prefix}location:before, +.#{$ionicons-prefix}locked:before, +.#{$ionicons-prefix}log-in:before, +.#{$ionicons-prefix}log-out:before, +.#{$ionicons-prefix}loop:before, +.#{$ionicons-prefix}magnet:before, +.#{$ionicons-prefix}male:before, +.#{$ionicons-prefix}man:before, +.#{$ionicons-prefix}map:before, +.#{$ionicons-prefix}medkit:before, +.#{$ionicons-prefix}mic-a:before, +.#{$ionicons-prefix}mic-b:before, +.#{$ionicons-prefix}mic-c:before, +.#{$ionicons-prefix}minus:before, +.#{$ionicons-prefix}minus-circled:before, +.#{$ionicons-prefix}minus-round:before, +.#{$ionicons-prefix}model-s:before, +.#{$ionicons-prefix}monitor:before, +.#{$ionicons-prefix}more:before, +.#{$ionicons-prefix}music-note:before, +.#{$ionicons-prefix}navicon:before, +.#{$ionicons-prefix}navicon-round:before, +.#{$ionicons-prefix}navigate:before, +.#{$ionicons-prefix}no-smoking:before, +.#{$ionicons-prefix}nuclear:before, +.#{$ionicons-prefix}paper-airplane:before, +.#{$ionicons-prefix}paperclip:before, +.#{$ionicons-prefix}pause:before, +.#{$ionicons-prefix}person:before, +.#{$ionicons-prefix}person-add:before, +.#{$ionicons-prefix}person-stalker:before, +.#{$ionicons-prefix}pie-graph:before, +.#{$ionicons-prefix}pin:before, +.#{$ionicons-prefix}pinpoint:before, +.#{$ionicons-prefix}pizza:before, +.#{$ionicons-prefix}plane:before, +.#{$ionicons-prefix}play:before, +.#{$ionicons-prefix}playstation:before, +.#{$ionicons-prefix}plus:before, +.#{$ionicons-prefix}plus-circled:before, +.#{$ionicons-prefix}plus-round:before, +.#{$ionicons-prefix}pound:before, +.#{$ionicons-prefix}power:before, +.#{$ionicons-prefix}pricetag:before, +.#{$ionicons-prefix}pricetags:before, +.#{$ionicons-prefix}printer:before, +.#{$ionicons-prefix}radio-waves:before, +.#{$ionicons-prefix}record:before, +.#{$ionicons-prefix}refresh:before, +.#{$ionicons-prefix}reply:before, +.#{$ionicons-prefix}reply-all:before, +.#{$ionicons-prefix}search:before, +.#{$ionicons-prefix}settings:before, +.#{$ionicons-prefix}share:before, +.#{$ionicons-prefix}shuffle:before, +.#{$ionicons-prefix}skip-backward:before, +.#{$ionicons-prefix}skip-forward:before, +.#{$ionicons-prefix}social-android:before, +.#{$ionicons-prefix}social-android-outline:before, +.#{$ionicons-prefix}social-apple:before, +.#{$ionicons-prefix}social-apple-outline:before, +.#{$ionicons-prefix}social-bitcoin:before, +.#{$ionicons-prefix}social-bitcoin-outline:before, +.#{$ionicons-prefix}social-buffer:before, +.#{$ionicons-prefix}social-buffer-outline:before, +.#{$ionicons-prefix}social-designernews:before, +.#{$ionicons-prefix}social-designernews-outline:before, +.#{$ionicons-prefix}social-dribbble:before, +.#{$ionicons-prefix}social-dribbble-outline:before, +.#{$ionicons-prefix}social-dropbox:before, +.#{$ionicons-prefix}social-dropbox-outline:before, +.#{$ionicons-prefix}social-facebook:before, +.#{$ionicons-prefix}social-facebook-outline:before, +.#{$ionicons-prefix}social-freebsd-devil:before, +.#{$ionicons-prefix}social-github:before, +.#{$ionicons-prefix}social-github-outline:before, +.#{$ionicons-prefix}social-googleplus:before, +.#{$ionicons-prefix}social-googleplus-outline:before, +.#{$ionicons-prefix}social-hackernews:before, +.#{$ionicons-prefix}social-hackernews-outline:before, +.#{$ionicons-prefix}social-linkedin:before, +.#{$ionicons-prefix}social-linkedin-outline:before, +.#{$ionicons-prefix}social-pinterest:before, +.#{$ionicons-prefix}social-pinterest-outline:before, +.#{$ionicons-prefix}social-reddit:before, +.#{$ionicons-prefix}social-reddit-outline:before, +.#{$ionicons-prefix}social-rss:before, +.#{$ionicons-prefix}social-rss-outline:before, +.#{$ionicons-prefix}social-skype:before, +.#{$ionicons-prefix}social-skype-outline:before, +.#{$ionicons-prefix}social-tumblr:before, +.#{$ionicons-prefix}social-tumblr-outline:before, +.#{$ionicons-prefix}social-tux:before, +.#{$ionicons-prefix}social-twitter:before, +.#{$ionicons-prefix}social-twitter-outline:before, +.#{$ionicons-prefix}social-vimeo:before, +.#{$ionicons-prefix}social-vimeo-outline:before, +.#{$ionicons-prefix}social-windows:before, +.#{$ionicons-prefix}social-windows-outline:before, +.#{$ionicons-prefix}social-wordpress:before, +.#{$ionicons-prefix}social-wordpress-outline:before, +.#{$ionicons-prefix}social-yahoo:before, +.#{$ionicons-prefix}social-yahoo-outline:before, +.#{$ionicons-prefix}social-youtube:before, +.#{$ionicons-prefix}social-youtube-outline:before, +.#{$ionicons-prefix}speakerphone:before, +.#{$ionicons-prefix}speedometer:before, +.#{$ionicons-prefix}spoon:before, +.#{$ionicons-prefix}star:before, +.#{$ionicons-prefix}stats-bars:before, +.#{$ionicons-prefix}steam:before, +.#{$ionicons-prefix}stop:before, +.#{$ionicons-prefix}thermometer:before, +.#{$ionicons-prefix}thumbsdown:before, +.#{$ionicons-prefix}thumbsup:before, +.#{$ionicons-prefix}trash-a:before, +.#{$ionicons-prefix}trash-b:before, +.#{$ionicons-prefix}umbrella:before, +.#{$ionicons-prefix}unlocked:before, +.#{$ionicons-prefix}upload:before, +.#{$ionicons-prefix}usb:before, +.#{$ionicons-prefix}videocamera:before, +.#{$ionicons-prefix}volume-high:before, +.#{$ionicons-prefix}volume-low:before, +.#{$ionicons-prefix}volume-medium:before, +.#{$ionicons-prefix}volume-mute:before, +.#{$ionicons-prefix}waterdrop:before, +.#{$ionicons-prefix}wifi:before, +.#{$ionicons-prefix}wineglass:before, +.#{$ionicons-prefix}woman:before, +.#{$ionicons-prefix}wrench:before, +.#{$ionicons-prefix}xbox:before { @extend .ion; } @@ -1054,4 +1054,4 @@ .#{$ionicons-prefix}wineglass:before { content: $ionicon-var-wineglass; } .#{$ionicons-prefix}woman:before { content: $ionicon-var-woman; } .#{$ionicons-prefix}wrench:before { content: $ionicon-var-wrench; } -.#{$ionicons-prefix}xbox:before { content: $ionicon-var-xbox; } \ No newline at end of file +.#{$ionicons-prefix}xbox:before { content: $ionicon-var-xbox; } From 40cd6f729062a3bc72bdc36ae6efee6bc9411fa5 Mon Sep 17 00:00:00 2001 From: Adam Bradley Date: Wed, 7 May 2014 13:48:06 -0500 Subject: [PATCH 6/9] feat(touch-action): add touch-action: manipulation IE supports `-ms-touch-action: manipulation`, and `touch-action` is making it through the standards process. --- scss/_scaffolding.scss | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/scss/_scaffolding.scss b/scss/_scaffolding.scss index adb0b57949..070ed83922 100644 --- a/scss/_scaffolding.scss +++ b/scss/_scaffolding.scss @@ -10,6 +10,11 @@ @include box-sizing(border-box); } +html { + -ms-touch-action: manipulation; + touch-action: manipulation; +} + body, .ionic-body { @include touch-callout(none); From 25c02a3f2c9b5df1cc0d9ef2ead97b2a06fbd294 Mon Sep 17 00:00:00 2001 From: Adam Bradley Date: Wed, 7 May 2014 14:10:00 -0500 Subject: [PATCH 7/9] add msTransform and msTransition to CSS polyfill --- js/utils/poly.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/js/utils/poly.js b/js/utils/poly.js index 95b18df100..5cf7f0447a 100644 --- a/js/utils/poly.js +++ b/js/utils/poly.js @@ -8,7 +8,7 @@ // transform var i, keys = ['webkitTransform', 'transform', '-webkit-transform', 'webkit-transform', - '-moz-transform', 'moz-transform', 'MozTransform', 'mozTransform']; + '-moz-transform', 'moz-transform', 'MozTransform', 'mozTransform', 'msTransform']; for(i = 0; i < keys.length; i++) { if(document.documentElement.style[keys[i]] !== undefined) { @@ -18,7 +18,7 @@ } // transition - keys = ['webkitTransition', 'mozTransition', 'transition']; + keys = ['webkitTransition', 'mozTransition', 'msTransition', 'transition']; for(i = 0; i < keys.length; i++) { if(document.documentElement.style[keys[i]] !== undefined) { ionic.CSS.TRANSITION = keys[i]; From 08e4b3d95b25bcfd8b297b4700c9f22f7ae4ceaf Mon Sep 17 00:00:00 2001 From: Adam Bradley Date: Wed, 7 May 2014 14:48:36 -0500 Subject: [PATCH 8/9] feat(platform): added isWindowsPhone() method --- js/utils/platform.js | 27 +++++++++++++++++----- test/unit/angular/service/platform.unit.js | 8 +++++++ test/unit/utils/tap.unit.js | 2 +- 3 files changed, 30 insertions(+), 7 deletions(-) diff --git a/js/utils/platform.js b/js/utils/platform.js index 5af319faef..9c7694124e 100644 --- a/js/utils/platform.js +++ b/js/utils/platform.js @@ -1,5 +1,9 @@ (function(window, document, ionic) { + var IOS = 'ios'; + var ANDROID = 'android'; + var WINDOWS_PHONE = 'windowsphone'; + /** * @ngdoc utility * @name ionic.Platform @@ -142,7 +146,7 @@ * @returns {boolean} Whether we are running on iOS. */ isIOS: function() { - return this.is('ios'); + return this.is(IOS); }, /** * @ngdoc method @@ -150,7 +154,15 @@ * @returns {boolean} Whether we are running on Android. */ isAndroid: function() { - return this.is('android'); + return this.is(ANDROID); + }, + /** + * @ngdoc method + * @name ionic.Platform#isWindowsPhone + * @returns {boolean} Whether we are running on Windows Phone. + */ + isWindowsPhone: function() { + return this.is(WINDOWS_PHONE); }, /** @@ -171,11 +183,13 @@ if(typeof n != 'undefined' && n !== null && n.length) { platformName = n.toLowerCase(); } else if(this.ua.indexOf('Android') > 0) { - platformName = 'android'; + platformName = ANDROID; } else if(this.ua.indexOf('iPhone') > -1 || this.ua.indexOf('iPad') > -1 || this.ua.indexOf('iPod') > -1) { - platformName = 'ios'; + platformName = IOS; + } else if(this.ua.indexOf('Windows Phone') > -1) { + platformName = WINDOWS_PHONE; } else { - platformName = window.navigator.platform && window.navigator.platform.toLowerCase().split(' ')[0] || ''; + platformName = window.navigator.platform && navigator.platform.toLowerCase().split(' ')[0] || ''; } }, @@ -209,7 +223,8 @@ var pName = this.platform(); var versionMatch = { 'android': /Android (\d+).(\d+)?/, - 'ios': /OS (\d+)_(\d+)?/ + 'ios': /OS (\d+)_(\d+)?/, + 'windowsphone': /Windows Phone (\d+).(\d+)?/ }; if(versionMatch[pName]) { v = this.ua.match( versionMatch[pName] ); diff --git a/test/unit/angular/service/platform.unit.js b/test/unit/angular/service/platform.unit.js index 762bcb9bd0..918381ed2b 100644 --- a/test/unit/angular/service/platform.unit.js +++ b/test/unit/angular/service/platform.unit.js @@ -71,6 +71,14 @@ describe('Ionic Platform Service', function() { expect(ionic.Platform.version()).toEqual(2.2); }); + it('set windowsphone with user agent', function() { + ionic.Platform.ua = 'Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch;'; + ionic.Platform.setPlatform(undefined); + ionic.Platform.setVersion(undefined); + expect(ionic.Platform.platform()).toEqual('windowsphone'); + expect(ionic.Platform.version()).toEqual(8); + }); + it('set ios with iPhone user agent', function() { ionic.Platform.ua = 'Mozilla/5.0 (iPhone; CPU iPhone OS 6_1 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5376e Safari/8536.25'; ionic.Platform.setPlatform(undefined); diff --git a/test/unit/utils/tap.unit.js b/test/unit/utils/tap.unit.js index f24dac8590..889f862e14 100644 --- a/test/unit/utils/tap.unit.js +++ b/test/unit/utils/tap.unit.js @@ -82,7 +82,7 @@ Tested on: */ -window.console.debug = function(){}; +window.console.log = function(){}; describe('Ionic Tap', function() { var deregisterTap; From d2df69d6658501ff39e00a7cdcc2d74db268d2fd Mon Sep 17 00:00:00 2001 From: Adam Bradley Date: Wed, 7 May 2014 15:47:01 -0500 Subject: [PATCH 9/9] overflow:hidden to html element --- scss/_scaffolding.scss | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/scss/_scaffolding.scss b/scss/_scaffolding.scss index 070ed83922..464e24b601 100644 --- a/scss/_scaffolding.scss +++ b/scss/_scaffolding.scss @@ -11,6 +11,7 @@ } html { + overflow: hidden; -ms-touch-action: manipulation; touch-action: manipulation; } @@ -69,8 +70,8 @@ body.grade-c { } .scroll-view { - display: block; position: relative; + display: block; overflow: hidden; // Hide the top border if any @@ -184,8 +185,8 @@ body.grade-c { .text-refreshing, .text-pulling { - line-height: 16px; font-size: 16px; + line-height: 16px; } &.ionic-refresher-with-text { bottom: 10px; @@ -201,12 +202,12 @@ body.grade-c { transform-style: preserve-3d; } .icon-pulling { - -webkit-transform: translate3d(0,0,0) rotate(0deg); - transform: translate3d(0,0,0) rotate(0deg); @include animation-name(refresh-spin-back); @include animation-duration(200ms); @include animation-timing-function(linear); @include animation-fill-mode(none); + -webkit-transform: translate3d(0,0,0) rotate(0deg); + transform: translate3d(0,0,0) rotate(0deg); } .icon-refreshing, .text-refreshing {