Skip to content
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

refactor(range): remove legacy property and support for legacy syntax #29040

Merged
merged 10 commits into from
Feb 15, 2024

Conversation

liamdebeasi
Copy link
Contributor

@liamdebeasi liamdebeasi commented Feb 13, 2024

Issue number: internal


What is the current behavior?

In Ionic Framework v7, we simplified the range syntax so that it was no longer required to be placed inside of an ion-item. We maintained backwards compatibility by adding a legacy property which allowed it to continue to be styled properly when written in the following way:

<ion-item>
  <ion-label>Label</ion-label>
  <ion-range></ion-range>
</ion-item>

While this was supported in v7, console warnings were logged to notify developers that they needed to update this syntax for the best accessibility experience.

What is the new behavior?

  • Removes the legacy property and support for the legacy syntax. Developers should follow the migration guide in the range documentation to update their apps. The new syntax requires a label or aria-label on ion-range :

    <ion-item>
      <ion-range label="Label"></ion-range>
    </ion-item>
  • Alternatively, the "label" slot can be used for developer who require custom HTML labels:

    <ion-item>
      <ion-range>
        <div slot="label">Label</div>
      </ion-range>
    </ion-item>
  • Removes the legacy tests under range/test/legacy/ and all related screenshots

  • Removes the range usage in item/test/disabled, item/test/legacy/disabled

Does this introduce a breaking change?

  • Yes
  • No
  1. Developers have had console warnings when using the legacy syntax since the v7 release. The migration guide for the new range syntax is outlined in the Range documentation.
  2. This change has been documented in the Breaking Changes document with a link to the migration guide.

BREAKING CHANGE:

The legacy property and support for the legacy syntax, which involved placing an ion-range inside of an ion-item with an ion-label, have been removed from range. For more information on migrating from the legacy range syntax, refer to the Range documentation.

This PR removes the tests for the legacy range syntax. A separate PR
will be used to remove the implementation for the legacy syntax.

---------

Co-authored-by: ionitron <[email protected]>
@github-actions github-actions bot added the package: core @ionic/core package label Feb 13, 2024
@liamdebeasi liamdebeasi changed the title test(range): remove legacy tests (#29023) refactor(range): remove legacy property and support for legacy syntax Feb 13, 2024
liamdebeasi and others added 3 commits February 13, 2024 18:23
This pull request includes the changes to remove the `legacy` property
for the range as part of
#29040. That pull
request specifically focuses on updating tests to remove any legacy
range usage. The internal ticket suggested separating these changes into
individual pull requests. Please refer to the mentioned pull request for
a detailed description of the combined changes from both pull requests.
This will be merged into that pull request upon approval.

---------

Co-authored-by: ionitron <[email protected]>
@github-actions github-actions bot added package: angular @ionic/angular package package: vue @ionic/vue package labels Feb 14, 2024
@liamdebeasi liamdebeasi marked this pull request as ready for review February 14, 2024 17:32
Copy link
Member

@brandyscarney brandyscarney left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we need to update this:

await page.goto(`/src/components/range/test/legacy/basic`, config);

@@ -861,8 +767,7 @@ Developers can dismiss this warning by removing their usage of the "legacy" prop
}

render() {
const { legacyFormController } = this;
return legacyFormController.hasLegacyControl() ? this.renderLegacyRange() : this.renderRange();
return this.renderRange();
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we just move the renderRange function into render instead?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in a65ec85

@liamdebeasi
Copy link
Contributor Author

I updated the legacy path in 5cdedc9. However, this test is skipped so there should be no noticeable difference on CI right now.

@liamdebeasi liamdebeasi merged commit 58c795f into feature-8.0 Feb 15, 2024
44 checks passed
@liamdebeasi liamdebeasi deleted the FW-2997 branch February 15, 2024 17:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
package: angular @ionic/angular package package: core @ionic/core package package: vue @ionic/vue package
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants