Commit Graph

1075 Commits

Author SHA1 Message Date
Kristiyan Kostadinov ee1a5a7aa3 fix(dialog): fire afterClosed callback after all dialog actions are done (#3892)
* Fires the afterClosed callback once the dialog is removed and the previously-focused element has been refocused. Until now the order was reversed, which prevents people from being able to refocus a different element.
* Cleaned up the `MdDialogContainer` logic to simplify it and to remove the need to subscribe to zone events.
2017-04-17 15:16:02 -07:00
Kristiyan Kostadinov 7336bdc237 fix(tabs): unnecessary scrollbar if content has a margin (#4062)
Fixes the tabs having a scrollbar if their inner content has a margin. This seems to be a side-effect of #3162.

Fixes #4035.
2017-04-17 14:53:31 -07:00
Kristiyan Kostadinov aebbd8a155 fix(progress-spinner): not working with server-side rendering (#4020)
* Switches the progress spinner from using `querySelector` to `ViewChild`.
* Moves all of the remaining DOM manipulation to the renderer.
* Skips animations if `requestAnimationFrame` is not available.
* Simplifies some unnecessarily complex logic for adding/removing the theme class.

Fixes #3988.
2017-04-17 14:33:40 -07:00
Kristiyan Kostadinov 32b7426741 fix(input): allow pointer events on placeholder (#3878)
Removes the `pointer-events: none` from the input placeholder in order to allow for users to bind events to it. Clicking through isn't necessary anyway, because it automatically redirects focus to the underlying input already.
2017-04-17 14:33:20 -07:00
Kristiyan Kostadinov e263fb7807 fix(list): set explicit box-sizing on icon (#3876)
Sets an explicit `box-sizing` on the icons inside of lists, in order to avoid alignment issues if the consumer uses `border-box` globally.

Fixes #3863.
2017-04-17 14:32:57 -07:00
tinayuangao de8b97f68e fix(checkbox): do not set indeterminate when set checked programmatically (#4024)
Only set indeterminate when user clicked on checkbox
2017-04-17 11:48:33 -07:00
Mac 9f2c7aca2e docs(dialog): address injecting dialog data (#3907) 2017-04-17 11:40:57 -07:00
Paul Gschwendtner 5c3278a4cb chore: remove unused providers in demo-app (#3851)
* Since the MaterialModule now includes all providers, the old explicit providers on demo-app components are unnecessary. Those can be removed safely.
2017-04-17 11:39:25 -07:00
Paul Gschwendtner 21f88999bb fix(input): incorrect height with autosize (#4084)
Currently when using the `mdTextareaAutosize` directive the textarea height might be incorrect on component initialization.

This happens because the textarea `scrollHeight` property is not ready in the `ngOnInit` lifecycle hook yet.

Other libraries like `angular-elastic` have timeouts for that. But using the `ngAfterViewInit` lifecycle hook is more elegant and also ensures that the `scrollHeight` property is ready.

Also switches `offsetHeight` to `clientHeight` since we don't want to include the border in our line-height calculations.

Also by default `textarea` elements have a padding of `2px` and the `padding` needs to be explicitly set to `0px` when resolving the line-height.

Fixes #4070.
2017-04-14 14:03:33 -07:00
tinayuangao efb39da377 fix(checkbox): support OnPush for disabled with forms module (#4087) 2017-04-14 14:02:49 -07:00
Paul Gschwendtner a773515c56 build: detect todos in public comments (#4059)
* build: detect todos in public comments

* Creates a naive rule that checks all multi-line comments and reports failures once it detects TODOs inside of it.

* This means that TODOs always need to placed inside of single-line comments.

Fixes #4026
2017-04-14 13:06:38 -07:00
Mac fe9204ed08 chore: fix typos in coding standards (#4043) 2017-04-12 17:58:38 -07:00
Paul Gschwendtner 60ea218c67 build: use version placeholder in packages (#4065)
* Introduces a version placeholder (as in angular/angular) that will be replaced with the version string form the root `package.json` file.

* This ensures that the different packages are always having the correct version and it also ensures that there is no version-mismatch.
2017-04-12 17:19:18 -07:00
Paul Gschwendtner abd2ac6489 build: create material-examples package (#4046) 2017-04-12 16:37:08 -07:00
Jeremy Elbourn 9d719c544e fix(grid-list): export MdGridTile. Fixes #2408 (#4000) 2017-04-11 09:41:10 -07:00
Kristiyan Kostadinov 2d500445d4 fix(compatibility): throw better error when wrong prefix is used (#3871)
Throws a slightly better error when the wrong prefix is used. The error now includes the node name of the offending element, which should make it easier to pinpoint the issue.
2017-04-11 08:58:56 -07:00
Kristiyan Kostadinov a65d2f4c0f fix(compatibility): error in theme check with angular universal (#3872)
Fixes a reference error being thrown by the theme check when using server-side rendering.

Fixes #3870.
2017-04-11 08:58:24 -07:00
Paul Gschwendtner 857c2171ce perf(dialog): switch dialog animations to translate3d (#3905)
* Switches the `translate` to `translate3d` for hardware accelerated animations.
2017-04-11 08:54:57 -07:00
Kristiyan Kostadinov f412499a8a fix(list): icon size in dense mode (#3913)
Fixes the size of icons inside dense lists.

Fixes #3886.
2017-04-11 08:54:32 -07:00
mmalerba 21cbf346e4 fix(input): make start and end hints interact well when their text needs to wrap (#3979) 2017-04-11 08:48:02 -07:00
Kristiyan Kostadinov eaf16c8c66 fix(select): wrong panel width if element is hidden initially (#3647)
Fixes the select not having a proper width if it became visible after it was initialized.

Fixes #3639.
Fixes #3244.
2017-04-11 08:47:39 -07:00
Paul Gschwendtner e22b55e811 fix(checkbox, radio): ripple error on focus event (#3869)
* The checkbox and radio disable the ripples using a `*ngFor` check. This causes the `ViewChildren` instance to turn null. The reference is required for the focus indicators.

* If ripples are disabled there will be still ripples on click. This is due to the fact that label elements redirect focus to the underlying input element. The `focusOrigin` is therefore `program` and a focus ripple will show up.

* Tests had to be adjusted because the `[md-ripple]` element won't be removed anymore. Therefore the tests now confirm that no ripples are showing up.

Fixes #3856.
2017-04-11 08:47:22 -07:00
Paul Gschwendtner 7f65f31ef8 fix(button): ripple color for raised buttons (#3829)
* fix(button): ripple color for raised buttons

* Fixes the incorrect ripple color for raised buttons. Currently the ripple color is always based on black. This is incorrect on palettes like Indigo.

Fixes #2901

* Address feedback

* Distinguish between buttons with focus overlay

* Fix comment
2017-04-11 08:42:26 -07:00
Thomas Shafer da33c03c70 fix(overlay): Render the templates before placing them in the overlay. (#2989)
This fixes positioning issues when rendering templates which contain embedded templates.
The templates need to be rendered in order to properly determine width which can then determine placement.
2017-04-11 08:40:27 -07:00
Kristiyan Kostadinov eef57f601c fix(snack-bar): allow multi-line text (#3626)
* Wraps multi-line text, instead of truncating it, inside of snack bars. **Note:** While the spec only mentions multi-line text on mobile, this seems to be a better approach than cutting it off at ~500px. We can revisit this if we start using media queries.
* Aligns the snack bar button margin to the spec.
* Simplifies some of the CSS to remove the need for a hardcoded height and negative margins.

Fixes #1951.
2017-04-11 08:37:13 -07:00
Kristiyan Kostadinov edf01c025e fix(tooltip): wrong position when using OnPush change detection (#3671)
* fix(tooltip): wrong position when using OnPush change detection

Fixes the tooltip having a wrong position if it is inside a component with `OnPush` change detection. The issue was due to the fact that when `OnPush` is used, the tooltip text isn't rendered at the moment when the element is positioned.

Fixes #3497.
2017-04-11 08:26:27 -07:00
Kristiyan Kostadinov 3796f69f9d fix(dialog): unable to press escape to close in lazy-loaded module (#3788)
Fixes not being able to use the escape key to close a dialog that was opened from a lazy-loaded module.

Fixes #3737.
2017-04-11 08:25:53 -07:00
Alex Weber 033fe8db75 docs(sidenav): add "push" mode to api docs (#3803) 2017-04-11 08:22:00 -07:00
Kristiyan Kostadinov cc8f871e8d fix(slider,slide-toggle): use the grab cursor (#3821)
Uses the `grab` cursor when hovering over an active slider's thumb and thumb labels, as well as on active slide toggles.

Fixes #3778.
2017-04-11 08:20:57 -07:00
Jeremy Elbourn 1da2b70668 chore: add additional structure to generated docs (#3985)
* For API docs, wrap each generated document in `.docs-api`
* For markdown docs, wrap each generated document in `.docs-markdown`
* Remove the `h1` from API docs that contained only the component name
* Change the `h2` for API docs to be a friendlier title followed by an example import.
* Increase header level for API by one across the board (so that they're "under" the new `h2`)
* A few misc. docs fixes
2017-04-08 16:27:10 -06:00
Jeremy Elbourn 94320c4e68 chore: update tslint to v5 and fix newly surfaced issues (#3958) 2017-04-07 16:59:03 -06:00
Jeremy Elbourn f396657b04 chore: bump version to beta.3 and add changelog (#3953) 2017-04-07 14:59:46 -06:00
Mac 59c62893ac docs(dialog): document viewContainerRef config option (#3825) 2017-04-04 17:49:44 -07:00
Jeremy Elbourn 3f5894efc7 fix: deprecate MaterialModule (#3840)
We've found that, with the current state of tree-shaking in the world,
that using an aggregate NgModule like `MaterialModule` leads to tools
not being able to eliminate code for components that aren't used.

In order to ensure that users end up with the smallest code size
possible, we're deprecating MaterialModule, to be removed in the a
subsequent release.

To replace `MaterialModule`, users can create their own "Material"
modul within their application (e.g., `GmailMaterialModule`) that
imports only the set of components actually used in the application.
2017-04-04 17:22:04 -07:00
Mac 4c407f0dc8 docs(tabs): use two-way binding syntax in API doc (#3885) 2017-04-04 17:19:40 -07:00
Johan Bruning bc074a19b9 docs(dialog): fix misleading code comment (#3894) 2017-04-04 17:17:27 -07:00
Kristiyan Kostadinov c486cf817a test(select): various test inconsistencies (#3861)
* test(select): various test inconsistencies

* Fixes a select test that occasionally fails to capture the error inside the expect, causing it to get logged without actually being thrown. This seems to be a Zone-related issue since wrapping a few calls in `async` makes it behave correctly.
* Fixes an RTL test that fails if it is made async. This incorporates the changes from #3866 and #3163 and fixes the underlying issue. It appears that the test was failing, because IE does a slight twitch on the select panel since it goes from a pixel-based `min-width` to one with `calc` and percentages to just percentages. I've set the default width to 100% which is the same as the pixel-based one, which appears to make IE happy.

* chore: verify that changing the min-width causes failures

* chore: revert min-width change

* chore: remove a few unnecessary expressions
2017-04-04 17:17:09 -07:00
Paul Gschwendtner f40296e0fa fix: aot runtime issues (#3807)
* fix: aot runtime issues

Currently when using the `MdSnackBar` in AOT, there will be runtime exceptions from the NgFactory. Those are caused by the re-exports of DI tokens.

The Angular compiler will then look for the first export e.g `MdLiveAnnouncer` and the normal `LiveAnnouncer` export wont be included in the factory.

This is breaking at runtime now, because the NgFactory searches for `LiveAnnouncer` but there is only the `LiveAnnouncer` (DI exception)

Since this deprecation is pretty old we can safely remove it anyways. Although this is probably an Angular that should be reported separately.

Also this commit fixes the output directory of the `aot` gulp task. Currently it outputs the factories in a wrong directory. (This allows us to serve the aot demo-app in the future)

* Remove MdUniqueSelectionDispatcher
2017-04-01 07:14:25 +08:00
Paul Gschwendtner 904c71e17f fix(slide-toggle): fix unavailable unmonitor call (#3862)
* fix(slide-toggle): fix unavailable unmonitor call

* Remove variable
2017-04-01 02:50:43 +08:00
Paul Gschwendtner 724170df24 demo(slide-toggle): fix slide-toggle required demo (#3793)
Fixes the slide-toggle required demo, where the component will be compared with the native required state.

Basically in the demo, the form should be validated native and should show the browsers popup if the slide-toggle is required.
2017-04-01 01:43:13 +08:00
Paul Gschwendtner 2240b6c5a8 refactor(focus-origin-monitor): rename unmonitor to stopMonitoring (#3783)
* Renames the `unmonitor` function to `stopMonitoring`.
* Removes unnecessary code that keeps track of the `FocusOriginMonitor` subscription. After calling `stopMonitoring` the observable will complete.
2017-04-01 01:42:35 +08:00
Kristiyan Kostadinov a71a5af2ea feat(dialog): allow for the dialog dimensions to be updated (#2940)
* feat(dialog): allow for the dialog dimensions to be updated

Adds an `updateDimensions` method to the `MdDialogRef` which allows the user to update a dialog's dimensions after it has been created.

Fixes #2930.

* refactor: split dimensions method into two

* refactor: rename updateDimensions to updateSize

* refactor: add back _getOverlayState method

* chore: fix aot issue
2017-04-01 01:42:24 +08:00
Kristiyan Kostadinov e82457c118 fix(select): exception if selected value is accessed on init (#3785)
Fixes an error that is thrown if something attempts to access the `selected` value of `md-select` too early. The issue comes from the fact that the underlying `SelectionModel` gets initialized too late in `ngAfterContentInit`.

Fixes #3750.
2017-03-30 05:32:10 +08:00
Kristiyan Kostadinov 4282917f0c feat(theming): log a warning if core theme isn't loaded (#3781)
* feat(theming): log a warning if core theme isn't loaded

* Checks the user's loaded stylesheets and logs a warning if the Material core theme isn't loaded.
* Fixes a wrong `typeof` check when determining the doctype.

Fixes #2828.

Note: I originally went with looping through the `document.styleSheets` to check whether the selector is defined, however I had to switch back to `getComputedStyle`, because browsers don't expose the `document.styleSheets`, if the CSS file is being loaded from another domain. This would've caused the warning to be logged if the user loads over a CDN.

* refactor: address feedback
2017-03-30 05:31:55 +08:00
Paul Gschwendtner c4ec662390 feat(slide-toggle): add ripple focus indicator (#3739)
* feat(slide-toggle): add ripple focus indicator

* Introduces a focus indiactor using the persistent ripples.

* Address comments
2017-03-30 05:31:42 +08:00
Jeferson Estevo bedf5a1e42 fix(autocomplete): do not trigger submit on ENTER (#3727)
* fix(autocomplete): do not trigger submit on ENTER

When an option is selected with the ENTER key, it should not submit the form and prevent the default input behavior

Fixes #3159

* test(autocomplete): removing extra detectChanges
2017-03-30 05:31:28 +08:00
mmalerba 6d6c12dc16 fix(input): don't add empty prefix & suffix wrappers (#3724)
* fix(input): don't add empty prefix & suffix wrappers

* add tests
2017-03-30 05:31:17 +08:00
Kristiyan Kostadinov 07793a48ea fix(tabs): re-align ink bar on direction change (#3622)
Re-aligns the ink bar if the user's layout direction changed.

Fixes #3615.
2017-03-30 05:31:04 +08:00
Kristiyan Kostadinov 52ea7a34e2 fix(select): wrong item order in label in rtl (#3567)
Fixes selected items not having the proper order in the label when `md-select` is in `multiple` mode and in RTL.
2017-03-30 05:30:32 +08:00
Kristiyan Kostadinov 8e6720b602 fix(dialog): leaking MdDialogContainer references (#2944)
* fix(dialog): leaking MdDialogContainer references

Fixes an issue that caused the `MdDialogContainer` references to not be cleaned up, and as a result, any of the `MdDialogRef` and `MdDialogConfig` instances as well. The issue seems to come from the fact that a couple of blocks that look like:
```
this._ngZone.onMicrotaskEmpty.first().subscribe(() => {
  this._elementFocusedBeforeDialogWasOpened = document.activeElement;
  this._focusTrap.focusFirstTabbableElement();
});
```

End up being transpiled to:
```
var _this = this;
this._ngZone.onMicrotaskEmpty.first().subscribe(function () {
    _this._elementFocusedBeforeDialogWasOpened = document.activeElement;
    _this._focusTrap.focusFirstTabbableElement();
});
```

This seems to cause the browser to retain the `_this` reference after the dialog has been destroyed.

Fixes #2876.

* chore: add comment about `this` usage in zone
2017-03-30 05:30:20 +08:00