Commit Graph

40 Commits

Author SHA1 Message Date
Andrew
6c5555469c amend(collectionRepeat): dont use node.contains, it doesnt exist on Android 4.3- 2015-03-04 10:18:09 -07:00
Andrew
6fa75b7fff fix(viewSwitcher): do not finish transition from bubbled transitionend events
Closes #3006. Closes #3063.
2015-02-09 12:03:00 -07:00
Adam Bradley
5d6a33c1db style(*): jscs linter updates to nav improvements 2014-11-11 23:04:33 -06:00
Adam Bradley
39951ca99a refactor(): navigation improvements, Angular 1.3
#### Refactor:

* **Navigation:** Refactored navigation for improved performance,
reduce DOM manipulations, increase transition FPS, cached views,
smoother transitions, platform specific transitions with added
configurable controls for transition animation and direction.
* **Cached Views:** Previously as a user navigated an app, each leaving
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. When a view is navigated away
from, its element is 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 (set to 0), or change the
maximum number of views to cache.
* **Angular v1.3:** Upgraded Ionic’s 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 promise, whereas in v1.2 animations used
callbacks.

#### 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 leaving view from center to left. However,
Android will transition with the entering 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.
* **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. However, both
can be overridden in numerous ways: config variable, view attribute,
stateProvider property, or attribute on the button/link that initiated
the transition.
* **enable-menu-with-back-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 the
`menuToggle` 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), then any menuToggle buttons will
show again, and menus will be enabled again.
* **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 now should be empty, such as
`<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.
* **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` and `secondary` so buttons
correctly map to the side familiar to users of a platform. However, in
cases where buttons should always be on an exact side, both `left` and
`right` sides are still available.
* **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.

#### 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.
* **$ionicPlatformDefaults:** Platform config variables are no longer
in the $ionicPlatformDefaults constant, but within `$ionicConfig`.
* **$ionicViewService:** In the navigation refactoring,
$ionicViewService was split up into two factories, `$ionicViewSwitcher`
and `$ionicHistory`. The `$ionicHistory` is largely what
`$ionicViewService`, but between the two factories there is a better
separation of concerns for improved testing.
* **navClear:** The navClear directive was created to do what the new
side menu `enable-menu-with-back-views` attribute accomplishes.
Additionally, the new `navTransition` and `navDirection` directives are
more useful and granular than the navClear directive.
* **scrollView.rememberScrollPosition:** This method has been removed
since it is no longer needed with cached views.

#### Deprecated:

* **ionView.title:** The `ionView` directive used the `title`
attribute, but this can cause the tooltip to show up on desktop
browsers. The `title` attribute will still work for backwards
compatibility, but we now recommend using `view-title`, such as
`<ion-view view-title=”My Title”>`.
* **ionNavView animation attribute removed:** The animation attribute
is no longer used for nav views. Instead use `$ionicConfig`.
* **ionNavBar animation attribute removed:** The animation attribute is
no longer used for nav bars. Instead use `$ionicConfig`.
2014-11-11 14:43:10 -06:00
Perry Govier
8ee83777f7 fix(scroll): calling ionic scroll methods blur any selected input elements. Closes #2244 2014-10-27 16:45:01 -05:00
chaffeqa
1f96d971f1 Correctly handle DOM Ready states
Previously, if the script was loaded while in `document.readyState` of `interactive`, the `domReady` function is never called.

See https://developer.mozilla.org/en-US/docs/Web/API/document.readyState for explanation of the proper detection of `DOMContentLoaded`
2014-09-16 19:03:35 -04:00
Andrew
ce5807a022 refactor(domUtil): remove centerElementByMargin. Use flex containers. 2014-08-20 14:17:54 -06:00
Adam D Richman
c94c735de9 Fixes some misspellings in utils/dom.js 2014-08-10 21:59:03 -07:00
Andrew
7ddb57e60b feat(collectionRepeat): other children of ion-content element fit in
Closes #1920. Closes #1866. Closes #1380.
2014-08-06 10:32:40 -06:00
Adam Bradley
a057734631 fix(cancelAnimationFrame): polyfill in ionic.DomUtil 2014-06-16 12:49:54 -05:00
Andy Joslin
ae8136d21d fix(utils/dom): do not add rAF polyfill to window
A pull request (#1430) was merged that added a requestAnimationFrame polyfill to
the window on platforms that do not have rAF.  This was overlooked.
This now has created conflicts with Angular 1.2.17 on Android browsers
that do not have requestAnimationFrame.

The problem was that a polyfill for requestAnimationFrame was put onto the
window for Android <4.3. AngularJS would then check if
window.requestAnimationFrame existed.  Angular's check passed, and then
it would try to use cancelAnimationFrame which was undefined.

Now, nothing on the window is changed.
2014-06-16 16:21:33 +00:00
Adam Bradley
a43980bbcc Merge pull request #1430 from malixsys/patch-4
fix(rAF): fixing requestAnimationFrame & cancelAnimationFrame
2014-06-05 20:01:16 -07:00
Ryan Gonzalez
f02bd6c659 docs(domUtil): Correcting getParentOrSelfWithClass documentation. It previously duplicated getParentWithClass. Closes #1535 2014-06-02 12:38:05 -05:00
Andrew Joslin
3250d10da7 fix(scrollView): on desktop, mousewheel only scrolls the right scrollView
Closes #1376
2014-05-19 08:32:14 -06:00
Andrew Joslin
4a210130b4 fix(scrollView): stop memory-leak when destroying scrollView
Fixes #1096
2014-05-19 08:14:52 -06:00
M Alix
8319668890 Fixing requestAnimationFrame & cancelAnimationFrame
With the previous implementation, Chrome complains:
    "'webkitCancelAnimationFrame' is vendor-specific. Please use the standard 'cancelAnimationFrame' instead."
This fixes that by reusing (copy-paste) the code from angular.js
A better way would be to use ionic.requestAnimationFrame and ionic.cancelAnimationFrame everywhere, but that is more involved and risky...
2014-05-18 19:04:50 -04:00
Andrew Joslin
90e7395e62 fix($ionicLoading): do not flicker when showing long loading messages
Closes #1252
2014-05-14 10:48:43 -06:00
Max Lynch
73d2eabc69 feat(animation): Javascript Animation Service 2014-05-12 13:07:58 -05:00
Adam Bradley
e373db9eee update this to window, closes #1144 2014-04-17 20:44:31 -05:00
Andy Joslin
e75e20dc9d refactor: $animate - add $animateClassToggler to stop race conditions
Addresses #1100.

Fixes race conditions where $animate.{removeClass,hideClass} are
called simultaneously, in addition fixes any blinking that coulld be
caused by showing an element just attached to the dom.
2014-04-10 10:35:36 -06:00
Andy Joslin
98e7e3df46 refactor($ionicLoading,$ionicPopup): factor out common code, add tests
Also fixes $ionicLoading flickering on ios7 in beta.1.
2014-04-08 13:35:02 -06:00
Adam Bradley
a637fb4d1b fix(domready): Fixed if firing off callbacks when DOM was already ready 2014-03-19 13:59:36 -05:00
Andy Joslin
dbe4e3901d feat(ionic): remove all delegates
BREAKING CHANGE: $ionicScrollDelegate, $ionicSlideBoxDelegate, and
$ionicSideMenuDelegate have been removed.

  - $ionicScrollDelegate has been changed to $ionicScrollController.
    Documentation:
    [ionContent](
    http://ajoslin.github.io/docs/nightly/api/directive/ionContent),
    [ionScroll](
    http://ajoslin.github.io/docs/nightly/api/directive/ionScroll)

    Change your code from this:

    ```html
    <ion-content ng-controller="MyCtrl">
      <button ng-click="scrollBottom()">Scroll to bottom!</button>
    </ion-content>
    ```
    ```js
    function MyCtrl($scope, $ionicScrollDelegate) {
      $scope.scrollBottom = function() {
        $ionicScrollDelegate.scrollBottom();
      };
    }
    ```

    To this:

    ```html
    <!-- optional attr controller-bind, see docs -->
    <ion-content ng-controller="MyCtrl">
      <button ng-click="scrollBottom()">Scroll to bottom!</button>
    </ion-content>
    ```
    ```js
    function MyCtrl($scope) {
      $scope.scrollBottom = function() {
        $scope.$ionicScrollController.scrollBottom();
      };
    }
    ```

  - $ionicSideMenuDelegate has been changed to
    $ionicSideMenusController. Documentation:
    [ionSideMenus](http://ajoslin.github.io/docs/nightly/api/directive/ionSideMenus)

    Change your code from this:

    ```html
    <ion-side-menus>
      <ion-side-menu side="left">Side Menu Left</ion-side-menu>
      <ion-pane ion-side-menu-content ng-controller="MyCtrl">
        <button ng-click="toggleLeftMenu()">
          Toggle Left Menu!
        </button>
      </ion-pane>
    </ion-side-menus>
    ```
    ```js
    function MyCtrl($scope, $ionicSideMenuDelegate) {
      $scope.toggleLeftMenu = function() {
        $ionicSideMenuDelegate.toggleLeft();
      };
    }
    ```

    To this:

    ```html
    <!-- optional attr controller-bind, see documentation -->
    <ion-side-menus>
      <ion-side-menu side="left">Side Menu Left</ion-side-menu>
      <ion-pane ion-side-menu-content ng-controller="MyCtrl">
        <button ng-click="toggleLeftMenu()">
          Toggle Left Menu!
        </button>
      </ion-pane>
    </ion-side-menus>
    ```
    ```js
    function MyCtrl($scope) {
      $scope.toggleLeftMenu = function() {
        $scope.$ionicSideMenuController.toggleLeft();
      };
    }
    ```

  - $ionicSlideBoxDelegate has been removed and upgraded to
    $ionicSlideBoxController. It had only one method that
    was unneeded.  [Documentation](
    http://ajoslin.github.io/docs/nightly/api/directive/ionSlideBox)
2014-03-19 11:51:07 -06:00
Andy Joslin
bd66fc8b28 docs(): remove group tag 2014-03-17 10:24:28 -06:00
Andy Joslin
8619d5e8ec docs(): add groups by topic 2014-03-14 15:14:16 -06:00
Andy Joslin
e9625ded9d docs: add services, utilities 2014-03-11 13:02:36 -06:00
Adam Bradley
52671c18f9 fix(transform): Polyfill style.transform to work w/ non-webkit 2014-02-20 15:40:12 -06:00
Andy Joslin
d056ad1fef perf(animations): throttle calls to requestAnimationFrame
Closes #582
2014-02-17 17:26:34 -05:00
Adam Bradley
71ea118e4d range.getBoundingClientRect check for null, fixes #580 2014-02-17 10:44:05 -06:00
Andy Joslin
17cc040896 fix(anchorScroll): find offset of nested elements correctly
Closes #618
2014-02-17 10:20:39 -05:00
Andy Joslin
a970f0bdc3 feat(domUtil): add getPositionInParent function
Find an element's offset, then add it to the offset of the parent
until we are at the direct child of parentEl.
Use-case: find scroll offset of any element within a scroll container
2014-02-09 11:36:15 -05:00
Adam Bradley
00f6b17b7f toggle/checkbox tap improvements 2014-02-01 00:15:10 -06:00
Adam Bradley
5c80fc1cd9 update platform ready listeners 2014-01-16 00:25:04 -06:00
Max Lynch
5d5b5b95a5 Fixed #126 - tap header scroll to top 2013-12-18 19:26:22 -06:00
Adam Bradley
3cfcfc01a4 jshint fixes 2013-12-07 15:05:56 -06:00
Max Lynch
0d5bd759a1 Fixed #172 - list item reorder persistence 2013-11-22 10:39:36 -06:00
Max Lynch
7d4756eaef Fixed #95 and #121 2013-11-12 16:34:51 -06:00
Max Lynch
6ac2cd3797 Progress on #37 2013-10-15 14:33:49 -05:00
Max Lynch
c6d33bfb72 List item dragging mainly working 2013-10-14 11:59:46 -05:00
Max Lynch
7496347f6b Better drag interface, start of reorder dragging 2013-10-11 17:44:07 -05:00