Commit Graph

171 Commits

Author SHA1 Message Date
Adam Bradley
ba3eefdf8a feat(menuClose): do not show next back button
When navigating to a view from a button/link with the `menuClose`
attribute directive, the back button should not show for the next view.
2014-11-12 12:30:11 -06:00
Adam Bradley
786c6d9749 feat($ionicConfig): chaining config properties 2014-11-12 11:19:08 -06:00
Adam Bradley
a481f5176f docs(navBarDelegate): update available methods 2014-11-12 09:15:21 -06:00
Adam Bradley
25dddce617 feat(goBack): add $ionicHistory.goBack() 2014-11-12 09:03:02 -06:00
Adam Bradley
5d6a33c1db style(*): jscs linter updates to nav improvements 2014-11-11 23:04:33 -06:00
Adam Bradley
2b23957558 fix(nav): correct element structure for nav-vew
Ensure that the entering view template is contained by one element, and
that one element has the `pane` class.
2014-11-11 21:48:11 -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
79aee05a32 refactor(clickBlock): transform css for click block
Use transform/opacity CSS properties to show and hide the click block
element, and use requestAnimationFrame for the DOM changes. This is
easier for the GPU to use transform/opacity properties instead of the
display property, and also reduces any potential reflows.
2014-11-10 21:18:10 -06:00
Andrew
8b1bef3ea1 refactor(ionSlideBox): use live nodeList to preserve ordering 2014-11-05 13:52:12 -07:00
Romain Sylvian
43bb7f6612 update doc for on function
The on function can take a 4th parameter : options
2014-10-24 21:52:12 -07:00
Perry Govier
d3026edffc fix(popup): hide buttons div if there's no buttons to show. Fixes #2344 2014-10-23 17:07:30 -05:00
Drew Rygh
5c27281520 Merge pull request #2372 from ankri/patch-1
feat(ionicLoading): Add the option to use a custom scope
2014-10-17 17:18:16 -05:00
Adam Bradley
425820f8e2 refactor(ionicConfig): setup to easily add configs 2014-10-09 21:08:29 -05:00
Andrew
9642c4a30b chore(slideBox): make it easier to scroll vertically
Addresses #2317
2014-10-09 10:27:18 -06:00
Andrew
5621fe1ffd enhance(slideBox): use element.$destroy for slide 2014-10-09 09:57:31 -06:00
Andrew
d9cc7894d5 enhance(slideBox): re-add update() method 2014-10-09 09:52:51 -06:00
ankri
22740ca443 Add the possibility to have a custom scope
This line adds the possibility to use a custom scope with $ionicLoading 

I found it useful to show the progress of the loading process.

Demo: http://codepen.io/anon/pen/Ltign
2014-10-09 14:51:10 +02:00
Andrew
d324bb615a enhance(ionSlideBox): allow scrolling to work 2014-10-08 16:32:44 -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
34934f636e fix(loading): prevent loading service from disabling all future back button behavior. Fixes #2214 2014-10-07 14:19:20 -05:00
Mathias Muller
9dcdf52300 #2234: Declare local variable
IE11 needs local variable to be declared
2014-10-06 09:59:35 +02:00
Perry Govier
1224902e57 fix(popover): reposition popover on window resize. Closes #2189 2014-10-02 14:04:27 -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
f0af085841 refactor(clickBlock): ensure click block fallback cancels 2014-09-26 08:15:21 -05:00
Adam Bradley
fd30330d14 Merge pull request #2272 from moroshko/patch-5
docs(popup): remove unnecessary comma in popup docs
2014-09-25 07:55:26 -05:00
Adam Bradley
9b1882c156 Merge pull request #2271 from moroshko/patch-4
docs(popup): typo fix in popup docs
2014-09-25 07:54:54 -05:00
Misha Moroshko
4dc13b94dc Remove unnecessary comma in popup docs 2014-09-23 13:33:46 +10:00
Misha Moroshko
82e74f6d7a Typo fix in popup docs 2014-09-23 13:26:18 +10:00
Misha Moroshko
66b7d8c602 Fix typo in popover docs 2014-09-23 13:09:27 +10:00
ruioliveiras
eba588337c docs(modal): note angular template syntax regarding inline templates 2014-09-18 11:21:47 -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
Adam Bradley
046ad53b20 feat(cordovaEvents): $ionicPlatform.on method
Create $ionicPlatform.on(type, callback) to make it easier to add
Cordova event listeners. Closes #2219
2014-09-16 08:55:00 -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
20d567f81c fix(click): remove native click prevent 400ms later
When an actionsheet/popup is open, everything under it has
`pointer-events:none`. However, once they are removed then the click
prevent was removed immediately too, but the click that comes in 300ms
later was still firing whatever would have been underneath the
actionsheet/popup. Instead, wait 400ms before removing the click
prevent, which would block the native click. Closes #2204
2014-09-15 00:00:59 -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
0420e6eb2d refactor(popover): popover-top as the default 2014-09-14 21:08:21 -05:00
Perry Govier
18775ae169 chore(collection repeat): commenting out noisy console log 2014-09-12 11:19:47 -05:00
Perry Govier
cb9b81d57e fix(templateCache): make sure $state is passed config options before checking what they are 2014-09-11 15:25:49 -05:00
Perry Govier
6a4f381fdd Merge pull request #1917 from schmoofer/master
fix(modal): eliminate flicker when using fade-in/out animation style
2014-09-04 18:47:33 -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
98629d4243 fix(classList): error on svg elements
Fixes #1795
2014-08-28 15:17:44 -05:00
Adam Bradley
eb8e46e62d Merge pull request #2051 from spautz/minification-fix-issue-2050
fix($ionicTemplateCache): explicitly list dependency for minification
2014-08-28 12:14:43 -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
Max Lynch
853fad19b1 New transition styles 2014-08-24 15:08:30 -05:00
Steven Pautz
a2377cfbb7 Fix: Explicitly list dependency so that minification works. Fixes #2050 2014-08-21 14:05:11 -04:00
Andrew
6d859f4876 fix(popup): fix alignment, backdrop not fading out 2014-08-20 14:17:19 -06:00
Andrew
029f8f3353 feat($ionicScrollDelegate): expose zoomBy and zoomTo methods
Closes #1977
2014-08-20 12:19:42 -06:00