Commit Graph

93 Commits

Author SHA1 Message Date
Adam Bradley
72167b2a45 fix(title): use defined viewTitle attrs 2014-11-23 01:01:40 -06:00
Adam Bradley
beb45c17e8 chore($ionicSlideBoxDelegate): deprecated methods 2014-11-22 23:21:33 -06:00
Adam Bradley
2683ffd075 feat(clearCache): create $ionicHistory.clearCache() 2014-11-21 17:09:55 -06:00
Perry Govier
5a28bbb1bd fix(refresher): Fix refreshing icon in Android 4.3 and lower 2014-11-21 15:33:39 -06:00
Adam Bradley
60f76b2f01 refactor(navViewController): move view switcher logic
Move some of the $ionicViewSwitcher logic into the navViewController so
each ionNavView is capable of updating its own child ionView elements.
2014-11-20 16:12:44 -06:00
Andrew
f2fbae5f3e chore(slideBox): speed up velocity a bit 2014-11-20 10:33:39 -07:00
Adam Bradley
57bf4f1683 fix(backButton): add .header-item class
Add the .header-item class to each of the root child items of a nav
header bar. This gives CSS more power to state what should and should
not be shown during the different states of a transition, specifically
for iOS nav bar transitions.
2014-11-19 12:44:15 -06:00
Adam Bradley
b4e4055a06 refactor(backButton): separate show/enable logic
Previously the showBack property was setting if the back button should
or should not be enabled, and it was also used if the back button
should be hidden or not for the view. Changed it so there are now two
concepts, where showBack is visual only, and enableBack determines if
it should show according to $ionicHistory and navigation info.
2014-11-19 11:38:14 -06:00
Adam Bradley
417c3d4ef3 fix(scroll): prevent 'cannot read' exception 2014-11-18 22:18:09 -06:00
Adam Bradley
00aa24fc7f fix(scroll): $historyId should default to root 2014-11-18 21:07:15 -06:00
Adam Bradley
46cbaf9527 fix(scroll): find delegate by historyId
Closes #2572
2014-11-18 16:07:57 -06:00
Andrew
bc3826d5c0 chore(slideBox): remove extra deprecated slidesCount 2014-11-18 11:12:30 -07:00
Andrew
c7d401cd9c amend(slidebox): add null-check for slide.scope
Addresses #2530
2014-11-18 11:10:31 -07:00
Andrew
7ca780f22c amend(slidebox): always reselect on dragend 2014-11-18 10:34:42 -07:00
Andrew
fc3865755f enhance(slideBox): fix selectedIndex bugs 2014-11-18 10:16:57 -07:00
Adam Bradley
48726297d9 fix(headerBar): pass attrs from ionNavBar
Closes #2563
2014-11-18 09:30:14 -06:00
Adam Bradley
6276506d4f feat(delegateService): create filterFn to find active 2014-11-18 08:46:46 -06:00
Adam Bradley
5ab49b5df8 refactor(viewEvents): create loaded, enter, leave
Add to the possible events emitted from the view’s scope,
$ionicView.loaded, $ionicView.enter, $ionicView.leave, in addition to
the existing events.
2014-11-17 13:20:16 -06:00
Adam Bradley
4833467d86 fix($ionicHistory): pop duplicate view registers 2014-11-16 00:25:25 -06:00
Adam Bradley
21d4af8cf9 chore(navBarController): deprecate methods w/ warnings 2014-11-15 15:11:46 -06:00
Adam Bradley
0ecbf801b2 refactor(transition): remove navBar.transition config 2014-11-15 12:32:49 -06:00
Adam Bradley
b3d1cc04de fix(headerBar): view header bars stay under nav bars 2014-11-14 16:09:31 -06:00
Adam Bradley
04cf629fb4 fix($ionicNavBarDelegate): update method names 2014-11-13 21:52:22 -06:00
Adam Bradley
4ee22dd818 refactor($ionicConfig): separate transition JS 2014-11-13 16:08:09 -06:00
Adam Bradley
b75bd9d8c8 fix(viewController): use $watch instead of $observe 2014-11-13 15:05:15 -06:00
Adam Bradley
ed8bd94fc6 fix(navViewController): create navBarCtrl.title 2014-11-13 14:30:57 -06:00
Adam Bradley
9e5caf5983 fix(ionView): observe for attr changes 2014-11-13 14:20:11 -06:00
Jamie Sutherland
09247f1237 fix(slideBox): allow disable dragging on slide boxes
Fixes #2436. Closes #2457.

$ionicSlideBoxDelegate.enableSlide(false) was not working due to a missing onDragStart function being passed to the ionicAttachDrag service
2014-11-13 08:57:32 -07:00
Adam Bradley
1395513aa4 fix(hideNavBar): send data in $ionicView.beforeEnter 2014-11-13 09:00:07 -06:00
Adam Bradley
5d6a33c1db style(*): jscs linter updates to nav improvements 2014-11-11 23:04:33 -06:00
Adam Bradley
4366bd57e4 fix(nav): prevent nav-bar flicker w/ no animation 2014-11-11 17:20:51 -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
Adam Bradley
246c193f9a chore(): cleanup unused variables 2014-11-10 21:06:33 -06:00
Andrew
8b1bef3ea1 refactor(ionSlideBox): use live nodeList to preserve ordering 2014-11-05 13:52:12 -07:00
Eugene OZ
63d1f26e55 Prevent 'cannot read' exception
On Android (4.4.4) I'm getting "Cannot read property 'options' of null" each time, 100% reproducible.
This small check will not hurt anyone but will prevent unhandled exception error.
2014-11-04 16:07:31 +03: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
Adam Bradley
bc4c696414 chore(sideMenuCtrl): cleanup element references
Line 385, clean up content element reference, and many style() updates
2014-10-09 20:50:29 -05:00
Andrew
9642c4a30b chore(slideBox): make it easier to scroll vertically
Addresses #2317
2014-10-09 10:27:18 -06:00
Andrew
950d697a70 style(slideBox): lower the speed a little bit 2014-10-09 10:18:36 -06:00
Andrew
d9cc7894d5 enhance(slideBox): re-add update() method 2014-10-09 09:52:51 -06:00
Andrew
01c829c351 feat(slideBox): use selected value provided for initial section
Addresses #2288.
2014-10-09 08:39:45 -06:00
Andrew
358bdc7680 refactor(ionSlideBox): use default transitionDuration if not changing 2014-10-08 16:37:45 -06:00
Andrew
2dafeea08f docs(slideBox): add comment about attachSlide 2014-10-08 16:10:51 -06:00
Andrew
7d2945f95d refactor(slideBox): make it so elements are properly removed 2014-10-08 16:10:28 -06:00
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
29d6dc8163 fix(sideMenu): allow expose-aside-when on the right side. Closes #2207 2014-10-03 11:27:26 -05:00
Perry Govier
8787760aad fix(pull to refresh): minor optimization to prevent flicker on deactivate 2014-09-25 15:47:26 -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
cb06643403 fix(sideMenu): allow edge-drag-threshold for right side menus. Closes #2081 2014-09-17 17:11:21 -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