-
Notifications
You must be signed in to change notification settings - Fork 13.5k
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 property for Datetime #29065
Conversation
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 and time 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 - 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 - [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. --> --------- Co-authored-by: ionitron <[email protected]>
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 Button has 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 Button - 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. --> --------- Co-authored-by: Liam DeBeasi <[email protected]>
/** | ||
* We do not want to display the time zone name | ||
*/ | ||
delete formatOptions.timeZoneName; |
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 do not think we should be using delete
here.
This will mutate the original reference passed into the function.
For example, check the console logs in this example: https://codepen.io/sean-perkins/pen/BabMMBK.
You will see that after, the object passed into the helper function no longer reflects it's original value.
Instead, we should be creating a new object without the timezone.
return {
...formatOptions
timeZone: 'UTC',
timeZoneName: undefined
}
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.
fixed in d9239e1
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.
Feature works great, nice work!
Just a few clean-up items listed.
I think an example in one of our HTML templates that demonstrates the format options feature could be useful as well (doesn't need to be connected to a playwright test).
@@ -0,0 +1,52 @@ | |||
import { printIonWarning } from '@utils/logging'; |
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.
~ Optional: I think validate.ts
would be a better name for what this file is responsible for and the functions within it.
"Warn" is what is happening as a side-effect of validating the data coming in.
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.
updated in 85a7d73
formatOptions?.time?.timeZone || | ||
formatOptions?.time?.timeZoneName | ||
) { | ||
printIonWarning('Datetime: "timeZone" and "timeZoneName" are not supported in "formatOptions".'); |
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.
In most places that we use printIonWarning
, we additionally log the element reference that is associated with the warning. This helps developers know which element is throwing the warning, when they have multiple on the view.
I think it'd be worth passing the element reference into these functions (all in this file) and log the element reference as the second argument:
printIonWarning("Your message", el);
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.
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.
Great work 🎉
Issue number: Internal
What is the current behavior?
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?
Does this introduce a breaking change?
Other information
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.