Commit Graph

909 Commits

Author SHA1 Message Date
Adam Bradley
baf98a132e refactor(colors): update default ionic colors 2014-11-12 11:24:07 -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
Adam Bradley
348282be5a chore(): remove unused platform css 2014-11-10 20:40:09 -06:00
Mike Hartington
dfcbef1a03 feat(fonts): platform specific fonts 2014-11-03 13:20:19 -05:00
Drew Rygh
456c2ec71e fix(ionOptionButton): vertically align content
Closes #2348
2014-10-20 21:33:58 -05:00
Drew Rygh
76405d7562 fix(ionicons): only apply spin to :before, and not the entire element
Closes #2416
2014-10-20 00:44:14 -05:00
Andrew
0d2f54e6a9 fix(slideBox): do not require scroll parent 2014-10-08 15:56:23 -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
Adam Bradley
ce18e7f2f4 refactor(css): dropping most -moz- css prefixes
Most `-moz-` css prefixes are no longer required as of Firefox 16:
http://paulrouget.com/e/unprefixing-in-firefox-16/
2014-10-07 14:36:37 -05:00
Perry Govier
a56bbc978d fix(backdrop): use sass vars 2014-10-01 16:21:55 -05:00
Adam Bradley
4c83bedf32 chore(mixin): multi param animation-name 2014-09-26 08:09:55 -05:00
Bios Sun
08b73dad0c display-inline-flex mixin name is error: 'dislay-inline-flex' 2014-09-23 11:46:50 +08:00
Perry Govier
aa7e9dd7a9 fix(tabs): fix android untyled android tab 2014-09-18 18:49:42 -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
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
db27fb116c feat(refresher): Improve refresher animation. Allow pulling icon rotation to be disabled. 2014-09-16 16:22:02 -05:00
Drew Rygh
b873190bc6 fix(popup): set popup head padding equal to popup body padding 2014-09-14 21:57:18 -05:00
Adam Bradley
581656fda4 fix(popup): fill popup width of Android 4.1-4.3 buttons
Closes #2209
2014-09-14 21:30:56 -05:00
Adam Bradley
0420e6eb2d refactor(popover): popover-top as the default 2014-09-14 21:08:21 -05:00
Max Lynch
95d3f2e3c9 fix(card): less intense box shadow 2014-09-14 19:11:14 -05:00
Sid Ferreira
0b5bce2eee Improvement in no-wrap to use existing mixin 2014-09-10 10:10:36 -03:00
Sid Ferreira
1644f89fd5 Include wrap option to the grid
This option will help a lot to create an image grid like http://codepen.io/sidfz/pen/Exuds
2014-09-09 10:34:43 -03:00
Perry Govier
69442d5a8e fix(buttons): centering icons on <a> tag buttons. Closes #2074 2014-09-05 12:33:05 -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
b69aa5485f feat(splitView): expose side menu on large viewport
Ability to keep a left menu exposed on larger viewports, such as a
landscape tablet. Added the `expose-aside-menu` attribute directive.
2014-08-26 15:00:42 -05:00
Max Lynch
853fad19b1 New transition styles 2014-08-24 15:08:30 -05:00
Andrew
84b5e91975 fix(ionContent): fix rare positioning bug when overflow-scroll is enabled
Closes #1281
2014-08-20 14:27:03 -06:00
Andrew
97e710e11a scss(popup): remove unneeded attributes 2014-08-20 14:18:34 -06:00
Andrew
6d859f4876 fix(popup): fix alignment, backdrop not fading out 2014-08-20 14:17:19 -06:00
Andrew
488e97b0e4 scss(popup): make buttons align correctly with flexbox 2014-08-20 13:32:08 -06:00
Andrew
5d06c4aef8 feat(popover): support popping from bottom or top of screen
Closes #1986
2014-08-20 12:09:08 -06:00
mhartington
e5b5906cb7 feat(scroll-content): add 1px padding-top 2014-08-07 11:38:57 -04:00
Andrew
7ddb57e60b feat(collectionRepeat): other children of ion-content element fit in
Closes #1920. Closes #1866. Closes #1380.
2014-08-06 10:32:40 -06:00
Perry Govier
93d586dea4 fix(tabs): vertically center text and icons on tabs-icon-left/right fixes #1827 2014-08-05 17:14:07 -05:00
Adam Bradley
06086ee9ae fix(header): buttons do not align in Android 4.4
Closes #1614
2014-08-05 10:23:23 -05:00
Adam Bradley
5b99fd6891 fix android popover background 2014-08-04 12:08:56 -05:00
Adam Bradley
c1215aa300 feat(popover): created popovers 2014-07-31 14:43:29 -05:00
Perry Govier
ddda809b57 feat(tabs): Expand striped android style tab functionality. Closes 1694 2014-07-30 15:52:53 -05:00
Max Lynch
0390323944 fix(cards): No more double margin if inside padding container 2014-07-30 11:41:56 -05:00
Perry Govier
bf1c1bc971 fix(tabs): remove important flag from `.tabs{border-bottom:none;} Fixes: 1652 2014-07-29 14:06:17 -05:00
Max Lynch
89999cadb1 fix(forms): Normalized form styles 2014-07-29 10:32:40 -05:00
Max Lynch
a9a52f64f4 fix(nav): Removed border on animation 2014-07-25 10:19:18 -05:00
Andrew
508848f93c style(ionReorderButton): make sure it's not cutoff 2014-07-24 17:22:27 -06:00
Perry Govier
951a9d3523 fix(scroll): prevent native webkit scrollbars from showing 2014-07-24 16:52:58 -05:00
rotorgames
114dad8cea fix(button): fix button overflow causing whole screen to overflow left/right
Closes #1780
2014-07-21 07:42:49 -06:00
Jim Cummins
dd3ce2b55d style(platform.scss): remove nested, unclosed comment
This nested unclosed comment breaks autoprefixer's parsing and causes
it to spike to 100% cpu.

No breaking changes in this commit. see diegonetto/generator-ionic#38

Cloes #1807
2014-07-21 07:39:04 -06:00
Andrew
cb36869889 fix(loading): stop resize flicker when showing & changing text 2014-07-18 15:45:29 -06:00
Perry Govier
6b218042c8 fix(sidemen): scroll false causes sidemenu content to disappear. Closes #1485 2014-07-11 16:23:04 -05:00
Perry Govier
79fb1e4941 feat(checkbox): add disabled and emotion styles to ion-checkbox. Closes #1683 and #1509 2014-07-10 17:04:22 -05:00