Commit Graph

313 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
84f18a1c6e fix(content): don't resize content on keyboard open if it's inside a modal. Fixes #2212 2014-10-06 14:56:35 -05:00
Perry Govier
8787760aad fix(pull to refresh): minor optimization to prevent flicker on deactivate 2014-09-25 15:47:26 -05:00
Adam Bradley
03086ed228 fix(nav): prevent flickers between views
By default the scroll bar is being created for each view, then
immediately it adds the .scroll-bar-fade-out class. On every transition
you sometimes saw the scroll bar appear then fade away quickly. Sure
that was annoying and has been fixed to prevent that, but the real
issue is that on every view transition, the scroll bar’s opacity
transition fired off a transitionend event, which bubbled up to the
view and messed with Angular’s $animate. If timed out correctly, at the
time the scroll bar’s transitionend event bubbled up, and an element
was actively leaving the view, it would confuse $animate and cause the
leave animation to abruptly end, which caused an ugly flicker.
2014-09-16 22:58:22 -05:00
Perry Govier
e608bada6d amend(refresher): fix for if height is unknowable, and earlier commit changes lost in scrollView 2014-09-16 22:55:13 -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
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
8883c6ccc5 fix(scroll): ensure scrollView objects exist
Check if scrollView is null when switching off of tabs view. #2181
2014-09-12 23:05:28 -05:00
Adam Bradley
ba3600dfb4 fix(scroll): calculate padding-bottom
Closes #2174
2014-09-10 12:24:10 -05:00
Justin Basinger
f89f010cce fix(scrollview, content): Fixed multiple memory leaks in scrollview and content 2014-09-08 12:21:49 -05:00
Adam Bradley
b31f4e8e3f refactor(sideMenu): move controller logic to $ionicSideMenus 2014-08-20 11:09:48 -05:00
Perry Govier
6f5b6c24c6 fix(reorder): reorder drag threshold are equal for going up and down. Closes #1394 2014-08-19 17:24:02 -05:00
Andrew
d18f0f77cd test(view): amend some broken tests 2014-08-18 09:30:13 -06:00
Andrew
c5966bba05 fix(scrollView): resolve memory leaks with holding element references
Addresses #1993
2014-08-18 09:01:29 -06: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
Adam Bradley
abf77a1cf0 style(): spaces man, spaces 2014-08-06 20:37:03 -05:00
Andrew
4f10a72306 fix(list): make reorder/delete button animation work well on all devices 2014-07-08 11:32:43 -06:00
Andrew
1c789f8a88 fix(scrollView): always stay exactly within boundaries after bounce
Closes #1736
2014-07-07 12:18:20 -06:00
Andrew
ba1859b308 fix(ionReorderButton): stop ngRepeat:dupes error when reordering
Closes #1601.

BREAKING CHANGE: 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](http://ionicframework.com/docs/api/directive/ionReorderButton/).
2014-07-06 13:39:56 -06:00
Sergii Iushchuk
0dad2ed6e8 fix(sliderView): "getBoundClientRect" typo 2014-07-04 19:56:28 -06:00
Andrew
86ce480696 fix(sliderView): find width properly when element is transformed
Fixes #1313
2014-06-24 09:39:03 +09:00
Adam Bradley
96b2243f15 fix(scroll): safari scroll content height
Safari and Chrome have two different opinions of what `scrollHeight`
means. It appears Safari is not taking into account that the parent
element can have padding applied which changes the scrollHeight. Closes
#1411
2014-06-17 10:52:52 -05:00
Adam Bradley
be351ce1fa fix(headerBarView): check for null in getTextBounds
In Android <= 4.3, getBoundingClientRect does not return a rect for a
text node, closes #1377.
2014-06-16 09:09:03 -05:00
Andrew Joslin
e4ab045e30 feat($ionicSlideBoxDelegate): add start() to resume after stop
Closes #1584
2014-06-12 09:02:35 -06:00
Adam Bradley
86e1fe9a54 fix(scroll): input text selecting w/ mouse events
Do not preventDefault() within scrollView, mousedown when the target is
a text input. Closes #1475
2014-06-11 13:50:40 -05:00
Perry Govier
d779346393 fix(listView): avoiding potential memory leak from assigning properties directly to an element 2014-06-06 15:26:58 -05:00
Perry Govier
afdf0ad764 fix(listView): position dragged list item properly when list view's parent is offset. Closes #1583 2014-06-06 15:14:52 -05:00
Andrew Joslin
b7646a5630 fix($ionicActionSheet): stop memory leak due to hidden element staying in dom
BREAKING CHANGE: $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:

```js
var sheet = $ionicActionSheet.show({...});
sheet.hide();
```

To this:

```js
var hideSheet = $ionicActionSheet.show({...});
hideSheet();
```
2014-06-06 13:45:38 -04:00
Jared Smith
e88659c6f8 fix(ionScroll): let zoom work on android devices
Closes #1440
2014-06-04 13:56:26 -06:00
Andrew Joslin
9ffca1e4eb feat($ionicModal): add hardwareBackButtonClose as option, default true
Closes #1397
2014-06-04 13:45:21 -06:00
Max Lynch
9c77089a5e feat(scrollView): better deceleration for scroll view on iOS 2014-05-22 17:53:41 -05:00
Tim Lancina
88e41e1aa5 fix(scrollView): fix clonedInputs not being removed for large textareas
on keyboardshow

Closes #1420.
2014-05-20 13:04:32 -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
Andrew Joslin
ec5a276337 fix(ionSlideBox): fix regression allowing slide past boundaries
Closes #1414, #1405, #1409, #1321.
2014-05-19 06:33:45 -06:00
Andrew Joslin
df9c0747c9 fix(listView): reordering up is more responsive, fix scrolling error
Closes #1202
2014-05-14 08:39:13 -06:00
Tim Lancina
6e725b190f formatting tweak 2014-05-13 13:28:17 -05:00
Tim Lancina
373c0cd44f fix(scroll): scroll inputs correctly with footer 2014-05-13 13:10:26 -05:00
Tim Lancina
5ad395d599 only wait longer for keyboard resize on android 2014-05-12 15:15:51 -05:00
Adam Bradley
ed3ee1d02b fix(scroll): Scrolling using pointer events
Scroller only worked with touch or mouse events, but not with MSPointer
or standard pointer events.
2014-05-12 15:13:44 -05:00
Tim Lancina
61c9c4571b account for elements under scroll view when resizing 2014-05-12 14:31:53 -05:00
Andrew Joslin
291d723ab1 feat($ionicModal): allow configuration of backdropClickToClose
Addresses #1087
2014-05-12 08:24:19 -06:00
Adam Bradley
5f2fdfdd07 fix(textarea): Allow scroll in textarea when focused
Closes #1280
2014-05-09 12:05:45 -05:00
Andrew Joslin
d108a29e58 fix(ionToggle): stop error in edge case of drag ending before raf 2014-05-09 08:08:28 -06:00
Andrew Joslin
95d1aea4f1 chore(travis): re-enable jshint 2014-05-08 09:11:16 -06:00
Adam Bradley
d839f4da64 fix(select): Open select options on Android 2.3
Closes #1298
2014-05-08 09:04:06 -05:00
Adam Bradley
57d66b2a2d style(jshint): jshint 2014-05-08 08:19:14 -05:00
Adam Bradley
98ee7ee293 chore(log): use console.log instead of .debug
Console statements get removed during builds, but when testing IE 10
does not support console.debug.
2014-05-07 13:42:48 -05:00
Adam Bradley
56db0b74ba run onScroll() within triggerScrollEvent() 2014-05-06 08:30:12 -05:00