1.0.0-beta.2 'aluminum' released!

Apologies for the long wait! We had some big things we were working on: more reliable tapping, keyboard fixes, and virtual scroll.

We are going back to a more rapid release cycle, so expect beta.3 with a few more minor fixes very soon, followed by beta.4 next week, as we progress towards 1.0 final.

Thanks Ionites!

1.0.0-beta.2 “aluminum” (2014-04-28)

Bug Fixes

  • $ionicActionSheet: provide default functions for options (ba39fb00, closes #1013)
  • $ionicLoading: stop race condition with show and hide (eb1dee93, closes #1100)
  • $ionicModal: make it use jqLite#remove() (104c6420, closes #1138)
  • $ionicPopup:
    • stop race condition with show then hide (698c93fc)
    • make it work if jquery is included (21ff7547, closes #1027)
  • active: Taps/clicks now use .activated instead of .active, closes #913 (870dcd6f)
  • bar: Increased button icon font size (8847774f)
  • checkbox:
    • Remove tap highlight and fix checkbox appearance in Firefox, closes #496 (b0b446d5)
    • stretch checkbox’s clickable area to full width (5238f8f3)
    • Entire row of an .item w/ a checkbox is now tappable, closes #995 (ac94bb23)
  • header: Header input too long on Android 4.2, closes #1081 (b654e02e)
  • input: Fix to hide input overlays on old Android (0e9072e4)
  • ion-scroll:
  • ionContent:
    • fix scoping with ngController (6abce8f7, closes #1155)
    • do not let child scopes inherit has-* classes (a5eb48b9, closes #924)
  • ionHeaderBar:
    • do not tapScrollToTop for inputs (5722900a, closes #1199)
    • make it align after elements properly load (d00aaa59)
  • ionInfiniteScroll:
    • remove listener on $destroy (08da6f75)
    • work properly if past horizontal boundaries (d58fff72, closes #1073)
  • ionList:
    • disable swiping of items while option buttons are shown (81676e6e)
    • do not let option button click propagate to item (a845ff34)
    • disable tap on element being edited (634b3971)
    • make reorder position work if list is offset (90da2da6)
    • show reorder/delete on item creation if list is showing (09a77299, closes #1181)
  • ionNavBar: adjust has-header if ionNavBar is hidden (41b73abf, closes #927)
  • ionNavButtons:
    • fix side=“left” flicker with back button on ios (b6266889)
    • multiple ionNavButtons elements align correctly (58de2671, closes #930)
  • ionRefresher: do not animate pulling-text (5c893ab8, closes #909)
  • ionTab: make sure all tab-nav attributes are re-interpolated on change (757f1819, closes #955, #1071)
  • ionView: do not set navbar title if no title attr set (d53eab81, closes #915)
  • ionicPopup: if input exists, focus it. else, focus first button (93aa16a7, closes #1176)
  • ionicTabBar: detect if matches state in all cases (ee2b7686)
  • item:
    • Vertically align nav icon w/out flexbox to prevent android crashes, #928 (5b0f5d02)
    • Fix css overflow overrides for .item-text-wrap (04b4d771)
    • Fix delete icon alignment in .item-icon.left, closes #946 (044211de)
  • labels: Fix .input-label’s width for androids w/out full flex box support, #998 (096a01c1)
  • listView: fixed active state on scroll (040af824)
  • loading: fix not hiding after two shows, always cancel delay (4216266f, closes #1130)
  • modal: Increase delay of removing .modal-open to prevent focus under modals (83fd11c5)
  • navClear:
    • only set viewOptions if click leads to state change (4dffc5f6, closes #1043)
    • be sure it runs before ngClick (4f47bf24, closes #1047)
  • popup: Backwards compatible remove popup from DOM, closes #851 (441a21c4)
  • range: Fix range being able to slide when in a side menu, closes #318 (2fbdebcd)
  • refresher: get rid of flickers except on droid-4.4 (ad671848, closes #1014)
  • scroll:
    • Allow scrolling when touchstart target is an input, #1078 (8af018b1)
    • Fix input focus when tapped, do not scroll when target is an input, closes #1020 (66ecec70)
    • Do not ignore taps if the target was an input, #997 (e6f56237)
    • Fix scroll for devices w/out dataset support, closes #976 (bfcf2650)
  • scss: make tabs,header,footer aligned right with statusbar (c2a38a6d)
  • tabs: Tab icon align within nested tabs, closes #1093 (2a6f7029)
  • tabs-item-hide: only hide tab nav items (a7eb521c)
  • tap:
    • Do not preventDefault after input focus, #1068 (a977332f)
    • Remove 300ms delay when tapping select elements (cf686548)
    • Prevent clicks from firing after scrolling, #579 (cb602b58)
    • Deactivate elements during scroll at the same time click is ignored, #997 (3ee5ea77)
    • Do not simulate a click if it was from a touchcanel event, closes #1015 (78510099)
    • Prevent multiple clicks when overriding cordova object, closes #1022 (5f3a1d21)
    • Prevent “clicking” when scrolling (f3bd258c)
    • Increate isScrolledSinceStart from 2px radius to 15px, #970 (9a49129a)

Features

  • $ionicBackdrop: add backdrop show/hide service (730a33b9, closes #1084)
  • $ionicModal:
    • pass modal instance to modal.shown/modal.hidden events (a19e3b62, closes #1065)
    • show/hide/remove return promises for animating (39385008)
  • $ionicNavBarDelegate:
    • showBackButton returns whether bar is shown (933a555e, closes #1076)
    • showBar returns whether navbar is shown (24a415c3)
  • $ionicScrollDelegate:
    • add getScrollView(), getScrollPosition() (b5ef9313, closes #1117)
    • add scrollBy(left,top,animate) to delegate (f847c208, closes #987)
  • $ionicSideMenuDelegate:
  • avatar: Adding .item-avatar-left and deprecating .item-avatar (9bac6050)
  • collection-repeat: add repeat lsdirective for huge lists (f0a1c037)
  • grid: Added .row-baseline and .row-stretch (e0e7a83b)
  • ionCheckbox: allow ng-disabled attribute (d2e54a82, closes #939)
  • ionContent: don’t wrap in a .scroll element if scroll=“false” (73da93d4, closes #841)
  • ionNavBar: make back button animated (97257938, closes #1030)
  • ionSlideBox: add pager-click attribute (d6c960c2, closes #785)
  • loading: Moved loading scss to its own file and added variables, closes #984 (e3491864)
  • select: Styled select elements, both inline and as a list item (8a12f2d1)

Breaking Changes

  • $ionicPopup.show()'s button onTap function has changed.

When using $ionicPopup.show(), previously a button’s onTap function
would only result in closing the popup and resolving the promise if the
onTap(event) function returned a truthy value.

Now, a button’s onTap event will always close the popup and resolve
the popup’s promise, no matter the return value, by default. The only
way to prevent the popup from closing is to call
event.preventDefault().

Change your code from this:

$ionicPopup.show({
  buttons: [{
    onTap: function(event) {
      if (!shouldClosePopup) {
        return false;
      }
    }
  }]
});

To this:

$ionicPopup.show({
  buttons: [{
    onTap: function(event) {
      if (!shouldClosePopup) {
        event.preventDefault();
      }
    }
  }]
});

(cb1a5f62)

  • The developer should be stating exactly how an icon
    should show, but previously the right nav arrow icon violates this by
    automatically showing a right arrow when an item was an anchor or
    button. Instead of using the :after item selector, which was always
    applied by default, it uses the same markup as item-icon-right, which
    is easier to understand, customizable and not a hard coded default.

This change removes the :after nav icon styling, and creates a new
class, icon-accessory, based off of similar CSS. The change makes a
nav arrow highly customizable, allows RTL developers to easily control
the arrow direction, and the accessory class is something that’s
reusable.

An example of right side arrow using ion-chevron-right as the icon:

<a class="item item-icon-right" href="#">
  Check mail
  <i class="icon ion-chevron-right icon-accessory"></i>
</a>

(c7e3defc)

  • ionic.Platform.isCordova() has been renamed to
    ionic.Platform.isWebView()
    (5c300dd3)

  • ion-list syntax has changed in favor of simplicity &
    flexibility.

Relevant documentation:
ionList,
ionItem,
ionOptionButton,
ionReorderButton,
ionDeleteButton,
$ionicListDelegate.

To migrate, change your code from this:

<ion-list option-buttons="[{text:'hello',type:'button-positive',onTap:tap()}]"
          on-delete="onDelete(el)"
          delete-icon="ion-minus-circled"
          can-delete="true"
          show-delete="shouldShowDelete"
          on-reorder="onReorder(el, startIndex, toIndex)"
          reorder-icon="ion-navicon"
          can-reorder="true"
          show-reorder="shouldShowReorder">
  <ion-item ng-repeat="item in items">
    {{item}}
  </ion-item>
</ion-list>

To this:

<ion-list show-delete="shouldShowDelete"
          show-reorder="shouldShowReorder">
  <ion-item ng-repeat="item in items">
    {{item}}
    <ion-delete-button class="ion-minus-circled"
                       ng-click="onDelete(item)">
    </ion-delete-button>
    <ion-reorder-button class="ion-navicon"
                       ng-click="onReorder(item, $fromIndex, $toIndex)">
    </ion-reorder-button>
    <ion-option-button class="button-positive" ng-click="tap()">
      Hello
    </ion-option-button>
  </ion-item>
</ion-list>

(986dbac8)

  • Before, if you did not have a title attribute set on your
    ion-view, it would transition into that view and erase the navbar’s current
    title.

Now, if your ion-view does not have a title attribute set, the new
view will be transitioned in, but there will be no title change.

If you wish to have a blank title on your new view, you must now
explicitly set your ion-view's title attribute to an empty string.

To migrate your code, change from this:

<ion-view></ion-view>

To this:

<ion-view title=""></ion-view>

(d53eab81)

12 Likes

Great changes and bug fixes, thank you!

I have one issue with clicking now.
Using google maps, the google.maps.event.addListener(marker, 'click', function (event) {...} event no longer works on the iPhone. It works when testing on Chrome.

Codepen example

If your using chrome, try emulating with an iPhone 5, and you’ll see the click event does nothing.

Any ideas?

Try adding data-tap-disabled to your map container.

Worked!! thanks for the easy fix.

How does one upgrade a pre-existing project?

3 Likes

On phonegap 3.3.0 All the ng-click and ng-href not working after only a few clicks of the button work
But is it superior chrome
And missing the popups black background

1 Like

how can i love you more?

Just replace the files in the lib directory within www and read the announcement regarding the breaking changes.

3 Likes

On iOS7 simulator, I’m having to double tap everything to trigger a click. Back button, tabs, everything. Has anyone else seen this?

Is a npm update -g ionic suffisant to get the last version ?
Thank you.

Had to add data-tap-disabled="true like so:

<body animation="slide-left-right-ios7" data-tap-disabled="true">

Anyone know why?

Now testing iOS6, the tab bar at the bottom of my screen is not aligned properly, all my icons are cut half way through.

Hmm I can drag the entire bottom tab bar up and down and the entire view moves, including the nav bar. I guess I’ve stuffed something fundamental up?

Well be pushing a few things out today to fix these things.

Has anyone tested this on Firefox? Scrolling has been disabled since this update.