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

feat(datetime): formatOptions for time button and header #29009

Merged
merged 22 commits into from
Feb 15, 2024

Conversation

mapsandapps
Copy link
Contributor

@mapsandapps mapsandapps commented Feb 9, 2024

Issue number: Internal


What is the current behavior?

The Datetime header and time button have default date formatting that cannot be set by the developer.

What is the new behavior?

  • The developer can customize the date and time formatting for the Datetime header and time button
  • A warning will appear in the console if they try to provide a time zone (the time zone will not get used)

Does this introduce a breaking change?

  • Yes
  • No

@github-actions github-actions bot added package: core @ionic/core package package: angular @ionic/angular package package: vue @ionic/vue package labels Feb 9, 2024
@mapsandapps mapsandapps marked this pull request as ready for review February 9, 2024 20:57
/**
* Formatting options, separated by date and time.
*/
@Prop() formatOptions?: DatetimeFormatOptions;
Copy link
Contributor

@averyjohnston averyjohnston Feb 12, 2024

Choose a reason for hiding this comment

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

Optional: It would be cool to have a test HTML page to mess around with this ready to go. Maybe something with a text box that lets you enter a value for formatOptions dynamically, and a button to update the datetime with what you've entered? Definitely only do this if you have spare time though.

Copy link
Contributor

Choose a reason for hiding this comment

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

It would be great to also improve the JSDoc comment here. This is the information that will show in the docs and intellisense.

Would be good to include what format it requires and maybe a link out to MDN for those rules.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

i improved the comment

core/src/components/datetime/datetime.tsx Outdated Show resolved Hide resolved
core/src/components/datetime/test/basic/datetime.e2e.ts Outdated Show resolved Hide resolved
core/src/components/datetime/test/basic/datetime.e2e.ts Outdated Show resolved Hide resolved
core/src/components/datetime/datetime.tsx Outdated Show resolved Hide resolved
core/src/components/datetime/utils/format.ts Outdated Show resolved Hide resolved
core/src/components/datetime/utils/format.ts Outdated Show resolved Hide resolved
/**
* Formatting options, separated by date and time.
*/
@Prop() formatOptions?: DatetimeFormatOptions;
Copy link
Contributor

Choose a reason for hiding this comment

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

It would be great to also improve the JSDoc comment here. This is the information that will show in the docs and intellisense.

Would be good to include what format it requires and maybe a link out to MDN for those rules.

Copy link
Contributor

@liamdebeasi liamdebeasi left a comment

Choose a reason for hiding this comment

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

I'm still looking into the type error we discussed on Slack

core/src/components/datetime/datetime.tsx Outdated Show resolved Hide resolved
core/src/components/datetime/datetime.tsx Outdated Show resolved Hide resolved
core/src/components/datetime/datetime.tsx Outdated Show resolved Hide resolved
core/src/components/datetime/test/basic/datetime.e2e.ts Outdated Show resolved Hide resolved
core/src/components/datetime/test/basic/datetime.e2e.ts Outdated Show resolved Hide resolved
core/src/components/datetime/test/basic/datetime.e2e.ts Outdated Show resolved Hide resolved
Copy link
Contributor

@averyjohnston averyjohnston left a comment

Choose a reason for hiding this comment

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

Nice work on this!

@liamdebeasi
Copy link
Contributor

liamdebeasi commented Feb 14, 2024

Can we point this towards a feature branch instead of main? Might need to create a feature-7.8 branch off main.

Also, it might be worth merging this into a branch and have that branch get merged into feature-7.8 too. That way only 1 feature entry shows up in the changelog.

@mapsandapps mapsandapps changed the base branch from main to format-options February 14, 2024 17:03
Copy link
Contributor

@liamdebeasi liamdebeasi left a comment

Choose a reason for hiding this comment

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

Functionality is mostly good. I had one questions on some of the validation, and then a few suggestions for code cleanup.

core/src/components/datetime/datetime.tsx Outdated Show resolved Hide resolved
core/src/components/datetime/datetime.tsx Show resolved Hide resolved
core/src/components/datetime/datetime.tsx Outdated Show resolved Hide resolved
core/src/components/datetime/utils/format.ts Outdated Show resolved Hide resolved
core/src/components/datetime/utils/format.ts Outdated Show resolved Hide resolved
core/src/components/datetime/datetime.tsx Outdated Show resolved Hide resolved
Copy link
Contributor

@liamdebeasi liamdebeasi left a comment

Choose a reason for hiding this comment

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

Implementation works well, just one question for my understanding.

printIonWarning(`Datetime: The '${presentation}' presentation requires a date object in formatOptions.`);
}
break;
case 'time':
Copy link
Contributor

Choose a reason for hiding this comment

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

mainly for my understanding: This is still needed for the upcoming ion-datetime-button integration right? For presentation="time" there's nothing in the datetime UI that would need formatOptions:
image

However, this would be needed for the time display in datetime button. Am I understanding correctly?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

That's correct!

@mapsandapps mapsandapps merged commit 7ac08bc into format-options Feb 15, 2024
44 checks passed
@mapsandapps mapsandapps deleted the FW-5280 branch February 15, 2024 14:55
mapsandapps added a commit that referenced this pull request Feb 22, 2024
Issue number: Internal

---------

<!-- 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. -->
The Datetime header, Datetime time button, and Datetime Button have
default date formatting that cannot be set by the developer.

## What is the new behavior?
<!-- Please describe the behavior or changes that are being added by
this PR. -->

- The developer can customize the date and time formatting for the
Datetime header and time button
- The developer can customize the date and time formatting for the
Datetime Button
- A warning will appear in the console if they try to provide a time
zone (the time zone will not get used)
- A warning will be logged if they do not include the date or time
object for formatOptions as needed for the presentation of the Datetime

## Does this introduce a breaking change?

- [ ] Yes
- [x] No

<!--
  If this introduces a breaking change:
1. Describe the impact and migration path for existing applications
below.
  2. Update the BREAKING.md file with the breaking change.
3. Add "BREAKING CHANGE: [...]" to the commit description when merging.
See
https://github.com/ionic-team/ionic-framework/blob/main/.github/CONTRIBUTING.md#footer
for more information.
-->


## Other information

<!-- Any other information that is important to this PR such as
screenshots of how the component looks before and after the change. -->

These changes have been reviewed in #29009 and #29059. This PR just adds
them to the feature branch now that the separate tickets are complete.

---------

Co-authored-by: ionitron <[email protected]>
Co-authored-by: Liam DeBeasi <[email protected]>
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.

5 participants