Commit Graph

111 Commits

Author SHA1 Message Date
Andy Joslin
c1d2571d5e scroll: add $ionicScrollDelegate with new pattern
Addresses #877
2014-03-24 15:58:22 -06:00
Andy Joslin
e94d400648 feat(content): automatically add/remove has-* classes to content
Also, do manual transclusion on items that would be 'deep' directives -
to fix a problem with transcluding & requiring parent elements.

Closes #619
2014-03-19 16:32:24 -06:00
Andy Joslin
0b69ac549a refact(scroll): remove high priority 2014-03-19 12:49:14 -06:00
Andy Joslin
245e2199c6 docs(ionicScrollController): write docs 2014-03-19 12:21:18 -06: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
532d473e35 feat(ion-content): watch padding attribute 2014-03-18 15:03:42 -06:00
Andy Joslin
5117d5673a refactor(ionContent): remove has-* classes
BREAKING CHANGE: ion-content's has-header/footer/tabs attributes
no longer work.

Use the classes 'has-header', 'has-subheader', 'has-footer', and
'has-tabs' to modify the positioning of the ion-content relative
to surrounding elements.

Before: `<ion-content has-header="true">`

After: `<ion-content class="has-header">`
2014-03-18 14:49:12 -06:00
Andy Joslin
6662f6effd docs: simplify apis where possible 2014-03-17 11:56:21 -06:00
Andy Joslin
bd66fc8b28 docs(): remove group tag 2014-03-17 10:24:28 -06:00
Andy Joslin
5a0efecef6 feat($ionicScrollDelegate): rememberScrollPosition, scrollToRememberedPosition
/**
 * @ngdoc method
 * @name $ionicScrollDelegate#rememberScrollPosition
 * @description
 *
 * When this scroll area is destroyed, its last scroll position will be
 * saved using the given id.
 *
 * @param {string} id The identifier for this saved scroll position.
 */

/**
 * @ngdoc method
 * @name $ionicScrollDelegate#scrollToRememberedPosition
 * @description
 *
 * If a scroll position was remembered using the given id, loads the
 * remembered scroll position and scrolls there.
 *
 * @param {string} id The identifier for this saved scroll position.
 * @param {boolean=} shouldAnimate Whether to animate the scroll.
 */
2014-03-17 08:39:23 -06:00
Andy Joslin
cc0a4ef775 test(sideMenu2): update test to reflect changes 2014-03-17 07:48:56 -06:00
Andy Joslin
4715a118e0 refactor($ionicScrollDelegate): make it a factory from current scope
BREAKING CHANGE: $ionicScrollDelegate no longer works globally; you must
create a new instance of each time you use it.  The actual methods on
each instance of $ionicScrollDelegate are the same, however.

Change your code from this:

```js
function MyController($scope, $ionicScrollDelegate) {
  $scope.scrollTop = function() {
    $ionicScrollDelegate.scrollTop();
  };
}
```

To this:

```js
function MyController($scope, $ionicScrollDelegate) {
  var delegate = $ionicScrollDelegate($scope);
  $scope.scrollTop = function() {
    delegate.scrollTop();
  };
}
```
2014-03-17 07:21:20 -06:00
Andy Joslin
8619d5e8ec docs(): add groups by topic 2014-03-14 15:14:16 -06:00
Andy Joslin
4980d09fb3 refact(ionContent): make docs match src 2014-03-11 19:34:30 -06:00
Andy Joslin
f3ca78620e docs(ionContent): update to match new ionRefresher 2014-03-11 16:40:12 -06:00
Andy Joslin
573df56db4 feat(ionRefresher): allow custom text & icons
Closes #760

BREAKING CHANGE: on-refresh and on-refresh-opening are no longer on the
ion-content directive.  They are on the ion-refresher. In addition,
on-refresh-opening has been renamed to on-pulling.

Change your code from this:

```html
<ion-content on-refresh="onRefresh()"
  on-refresh-opening="onRefreshOpening()">
  <ion-refresher></ion-refresher>
</ion-content>
```

To this:

```html
<ion-content>
  <ion-refresher on-refresh="onRefresh()"
    on-pulling="onRefreshOpening()">
  </ion-refresher>
</ion-content>
```
2014-03-11 16:40:12 -06:00
Andy Joslin
762af94176 refact(ionInfiniteScroll): remove unused variable 2014-03-11 14:01:08 -06:00
Andy Joslin
5f2c32ea9b feat(ionInfiniteScroll): allow configuration of icon 2014-03-11 13:56:08 -06:00
Andy Joslin
e9625ded9d docs: add services, utilities 2014-03-11 13:02:36 -06:00
Andy Joslin
f9766fcf16 docs(): Add docs for ionicViewState, polish other docs 2014-03-10 21:16:09 -06:00
Andy Joslin
c07846a49d docs(README): add instructions for testing docs 2014-03-10 09:32:24 -06:00
Andy Joslin
55089042d8 chore(build): documentation generation
Main changes:

* Use gulpfile now (build was getting way too disorganized with custom
tasks; gulpfiles are much easier to build clean custom tasks with than
Grunt.
* View README#Development for updated commands
* Docs written for ionContent, ionHeaderBar, ionInfiniteScroll.
* Docs are pushed to ajoslin's fork of ionic-site until they reach a
* point where they can be published.

**TODO, In Order of Priority**

1. Finish writing source-documentation for all existing components
2. Add multiple versions of docs (one per release & nightly, latest
 stable release docs being shown by default)
3. Add examples generation
4. Add searchbar to docs
2014-03-07 13:36:36 -07:00
flmu
3715bfcea7 refactor(ionInfiniteScroll): make it primarily use own attrs, add tests 2014-03-04 11:04:05 -07:00
Andy Joslin
7b0716c23c feat(ionInfiniteScroll): use event system
Fixes #661.

BREAKING CHANGE: The binding for ionInfiniteScroll has changed, as well
as how you finish it.

If you had this code before:

```html
<ion-content on-infinite-scroll="doSomething"></ion-content>
```
```js
function MyCtrl($scope) {
  $scope.doSomething = function(scrollDoneCallback) {
    doSomething();
    scrollDoneCallback();
  };
}
```js

Now, your code should look like this:

```html
<ion-content on-infinite-scroll="doSomething()"></ion-content>
```
``js
function MyCtrl($scope) {
  $scope.doSomething = function() {
    doSomething();
    $scope.$broadcast('scroll.infiniteScrollComplete');
  };
}
```
2014-02-26 13:58:47 -05:00
Andy Joslin
997aec8660 docs(ionContent): add doc comments 2014-02-26 13:56:53 -05:00
Andy Joslin
b406305b19 refactor(ionicContent): use $-prefix for onRefresh and onScroll events
Closes #675
2014-02-25 11:18:25 -05:00
flmu
1702f5c916 fix(ionContent): Use new name to find ion-infinite-scroll element 2014-02-25 16:08:31 +01:00
Andy Joslin
49e0dac999 feat(ionContent): use child scope instead of isolate scope
Adds new '$ionicBind' service, which takes an object containing
binding definitions (similar to angular directive isolate scope
definition).  Allows binding of any directive attribute & expressions
from a scope, letting us do normal attribute -> scope binding
without having to create isolate scopes.

Closes #555. Closes #669
2014-02-24 11:11:03 -05:00
Andy Joslin
2c39a21498 feat(ionic): prefix all directives with ion-
BREAKING CHANGE: All directives are now prefixed with `ion-`.

For any directive you use, add the ionic prefix.

For example, change this HTML:

```html
<tabs>
  <tab title="home" href="/tab/home">
    <content>Hello!</content>
  </tab>
</tabs>
```

To this HTML:

```
<ion-tabs>
  <ion-tab title="home" href="/tab/home">
    <ion-content>Hello!</ion-content>
  </ion-tab>
</ion-tabs>
```
2014-02-18 16:13:00 -05:00
Andy Joslin
c119498d1b feat($ionicScrollDelegate): add scrollTo(left,top,animate) to delegate
Also moves $ionicScrollDelegate.register to $ionicScroll controller,
and makes `<scroll>` directive be registered with $ionicScrollDelegate.
2014-02-11 13:40:45 -05:00
Andy Joslin
8581d162a3 refactor(content): set saved-scroll after timeout, only set valid values
Addresses #439
2014-02-08 00:19:03 -05:00
Andy Joslin
1fd3f39bb5 chore(): make files pass jshint (; errors) 2014-02-06 15:44:48 -05:00
Andy Joslin
7f4b28d9da feat(list): reordering scrolls page, reordering performance better
Fixes #521. Reordering now uses webkitTransform instead of
element.style.left.  Additionally, as you drag the drag-element to the
top or bottom of the scroll-area, it will scroll it up or down as
allowed.

Refactors necessary: Common code from `<content>` and `<scroll>` moved
into js/ext/angular/controllers/ionicScrollController.  Then `<content>`
and `<scroll>` expose the controller, and `<list>` can require it.

`<list>` then uses the controller (if exists) to pass the scrollView and
scrollEl to ReorderDrag, and ReorderDrag uses that to scroll.

Additionally, js/ext/angular/test/controller/ionicScrollController tests
much functionality that was untested before.
2014-02-06 15:04:23 -05:00
Andy Joslin
2d1b71c8e2 feat(content): remember scroll of previous page
`content` directive stores scroll in view page history.

The history is passed down through $viewContentLoaded event, which is
broadcasted by navView directive when it loads a page.
2014-02-04 08:48:03 -05:00
Adam Bradley
f37b196ff8 refactor ionic.Platform methods 2014-01-31 20:36:39 -06:00
Adam Bradley
95c8ddf301 Update $ionicPlatform.ready() 2014-01-31 10:31:42 -06:00
Max Lynch
050870e5f4 Fixed #458 2014-01-22 23:12:50 -06:00
Max Lynch
78f0242fd2 Pull in #440 2014-01-22 09:02:36 -06:00
Max Lynch
27311d5d18 Added support for offset start scroll view 2014-01-13 19:29:32 -06:00
Adam Bradley
567d6dae3b fix padding in content directive 2014-01-13 16:44:22 -06:00
Adam Bradley
124a6d1616 slim it down 2014-01-13 12:26:33 -06:00
Adam Bradley
2b2492d2d4 add padding classname for content directive 2014-01-13 11:59:58 -06:00
Max Lynch
86d6889628 Fixed #380 - rename ionic services to use $ionic prefix 2014-01-13 10:46:41 -06:00
Max Lynch
d90ae2c9af Fixed #279 - transclusion issue with content 2014-01-13 10:17:28 -06:00
Max Lynch
15e7f304f6 Merge branch 'master' of https://github.com/driftyco/ionic
Conflicts:
	dist/js/ionic-angular.min.js
	dist/js/ionic.min.js
2014-01-10 09:53:33 -06:00
Max Lynch
cb75c9de96 Fixed #366 - no Android scroll bouncing by default 2014-01-10 09:52:32 -06:00
Adam Bradley
ead7224a1e angular-ui router 2014-01-09 11:12:39 -06:00
Adam Bradley
3b3c649071 put some template changes in compile 2014-01-07 20:03:33 -06:00
Max Lynch
c0e11312bb Resize after infinite scroll 2014-01-07 19:08:16 -06:00
Mathieu
2fdc431bc3 Add support for distance attribute in infinite scroll 2013-12-28 12:20:05 +08:00