diff --git a/src/gmp/__tests__/timezones.js b/src/gmp/__tests__/timezones.js
index 844992cb4a..5f0187eb0f 100644
--- a/src/gmp/__tests__/timezones.js
+++ b/src/gmp/__tests__/timezones.js
@@ -3,7 +3,7 @@
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
-import {describe, test, expect} from '@gsa/testing';
+import {describe, test, expect, expectTypeOf} from '@gsa/testing';
import timezones from '../timezones';
import {isArray} from '../utils/identity';
@@ -13,11 +13,13 @@ describe('timezones tests', () => {
expect(isArray(timezones)).toEqual(true);
});
- test('should contain objects with name properties', () => {
- expect(timezones.length).toBeGreaterThan(0);
+ test('should contain more then one timezone', () => {
+ expect(timezones.length).toBeGreaterThan(1);
+ });
+ test('should contain timezones as strings', () => {
for (const zone of timezones) {
- expect(zone.name).toBeDefined();
+ expectTypeOf(zone).toBeString();
}
});
});
diff --git a/src/gmp/timezones.js b/src/gmp/timezones.js
index 87fc6e9dcd..a3a9fe66b3 100644
--- a/src/gmp/timezones.js
+++ b/src/gmp/timezones.js
@@ -3,428 +3,8 @@
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
-const timezones = [
- {name: 'Africa/Abidjan'},
- {name: 'Africa/Accra'},
- {name: 'Africa/Addis_Ababa'},
- {name: 'Africa/Algiers'},
- {name: 'Africa/Asmara'},
- {name: 'Africa/Bamako'},
- {name: 'Africa/Bangui'},
- {name: 'Africa/Banjul'},
- {name: 'Africa/Bissau'},
- {name: 'Africa/Blantyre'},
- {name: 'Africa/Brazzaville'},
- {name: 'Africa/Bujumbura'},
- {name: 'Africa/Cairo'},
- {name: 'Africa/Casablanca'},
- {name: 'Africa/Ceuta'},
- {name: 'Africa/Conakry'},
- {name: 'Africa/Dakar'},
- {name: 'Africa/Dar_es_Salaam'},
- {name: 'Africa/Djibouti'},
- {name: 'Africa/Douala'},
- {name: 'Africa/El_Aaiun'},
- {name: 'Africa/Freetown'},
- {name: 'Africa/Gaborone'},
- {name: 'Africa/Harare'},
- {name: 'Africa/Johannesburg'},
- {name: 'Africa/Juba'},
- {name: 'Africa/Kampala'},
- {name: 'Africa/Khartoum'},
- {name: 'Africa/Kigali'},
- {name: 'Africa/Kinshasa'},
- {name: 'Africa/Lagos'},
- {name: 'Africa/Libreville'},
- {name: 'Africa/Lome'},
- {name: 'Africa/Luanda'},
- {name: 'Africa/Lubumbashi'},
- {name: 'Africa/Lusaka'},
- {name: 'Africa/Malabo'},
- {name: 'Africa/Maputo'},
- {name: 'Africa/Maseru'},
- {name: 'Africa/Mbabane'},
- {name: 'Africa/Mogadishu'},
- {name: 'Africa/Monrovia'},
- {name: 'Africa/Nairobi'},
- {name: 'Africa/Ndjamena'},
- {name: 'Africa/Niamey'},
- {name: 'Africa/Nouakchott'},
- {name: 'Africa/Ouagadougou'},
- {name: 'Africa/Porto-Novo'},
- {name: 'Africa/Sao_Tome'},
- {name: 'Africa/Tripoli'},
- {name: 'Africa/Tunis'},
- {name: 'Africa/Windhoek'},
- {name: 'America/Adak'},
- {name: 'America/Anchorage'},
- {name: 'America/Anguilla'},
- {name: 'America/Antigua'},
- {name: 'America/Araguaina'},
- {name: 'America/Argentina/Buenos_Aires'},
- {name: 'America/Argentina/Catamarca'},
- {name: 'America/Argentina/Cordoba'},
- {name: 'America/Argentina/Jujuy'},
- {name: 'America/Argentina/La_Rioja'},
- {name: 'America/Argentina/Mendoza'},
- {name: 'America/Argentina/Rio_Gallegos'},
- {name: 'America/Argentina/Salta'},
- {name: 'America/Argentina/San_Juan'},
- {name: 'America/Argentina/San_Luis'},
- {name: 'America/Argentina/Tucuman'},
- {name: 'America/Argentina/Ushuaia'},
- {name: 'America/Aruba'},
- {name: 'America/Asuncion'},
- {name: 'America/Atikokan'},
- {name: 'America/Bahia'},
- {name: 'America/Bahia_Banderas'},
- {name: 'America/Barbados'},
- {name: 'America/Belem'},
- {name: 'America/Belize'},
- {name: 'America/Blanc-Sablon'},
- {name: 'America/Boa_Vista'},
- {name: 'America/Bogota'},
- {name: 'America/Boise'},
- {name: 'America/Cambridge_Bay'},
- {name: 'America/Campo_Grande'},
- {name: 'America/Cancun'},
- {name: 'America/Caracas'},
- {name: 'America/Cayenne'},
- {name: 'America/Cayman'},
- {name: 'America/Chicago'},
- {name: 'America/Chihuahua'},
- {name: 'America/Costa_Rica'},
- {name: 'America/Creston'},
- {name: 'America/Cuiaba'},
- {name: 'America/Curacao'},
- {name: 'America/Danmarkshavn'},
- {name: 'America/Dawson'},
- {name: 'America/Dawson_Creek'},
- {name: 'America/Denver'},
- {name: 'America/Detroit'},
- {name: 'America/Dominica'},
- {name: 'America/Edmonton'},
- {name: 'America/Eirunepe'},
- {name: 'America/El_Salvador'},
- {name: 'America/Fortaleza'},
- {name: 'America/Fort_Nelson'},
- {name: 'America/Glace_Bay'},
- {name: 'America/Godthab'},
- {name: 'America/Goose_Bay'},
- {name: 'America/Grand_Turk'},
- {name: 'America/Grenada'},
- {name: 'America/Guadeloupe'},
- {name: 'America/Guatemala'},
- {name: 'America/Guayaquil'},
- {name: 'America/Guyana'},
- {name: 'America/Halifax'},
- {name: 'America/Havana'},
- {name: 'America/Hermosillo'},
- {name: 'America/Indiana/Indianapolis'},
- {name: 'America/Indiana/Knox'},
- {name: 'America/Indiana/Marengo'},
- {name: 'America/Indiana/Petersburg'},
- {name: 'America/Indiana/Tell_City'},
- {name: 'America/Indiana/Vevay'},
- {name: 'America/Indiana/Vincennes'},
- {name: 'America/Indiana/Winamac'},
- {name: 'America/Inuvik'},
- {name: 'America/Iqaluit'},
- {name: 'America/Jamaica'},
- {name: 'America/Juneau'},
- {name: 'America/Kentucky/Louisville'},
- {name: 'America/Kentucky/Monticello'},
- {name: 'America/Kralendijk'},
- {name: 'America/La_Paz'},
- {name: 'America/Lima'},
- {name: 'America/Los_Angeles'},
- {name: 'America/Lower_Princes'},
- {name: 'America/Maceio'},
- {name: 'America/Managua'},
- {name: 'America/Manaus'},
- {name: 'America/Marigot'},
- {name: 'America/Martinique'},
- {name: 'America/Matamoros'},
- {name: 'America/Mazatlan'},
- {name: 'America/Menominee'},
- {name: 'America/Merida'},
- {name: 'America/Metlakatla'},
- {name: 'America/Mexico_City'},
- {name: 'America/Miquelon'},
- {name: 'America/Moncton'},
- {name: 'America/Monterrey'},
- {name: 'America/Montevideo'},
- {name: 'America/Montserrat'},
- {name: 'America/Nassau'},
- {name: 'America/New_York'},
- {name: 'America/Nipigon'},
- {name: 'America/Nome'},
- {name: 'America/Noronha'},
- {name: 'America/North_Dakota/Beulah'},
- {name: 'America/North_Dakota/Center'},
- {name: 'America/North_Dakota/New_Salem'},
- {name: 'America/Ojinaga'},
- {name: 'America/Panama'},
- {name: 'America/Pangnirtung'},
- {name: 'America/Paramaribo'},
- {name: 'America/Phoenix'},
- {name: 'America/Port-au-Prince'},
- {name: 'America/Port_of_Spain'},
- {name: 'America/Porto_Velho'},
- {name: 'America/Puerto_Rico'},
- {name: 'America/Rainy_River'},
- {name: 'America/Rankin_Inlet'},
- {name: 'America/Recife'},
- {name: 'America/Regina'},
- {name: 'America/Resolute'},
- {name: 'America/Rio_Branco'},
- {name: 'America/Santarem'},
- {name: 'America/Santiago'},
- {name: 'America/Santo_Domingo'},
- {name: 'America/Sao_Paulo'},
- {name: 'America/Scoresbysund'},
- {name: 'America/Sitka'},
- {name: 'America/St_Barthelemy'},
- {name: 'America/St_Johns'},
- {name: 'America/St_Kitts'},
- {name: 'America/St_Lucia'},
- {name: 'America/St_Thomas'},
- {name: 'America/St_Vincent'},
- {name: 'America/Swift_Current'},
- {name: 'America/Tegucigalpa'},
- {name: 'America/Thule'},
- {name: 'America/Thunder_Bay'},
- {name: 'America/Tijuana'},
- {name: 'America/Toronto'},
- {name: 'America/Tortola'},
- {name: 'America/Vancouver'},
- {name: 'America/Whitehorse'},
- {name: 'America/Winnipeg'},
- {name: 'America/Yakutat'},
- {name: 'America/Yellowknife'},
- {name: 'Antarctica/Casey'},
- {name: 'Antarctica/Davis'},
- {name: 'Antarctica/DumontDUrville'},
- {name: 'Antarctica/Macquarie'},
- {name: 'Antarctica/Mawson'},
- {name: 'Antarctica/McMurdo'},
- {name: 'Antarctica/Palmer'},
- {name: 'Antarctica/Rothera'},
- {name: 'Antarctica/Syowa'},
- {name: 'Antarctica/Troll'},
- {name: 'Antarctica/Vostok'},
- {name: 'Arctic/Longyearbyen'},
- {name: 'Asia/Aden'},
- {name: 'Asia/Almaty'},
- {name: 'Asia/Amman'},
- {name: 'Asia/Anadyr'},
- {name: 'Asia/Aqtau'},
- {name: 'Asia/Aqtobe'},
- {name: 'Asia/Ashgabat'},
- {name: 'Asia/Baghdad'},
- {name: 'Asia/Bahrain'},
- {name: 'Asia/Baku'},
- {name: 'Asia/Bangkok'},
- {name: 'Asia/Barnaul'},
- {name: 'Asia/Beirut'},
- {name: 'Asia/Bishkek'},
- {name: 'Asia/Brunei'},
- {name: 'Asia/Chita'},
- {name: 'Asia/Choibalsan'},
- {name: 'Asia/Colombo'},
- {name: 'Asia/Damascus'},
- {name: 'Asia/Dhaka'},
- {name: 'Asia/Dili'},
- {name: 'Asia/Dubai'},
- {name: 'Asia/Dushanbe'},
- {name: 'Asia/Gaza'},
- {name: 'Asia/Hebron'},
- {name: 'Asia/Ho_Chi_Minh'},
- {name: 'Asia/Hong_Kong'},
- {name: 'Asia/Hovd'},
- {name: 'Asia/Irkutsk'},
- {name: 'Asia/Jakarta'},
- {name: 'Asia/Jayapura'},
- {name: 'Asia/Jerusalem'},
- {name: 'Asia/Kabul'},
- {name: 'Asia/Kamchatka'},
- {name: 'Asia/Karachi'},
- {name: 'Asia/Kathmandu'},
- {name: 'Asia/Khandyga'},
- {name: 'Asia/Kolkata'},
- {name: 'Asia/Krasnoyarsk'},
- {name: 'Asia/Kuala_Lumpur'},
- {name: 'Asia/Kuching'},
- {name: 'Asia/Kuwait'},
- {name: 'Asia/Macau'},
- {name: 'Asia/Magadan'},
- {name: 'Asia/Makassar'},
- {name: 'Asia/Manila'},
- {name: 'Asia/Muscat'},
- {name: 'Asia/Nicosia'},
- {name: 'Asia/Novokuznetsk'},
- {name: 'Asia/Novosibirsk'},
- {name: 'Asia/Omsk'},
- {name: 'Asia/Oral'},
- {name: 'Asia/Phnom_Penh'},
- {name: 'Asia/Pontianak'},
- {name: 'Asia/Pyongyang'},
- {name: 'Asia/Qatar'},
- {name: 'Asia/Qyzylorda'},
- {name: 'Asia/Riyadh'},
- {name: 'Asia/Sakhalin'},
- {name: 'Asia/Samarkand'},
- {name: 'Asia/Seoul'},
- {name: 'Asia/Shanghai'},
- {name: 'Asia/Singapore'},
- {name: 'Asia/Srednekolymsk'},
- {name: 'Asia/Taipei'},
- {name: 'Asia/Tashkent'},
- {name: 'Asia/Tbilisi'},
- {name: 'Asia/Tehran'},
- {name: 'Asia/Thimphu'},
- {name: 'Asia/Tokyo'},
- {name: 'Asia/Tomsk'},
- {name: 'Asia/Ulaanbaatar'},
- {name: 'Asia/Urumqi'},
- {name: 'Asia/Ust-Nera'},
- {name: 'Asia/Vientiane'},
- {name: 'Asia/Vladivostok'},
- {name: 'Asia/Yakutsk'},
- {name: 'Asia/Yangon'},
- {name: 'Asia/Yekaterinburg'},
- {name: 'Asia/Yerevan'},
- {name: 'Atlantic/Azores'},
- {name: 'Atlantic/Bermuda'},
- {name: 'Atlantic/Canary'},
- {name: 'Atlantic/Cape_Verde'},
- {name: 'Atlantic/Faroe'},
- {name: 'Atlantic/Madeira'},
- {name: 'Atlantic/Reykjavik'},
- {name: 'Atlantic/South_Georgia'},
- {name: 'Atlantic/Stanley'},
- {name: 'Atlantic/St_Helena'},
- {name: 'Australia/Adelaide'},
- {name: 'Australia/Brisbane'},
- {name: 'Australia/Broken_Hill'},
- {name: 'Australia/Currie'},
- {name: 'Australia/Darwin'},
- {name: 'Australia/Eucla'},
- {name: 'Australia/Hobart'},
- {name: 'Australia/Lindeman'},
- {name: 'Australia/Lord_Howe'},
- {name: 'Australia/Melbourne'},
- {name: 'Australia/Perth'},
- {name: 'Australia/Sydney'},
- {name: 'Europe/Amsterdam'},
- {name: 'Europe/Andorra'},
- {name: 'Europe/Astrakhan'},
- {name: 'Europe/Athens'},
- {name: 'Europe/Belgrade'},
- {name: 'Europe/Berlin'},
- {name: 'Europe/Bratislava'},
- {name: 'Europe/Brussels'},
- {name: 'Europe/Bucharest'},
- {name: 'Europe/Budapest'},
- {name: 'Europe/Busingen'},
- {name: 'Europe/Chisinau'},
- {name: 'Europe/Copenhagen'},
- {name: 'Europe/Dublin'},
- {name: 'Europe/Gibraltar'},
- {name: 'Europe/Guernsey'},
- {name: 'Europe/Helsinki'},
- {name: 'Europe/Isle_of_Man'},
- {name: 'Europe/Istanbul'},
- {name: 'Europe/Jersey'},
- {name: 'Europe/Kaliningrad'},
- {name: 'Europe/Kiev'},
- {name: 'Europe/Kirov'},
- {name: 'Europe/Lisbon'},
- {name: 'Europe/Ljubljana'},
- {name: 'Europe/London'},
- {name: 'Europe/Luxembourg'},
- {name: 'Europe/Madrid'},
- {name: 'Europe/Malta'},
- {name: 'Europe/Mariehamn'},
- {name: 'Europe/Minsk'},
- {name: 'Europe/Monaco'},
- {name: 'Europe/Moscow'},
- {name: 'Europe/Oslo'},
- {name: 'Europe/Paris'},
- {name: 'Europe/Podgorica'},
- {name: 'Europe/Prague'},
- {name: 'Europe/Riga'},
- {name: 'Europe/Rome'},
- {name: 'Europe/Samara'},
- {name: 'Europe/San_Marino'},
- {name: 'Europe/Sarajevo'},
- {name: 'Europe/Simferopol'},
- {name: 'Europe/Skopje'},
- {name: 'Europe/Sofia'},
- {name: 'Europe/Stockholm'},
- {name: 'Europe/Tallinn'},
- {name: 'Europe/Tirane'},
- {name: 'Europe/Ulyanovsk'},
- {name: 'Europe/Uzhgorod'},
- {name: 'Europe/Vaduz'},
- {name: 'Europe/Vatican'},
- {name: 'Europe/Vienna'},
- {name: 'Europe/Vilnius'},
- {name: 'Europe/Volgograd'},
- {name: 'Europe/Warsaw'},
- {name: 'Europe/Zagreb'},
- {name: 'Europe/Zaporozhye'},
- {name: 'Europe/Zurich'},
- {name: 'Indian/Antananarivo'},
- {name: 'Indian/Chagos'},
- {name: 'Indian/Christmas'},
- {name: 'Indian/Cocos'},
- {name: 'Indian/Comoro'},
- {name: 'Indian/Kerguelen'},
- {name: 'Indian/Mahe'},
- {name: 'Indian/Maldives'},
- {name: 'Indian/Mauritius'},
- {name: 'Indian/Mayotte'},
- {name: 'Indian/Reunion'},
- {name: 'Pacific/Apia'},
- {name: 'Pacific/Auckland'},
- {name: 'Pacific/Bougainville'},
- {name: 'Pacific/Chatham'},
- {name: 'Pacific/Chuuk'},
- {name: 'Pacific/Easter'},
- {name: 'Pacific/Efate'},
- {name: 'Pacific/Enderbury'},
- {name: 'Pacific/Fakaofo'},
- {name: 'Pacific/Fiji'},
- {name: 'Pacific/Funafuti'},
- {name: 'Pacific/Galapagos'},
- {name: 'Pacific/Gambier'},
- {name: 'Pacific/Guadalcanal'},
- {name: 'Pacific/Guam'},
- {name: 'Pacific/Honolulu'},
- {name: 'Pacific/Johnston'},
- {name: 'Pacific/Kiritimati'},
- {name: 'Pacific/Kosrae'},
- {name: 'Pacific/Kwajalein'},
- {name: 'Pacific/Majuro'},
- {name: 'Pacific/Marquesas'},
- {name: 'Pacific/Midway'},
- {name: 'Pacific/Nauru'},
- {name: 'Pacific/Niue'},
- {name: 'Pacific/Norfolk'},
- {name: 'Pacific/Noumea'},
- {name: 'Pacific/Pago_Pago'},
- {name: 'Pacific/Palau'},
- {name: 'Pacific/Pitcairn'},
- {name: 'Pacific/Pohnpei'},
- {name: 'Pacific/Port_Moresby'},
- {name: 'Pacific/Rarotonga'},
- {name: 'Pacific/Saipan'},
- {name: 'Pacific/Tahiti'},
- {name: 'Pacific/Tarawa'},
- {name: 'Pacific/Tongatapu'},
- {name: 'Pacific/Wake'},
- {name: 'Pacific/Wallis'},
-];
+import moment from 'moment-timezone';
+
+const timezones = moment.tz.names();
export default timezones;
diff --git a/src/web/components/form/__tests__/timezoneselect.jsx b/src/web/components/form/__tests__/timezoneselect.jsx
index 6dd5d713d3..b10ee63801 100644
--- a/src/web/components/form/__tests__/timezoneselect.jsx
+++ b/src/web/components/form/__tests__/timezoneselect.jsx
@@ -26,7 +26,7 @@ describe('TimezoneSelect tests', () => {
await openSelectElement();
- expect(getSelectItemElements().length).toEqual(timezones.length + 1);
+ expect(getSelectItemElements().length).toEqual(timezones.length);
});
test('should call onChange handler', async () => {
@@ -38,7 +38,7 @@ describe('TimezoneSelect tests', () => {
const items = getSelectItemElements();
await userEvent.click(items[1]);
- expect(handler).toHaveBeenCalledWith(timezones[0].name, undefined);
+ expect(handler).toHaveBeenCalledWith(timezones[1], undefined);
});
test('should call onChange handler with name', async () => {
@@ -50,14 +50,14 @@ describe('TimezoneSelect tests', () => {
const items = getSelectItemElements();
await userEvent.click(items[1]);
- expect(handler).toHaveBeenCalledWith(timezones[0].name, 'foo');
+ expect(handler).toHaveBeenCalledWith(timezones[1], 'foo');
});
test('should render selected value', () => {
- const timezone = timezones[1];
- render();
+ const timezone = timezones[1];
+ render();
const input = getSelectElement();
- expect(input).toHaveValue(timezone.name);
+ expect(input).toHaveValue(timezone);
});
});
diff --git a/src/web/components/form/timezoneselect.jsx b/src/web/components/form/timezoneselect.jsx
index 4c9985a3ba..de29126e80 100644
--- a/src/web/components/form/timezoneselect.jsx
+++ b/src/web/components/form/timezoneselect.jsx
@@ -4,27 +4,19 @@
*/
import timezones from 'gmp/timezones';
-import {map} from 'gmp/utils/array';
import React, {useMemo} from 'react';
-import useTranslation from 'web/hooks/useTranslation';
import PropTypes from 'web/utils/proptypes';
import Select from './select';
const TimeZoneSelectComponent = ({value = 'UTC', ...props}) => {
- const [_] = useTranslation();
const timezoneItems = useMemo(
- () => [
- {
- label: _('Coordinated Universal Time/UTC'),
- value: 'UTC',
- },
- ...map(timezones, ({name}) => ({
+ () =>
+ timezones.map(name => ({
label: name,
value: name,
})),
- ],
- [_],
+ [],
);
return ;