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() );
```
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
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.