Skip to content

Commit 87bd496

Browse files
authored
feat(input-time-zone): add input-time-zone component (#6947)
**Related Issue:** #6590 ## Summary This adds a new component to allow users to select time zone offsets.
1 parent a993cb2 commit 87bd496

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

53 files changed

+17339
-3354
lines changed

packages/calcite-components/src/components/input-time-zone/assets/input-time-zone/t9n/messages.json

Lines changed: 380 additions & 56 deletions
Large diffs are not rendered by default.

packages/calcite-components/src/components/input-time-zone/assets/input-time-zone/t9n/messages_ar.json

Lines changed: 430 additions & 106 deletions
Large diffs are not rendered by default.

packages/calcite-components/src/components/input-time-zone/assets/input-time-zone/t9n/messages_bg.json

Lines changed: 430 additions & 106 deletions
Large diffs are not rendered by default.

packages/calcite-components/src/components/input-time-zone/assets/input-time-zone/t9n/messages_bs.json

Lines changed: 392 additions & 68 deletions
Large diffs are not rendered by default.

packages/calcite-components/src/components/input-time-zone/assets/input-time-zone/t9n/messages_ca.json

Lines changed: 391 additions & 67 deletions
Large diffs are not rendered by default.

packages/calcite-components/src/components/input-time-zone/assets/input-time-zone/t9n/messages_cs.json

Lines changed: 401 additions & 77 deletions
Large diffs are not rendered by default.

packages/calcite-components/src/components/input-time-zone/assets/input-time-zone/t9n/messages_da.json

Lines changed: 389 additions & 65 deletions
Large diffs are not rendered by default.

packages/calcite-components/src/components/input-time-zone/assets/input-time-zone/t9n/messages_de.json

Lines changed: 393 additions & 69 deletions
Large diffs are not rendered by default.

packages/calcite-components/src/components/input-time-zone/assets/input-time-zone/t9n/messages_el.json

Lines changed: 430 additions & 106 deletions
Large diffs are not rendered by default.

packages/calcite-components/src/components/input-time-zone/assets/input-time-zone/t9n/messages_en.json

Lines changed: 380 additions & 56 deletions
Large diffs are not rendered by default.

packages/calcite-components/src/components/input-time-zone/assets/input-time-zone/t9n/messages_es.json

Lines changed: 398 additions & 74 deletions
Large diffs are not rendered by default.

packages/calcite-components/src/components/input-time-zone/assets/input-time-zone/t9n/messages_et.json

Lines changed: 397 additions & 73 deletions
Large diffs are not rendered by default.

packages/calcite-components/src/components/input-time-zone/assets/input-time-zone/t9n/messages_fi.json

Lines changed: 391 additions & 67 deletions
Large diffs are not rendered by default.

packages/calcite-components/src/components/input-time-zone/assets/input-time-zone/t9n/messages_fr.json

Lines changed: 397 additions & 73 deletions
Large diffs are not rendered by default.

packages/calcite-components/src/components/input-time-zone/assets/input-time-zone/t9n/messages_he.json

Lines changed: 430 additions & 106 deletions
Large diffs are not rendered by default.

packages/calcite-components/src/components/input-time-zone/assets/input-time-zone/t9n/messages_hr.json

Lines changed: 392 additions & 68 deletions
Large diffs are not rendered by default.

packages/calcite-components/src/components/input-time-zone/assets/input-time-zone/t9n/messages_hu.json

Lines changed: 397 additions & 73 deletions
Large diffs are not rendered by default.

packages/calcite-components/src/components/input-time-zone/assets/input-time-zone/t9n/messages_id.json

Lines changed: 387 additions & 63 deletions
Large diffs are not rendered by default.

packages/calcite-components/src/components/input-time-zone/assets/input-time-zone/t9n/messages_it.json

Lines changed: 388 additions & 64 deletions
Large diffs are not rendered by default.

packages/calcite-components/src/components/input-time-zone/assets/input-time-zone/t9n/messages_ja.json

Lines changed: 430 additions & 106 deletions
Large diffs are not rendered by default.

packages/calcite-components/src/components/input-time-zone/assets/input-time-zone/t9n/messages_ko.json

Lines changed: 431 additions & 107 deletions
Large diffs are not rendered by default.

packages/calcite-components/src/components/input-time-zone/assets/input-time-zone/t9n/messages_lt.json

Lines changed: 428 additions & 104 deletions
Large diffs are not rendered by default.

packages/calcite-components/src/components/input-time-zone/assets/input-time-zone/t9n/messages_lv.json

Lines changed: 428 additions & 104 deletions
Large diffs are not rendered by default.

packages/calcite-components/src/components/input-time-zone/assets/input-time-zone/t9n/messages_nl.json

Lines changed: 391 additions & 67 deletions
Large diffs are not rendered by default.

packages/calcite-components/src/components/input-time-zone/assets/input-time-zone/t9n/messages_no.json

Lines changed: 386 additions & 62 deletions
Large diffs are not rendered by default.

packages/calcite-components/src/components/input-time-zone/assets/input-time-zone/t9n/messages_pl.json

Lines changed: 399 additions & 75 deletions
Large diffs are not rendered by default.

packages/calcite-components/src/components/input-time-zone/assets/input-time-zone/t9n/messages_pt-BR.json

Lines changed: 385 additions & 61 deletions
Large diffs are not rendered by default.

packages/calcite-components/src/components/input-time-zone/assets/input-time-zone/t9n/messages_pt-PT.json

Lines changed: 396 additions & 72 deletions
Large diffs are not rendered by default.

packages/calcite-components/src/components/input-time-zone/assets/input-time-zone/t9n/messages_ro.json

Lines changed: 389 additions & 65 deletions
Large diffs are not rendered by default.

packages/calcite-components/src/components/input-time-zone/assets/input-time-zone/t9n/messages_ru.json

Lines changed: 429 additions & 105 deletions
Large diffs are not rendered by default.

packages/calcite-components/src/components/input-time-zone/assets/input-time-zone/t9n/messages_sk.json

Lines changed: 402 additions & 78 deletions
Large diffs are not rendered by default.

packages/calcite-components/src/components/input-time-zone/assets/input-time-zone/t9n/messages_sl.json

Lines changed: 395 additions & 71 deletions
Large diffs are not rendered by default.

packages/calcite-components/src/components/input-time-zone/assets/input-time-zone/t9n/messages_sr.json

Lines changed: 422 additions & 98 deletions
Large diffs are not rendered by default.

packages/calcite-components/src/components/input-time-zone/assets/input-time-zone/t9n/messages_sv.json

Lines changed: 391 additions & 67 deletions
Large diffs are not rendered by default.

packages/calcite-components/src/components/input-time-zone/assets/input-time-zone/t9n/messages_th.json

Lines changed: 430 additions & 106 deletions
Large diffs are not rendered by default.

packages/calcite-components/src/components/input-time-zone/assets/input-time-zone/t9n/messages_tr.json

Lines changed: 388 additions & 64 deletions
Large diffs are not rendered by default.

packages/calcite-components/src/components/input-time-zone/assets/input-time-zone/t9n/messages_uk.json

Lines changed: 428 additions & 104 deletions
Large diffs are not rendered by default.

packages/calcite-components/src/components/input-time-zone/assets/input-time-zone/t9n/messages_vi.json

Lines changed: 382 additions & 58 deletions
Large diffs are not rendered by default.

packages/calcite-components/src/components/input-time-zone/assets/input-time-zone/t9n/messages_zh-CN.json

Lines changed: 430 additions & 106 deletions
Large diffs are not rendered by default.

packages/calcite-components/src/components/input-time-zone/assets/input-time-zone/t9n/messages_zh-HK.json

Lines changed: 430 additions & 106 deletions
Large diffs are not rendered by default.

packages/calcite-components/src/components/input-time-zone/assets/input-time-zone/t9n/messages_zh-TW.json

Lines changed: 430 additions & 106 deletions
Large diffs are not rendered by default.
Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
import { newE2EPage } from "@stencil/core/testing";
2+
import {
3+
accessible,
4+
defaults,
5+
disabled,
6+
focusable,
7+
formAssociated,
8+
hidden,
9+
labelable,
10+
reflects,
11+
renders,
12+
t9n,
13+
} from "../../tests/commonTests";
14+
import { html } from "../../../support/formatting";
15+
import { toGMTLabel } from "./utils";
16+
17+
describe("calcite-input-time-zone", () => {
18+
describe("accessible", () => {
19+
accessible("calcite-input-time-zone");
20+
});
21+
22+
describe("focusable", () => {
23+
focusable("calcite-input-time-zone");
24+
});
25+
26+
describe("formAssociated", () => {
27+
formAssociated("calcite-input-time-zone", { testValue: "-360", clearable: false });
28+
});
29+
30+
describe("hidden", () => {
31+
hidden("calcite-input-time-zone");
32+
});
33+
34+
describe("renders", () => {
35+
renders("calcite-input-time-zone", { display: "block" });
36+
});
37+
38+
describe("labelable", () => {
39+
labelable("calcite-input-time-zone");
40+
});
41+
42+
describe("reflects", () => {
43+
reflects("calcite-input-time-zone", [
44+
{ propertyName: "disabled", value: true },
45+
{ propertyName: "open", value: true },
46+
{ propertyName: "scale", value: "m" },
47+
{ propertyName: "overlayPositioning", value: "absolute" },
48+
]);
49+
});
50+
51+
describe("defaults", () => {
52+
defaults("calcite-input-time-zone", [
53+
{ propertyName: "disabled", defaultValue: false },
54+
{ propertyName: "messageOverrides", defaultValue: undefined },
55+
{ propertyName: "open", defaultValue: false },
56+
{ propertyName: "overlayPositioning", defaultValue: "absolute" },
57+
{ propertyName: "scale", defaultValue: "m" },
58+
]);
59+
});
60+
61+
describe("disabled", () => {
62+
disabled("calcite-input-time-zone", { shadowAriaAttributeTargetSelector: "calcite-combobox" });
63+
});
64+
65+
describe("t9n", () => {
66+
t9n("calcite-input-time-zone");
67+
});
68+
69+
describe("selects user's matching timezone offset by default", () => {
70+
const timeZoneNamesAndOffsets = [
71+
{ name: "America/Los_Angeles", offset: -420 },
72+
{ name: "Europe/London", offset: 60 },
73+
];
74+
75+
timeZoneNamesAndOffsets.forEach(({ name, offset }) => {
76+
it(`selects default timezone for "${name}"`, async () => {
77+
const page = await newE2EPage();
78+
await page.emulateTimezone(name);
79+
await page.setContent(html`<calcite-input-time-zone></calcite-input-time-zone>`);
80+
await page.waitForTimeout(1000);
81+
82+
const input = await page.find("calcite-input-time-zone");
83+
84+
expect(await input.getProperty("value")).toBe(`${offset}`);
85+
86+
const timeZoneItem = await page.find("calcite-input-time-zone >>> calcite-combobox-item[selected]");
87+
88+
expect(await timeZoneItem.getProperty("textLabel")).toMatch(toGMTLabel(offset / 60));
89+
});
90+
});
91+
});
92+
93+
it("allows users to preselect a timezone offset", async () => {
94+
const page = await newE2EPage();
95+
await page.emulateTimezone("America/Los_Angeles");
96+
await page.setContent(html`<calcite-input-time-zone value="-360"></calcite-input-time-zone>`);
97+
98+
const input = await page.find("calcite-input-time-zone");
99+
100+
expect(await input.getProperty("value")).toBe("-360");
101+
102+
const timeZoneItem = await page.find("calcite-input-time-zone >>> calcite-combobox-item[selected]");
103+
104+
expect(await timeZoneItem.getProperty("textLabel")).toMatch("GMT-6");
105+
});
106+
});
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
:host {
2+
display: block;
3+
}
4+
5+
@include base-component();
6+
@include disabled();
7+
@include hidden-form-input();
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
import { select } from "@storybook/addon-knobs";
2+
import { boolean, storyFilters } from "../../../.storybook/helpers";
3+
import { modesDarkDefault } from "../../../.storybook/utils";
4+
import { html } from "../../../support/formatting";
5+
import readme from "./readme.md";
6+
7+
export default {
8+
title: "Components/Controls/InputTimeZone",
9+
parameters: {
10+
notes: readme,
11+
options: {
12+
timezone: "America/Los_Angeles",
13+
},
14+
},
15+
...storyFilters(),
16+
};
17+
18+
export const simple = (): string => html`
19+
<calcite-input-time-zone
20+
${boolean("disabled", false)}
21+
scale="${select("scale", ["s", "m", "l"], "m")}"
22+
></calcite-input-time-zone>
23+
`;
24+
25+
export const initialOffsetSelected_TestOnly = (): string => html`
26+
<calcite-input-time-zone value="-360"></calcite-input-time-zone>
27+
`;
28+
29+
export const displayingTimeZoneOffsets_TestOnly = (): string => html`
30+
<calcite-input-time-zone open></calcite-input-time-zone>
31+
`;
32+
33+
export const disabled_TestOnly = (): string => html`<calcite-input-time-zone disabled></calcite-input-time-zone>`;
34+
35+
export const darkModeRTL_TestOnly = (): string => html`
36+
<calcite-input-time-zone dir="rtl" class="calcite-mode-dark"></calcite-input-time-zone>
37+
`;
38+
darkModeRTL_TestOnly.parameters = { modes: modesDarkDefault };

0 commit comments

Comments
 (0)