components
components copied to clipboard
feat(material-luxon-adapter): Add support for Luxon 3
Feature Description
Luxon 3.0 was released on 9 July 2022 (see changelog)
This appears to be a largely compatible release, with the exception of system zone behaviour.
Please add support for this version in the material-luxon-adapter.
Use Case
Use of Luxon 3.0 without forcing incompatible dependencies.
The breaking change made in Luxon is (from the release notes)
Add "default" as an option for specifying a zone, and change "system" to really mean the system zone (breaking change)
This change does not affect the use of the material-luxon-adapter which continues to work without issue.
Even if we don't need to make any code changes, I think that we'll have to expand the version range in our peerDependencies.
I looked into it and it seems like this call will be broken in Luxon 3: https://github.com/angular/components/blob/main/src/material-luxon-adapter/adapter/luxon-date-adapter.ts#L200. We'll have to set the minimum required version to 3.0 which will be breaking so the change will have to wait until Angular 15.
I looked into it and it seems like this call will be broken in Luxon 3: https://github.com/angular/components/blob/main/src/material-luxon-adapter/adapter/luxon-date-adapter.ts#L200. We'll have to set the minimum required version to 3.0 which will be breaking so the change will have to wait until Angular 15.
I don't think that line actually requires a change. The breaking change in Luxon only applies if "system" was set as the timezone. Because the Angular line in question uses either 'utc' or undefined, it's fine. An undefined zone when passed to toFormat() uses the default zone in both 2.5.0 and 3.0.3.
import * as luxon from "https://cdn.skypack.dev/[email protected]";
const displayFormat = 'ZZZZZ';
for (let i = 0; i < 4; i++) {
let zone = i % 2 ? undefined : 'system';
luxon.Settings.defaultZone = i <= 1 ? undefined : "Pacific/Guam";
const date = luxon.DateTime.now();
const dateStr = date
.toFormat(displayFormat, {timeZone: zone});
console.log(dateStr, zone, luxon.Settings.defaultZone);
}
As such, I think this can be resolved simply by setting the allowed versions of Luxon to 2 or 3.
This issue has been automatically locked due to inactivity. Please file a new issue if you are encountering a similar or related problem.
Read more about our automatic conversation locking policy.
This action has been performed automatically by a bot.