Releases: ionic-team/ionic-framework
v1.0.0-rc.1 "osmium-ostrich"
1.0.0-rc.1 "osmium-ostrich" (2015-03-16)
Bug Fixes
- initialize $scope.$tabSelected when nested tabs selected. (ec7bf202)
- activator: check classList exists (0bed91f3, closes #3295)
- barSubheader: fix border-bottom on android (b2841190)
- collectionRepeat:
- properly delete items when setting size to 0 (3dc6ab6a, closes #3299)
- fix a dom problem with margins and position:relative (83a20c61, closes #3277)
- fix problem with option & delete buttons (2c2662fe, closes #3280)
- make it work performantly with exposeAsideWhen (4f35d8e6, closes #3244)
- fix data change while page disconnected, computed dimensions while no data (4325025d, closes #3240, #3238)
- keyboard: shrink scrollView on date and select focus on iOS (4636cb0e)
- platform: revert b1f94da, #3279 (1c7b2883, closes #3175)
- scrollView: remove bottom margin on scroll content. (4f9d6fe7, closes #2910)
- subHeader: removes borders on android subheaders (ebe32265, closes #3265)
- tabs: correct tab leaving lifecycle events (082f30e6, closes #2869)
Features
v1.0.0-rc.0 "neodymium-newt"
1.0.0-rc.0 "neodymium-newt" (2015-03-05)
Bug Fixes
- $ionicLoading: make
hideOnStateChange
work if loader is delayed (878c8170, closes #3022) - angular:
.finally
syntax error in Android 2.3 (1f2d900e) - collectionRepeat:
- restore scrollView's normal behavior when repeater is destroyed (864b46aa, closes #2078)
- resize scrollView when data changes (88aebad3, closes #2523)
- properly resize, but only when scrollView size actually changes (b7a09689, closes #2935, #3054)
- don't rerender on window resize when view is cached (4f0598dd, closes #2677)
- properly display sibling elements after a collection-repeat (7913ee0f)
- Properly calcuate list height and show ion-infinite-scroll. (83899681, closes #2376)
- css: add height to item-image and fix nav-bar (c1ef4718)
- exposeAsideWhen: trigger a resize event when the aside is exposed (27298e92, closes #3054)
- gestures: improve drag/swipe response (a5881eae, closes #1729, #2674)
- history: index check before forwardViewId = null (2885258d)
- iframe: add .iframe-wrapper for scrollable iframe (b7cd6cb1, closes #1151)
- input: Fix inline input flexbox model to prevent input from being cut off (d68ecc16)
- ionItem: properly hide option buttons on scroll in collection-repeat (7fec8480, closes #1811, #2804)
- ionLoadingConfig: fix default loading template (9749bb97)
- ionReorder: stop icon from hiding on reorder (c5b35eee)
- listView:
- loading: options.hideOnStateChange: also hide on stateChangeError (3d128535, closes #3051)
- navBar:
- navButtons: fixed case where buttons would display under each other in 4.4 (eef1d32b)
- popover:
- scroll:
- hide the scrollbar on desktop so it matches content size of mobile (0e04f391)
- cleanup native scroll listeners only if activated (df6dcb96)
- fix IE mousewheel scroll (be094336)
- show scrollbars during native scrolling (ecfd0e07)
- do not click when scroll decelerating (e8a70f37, closes #1438, #2223, #2665)
- scrollDelegate: revert change that made all scroll* methods blur inputs (0145dc37, closes #2745)
- scrollView: higher velocity threshold for sliding (93643c41)
- sideMenu: check whether drag is enabled before dragging (acd0ff8f)
- sidemenu: prevent scroll during menu drag (51ed1824, closes #2808)
- styles: fix to tables in _variable.scss #2949 (9d676b0d)
- tabs:
- video: prevent styles from bleeding into html video tag (7e762b9c)
- viewSwitcher: do not finish transition from bubbled transitionend events (6fa75b7f, closes #3006, #3063)
Features
- actionsheet: android style/layout, iOS update (b837fb24)
- collectionRepeat:
- doubletap: add onDoubleTap directive (42569cca, closes #2292)
- header: remove bottom border when tabs top (f6566726)
- icons: svg loaders and ionicons v2.0.1 (6f50c87e)
- infiniteScroll: upgrade infinite scrolling spinner to use new ion-spinner directive (65aa2af9)
- ionReorder: better animations (cbe5c71c)
- ionSlideBox: hide/show pager depending on dynamic show-pager attribute ([c631a8e](https://github.co...
v1.0.0-beta.14 "magnesium-mongoose"
1.0.0-beta.14 "magnesium-mongoose" (2014-12-15)
Refactor:
- Cached Views:
- Previously, as a user navigated an app, each exiting view’s element and scope would be destroyed. If the same view was accessed again then the app would have to recreate the element. Views can now be cached to improve performance.
- Now, when a view is exited, its elements are left in the DOM, and its scope is disconnected from the cycle. When navigating to a view which is already cached, its scope is reconnected, and the existing element which was left in the DOM becomes the active view.
- This also allows for scroll position of previous views to be maintained (without skippy jumps).
- Config variables can be used to disable view caching, IE set to 0, or change the maximum number of views to cache.
- Individual ionViews can disable caching by using the
cache-view="false"
attribute, or from its$stateProvider.state
config. - Note: Views with many large images or videos should not be cached.
- The ionNavView docs have more further documentation.
- Navigation: Refactored for improved performance
- Reduced DOM manipulations
- Cached Views (see above)
- Increased transition FPS for smoother animation
- Angular v1.3:
- Upgraded Ionic to work with Angular v1.3.
- In general Ionic just works with the upgrade, but the required change was that animations in v1.3 uses promises, whereas in v1.2 animations used callbacks.
- Check out the Angular 1.3 ng-europe presentation and Migrating from 1.2 to 1.3 for more information.
Features:
- Platform Specific Transitions: Transitions between views now default to the transition style appropriate for each platform.
- For example, iOS will move forward by transitioning the entering view from right to center, and the exiting view from center to left. However, Android will transition with the exiting view going from bottom to center, covering the previous view, which remains stationary.
- Platform transitions are automatically applied by default, but config variables and custom CSS allows these defaults to be easily overridden.
- ionNavTitle: Use the nav title directive to set custom HTML the for the header bar's title from within an ionView template. This gives each view the ability to specify its own custom title, such as an image or any HTML, rather than being text-only.
- enable-menu-with-back-views: In many mobile apps, sidemenus are disabled on child views. The
enable-menu-with-back-views
attribute determines if the side menu is enabled when the back button is showing.- When set to
false
, any buttons/links with themenuToggle
directive will be hidden, and the user cannot swipe to open the menu. - When going back to the root page of the side menu (the page without a back button visible), menuToggle buttons will show again, and menus will be re-enabled.
- ionSideMenus docs
- When set to
- menuClose: Closes a side menu which is currently opened. Additionally, the menuClose directive will now cause transitions to not animate between views while the menu is being closed.
- ionNavBackButton: The back button icon and text will automatically update to platform config defaults, such as adjusting to the platform back icon.
- To take advantage of this, the
ionNavBackButton
directive should now be empty, IE<ion-nav-back-button></ion-nav-back-button>
. - The back button can still be fully customized like it could before, but without any inner content it knows to style using platform configs.
- ionNavBackButton docs
- To take advantage of this, the
- navBar button primary/secondary sides: Primary and secondary sides are now the recommended values for the
side
attribute, such as<ion-nav-buttons side="primary">
.- Primary buttons generally map to the left side of the header, and secondary buttons are generally on the right side.
- However, their exact locations are platform specific.
- For example, in iOS the primary buttons are on the far left of the header, and secondary buttons are on the far right, with the header title centered between them.
- For Android however, both groups of buttons are on the far right of the header, with the header title aligned left.
- Recommendation is to always use
primary
andsecondary
so buttons correctly map to the side familiar to users of a platform. - In cases where buttons should always be on an exact side, both
left
andright
sides are still available. - ionNavButtons docs
- $ionicView Events: Now that views can be cached, controllers may only load once, which may change how you'd expect data to load.
- New events have been added that get emitted from the view's scope:
$ionicView.enter
,$ionicView.leave
,$ionicView.loaded
. - These events also contain data about the view, such as the title and if the back button should show, along with transition data, such as the transition type and direction that was used.
- ionView docs
- New events have been added that get emitted from the view's scope:
- Override Transition Type and Direction: As a user navigates the app, Ionic automatically applies the appropriate transition type for the platform, and the direction the user is navigating. Both can be overridden in numerous ways: config variable, view attribute, stateProvider property, or attribute on the button/link that initiated the transition.
- navDirection: An attribute directive that sets the direction which the nav view transition should animate.
- navTransition: An attribute directive that sets the transition type which the nav view transition should use when it animates. Using
none
will disable an animation. - $ionicConfigProvider: Configs can be changed using the
$ionicConfigProvider
during the configuration phase of your app.$ionicConfig
can also set and get config values during the run phase and within the app itself.
Breaking Changes:
- Animation CSS: The CSS for view transitions have changed. This is a breaking change only if Ionic apps had customized Ionic’s animation CSS. Additionally, all keyframe animations were removed since they weren't being used. (20Kb saved!)
- $ionicPlatformDefaults: Platform config variables are no longer in the $ionicPlatformDefaults constant, but within
$ionicConfigProvider
. - navClear: The navClear directive was created to do what the new side menu
enable-menu-with-back-views
attribute accomplishes and has therefore been removed. Additionally, the newnavTransition
andnavDirection
directives are more useful and granular. - scrollView.rememberScrollPosition: This method has been removed since it is no longer needed with cached views.
Deprecated:
- ionView.title: The
ionView
directive used thetitle
attribute, but this can cause the tooltip to show up on desktop browsers. Thetitle
attribute will still work for backwards compatibility, but we now recommend usingview-title
, such as<ion-view view-title=”My Title”>
. - ionNavView animation attribute: The animation attribute can be safely removed as it is no longer used for nav views. Instead use
$ionicConfig
. - ionNavBar animation attribute: The animation attribute can be safely removed as it is no longer used for nav bars. Instead use
$ionicConfig
. - $ionicNavBarDelegate#changeTitle: To set a title you now use
title(value)
(with an argument). ThechangeTitle()
method will now produce a console.warning message, but it can still be used for this version. - $ionicNavBarDelegate#setTitle: To set a title you now use
title(value)
(with an argument). ThesetTitle()
method will now produce a console.warning message, but it can still be used for this version. - $ionicNavBarDelegate#getTitle: To get a title you now use the return value of
title()
(no argument). ThegetTitle()
method will now produce a console.warning message, but it can still be used for this version. - $ionicNavBarDelegate#back: The
back()
method has been removed in favor of using$ionicHistory.goBack()
. Additionally,$ionicGoBack()
is added to the rootScope. $ionicHistory docs - $ionicNavBarDelegate#getPreviousTitle: The
getPreviousTitle()
method has been removed in favor of$ionicHistory.backTitle()
. $ionicHistory docs - $ionicViewService: In the navigation refactoring, $ionicViewService was split up into two factories,
$ionicViewSwitcher
and$ionicHistory
. The$ionicHistory
is largely what$ionicViewService
was, but now between the two there is a better separation of concerns for improved testing. [$ionicHistory docs](http://ionicframework.com/docs/nightl...
v1.0.0-beta.13 "lanthanum-leopard"
1.0.0-beta.13 "lanthanum-leopard" (2014-09-24)
Bug Fixes
- card: less intense box shadow (95d3f2e3)
- click: remove native click prevent 400ms later (20d567f8, closes #2204)
- exposeAsideWhen: disable with isEnabled=false (6f79a5e5, closes #2210)
- history: tabs lose history after switching tabs (68de8ed9, closes #1978)
- keyboard: android scroll stuck (74de015c)
- loading: prevent spinners in loading view from causing reflows when hidden. (767ce6a3, closes #2013)
- menuClose: do not close if aside exposed (b239eb9e)
- nav: prevent flickers between views (03086ed2)
- popup:
- scroll: ensure scrollView objects exist (8883c6cc)
- scrollView: check that element has not yet been GC'd before removing event listeners in $des (5e8250b1)
- sideMenu:
- splitView: disable menu toggles on exposed aside (ed3e9e30, closes #2182)
- tabs: fix android untyled android tab (aa7e9dd7)
- templateCache: make sure $state is passed config options before checking what they are (cb9b81d5)
- titles: error during quick transition changes (fe9f43d1)
Features
v1.0.0-beta.12 "krypton-koala"
1.0.0-beta.12 "krypton-koala" (2014-09-10)
Bug Fixes
- back button: do not animate back button transition if the title doesn't change. (d3c8a1b2, closes #1858)
- buttons: centering icons on tag buttons. (69442d5a, closes #2074)
- classList: error on svg elements (98629d42, closes #1795)
- collectionRepeat:
- always render data correctly with before/after isblings (120f99ee, closes #2025)
- simplify item reusing process to fix rare reuse error (8c6d5f2c, closes #1777)
- with ngHref, make href attr erase if falsy (977f6818, closes #1674)
- rerender when $ionicScrollDelegate resizes (5e025fbb, closes #1777)
- ignore spacing of hidden elements (ion-refresher) (9bfa3bd1, closes #1970)
- ionContent: fix rare positioning bug when overflow-scroll is enabled (84b5e919, closes #1281)
- item: clicks climb 5 levels looking for an item to activate, but not 6. (840c014b, closes #1921)
- keyboard: screen.height fallback for window.innerHeight (77847f49, closes #2168)
- loading: potential race condition with showing and hiding loading in same watch cycle (65aece2a)
- menuContent: gestures do not stop_browser_behavior (df578585, closes #421)
- platform: fullscreen method will not offset footer by 20px (b1f94da2)
- popup:
- refresher: finish animating before changing icon, hide when not in use (c336e8ed)
- reorder:
- scroll:
- scrollView: resolve memory leaks with holding element references (c5966bba)
- sideMenu:
Features
- $ionicBody: service to simplify body ele interaction (2c3f1c9f)
- $ionicConfigProvider: add $ionicConfigProvider (2643cffc)
- $ionicScrollDelegate: expose zoomBy and zoomTo methods (029f8f33, closes #1977)
- ionContent: add
locking
option (af229072, closes #2034) - ionScroll: add locking option (cc8f31d8, closes #2034)
- popover: support popping from bottom or top of screen (5d06c4ae, closes #1986)
- scroll-content: add 1px padding-top (e5b5906c)
- splitView: expose side menu on large viewport (b69aa548)
- templateCache: automatically cache template files to prevent flicker on page navigation and imp (944a92b0)
v1.0.0-beta.11 "indium-iguana"
1.0.0-beta.11 "indium-iguana" (2014-08-06)
Bug Fixes
- actionSheet: run $apply when closing actionSheet with back button (d3ed66e0)
- backdrop: disable tap longer after backdrop close (7faeeda0, closes #1536)
- cards: No more double margin if inside padding container (03903239)
- demos: fix HTML validation issue (c47fcccc)
- forms: Normalized form styles (89999cad)
- header: buttons do not align in Android 4.4 (06086ee9, closes #1614)
- ionRadio: fix ng-change being reported before model changes (53c437e2, closes #1741)
- nav: Removed border on animation (a9a52f64)
- popup: backdrop release fires with every close (ae87c66b)
- sideMenu: remove .menu-open on destroy (f246c5aa)
- tabs:
- toggle: fix toggle-class attribute (6fbd1a43, closes #1851)
- viewService: No error on clearHistory for empty history (64641b1b)
Features
- collectionRepeat: other children of ion-content element fit in (7ddb57e6, closes #1920, #1866, #1380)
- popover: created popovers (c1215aa3)
- tabs: Expand striped android style tab functionality. Closes 1694 (ddda809b)
Breaking Changes
- ion-radio no longer has an isolate scope.
This will break your radio only if you were relying upon the radio having an isolate scope: if you were referencing$parent.value
as
the ng-disabled attribute, for example.
Change your code from this:
<ion-radio ng-disabled="{{$parent.isDisabled}}"></ion-radio>
To this:
<ion-radio ng-disabled="{{isDisabled}}"></ion-radio>
(53c437e2)
1.0.0-beta.10 "hafnium-heron"
Bug Fixes
- button: fix button overflow causing whole screen to overflow left/right (114dad8c, closes #1780)
- collectionRepeat:
- gesture: fix onSwipeDown (2dce7a74, closes #1810)
- ionList: allow scrolling while reorder or delete is active (2e9d0965, closes #1703)
- ionReorderButton: stop
ngRepeat:dupes
error when reordering (ba1859b3, closes #1601) - list:
- loading:
- nav: remove disabled-pointer-events (5b50e120, closes #1383)
- navBar: only add default animation if there is no custom animation (cdba48f1, closes #1671)
- scroll:
- scrollView:
- select: prevent ion-item text from overlapping select input. (a56e647b, closes #1735)
- sideMenu:
- sidemen: scroll false causes sidemenu content to disappear. (6b218042, closes #1485)
- slidebox: default to not autoplay (81a7342f)
- sliderView: "getBoundClientRect" typo (0dad2ed6)
- tap:
- toggle: fix ngChange being reported before model changes (537b29d0, closes #1349, #1741)
- view: don't affect history when inside a modal (b7f45e7c, closes #1667)
Features
- $ionicLoading: add $ionicLoadingConfig constant for default options (26ca840d, closes #1800)
- checkbox: add disabled and emotion styles to ion-checkbox. and #1509 (79fb1e49, closes #1683)
- ionModalView: ion-modal-view to wrap template instead of
<div class="modal">
(ed4f2288, closes #1668) - ionSideMenu: add
edge-drag-threshold
, delegateedgeDragThreshold()
(ba56bb98, closes #1570) - ionSlideBox: add 'auto-play' attr to optionally disable auto-play (8f808609, closes #1552)
- tab: options 'hidden' attribute for tabs., #1673 (bb6976ad, closes #1666)
Breaking Changes
ion-toggle no longer has an isolate scope.
This will break your toggle only if you were relying upon the toggle
having an isolate scope: if you were referencing $parent.value
as
the ng-disabled attribute, for example.
Change your code from this:
<ion-toggle ng-disabled="{{$parent.isDisabled}}"></ion-toggle>
To this:
<ion-toggle ng-disabled="{{isDisabled}}"></ion-toggle>
(537b29d0)
- Reordering with ion-reorder-button no longer changes the order of the items in the DOM.
This change will only break your list if you were not using the
onReorder callback as described in the documentation.
Before, while reordering an element in a list Ionic would swap the
elements underneath as the reordering happened. This sometimes caused
errors with angular's ngRepeat directive.
Now, reordering an element in a list does not change the order of
elements in the DOM. It is expected that the end developer will use the
index changes given in the onReorder
callback to reorder the items
in the list. This is simple to do, see the examples in the
ionReorderButton
documentation.
(ba1859b3)
1.0.0-beta.9 "gadolinium-gator"
Features
Improved animation performance, particularly on older devices.
Bug Fixes
- collectionRepeat: fix scroll when item bigger than viewport (b2585f19, closes #1621)
- footerBar: fixed top border position on retina displays. (f4043e67, closes #1661)
- gestureDirectives: fix problem with event being passed in (b4b94073)
- header: add iOS 8 support to iOS header fix. assumes all iOS will have 7 style headers. (4a2296dc, closes #1625)
- headerBar: scroll to top (6eefee3d)
- listItem: apply color styles to complex list items (9ff1b965)
- menu: safari z-index fix for
.menu .scroll-content
(754ef461, closes #1408) - modal: remove iOS style header padding from inset headers in modal popups on iPad in po (e6dda6a5, closes #1605)
- popup: if popup is taller than the window, shrink the popup body and make it scrollable (3e6ce183, closes #1679)
- radio: suport ng-disabled. (704fe402, closes #1684)
- scroll: safari scroll content height (96b2243f)
- scrollController: allow tab $historyId to remember scroll (9b601b55, closes #1654)
- scrollView: clonedInputs get placeholder text if any (f2f55199)
- sliderView: find width properly when element is transformed (86ce4806, closes #1313)
- tap: get containing label of deeply nested element (2e3b8546, closes #1643)
1.0.0-beta.7 "einsteinium-emu"
Bug Fixes
- $ionNavView: prevent read property 'name' of null (4831f489, closes #1587)
- $ionicActionSheet:
- .slide-in-right: fix leave animation being same as enter (024f51d3, closes #1610)
- backdrop: Changed z-index for loading backdrop only. (4c700e9c, closes #1428)
- collectionRepeat:
- firefox: Add FF 19+ style vendor prefixing (bit.ly/1tLz8Qp) (5286a0c4, closes #1574)
- headerBar: More accurate scroll-to-top detection (1a7c1f1d)
- ionItem:
- ionNavBackButton: stop flicker when pressing back on ios (cec3a422)
- ionRadio:
- ionRefresher: be sure to run on-refresh with an angular digest (979f7b52, closes #1465)
- ionScroll: let zoom work on android devices (e88659c6, closes #1440)
- listView:
- loading: backdrop higher z-index (bfce8e27)
- modal: error message for modal show after remove (003659b6)
- nav: make fewer z-index assumptions while animating in ios7 animation (02f5fcb7)
- popup: focus on first input (71efd51b, closes #822)
- radioButtons: Correcting a bug introduced by 521164d. (ead5e026, closes #1599)
- scroll: input text selecting w/ mouse events (86e1fe9a, closes #1475)
- tap:
- test: Use HTML5 doctype on all tests., #1524 (18391589, closes #1539)
Features
- $ionicActionSheet: add cancelOnStateChange option, default true (087e55f3, closes #1318)
- $ionicModal: add
hardwareBackButtonClose
as option, default true (9ffca1e4, closes #1397) - $ionicSlideBoxDelegate: add
start()
to resume after stop (e4ab045e, closes #1584) - angular: update to AngularJS v1.2.17 (89d5553d)
- collectionRepeat: huge optimization upgrades (6af5d68d, closes #1597)
- gestures: added gesture directives (a2dcaf13, closes #829)
- ionScroll: add has-bouncing=true/false attribute (00c80e85, closes #1573, #1367)
- ionTab: add class attribute to tab items (e6f79cc0)
- ionic.Platform: add ionic.Platform.setGrade() function (05dd7b18, closes #1104)
- itemFloatingLabel: add floating labels: 'item-floating-label' class (050b4f25, closes #1611)
- platforms: Android and iOS Specific Styles and Transitions (c30be67f)
- scrollView: better deceleration for scroll view on iOS (9c77089a)
Breaking Changes
-
$ionicActionSheet's default behavior is now to cancel
when the app's state changes. To disable this behavior, pass
cancelOnStateChange: false
into $ionicActionSheet.show().(087e55f3)
-
$ionicActionSheet now returns a method to hide the
action sheet.
Previously, it returned an object that had a show
and hide
method.
This was undocumented, but if you used it, here is how to migrate your
code:
Change your code from this:
var sheet = $ionicActionSheet.show({...});
sheet.hide();
To this:
var hideSheet = $ionicActionSheet.show({...});
hideSheet();
(b7646a56)
1.0.0-beta.8 "fermium-flamingo"
Bug Fixes
- cancelAnimationFrame: polyfill in ionic.DomUtil (a0577346)
- content: scroll=false in sidemenu hides content (53c17104, closes #1485)
- css: reset FirefoxOS default gradients (5f1ea5f6, closes #1426)
- headerBarView: check for null in getTextBounds (be351ce1, closes #1377)
- tap: error when releasing outside of browser (8da9f34b, closes #1612)
Features
- ionicons:
- upgrade to v1.5.2 (17ee672f)