feat: Add Eastern and Eastern Pacific time zones #16880 (#16974)

* add eastern and eastern pacific timezones

* fixed issue while running tests.

* fix: Find Braz..il instead of Brasil

---------

Co-authored-by: Alex van Andel <me@alexvanandel.com>
This commit is contained in:
Shrey Tanna
2024-10-10 16:26:17 +00:00
committed by GitHub
co-authored by Alex van Andel
parent 711bec8d71
commit b1cd3e940e
5 changed files with 181 additions and 28 deletions
+1 -1
View File
@@ -179,7 +179,7 @@ test.describe("Availablity", () => {
.locator("svg")
.click();
await page.locator("[id=timeZone-lg-viewport]").fill("bras");
await page.locator("[id=timeZone-lg-viewport]").fill("Braz");
await page.getByTestId("select-option-America/Sao_Paulo").click();
await submitAndWaitForResponse(page, "/api/trpc/availability/schedule.update?batch=1");
await page.getByTestId("add-override").click();
+100 -27
View File
@@ -23,6 +23,66 @@ const cityData = [
city: "San Francisco",
timezone: "America/Los_Angeles",
},
{
city: "Eastern Time - US & Canada",
timezone: "America/New_York",
},
{
city: "Pacific Time - US & Canada",
timezone: "America/Los_Angeles",
},
{
city: "Central Time - US & Canada",
timezone: "America/Chicago",
},
{
city: "Mountain Time - US & Canada",
timezone: "America/Denver",
},
{
city: "Atlantic Time - Canada",
timezone: "America/Halifax",
},
{
city: "Eastern European Time",
timezone: "Europe/Bucharest",
},
{
city: "Central European Time",
timezone: "Europe/Berlin",
},
{
city: "Western European Time",
timezone: "Europe/London",
},
{
city: "Australian Eastern Time",
timezone: "Australia/Sydney",
},
{
city: "Japan Standard Time",
timezone: "Asia/Tokyo",
},
{
city: "India Standard Time",
timezone: "Asia/Kolkata",
},
{
city: "Gulf Standard Time",
timezone: "Asia/Dubai",
},
{
city: "South Africa Standard Time",
timezone: "Africa/Johannesburg",
},
{
city: "Brazil Time",
timezone: "America/Sao_Paulo",
},
{
city: "Hawaii-Aleutian Standard Time",
timezone: "Pacific/Honolulu",
},
];
const option = {
@@ -49,37 +109,50 @@ describe("getTimezone", () => {
it("should filter cities for a valid city name", () => {
expect(filterByCities("San Francisco", cityData)).toMatchInlineSnapshot(`
[
{
"city": "San Francisco",
"timezone": "America/Argentina/Cordoba",
},
{
"city": "San Francisco de Macoris",
"timezone": "America/Santo_Domingo",
},
{
"city": "San Francisco Gotera",
"timezone": "America/El_Salvador",
},
{
"city": "San Francisco",
"timezone": "America/Los_Angeles",
},
]
`);
[
{
"city": "San Francisco",
"timezone": "America/Argentina/Cordoba",
},
{
"city": "San Francisco de Macoris",
"timezone": "America/Santo_Domingo",
},
{
"city": "San Francisco Gotera",
"timezone": "America/El_Salvador",
},
{
"city": "San Francisco",
"timezone": "America/Los_Angeles",
},
]
`);
});
it("should return appropriate timezone(s) for a given city name array", () => {
expect(addCitiesToDropdown(cityData)).toMatchInlineSnapshot(`
{
"America/Argentina/Cordoba": "San Francisco",
"America/El_Salvador": "San Francisco Gotera",
"America/Los_Angeles": "San Francisco",
"America/Santo_Domingo": "San Francisco de Macoris",
"America/Sao_Paulo": "Sao Francisco do Sul",
}
`);
{
"Africa/Johannesburg": "South Africa Standard Time",
"America/Argentina/Cordoba": "San Francisco",
"America/Chicago": "Central Time - US & Canada",
"America/Denver": "Mountain Time - US & Canada",
"America/El_Salvador": "San Francisco Gotera",
"America/Halifax": "Atlantic Time - Canada",
"America/Los_Angeles": "Pacific Time - US & Canada",
"America/New_York": "Eastern Time - US & Canada",
"America/Santo_Domingo": "San Francisco de Macoris",
"America/Sao_Paulo": "Brazil Time",
"Asia/Dubai": "Gulf Standard Time",
"Asia/Kolkata": "India Standard Time",
"Asia/Tokyo": "Japan Standard Time",
"Australia/Sydney": "Australian Eastern Time",
"Europe/Berlin": "Central European Time",
"Europe/Bucharest": "Eastern European Time",
"Europe/London": "Western European Time",
"Pacific/Honolulu": "Hawaii-Aleutian Standard Time",
}
`);
});
it("should render city name as option label if cityData is not empty", () => {
@@ -0,0 +1,64 @@
{
"timezones": [
{
"name": "Eastern Time - US & Canada",
"identifier": "America/New_York"
},
{
"name": "Pacific Time - US & Canada",
"identifier": "America/Los_Angeles"
},
{
"name": "Central Time - US & Canada",
"identifier": "America/Chicago"
},
{
"name": "Mountain Time - US & Canada",
"identifier": "America/Denver"
},
{
"name": "Atlantic Time - Canada",
"identifier": "America/Halifax"
},
{
"name": "Eastern European Time",
"identifier": "Europe/Bucharest"
},
{
"name": "Central European Time",
"identifier": "Europe/Berlin"
},
{
"name": "Western European Time",
"identifier": "Europe/London"
},
{
"name": "Australian Eastern Time",
"identifier": "Australia/Sydney"
},
{
"name": "Japan Standard Time",
"identifier": "Asia/Tokyo"
},
{
"name": "India Standard Time",
"identifier": "Asia/Kolkata"
},
{
"name": "Gulf Standard Time",
"identifier": "Asia/Dubai"
},
{
"name": "South Africa Standard Time",
"identifier": "Africa/Johannesburg"
},
{
"name": "Brazil Time",
"identifier": "America/Sao_Paulo"
},
{
"name": "Hawaii-Aleutian Standard Time",
"identifier": "Pacific/Honolulu"
}
]
}
@@ -0,0 +1,10 @@
import * as additionalTimezones from "./additionalTimezones.json";
export interface Timezone {
name: string;
identifier: string;
}
export const timezones: Timezone[] = additionalTimezones.timezones;
export default additionalTimezones;
+6
View File
@@ -3,6 +3,7 @@ import type { ITimezoneOption } from "react-timezone-select";
import dayjs from "@calcom/dayjs";
import type { ICity } from "@calcom/ui/components/form/timezone-select";
import { timezones as additionalTimezones } from "../features/additionalTimezones/additionalTimezones";
import isProblematicTimezone from "./isProblematicTimezone";
function findPartialMatch(itemsToSearch: string, searchString: string) {
@@ -30,6 +31,11 @@ export const addCitiesToDropdown = (cities: ICity[]) => {
}
return acc;
}, {});
additionalTimezones.forEach((tz) => {
cityTimezones[tz.identifier] = tz.name;
});
return cityTimezones || {};
};