Commit Graph

530 Commits

Author SHA1 Message Date
Andrew
7ef9ad74cf fix(slidebox): refactor for performance and stability
Closes #2336. Closes #2317. Closes #2290. Closes #2228. Closes #2067.
Closes #1890. Closes #1865. Closes #1850. Closes #1755. Closes #1688.
Closes #1578. Closes #1501. Closes #1353. Closes #1342. Closes #782.
Closes #416. Closes #2288.

BREAKING CHANGE: The slideBox's API has undergone many changes.

- **`<ion-slide-box>`** attributes have changed (see
  [documentation](http://ionicframework.com/docs/api/directive/ionSlideBox)):

  * `active-slide` has changed to `selected`. Change your code from
  this:

    ```html
    <ion-slide-box active-slide="activeSlideIndex"></ion-slide-box>
    ```

    To this:

    ```html
    <ion-slide-box selected="activeSlideIndex"></ion-slide-box>
    ```

  * `does-continue` has changed to `loop`.  Change your code from this:

    ```html
    <ion-slide-box does-continue="shouldLoop"></ion-slide-box>
    ```

    To this:

    ```html
    <ion-slide-box loop="shouldLoop"></ion-slide-box>
    ```

  * `auto-play` and `slide-interval` have been merged into `auto-play`.
  Change your code from this:

    ```html
    <!-- autoPlay is on -->
    <ion-slide-box auto-play="true" slide-interval="1000">
    </ion-slide-box>
    <!-- autoPlay is off -->
    <ion-slide-box auto-play="false" slide-interval="1000">
    </ion-slide-box>
    ```

    To this:

    ```html
    <!-- autoPlay is on -->
    <ion-slide-box auto-play="1000"></ion-slide-box>
    <!-- autoPlay is off -->
    <ion-slide-box auto-play="false"></ion-slide-box>
    ```

  * `show-pager` and `pager-click` have been removed. Use
  a child `<ion-slide-pager>` element. See the [`ion-slide-pager`
  documentation](http://ionicframework.com/docs/api/directive/ionSlidePager).
  Change your code from this:

  ```html
  <!-- pager using default click action -->
  <ion-slide-box show-pager="true">
  </ion-slide-box>
  <!-- pager with custom click action -->
  <ion-slide-box show-pager="true" pager-click="doSomething(index)">
  </ion-slide-box>
  ```

  To this:

  ```html
  <ion-slide-box>
    <!-- pager using default click action -->
    <ion-slide-pager></ion-slide-pager>
  </ion-slide-box>
  <ion-slide-box>
    <!-- pager with custom click action -->
    <ion-slide-pager ng-click="doSomething(index)"></ion-slide-pager>
  </ion-slide-box>
  ```

- **`$ionicSlideBoxDelegate`** methods have changed (see
  [documentation](http://ionicframework.com/docs/api/service/$ionicSlideBoxDelegate)):

  - `update()` has been removed. slideBox updates on its own now.

  - `stop()` has been removed. See `autoPlay()` below.

  - `start()` hass been removed. See `autoPlay()` below.

  - `slide(newIndex[, speed])` has been renamed to `select(newIndex[,
    speed]);

  - `currentIndex()` has been renamed to `selected()`.

  - `slidesCount()` has been renamed to `count()`.

  - New method `$ionicSlideBoxDelegate.autoPlay()`. Change your code
    from this:

    ```js
    // stop auto sliding
    $ionicSlideBoxDelegate.stop();
    // later... start auto sliding
    $ionicSlideBoxDelegate.start();
    ```

    To this:

    ```js
    var autoPlaySpeed = 3000; //wait 3000 seconds between changing slide
    // stop auto sliding
    $ionicSlideBoxDelegate.autoPlay(false);
    // later... start auto sliding
    $ionicSlideBoxDelegate.autoPlay(autoPlaySpeed);
    ```

  - `previous()` now returns the index of the previous slide and does
    not select. Change your code from this:

    ```js
    // select previous slide
    $ionicSlideBoxDelegate.previous();
    ```

    To this:

    ```js
    // select previous slide
    $ionicSlideBoxDelegate.select( $ionicSlideBoxDelegate.previous() );
    ```
  - `next()` now returns the index of the next slide and does
    not select. Change your code from this:

    ```js
    // select next slide
    $ionicSlideBoxDelegate.next();
    ```

    To this:

    ```js
    // select next slide
    $ionicSlideBoxDelegate.select( $ionicSlideBoxDelegate.next() );
    ```
2014-10-08 11:09:15 -06:00
Perry Govier
34934f636e fix(loading): prevent loading service from disabling all future back button behavior. Fixes #2214 2014-10-07 14:19:20 -05:00
Perry Govier
29d6dc8163 fix(sideMenu): allow expose-aside-when on the right side. Closes #2207 2014-10-03 11:27:26 -05:00
Perry Govier
5658a4df0c fix(popup): prevent back to back popups from dismissing background. Fixes #2071 2014-09-26 16:43:27 -05:00
Perry Govier
cffe631866 fix(loading): subsequent calls use config defaults and not last call's options. Fixes #2066, #2088 2014-09-26 15:26:01 -05:00
Adam Bradley
7cad00837d test(viewState): minor updates 2014-09-26 08:20:31 -05:00
Perry Govier
6495ff63ee test(refresher): clean up last refresher patch's test 2014-09-25 16:20:58 -05:00
Perry Govier
cedee5749a fix(sideMenu): Prevent is-enabled="false" from blocking current view interaction. Fixes #1973 2014-09-22 14:26:58 -05:00
Perry Govier
aa7e9dd7a9 fix(tabs): fix android untyled android tab 2014-09-18 18:49:42 -05:00
Casey Garland
069d1e4b5c test(modal): Add unit test for modal view 2014-09-18 13:48:22 -05:00
Perry Govier
767ce6a3b4 fix(loading): prevent spinners in loading view from causing reflows when hidden. Closes #2013 2014-09-17 13:37:51 -05:00
Perry Govier
db27fb116c feat(refresher): Improve refresher animation. Allow pulling icon rotation to be disabled. 2014-09-16 16:22:02 -05:00
Adam Bradley
ea51612e60 test(titles): fix broken test 2014-09-16 10:35:15 -05:00
Adam Bradley
68de8ed910 fix(history): tabs lose history after switching tabs
It was possible that when switching between tabs, and creating a
navigation history in one of the tabs, then switching tabs again, it
could clear out the individual tab stacks under certain scenarios.
Closes #1978
2014-09-16 00:13:29 -05:00
Adam Bradley
73a30e0659 test(): fix $timeout.flush 2014-09-15 00:07:12 -05:00
Adam Bradley
6f79a5e5c8 fix(exposeAsideWhen): disable with isEnabled=false
Closes #2210
2014-09-14 23:38:35 -05:00
Adam Bradley
74de015c22 fix(keyboard): android scroll stuck
When a state change happens, ensure the keyboard is hidden. When a
keyboard is hidden, ensure all pending timers our cleared. When
resetting scrollView, ensure it’s only doing it when it has to.
For testing: #1670 #2192
2014-09-14 23:18:57 -05:00
Adam Bradley
ed3e9e30ce fix(splitView): disable menu toggles on exposed aside
Closes #2182
2014-09-11 22:05:47 -05:00
Justin Basinger
f89f010cce fix(scrollview, content): Fixed multiple memory leaks in scrollview and content 2014-09-08 12:21:49 -05:00
Perry Govier
69442d5a8e fix(buttons): centering icons on <a> tag buttons. Closes #2074 2014-09-05 12:33:05 -05:00
Pavel Strashkin
0bad6031ab test(navBackButton): remove redundant should word from test case description 2014-09-03 18:05:13 -07:00
Adam Bradley
caf1272186 fix(scroll): remove isContentEditable from ignoreScrollStart
If an element isContentEditable, do not ignoreScrollStart incase users
are using contenteditable elements to scroll. This may have originally
been put in because it disabled text selection, and moving the text
cursor on touch. But this doesn’t seem to be the case anymore, so it
may have been put in for platform versions we no longer support. Also
fix the data-prevent-scroll dataset attribute. Closes #2091
2014-08-29 23:35:07 -05:00
Adam Bradley
df57858521 fix(menuContent): gestures do not stop_browser_behavior
The gestures which were being added to side menu content were also
adding the `disable-user-behavior` class, which disabled
contenteditable elements. Now passing in the gesture option
stop_browser_behavior=false, along with adding the options param to the
gestures service. Fixes #421
2014-08-29 22:25:55 -05:00
Adam Bradley
e9f0fcf556 refactor(clickBlock): add click-block div to body
Instead of using pointer-events: none to disable unwanted clicks which
can cause flickering, we’re now using a click-block div that covers the
view during transitions. Similar concept to pointer-events: none
applied to the body tag, but in tests its showing to be more effective
to not cause any flickers.
2014-08-27 12:56:12 -05:00
Adam Bradley
2c3f1c9f02 feat($ionicBody): service to simplify body ele interaction
Many services/directives have to interact with the body element, and
each one has to write the same long code. The $ionicBody service
provides some useful methods to clean up and reduce redundant code.
2014-08-26 22:23:07 -05:00
Adam Bradley
b69aa5485f feat(splitView): expose side menu on large viewport
Ability to keep a left menu exposed on larger viewports, such as a
landscape tablet. Added the `expose-aside-menu` attribute directive.
2014-08-26 15:00:42 -05:00
Max Lynch
853fad19b1 New transition styles 2014-08-24 15:08:30 -05:00
Andrew
e00e938040 test(popover): fix tests for container addition 2014-08-20 14:29:11 -06:00
Andrew
6d859f4876 fix(popup): fix alignment, backdrop not fading out 2014-08-20 14:17:19 -06:00
Andrew
5d06c4aef8 feat(popover): support popping from bottom or top of screen
Closes #1986
2014-08-20 12:09:08 -06:00
Perry Govier
25ee658e8b amend(loading): simpler/more clean fix for #1914 2014-08-20 13:04:48 -05:00
Adam Bradley
04812a2da9 style(): move listController.unit.js to correct dir 2014-08-20 11:28:15 -05:00
Adam Bradley
b31f4e8e3f refactor(sideMenu): move controller logic to $ionicSideMenus 2014-08-20 11:09:48 -05:00
Andrew
4595fd3cc4 refactor($ionicTabsDelegate): for .select() take away second argument
Closes #1682
2014-08-20 10:03:45 -06:00
Perry Govier
65aece2aad fix(loading): potential race condition with showing and hiding loading in same watch cycle 2014-08-19 15:07:10 -05:00
Perry Govier
840c014b27 fix(item): clicks climb 5 levels looking for an item to activate, but not 6. Fixes #1921 2014-08-19 14:20:35 -05:00
Perry Govier
cc18a64bf4 fix(reorder): item click handlers dont fire when tapping on reorder icon 2014-08-19 11:32:35 -05:00
Perry Govier
944a92b08d feat(templateCache): automatically cache template files to prevent flicker on page navigation and improve performance
State templates are cached automatically, but you can optionally cache other templates.
```js
$ionicTemplateCahce('myNgIncludeTemplate.html');
```

Optionally disable all preemptive caching with the `$ionicConfigProvider` or individual states by setting `prefetchTemplate`
in the $state definition
```js
$ionicTemplateCahce('myNgIncludeTemplate.html');
```js
  angular.module('myApp', ['ionic'])
  .config(function($stateProvider, $ionicConfigProvider) {

    // disable preemptive template caching globally
    $ionicConfigProvider.prefetchTemplates(false);

    // disable individual states
    $stateProvider
      .state('tabs', {
        url: "/tab",
        abstract: true,
        prefetchTemplate: false,
        templateUrl: "tabs-templates/tabs.html"
      })
      .state('tabs.home', {
        url: "/home",
        views: {
          'home-tab': {
            prefetchTemplate: false,
            templateUrl: "tabs-templates/home.html",
            controller: 'HomeTabCtrl'
          }
        }
      });
  });
```
2014-08-15 15:10:19 -05:00
Andrew
834e2bb173 amend($ionicConfigProvider): fix typo, add unit tests 2014-08-15 13:11:44 -06:00
Andrew
8c6d5f2c96 fix(collectionRepeat): simplify item reusing process to fix rare reuse error
Closes #1777.
2014-08-13 10:30:44 -06:00
Andrew
5e025fbb01 fix(collectionRepeat): rerender when $ionicScrollDelegate resizes
Fixes #1777
2014-08-11 10:23:49 -04:00
Andrew
9bfa3bd18b fix(collectionRepeat): ignore spacing of hidden elements (ion-refresher)
Closes #1970
2014-08-11 10:06:31 -04:00
Perry Govier
044fac4d77 fix(popup): only override prompt input if template includes HTML 2014-08-08 15:00:19 -05:00
Perry Govier
c336e8ede8 fix(refresher): finish animating before changing icon, hide when not in use 2014-08-07 17:54:30 -05:00
Adam Bradley
944d2595af fix(sideMenu): fix stopping content scrolling
When a list was within a side menu it could scroll up and down, but if
the user happened to drag a little bit on the X axis, then it would try
to open the side menu and the Y scroll of the content stopped. Closes
#1541
2014-08-07 12:22:28 -05:00
Andrew
41a2124d45 test(): fix phantomjs test problems for CircleCI 2014-08-06 12:10:34 -06: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
6fbd1a4306 fix(toggle): fix toggle-class attribute
Closes #1851
2014-08-06 08:40:57 -05:00
Perry Govier
ae87c66b12 fix(popup): backdrop release fires with every close 2014-08-05 11:16:46 -05:00
Adam Bradley
06086ee9ae fix(header): buttons do not align in Android 4.4
Closes #1614
2014-08-05 10:23:23 -05:00