fix(many): dynamic label support for modern form controls#27156
Merged
sean-perkins merged 11 commits intomainfrom Apr 17, 2023
Merged
fix(many): dynamic label support for modern form controls#27156sean-perkins merged 11 commits intomainfrom
sean-perkins merged 11 commits intomainfrom
Conversation
|
|
2 tasks
sean-perkins
added a commit
that referenced
this pull request
Apr 12, 2023
<!-- Please refer to our contributing documentation for any questions on submitting a pull request, or let us know here if you need any help: https://ionicframework.com/docs/building/contributing --> <!-- Some docs updates need to be made in the `ionic-docs` repo, in a separate PR. See https://github.com/ionic-team/ionic-framework/blob/main/.github/CONTRIBUTING.md#modifying-documentation for details. --> <!-- Please do not submit updates to dependencies unless it fixes an issue. --> <!-- Please try to limit your pull request to one type (bugfix, feature, etc). Submit multiple pull requests if needed. --> ## What is the current behavior? <!-- Please describe the current behavior that you are modifying. --> There are tests for `ion-input` that are not in the `/legacy` test folder, that are using invalid modern syntax. Inversely, there is legacy tests that do not explicitly set `legacy="true"` that will be updated the modern syntax when #27156 is merged. <!-- Issues are required for both bug fixes and features. --> Issue URL: N/A ## What is the new behavior? <!-- Please describe the behavior or changes that are being added by this PR. --> - Updates modern tests to use modern label syntax (using `aria-label`) - Applies `legacy="true"` to legacy test templates - Fixes a typo in a legacy test where the selector was incorrect ## Does this introduce a breaking change? - [ ] Yes - [x] No <!-- If this introduces a breaking change, please describe the impact and migration path for existing applications below. --> ## Other information <!-- Any other information that is important to this PR such as screenshots of how the component looks before and after the change. --> --------- Co-authored-by: ionitron <hi@ionicframework.com>
liamdebeasi
suggested changes
Apr 17, 2023
Contributor
liamdebeasi
left a comment
There was a problem hiding this comment.
There are quite a few tests using the legacy syntax that should be using the modern syntax. Is this intentional? My understanding of #27199 is this only impacts ranges used inside of ion-item, but these impacted ranges are not being used in an item.
liamdebeasi
pushed a commit
that referenced
this pull request
Apr 17, 2023
<!-- Please refer to our contributing documentation for any questions on submitting a pull request, or let us know here if you need any help: https://ionicframework.com/docs/building/contributing --> <!-- Some docs updates need to be made in the `ionic-docs` repo, in a separate PR. See https://github.com/ionic-team/ionic-framework/blob/main/.github/CONTRIBUTING.md#modifying-documentation for details. --> <!-- Please do not submit updates to dependencies unless it fixes an issue. --> <!-- Please try to limit your pull request to one type (bugfix, feature, etc). Submit multiple pull requests if needed. --> ## What is the current behavior? <!-- Please describe the current behavior that you are modifying. --> There are tests for `ion-input` that are not in the `/legacy` test folder, that are using invalid modern syntax. Inversely, there is legacy tests that do not explicitly set `legacy="true"` that will be updated the modern syntax when #27156 is merged. <!-- Issues are required for both bug fixes and features. --> Issue URL: N/A ## What is the new behavior? <!-- Please describe the behavior or changes that are being added by this PR. --> - Updates modern tests to use modern label syntax (using `aria-label`) - Applies `legacy="true"` to legacy test templates - Fixes a typo in a legacy test where the selector was incorrect ## Does this introduce a breaking change? - [ ] Yes - [x] No <!-- If this introduces a breaking change, please describe the impact and migration path for existing applications below. --> ## Other information <!-- Any other information that is important to this PR such as screenshots of how the component looks before and after the change. --> --------- Co-authored-by: ionitron <hi@ionicframework.com>
liamdebeasi
approved these changes
Apr 17, 2023
liamdebeasi
pushed a commit
that referenced
this pull request
Apr 19, 2023
<!-- Please refer to our contributing documentation for any questions on submitting a pull request, or let us know here if you need any help: https://ionicframework.com/docs/building/contributing --> <!-- Some docs updates need to be made in the `ionic-docs` repo, in a separate PR. See https://github.com/ionic-team/ionic-framework/blob/main/.github/CONTRIBUTING.md#modifying-documentation for details. --> <!-- Please do not submit updates to dependencies unless it fixes an issue. --> <!-- Please try to limit your pull request to one type (bugfix, feature, etc). Submit multiple pull requests if needed. --> ## What is the current behavior? <!-- Please describe the current behavior that you are modifying. --> There are tests for `ion-input` that are not in the `/legacy` test folder, that are using invalid modern syntax. Inversely, there is legacy tests that do not explicitly set `legacy="true"` that will be updated the modern syntax when #27156 is merged. <!-- Issues are required for both bug fixes and features. --> Issue URL: N/A ## What is the new behavior? <!-- Please describe the behavior or changes that are being added by this PR. --> - Updates modern tests to use modern label syntax (using `aria-label`) - Applies `legacy="true"` to legacy test templates - Fixes a typo in a legacy test where the selector was incorrect ## Does this introduce a breaking change? - [ ] Yes - [x] No <!-- If this introduces a breaking change, please describe the impact and migration path for existing applications below. --> ## Other information <!-- Any other information that is important to this PR such as screenshots of how the component looks before and after the change. --> --------- Co-authored-by: ionitron <hi@ionicframework.com>
liamdebeasi
pushed a commit
that referenced
this pull request
Apr 19, 2023
<!-- Please refer to our contributing documentation for any questions on submitting a pull request, or let us know here if you need any help: https://ionicframework.com/docs/building/contributing --> <!-- Some docs updates need to be made in the `ionic-docs` repo, in a separate PR. See https://github.com/ionic-team/ionic-framework/blob/main/.github/CONTRIBUTING.md#modifying-documentation for details. --> <!-- Please do not submit updates to dependencies unless it fixes an issue. --> <!-- Please try to limit your pull request to one type (bugfix, feature, etc). Submit multiple pull requests if needed. --> ## What is the current behavior? <!-- Please describe the current behavior that you are modifying. --> Developers that are using Ionic v7 are experiencing an issue where implementations that are intended to use the modern control syntax will render with the legacy syntax and a warning will be displayed. The issue is most easily reproduced by not assigning a label to the control and then asynchronously assigning a label after a duration. Angular example: ```html <ion-item> <ion-input [label]="label"></ion-input> </ion-item> ``` ```ts @component({ ... }) export class MyComponent { @input() label?: string; // initially unset ngOnInit() { setTimeout(() => this.label = 'Hello world', 500); } } ``` <!-- Issues are required for both bug fixes and features. --> Issue URL: resolves #27085 ## What is the new behavior? <!-- Please describe the behavior or changes that are being added by this PR. --> - Form controls that do not have a decorative label or `aria-label`/`aria-labelledby` assigned, will default render as modern controls. - Legacy form implementations that render an `<ion-label>` within the item, will continue to render with the legacy template and a warning will be displayed in the console. - Modern form syntax supports dynamically set labels ## Does this introduce a breaking change? - [ ] Yes - [x] No <!-- If this introduces a breaking change, please describe the impact and migration path for existing applications below. --> Legacy implementations that do not have a decorative label and do not specify `aria-label` on the control, will be upgraded to the modern syntax. For example: ```html <ion-item> <ion-input></ion-input> </ion-item> ``` Developers that do not want to update to the modern syntax yet should add the `legacy="true"` attribute to their form control. ## Other information <!-- Any other information that is important to this PR such as screenshots of how the component looks before and after the change. --> Dev-build: `7.0.2-dev.11681157690.1060bc7f` When migrating the range tests to modern syntax, I observed a visual clipping issue. This is being addressed in: #27188. This PR simply adds the legacy flag so that screenshots are the same as `main`.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What is the current behavior?
Developers that are using Ionic v7 are experiencing an issue where implementations that are intended to use the modern control syntax will render with the legacy syntax and a warning will be displayed.
The issue is most easily reproduced by not assigning a label to the control and then asynchronously assigning a label after a duration.
Angular example:
Issue URL: resolves #27085
What is the new behavior?
aria-label/aria-labelledbyassigned, will default render as modern controls.<ion-label>within the item, will continue to render with the legacy template and a warning will be displayed in the console.Does this introduce a breaking change?
Legacy implementations that do not have a decorative label and do not specify
aria-labelon the control, will be upgraded to the modern syntax.For example:
Developers that do not want to update to the modern syntax yet should add the
legacy="true"attribute to their form control.Other information
Dev-build:
7.0.2-dev.11681157690.1060bc7fWhen migrating the range tests to modern syntax, I observed a visual clipping issue. This is being addressed in: #27188. This PR simply adds the legacy flag so that screenshots are the same as
main.