Skip to content

Commit ae4620d

Browse files
authored
chore: Adding date values to date component pages for comparison (#3274)
1 parent 7c8f26d commit ae4620d

File tree

2 files changed

+106
-36
lines changed

2 files changed

+106
-36
lines changed

pages/date-input/simple.page.tsx

Lines changed: 43 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,54 @@
11
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
22
// SPDX-License-Identifier: Apache-2.0
3-
import React, { useState } from 'react';
3+
import React, { useContext, useEffect, useState } from 'react';
44

5-
import { Box } from '~components';
6-
import DateInput from '~components/date-input';
5+
import { Box, Checkbox, SpaceBetween } from '~components';
6+
import DateInput, { DateInputProps } from '~components/date-input';
7+
8+
import { AppContextType } from '../app/app-context';
9+
import AppContext from '../app/app-context';
10+
11+
export type DateInputDemoContext = React.Context<
12+
AppContextType<{
13+
monthOnly?: boolean;
14+
hasValue?: boolean;
15+
}>
16+
>;
717

818
export default function DateInputScenario() {
9-
const [value, setValue] = useState('');
19+
const { urlParams, setUrlParams } = useContext(AppContext as DateInputDemoContext);
20+
const initValue = '2025-02-14';
21+
const hasValue = urlParams.hasValue ?? false;
22+
const [value, setValue] = useState<DateInputProps['value']>('');
23+
24+
useEffect(() => {
25+
if (hasValue) {
26+
setValue(initValue);
27+
} else {
28+
setValue('');
29+
}
30+
}, [hasValue]);
1031

1132
return (
1233
<Box padding="l">
13-
<h1>Date input</h1>
14-
<DateInput
15-
className="testing-date-input"
16-
name="date"
17-
ariaLabel="Enter the date in YYYY/MM/DD"
18-
placeholder="YYYY/MM/DD"
19-
onChange={event => setValue(event.detail.value)}
20-
value={value}
21-
/>
34+
<SpaceBetween direction="vertical" size="m">
35+
<h1>Date input</h1>
36+
<SpaceBetween direction="horizontal" size="s">
37+
<Checkbox checked={hasValue} onChange={({ detail }) => setUrlParams({ hasValue: detail.checked })}>
38+
Has initial value
39+
</Checkbox>
40+
</SpaceBetween>
41+
<DateInput
42+
className="testing-date-input"
43+
name="date"
44+
ariaLabel="Enter the date in YYYY/MM/DD"
45+
placeholder="YYYY/MM/DD"
46+
onChange={e => setValue(e.detail.value)}
47+
value={value}
48+
/>
49+
<b>Raw value</b>
50+
<pre>{JSON.stringify(value, undefined, 2)}</pre>
51+
</SpaceBetween>
2252
</Box>
2353
);
2454
}

pages/date-picker/simple.page.tsx

Lines changed: 63 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,75 @@
11
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
22
// SPDX-License-Identifier: Apache-2.0
3-
import React, { useState } from 'react';
3+
import React, { useContext, useEffect, useState } from 'react';
44

5-
import { Box, DatePicker, FormField, Link } from '~components';
5+
import { Box, Checkbox, DatePicker, DatePickerProps, FormField, Link, SpaceBetween } from '~components';
66

7+
import { AppContextType } from '../app/app-context';
8+
import AppContext from '../app/app-context';
79
import i18nStrings from './i18n-strings';
810

9-
export default function DatePickerScenario() {
10-
const [value, setValue] = useState('');
11+
export type DatePickerDemoContext = React.Context<
12+
AppContextType<{
13+
monthOnly?: boolean;
14+
hasValue?: boolean;
15+
}>
16+
>;
17+
18+
export const dateRangePickerDemoDefaults = {
19+
monthOnly: false,
20+
hasValue: false,
21+
};
22+
23+
export default function DateInputScenario() {
24+
const { urlParams, setUrlParams } = useContext(AppContext as DatePickerDemoContext);
25+
const monthOnly = urlParams.monthOnly ?? dateRangePickerDemoDefaults.monthOnly;
26+
const hasValue = urlParams.hasValue ?? dateRangePickerDemoDefaults.hasValue;
27+
28+
const [value, setValue] = useState<DatePickerProps['value']>('');
29+
30+
useEffect(() => {
31+
const initValue = monthOnly ? '2025-02' : '2025-02-00';
32+
if (hasValue) {
33+
setValue(initValue);
34+
} else {
35+
setValue('');
36+
}
37+
}, [hasValue, monthOnly]);
1138

1239
return (
1340
<Box padding="s">
14-
<h1>Date picker simple version</h1>
15-
<Link id="focus-dismiss-helper">Focusable element before the date picker</Link>
16-
<br />
17-
<FormField label="Certificate expiry date" constraintText="Use YYYY/MM/DD format.">
18-
<DatePicker
19-
value={value}
20-
name={'date-picker-name'}
21-
locale="en-GB"
22-
i18nStrings={i18nStrings}
23-
openCalendarAriaLabel={selectedDate =>
24-
'Choose certificate expiry date' + (selectedDate ? `, selected date is ${selectedDate}` : '')
25-
}
26-
placeholder={'YYYY/MM/DD'}
27-
onChange={event => setValue(event.detail.value)}
28-
/>
29-
</FormField>
30-
<br />
31-
<br />
32-
<Link id="focusable-element-after-date-picker">Focusable element after the date picker</Link>
41+
<SpaceBetween direction="vertical" size="m">
42+
<h1>Date picker simple version</h1>
43+
<SpaceBetween direction="horizontal" size="s">
44+
<Checkbox checked={monthOnly} onChange={({ detail }) => setUrlParams({ monthOnly: detail.checked })}>
45+
Month-only
46+
</Checkbox>
47+
<Checkbox checked={hasValue} onChange={({ detail }) => setUrlParams({ hasValue: detail.checked })}>
48+
Has initial value
49+
</Checkbox>
50+
</SpaceBetween>
51+
<Link id="focus-dismiss-helper">Focusable element before the date picker</Link>
52+
<br />
53+
<FormField label="Certificate expiry date" constraintText={`Use YYYY/MM${monthOnly ? '' : '/DD'} format.`}>
54+
<DatePicker
55+
value={value}
56+
name={'date-picker-name'}
57+
granularity={monthOnly ? 'month' : 'day'}
58+
locale="en-GB"
59+
i18nStrings={i18nStrings}
60+
openCalendarAriaLabel={selectedDate =>
61+
'Choose certificate expiry date' + (selectedDate ? `, selected date is ${selectedDate}` : '')
62+
}
63+
placeholder={monthOnly ? 'YYYY/MM' : 'YYYY/MM/DD'}
64+
onChange={e => setValue(e.detail.value)}
65+
/>
66+
</FormField>
67+
<br />
68+
<br />
69+
<Link id="focusable-element-after-date-picker">Focusable element after the date picker</Link>
70+
<b>Raw value</b>
71+
<pre>{JSON.stringify(value, undefined, 2)}</pre>
72+
</SpaceBetween>
3373
</Box>
3474
);
3575
}

0 commit comments

Comments
 (0)