-
Notifications
You must be signed in to change notification settings - Fork 6.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix(checkbox, radio): setting id to null causes invalid id for input #5398
fix(checkbox, radio): setting id to null causes invalid id for input #5398
Conversation
865189e
to
89adc11
Compare
src/lib/core/common-behaviors/id.ts
Outdated
* Mixin to augment a directive with an `id` property. | ||
* The id property will fall back to auto-generated unique ids if developers don't specify one. | ||
*/ | ||
export function mixinId<T extends Constructor<{}>>(base: T, componentName: string) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not sure this is a good idea. I'd consider returning a different ID than what the user defines to be surprising / confusing. For components that need an ID, I'd rather throw an error if its set to null.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hmm I see what you mean. I just had the impression (due to #5394) that it would be helpful to fall back to the auto-generated id if it's set to a falsy value.
I'm fine changing it to throw an error.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah, my thinking is that if someone wants to wrap a material component and forward through all of the bindings, they need to provide a real ID (and not just leave it empty)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah. Not sure if it would make sense for them to even fall back to id's that include the md-checkbox
prefix for example.
I think it makes sense to throw an error if the id is set null
. Anything else before I make the changes?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't think so
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@jelbourn Done. Please have another look.
8ffb8d3
to
857b87c
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
please rebase |
* In some situations, developers will change the `id` of a component dynamically. At some point if they set the `[id]` to `null` the input id will look like the following: `null-input`. * If developers are setting the `id` using a binding then the DOM Id for the host component won't be set at all (because the @input is triggered instead of the DOM property) Fixes angular#5394
857b87c
to
15d2fe4
Compare
Done. |
commit da1d1ca Author: mmalerba <[email protected]> Date: Tue Jul 11 10:19:41 2017 -0700 fix(datepicker): use 3 rows to display months of year (consistent with internal mocks) (angular#5427) fixes angular#5202 commit ed2ece9 Author: Kristiyan Kostadinov <[email protected]> Date: Tue Jul 11 19:18:41 2017 +0200 chore(tabs): switch to OnPush change detection (angular#5631) Switches all of the tab-related components to OnPush change detection and sorts out the issues that come from the changes. Relates to angular#5035. commit 70117ff Author: Kristiyan Kostadinov <[email protected]> Date: Tue Jul 11 19:16:00 2017 +0200 chore(selection): switch option and pseudo checkbox to OnPush change detection (angular#5585) * Switches the MdPseudoCheckbox, MdOption and MdOptgroup to OnPush change detection. * Fixes a few cases in MdOption where the UI state wasn't being updated properly. Relates to angular#5035. commit bcf4826 Author: Paul Gschwendtner <[email protected]> Date: Tue Jul 11 19:09:02 2017 +0200 fix(checkbox, radio): setting id to null causes invalid id for input (angular#5398) * In some situations, developers will change the `id` of a component dynamically. At some point if they set the `[id]` to `null` the input id will look like the following: `null-input`. * If developers are setting the `id` using a binding then the DOM Id for the host component won't be set at all (because the @input is triggered instead of the DOM property) Fixes angular#5394 commit 738b6be Author: Amit Portnoy <[email protected]> Date: Tue Jul 11 20:02:55 2017 +0300 fix(tabs): add module dependency on MdCommonModule (angular#5304) MdTabsModule **implicitly** depended on MdCommonModule Specifically, for rtl animations. see http://plnkr.co/edit/fBLGThvy7C0G666p56xn?p=preview. commit f3f9f43 Author: Paul Gschwendtner <[email protected]> Date: Tue Jul 11 18:56:51 2017 +0200 tests(slide-toggle): separate form tests for slide-toggle (angular#5629) * Separates the tests with and without the form modules. This is important to ensure that the slide-toggle works properly without and with forms. commit baba6ef Author: Kristiyan Kostadinov <[email protected]> Date: Tue Jul 11 18:30:40 2017 +0200 feat(snack-bar): inject data and MdSnackBarRef into custom snack-bar component (angular#5383) * feat(snack-bar): inject data and MdSnackBarRef into custom snack-bar component * Injects the `MdSnackBarRef` into custom snack bar instances. * Adds the option to inject arbitrary data into a snack bar. * Turns the `DialogInjector` into a `PortalInjector` to allow it to be used elsewhere (e.g. the snack-bar). * Minor tweaks to the `SimpleSnackBar` to get it to use the new DI tokens instead of assigning data directly to the component instance. Fixes angular#5371. commit 8c13325 Author: Jeremy Elbourn <[email protected]> Date: Tue Jul 11 09:25:54 2017 -0700 fix(bidi): make `dir` and `changes` readonly (angular#5645) commit 72148c0 Author: Kristiyan Kostadinov <[email protected]> Date: Tue Jul 11 18:24:05 2017 +0200 feat(typography): allow typography config to be passed via mat-core (angular#5625) Allows for the typography config to be specified optionally through the `mat-core` mixin, avoiding some of the extra bloat that comes from overriding the typography after a theme is defined. Fixes angular#5589. commit 5bc97ec Author: Kristiyan Kostadinov <[email protected]> Date: Tue Jul 11 18:21:55 2017 +0200 fix(list): subheader margin being overwritten by typography (angular#5652) Fixes the `.mat-subheader` margin being overwritten by the `.mat-typography` due to lower specificity. Fixes angular#5639. commit 9022a7a Author: Rafael Santana <[email protected]> Date: Tue Jul 11 13:19:34 2017 -0300 fix(pseudo-checkbox): fix spell check (pallete -> palette) (angular#5661) commit 2295877 Author: Michael Prentice <[email protected]> Date: Mon Jul 10 19:43:42 2017 -0400 chore(examples): missing table module exports (angular#5663) material.angular.io build was throwing missing module errors `CdkTableModule` and `MdTableModule` need to be exported Relates to angular#5608 commit 4f8f6bd Author: Jeremy Elbourn <[email protected]> Date: Mon Jul 10 12:48:10 2017 -0700 chore: use existing screenshot firebase key commit a1a7dcb Author: Paul Gschwendtner <[email protected]> Date: Sat Jun 10 11:16:03 2017 +0200 build: fix deploying of screenshot functions * Updates the dashboard and screenshot deploy script to exit the process immediately if the Firebase token is not set. * Fixes that the error message of the dashboard still shows the old name of the token variable * Renames the screenshot variables to follow the dashboard environment variables * Explicitly specifies the project that will be uploaded in the screenshot deploy script (same as for dashboard) commit 5e961cb Author: robindijkhof <[email protected]> Date: Tue Jul 11 00:24:26 2017 +0200 test(sidenav): add e2e tests (angular#5463) commit 46d0b6f Author: Will Howell <[email protected]> Date: Mon Jul 10 15:18:47 2017 -0400 docs(dialog): example of how to inject MdDialogRef (angular#5311) commit 1f97945 Author: Paul Gschwendtner <[email protected]> Date: Mon Jul 10 20:38:45 2017 +0200 build: fix stylelint deprecation warning (angular#5618) * Fixes the stylelint deprecation warning * Fixes that stylelint lints the compiled bundles from `dist/` folders of the `dashboard` or `screenshot` app * Updates the package-lock with [email protected] commit dabcd53 Author: Paul Gschwendtner <[email protected]> Date: Mon Jul 10 20:38:09 2017 +0200 build: separate deploy jobs in deploy build stage (angular#5621) Currently every deployment runs in a single Travis job concurrently. This messes up the logs and it's also hard to see what actually runs at all. The different deployment jobs should run concurrently in the deploy build stage. commit 145ca8e Author: Paul Gschwendtner <[email protected]> Date: Mon Jul 10 20:37:41 2017 +0200 docs(getting-started): include cdk in systemjs config (angular#5626) * The getting started guide includes a brief section for the SystemJS configuration of a project using Angular Material. This extra section now also needs to include the CDK package. Fixes angular#5624 commit 557b31b Author: Kristiyan Kostadinov <[email protected]> Date: Mon Jul 10 19:04:25 2017 +0200 chore: fix linting errors (angular#5617) As a result of c09e8a7, a few linting errors got introduced.
This issue has been automatically locked due to inactivity. Read more about our automatic conversation locking policy. This action has been performed automatically by a bot. |
id
of a component dynamically. At some point if they set the[id]
tonull
the input id will look like the following:null-input
.id
property of the component (after setting the id tonull
for example)id
using a binding then the DOM Id for the host component won't be set at all (because the @input is triggered instead of the DOM property)Note: There will be likely a bit of a payload increase, but it's for the sake of consistency and will be an improvement if we have more components with id's
Fixes #5394