@mui/x-date-pickers 7.23.2 → 7.23.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +190 -0
- package/DateCalendar/PickersFadeTransitionGroup.d.ts +1 -1
- package/DateCalendar/PickersSlideTransition.d.ts +1 -1
- package/DateField/useDateField.d.ts +1 -1
- package/DateTimeField/useDateTimeField.d.ts +1 -1
- package/MultiSectionDigitalClock/MultiSectionDigitalClock.js +3 -0
- package/README.md +1 -1
- package/TimeClock/Clock.d.ts +4 -0
- package/TimeClock/Clock.js +9 -6
- package/TimeClock/TimeClock.js +21 -4
- package/TimeField/useTimeField.d.ts +1 -1
- package/index.js +1 -1
- package/internals/hooks/useField/useFieldV6TextField.js +2 -2
- package/internals/hooks/usePicker/usePickerViews.d.ts +1 -1
- package/internals/hooks/useStaticPicker/useStaticPicker.js +0 -1
- package/internals/hooks/useUtils.js +1 -1
- package/locales/index.d.ts +1 -0
- package/locales/index.js +1 -0
- package/locales/nbNO.js +15 -19
- package/locales/zhTW.d.ts +80 -0
- package/locales/zhTW.js +73 -0
- package/modern/MultiSectionDigitalClock/MultiSectionDigitalClock.js +3 -0
- package/modern/TimeClock/Clock.js +9 -6
- package/modern/TimeClock/TimeClock.js +21 -4
- package/modern/index.js +1 -1
- package/modern/internals/hooks/useField/useFieldV6TextField.js +2 -2
- package/modern/internals/hooks/useStaticPicker/useStaticPicker.js +0 -1
- package/modern/internals/hooks/useUtils.js +1 -1
- package/modern/locales/index.js +1 -0
- package/modern/locales/nbNO.js +15 -19
- package/modern/locales/zhTW.js +73 -0
- package/node/MultiSectionDigitalClock/MultiSectionDigitalClock.js +3 -0
- package/node/TimeClock/Clock.js +9 -6
- package/node/TimeClock/TimeClock.js +21 -4
- package/node/index.js +1 -1
- package/node/internals/hooks/useField/useFieldV6TextField.js +2 -2
- package/node/internals/hooks/useStaticPicker/useStaticPicker.js +0 -1
- package/node/internals/hooks/useUtils.js +1 -1
- package/node/locales/index.js +11 -0
- package/node/locales/nbNO.js +15 -19
- package/node/locales/zhTW.js +79 -0
- package/package.json +3 -3
package/locales/zhTW.js
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { getPickersLocalization } from "./utils/getPickersLocalization.js";
|
|
2
|
+
const views = {
|
|
3
|
+
hours: '小時',
|
|
4
|
+
minutes: '分鐘',
|
|
5
|
+
seconds: '秒',
|
|
6
|
+
meridiem: '十二小時制'
|
|
7
|
+
};
|
|
8
|
+
const zhTWPickers = {
|
|
9
|
+
// Calendar navigation
|
|
10
|
+
previousMonth: '上個月',
|
|
11
|
+
nextMonth: '下個月',
|
|
12
|
+
// View navigation
|
|
13
|
+
openPreviousView: '前一個視圖',
|
|
14
|
+
openNextView: '下一個視圖',
|
|
15
|
+
calendarViewSwitchingButtonAriaLabel: view => view === 'year' ? '年視圖已打開,切換為日曆視圖' : '日曆視圖已打開,切換為年視圖',
|
|
16
|
+
// DateRange labels
|
|
17
|
+
start: '開始',
|
|
18
|
+
end: '結束',
|
|
19
|
+
startDate: '開始日期',
|
|
20
|
+
startTime: '開始時間',
|
|
21
|
+
endDate: '結束日期',
|
|
22
|
+
endTime: '結束時間',
|
|
23
|
+
// Action bar
|
|
24
|
+
cancelButtonLabel: '取消',
|
|
25
|
+
clearButtonLabel: '清除',
|
|
26
|
+
okButtonLabel: '確認',
|
|
27
|
+
todayButtonLabel: '今天',
|
|
28
|
+
// Toolbar titles
|
|
29
|
+
datePickerToolbarTitle: '選擇日期',
|
|
30
|
+
dateTimePickerToolbarTitle: '選擇日期和時間',
|
|
31
|
+
timePickerToolbarTitle: '選擇時間',
|
|
32
|
+
dateRangePickerToolbarTitle: '選擇時間範圍',
|
|
33
|
+
// Clock labels
|
|
34
|
+
clockLabelText: (view, time, utils, formattedTime) => `選擇 ${views[view]}. ${!formattedTime && (time === null || !utils.isValid(time)) ? '未選擇時間' : `已選擇${formattedTime ?? utils.format(time, 'fullTime')}`}`,
|
|
35
|
+
hoursClockNumberText: hours => `${hours}小時`,
|
|
36
|
+
minutesClockNumberText: minutes => `${minutes}分鐘`,
|
|
37
|
+
secondsClockNumberText: seconds => `${seconds}秒`,
|
|
38
|
+
// Digital clock labels
|
|
39
|
+
selectViewText: view => `選擇 ${views[view]}`,
|
|
40
|
+
// Calendar labels
|
|
41
|
+
calendarWeekNumberHeaderLabel: '週數',
|
|
42
|
+
calendarWeekNumberHeaderText: '#',
|
|
43
|
+
calendarWeekNumberAriaLabelText: weekNumber => `第${weekNumber}週`,
|
|
44
|
+
calendarWeekNumberText: weekNumber => `${weekNumber}`,
|
|
45
|
+
// Open picker labels
|
|
46
|
+
openDatePickerDialogue: (value, utils, formattedDate) => formattedDate || value !== null && utils.isValid(value) ? `選擇日期,已選擇${formattedDate ?? utils.format(value, 'fullDate')}` : '選擇日期',
|
|
47
|
+
openTimePickerDialogue: (value, utils, formattedTime) => formattedTime || value !== null && utils.isValid(value) ? `選擇時間,已選擇${formattedTime ?? utils.format(value, 'fullTime')}` : '選擇時間',
|
|
48
|
+
fieldClearLabel: '清除',
|
|
49
|
+
// Table labels
|
|
50
|
+
timeTableLabel: '選擇時間',
|
|
51
|
+
dateTableLabel: '選擇日期',
|
|
52
|
+
// Field section placeholders
|
|
53
|
+
fieldYearPlaceholder: params => 'Y'.repeat(params.digitAmount),
|
|
54
|
+
fieldMonthPlaceholder: params => params.contentType === 'letter' ? 'MMMM' : 'MM',
|
|
55
|
+
fieldDayPlaceholder: () => 'DD',
|
|
56
|
+
fieldWeekDayPlaceholder: params => params.contentType === 'letter' ? 'EEEE' : 'EE',
|
|
57
|
+
fieldHoursPlaceholder: () => 'hh',
|
|
58
|
+
fieldMinutesPlaceholder: () => 'mm',
|
|
59
|
+
fieldSecondsPlaceholder: () => 'ss',
|
|
60
|
+
fieldMeridiemPlaceholder: () => 'aa',
|
|
61
|
+
// View names
|
|
62
|
+
year: '年份',
|
|
63
|
+
month: '月份',
|
|
64
|
+
day: '日期',
|
|
65
|
+
weekDay: '星期',
|
|
66
|
+
hours: '時',
|
|
67
|
+
minutes: '分',
|
|
68
|
+
seconds: '秒',
|
|
69
|
+
meridiem: '十二小時制',
|
|
70
|
+
// Common
|
|
71
|
+
empty: '空'
|
|
72
|
+
};
|
|
73
|
+
export const zhTW = getPickersLocalization(zhTWPickers);
|
|
@@ -190,6 +190,9 @@ export const MultiSectionDigitalClock = /*#__PURE__*/React.forwardRef(function M
|
|
|
190
190
|
{
|
|
191
191
|
const valueWithMeridiem = convertValueToMeridiem(rawValue, meridiemMode, ampm);
|
|
192
192
|
const dateWithNewHours = utils.setHours(valueOrReferenceDate, valueWithMeridiem);
|
|
193
|
+
if (utils.getHours(dateWithNewHours) !== valueWithMeridiem) {
|
|
194
|
+
return true;
|
|
195
|
+
}
|
|
193
196
|
const start = utils.setSeconds(utils.setMinutes(dateWithNewHours, 0), 0);
|
|
194
197
|
const end = utils.setSeconds(utils.setMinutes(dateWithNewHours, 59), 59);
|
|
195
198
|
return !containsValidTime({
|
|
@@ -180,6 +180,7 @@ export function Clock(inProps) {
|
|
|
180
180
|
selectedId,
|
|
181
181
|
type,
|
|
182
182
|
viewValue,
|
|
183
|
+
viewRange: [minViewValue, maxViewValue],
|
|
183
184
|
disabled = false,
|
|
184
185
|
readOnly,
|
|
185
186
|
className
|
|
@@ -252,6 +253,8 @@ export function Clock(inProps) {
|
|
|
252
253
|
listboxRef.current.focus();
|
|
253
254
|
}
|
|
254
255
|
}, [autoFocus]);
|
|
256
|
+
const clampValue = newValue => Math.max(minViewValue, Math.min(maxViewValue, newValue));
|
|
257
|
+
const circleValue = newValue => (newValue + (maxViewValue + 1)) % (maxViewValue + 1);
|
|
255
258
|
const handleKeyDown = event => {
|
|
256
259
|
// TODO: Why this early exit?
|
|
257
260
|
if (isMoving.current) {
|
|
@@ -260,27 +263,27 @@ export function Clock(inProps) {
|
|
|
260
263
|
switch (event.key) {
|
|
261
264
|
case 'Home':
|
|
262
265
|
// reset both hours and minutes
|
|
263
|
-
handleValueChange(
|
|
266
|
+
handleValueChange(minViewValue, 'partial');
|
|
264
267
|
event.preventDefault();
|
|
265
268
|
break;
|
|
266
269
|
case 'End':
|
|
267
|
-
handleValueChange(
|
|
270
|
+
handleValueChange(maxViewValue, 'partial');
|
|
268
271
|
event.preventDefault();
|
|
269
272
|
break;
|
|
270
273
|
case 'ArrowUp':
|
|
271
|
-
handleValueChange(viewValue + keyboardControlStep, 'partial');
|
|
274
|
+
handleValueChange(circleValue(viewValue + keyboardControlStep), 'partial');
|
|
272
275
|
event.preventDefault();
|
|
273
276
|
break;
|
|
274
277
|
case 'ArrowDown':
|
|
275
|
-
handleValueChange(viewValue - keyboardControlStep, 'partial');
|
|
278
|
+
handleValueChange(circleValue(viewValue - keyboardControlStep), 'partial');
|
|
276
279
|
event.preventDefault();
|
|
277
280
|
break;
|
|
278
281
|
case 'PageUp':
|
|
279
|
-
handleValueChange(viewValue + 5, 'partial');
|
|
282
|
+
handleValueChange(clampValue(viewValue + 5), 'partial');
|
|
280
283
|
event.preventDefault();
|
|
281
284
|
break;
|
|
282
285
|
case 'PageDown':
|
|
283
|
-
handleValueChange(viewValue - 5, 'partial');
|
|
286
|
+
handleValueChange(clampValue(viewValue - 5), 'partial');
|
|
284
287
|
event.preventDefault();
|
|
285
288
|
break;
|
|
286
289
|
case 'Enter':
|
|
@@ -183,6 +183,9 @@ export const TimeClock = /*#__PURE__*/React.forwardRef(function TimeClock(inProp
|
|
|
183
183
|
{
|
|
184
184
|
const valueWithMeridiem = convertValueToMeridiem(rawValue, meridiemMode, ampm);
|
|
185
185
|
const dateWithNewHours = utils.setHours(valueOrReferenceDate, valueWithMeridiem);
|
|
186
|
+
if (utils.getHours(dateWithNewHours) !== valueWithMeridiem) {
|
|
187
|
+
return true;
|
|
188
|
+
}
|
|
186
189
|
const start = utils.setSeconds(utils.setMinutes(dateWithNewHours, 0), 0);
|
|
187
190
|
const end = utils.setSeconds(utils.setMinutes(dateWithNewHours, 59), 59);
|
|
188
191
|
return !containsValidTime({
|
|
@@ -223,9 +226,20 @@ export const TimeClock = /*#__PURE__*/React.forwardRef(function TimeClock(inProp
|
|
|
223
226
|
const valueWithMeridiem = convertValueToMeridiem(hourValue, meridiemMode, ampm);
|
|
224
227
|
setValueAndGoToNextView(utils.setHours(valueOrReferenceDate, valueWithMeridiem), isFinish, 'hours');
|
|
225
228
|
};
|
|
229
|
+
const viewValue = utils.getHours(valueOrReferenceDate);
|
|
230
|
+
let viewRange;
|
|
231
|
+
if (ampm) {
|
|
232
|
+
if (viewValue > 12) {
|
|
233
|
+
viewRange = [12, 23];
|
|
234
|
+
} else {
|
|
235
|
+
viewRange = [0, 11];
|
|
236
|
+
}
|
|
237
|
+
} else {
|
|
238
|
+
viewRange = [0, 23];
|
|
239
|
+
}
|
|
226
240
|
return {
|
|
227
241
|
onChange: handleHoursChange,
|
|
228
|
-
viewValue
|
|
242
|
+
viewValue,
|
|
229
243
|
children: getHourNumbers({
|
|
230
244
|
value,
|
|
231
245
|
utils,
|
|
@@ -234,7 +248,8 @@ export const TimeClock = /*#__PURE__*/React.forwardRef(function TimeClock(inProp
|
|
|
234
248
|
getClockNumberText: translations.hoursClockNumberText,
|
|
235
249
|
isDisabled: hourValue => disabled || isTimeDisabled(hourValue, 'hours'),
|
|
236
250
|
selectedId
|
|
237
|
-
})
|
|
251
|
+
}),
|
|
252
|
+
viewRange
|
|
238
253
|
};
|
|
239
254
|
}
|
|
240
255
|
case 'minutes':
|
|
@@ -253,7 +268,8 @@ export const TimeClock = /*#__PURE__*/React.forwardRef(function TimeClock(inProp
|
|
|
253
268
|
getClockNumberText: translations.minutesClockNumberText,
|
|
254
269
|
isDisabled: minuteValue => disabled || isTimeDisabled(minuteValue, 'minutes'),
|
|
255
270
|
selectedId
|
|
256
|
-
})
|
|
271
|
+
}),
|
|
272
|
+
viewRange: [0, 59]
|
|
257
273
|
};
|
|
258
274
|
}
|
|
259
275
|
case 'seconds':
|
|
@@ -272,7 +288,8 @@ export const TimeClock = /*#__PURE__*/React.forwardRef(function TimeClock(inProp
|
|
|
272
288
|
getClockNumberText: translations.secondsClockNumberText,
|
|
273
289
|
isDisabled: secondValue => disabled || isTimeDisabled(secondValue, 'seconds'),
|
|
274
290
|
selectedId
|
|
275
|
-
})
|
|
291
|
+
}),
|
|
292
|
+
viewRange: [0, 59]
|
|
276
293
|
};
|
|
277
294
|
}
|
|
278
295
|
default:
|
package/modern/index.js
CHANGED
|
@@ -35,8 +35,8 @@ export const addPositionPropertiesToSections = (sections, localizedDigits, isRtl
|
|
|
35
35
|
};
|
|
36
36
|
export const useFieldV6TextField = params => {
|
|
37
37
|
const isRtl = useRtl();
|
|
38
|
-
const focusTimeoutRef = React.useRef();
|
|
39
|
-
const selectionSyncTimeoutRef = React.useRef();
|
|
38
|
+
const focusTimeoutRef = React.useRef(undefined);
|
|
39
|
+
const selectionSyncTimeoutRef = React.useRef(undefined);
|
|
40
40
|
const {
|
|
41
41
|
forwardedProps: {
|
|
42
42
|
onFocus,
|
|
@@ -19,7 +19,7 @@ export const useUtils = () => useLocalizationContext().utils;
|
|
|
19
19
|
export const useDefaultDates = () => useLocalizationContext().defaultDates;
|
|
20
20
|
export const useNow = timezone => {
|
|
21
21
|
const utils = useUtils();
|
|
22
|
-
const now = React.useRef();
|
|
22
|
+
const now = React.useRef(undefined);
|
|
23
23
|
if (now.current === undefined) {
|
|
24
24
|
now.current = utils.date(undefined, timezone);
|
|
25
25
|
}
|
package/modern/locales/index.js
CHANGED
package/modern/locales/nbNO.js
CHANGED
|
@@ -16,11 +16,10 @@ const nbNOPickers = {
|
|
|
16
16
|
// DateRange labels
|
|
17
17
|
start: 'Start',
|
|
18
18
|
end: 'Slutt',
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
19
|
+
startDate: 'Startdato',
|
|
20
|
+
startTime: 'Starttid',
|
|
21
|
+
endDate: 'Sluttdato',
|
|
22
|
+
endTime: 'Slutttid',
|
|
24
23
|
// Action bar
|
|
25
24
|
cancelButtonLabel: 'Avbryt',
|
|
26
25
|
clearButtonLabel: 'Fjern',
|
|
@@ -46,8 +45,7 @@ const nbNOPickers = {
|
|
|
46
45
|
// Open picker labels
|
|
47
46
|
openDatePickerDialogue: (value, utils, formattedDate) => formattedDate || value !== null && utils.isValid(value) ? `Velg dato, valgt dato er ${formattedDate ?? utils.format(value, 'fullDate')}` : 'Velg dato',
|
|
48
47
|
openTimePickerDialogue: (value, utils, formattedTime) => formattedTime || value !== null && utils.isValid(value) ? `Velg tid, valgt tid er ${formattedTime ?? utils.format(value, 'fullTime')}` : 'Velg tid',
|
|
49
|
-
|
|
50
|
-
|
|
48
|
+
fieldClearLabel: 'Slett',
|
|
51
49
|
// Table labels
|
|
52
50
|
timeTableLabel: 'velg tid',
|
|
53
51
|
dateTableLabel: 'velg dato',
|
|
@@ -59,19 +57,17 @@ const nbNOPickers = {
|
|
|
59
57
|
fieldHoursPlaceholder: () => 'tt',
|
|
60
58
|
fieldMinutesPlaceholder: () => 'mm',
|
|
61
59
|
fieldSecondsPlaceholder: () => 'ss',
|
|
62
|
-
fieldMeridiemPlaceholder: () => 'aa'
|
|
63
|
-
|
|
60
|
+
fieldMeridiemPlaceholder: () => 'aa',
|
|
64
61
|
// View names
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
62
|
+
year: 'År',
|
|
63
|
+
month: 'Måned',
|
|
64
|
+
day: 'Dag',
|
|
65
|
+
weekDay: 'Ukedag',
|
|
66
|
+
hours: 'Timer',
|
|
67
|
+
minutes: 'Minutter',
|
|
68
|
+
seconds: 'Sekunder',
|
|
69
|
+
meridiem: 'Meridiem',
|
|
74
70
|
// Common
|
|
75
|
-
|
|
71
|
+
empty: 'Tøm'
|
|
76
72
|
};
|
|
77
73
|
export const nbNO = getPickersLocalization(nbNOPickers);
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { getPickersLocalization } from "./utils/getPickersLocalization.js";
|
|
2
|
+
const views = {
|
|
3
|
+
hours: '小時',
|
|
4
|
+
minutes: '分鐘',
|
|
5
|
+
seconds: '秒',
|
|
6
|
+
meridiem: '十二小時制'
|
|
7
|
+
};
|
|
8
|
+
const zhTWPickers = {
|
|
9
|
+
// Calendar navigation
|
|
10
|
+
previousMonth: '上個月',
|
|
11
|
+
nextMonth: '下個月',
|
|
12
|
+
// View navigation
|
|
13
|
+
openPreviousView: '前一個視圖',
|
|
14
|
+
openNextView: '下一個視圖',
|
|
15
|
+
calendarViewSwitchingButtonAriaLabel: view => view === 'year' ? '年視圖已打開,切換為日曆視圖' : '日曆視圖已打開,切換為年視圖',
|
|
16
|
+
// DateRange labels
|
|
17
|
+
start: '開始',
|
|
18
|
+
end: '結束',
|
|
19
|
+
startDate: '開始日期',
|
|
20
|
+
startTime: '開始時間',
|
|
21
|
+
endDate: '結束日期',
|
|
22
|
+
endTime: '結束時間',
|
|
23
|
+
// Action bar
|
|
24
|
+
cancelButtonLabel: '取消',
|
|
25
|
+
clearButtonLabel: '清除',
|
|
26
|
+
okButtonLabel: '確認',
|
|
27
|
+
todayButtonLabel: '今天',
|
|
28
|
+
// Toolbar titles
|
|
29
|
+
datePickerToolbarTitle: '選擇日期',
|
|
30
|
+
dateTimePickerToolbarTitle: '選擇日期和時間',
|
|
31
|
+
timePickerToolbarTitle: '選擇時間',
|
|
32
|
+
dateRangePickerToolbarTitle: '選擇時間範圍',
|
|
33
|
+
// Clock labels
|
|
34
|
+
clockLabelText: (view, time, utils, formattedTime) => `選擇 ${views[view]}. ${!formattedTime && (time === null || !utils.isValid(time)) ? '未選擇時間' : `已選擇${formattedTime ?? utils.format(time, 'fullTime')}`}`,
|
|
35
|
+
hoursClockNumberText: hours => `${hours}小時`,
|
|
36
|
+
minutesClockNumberText: minutes => `${minutes}分鐘`,
|
|
37
|
+
secondsClockNumberText: seconds => `${seconds}秒`,
|
|
38
|
+
// Digital clock labels
|
|
39
|
+
selectViewText: view => `選擇 ${views[view]}`,
|
|
40
|
+
// Calendar labels
|
|
41
|
+
calendarWeekNumberHeaderLabel: '週數',
|
|
42
|
+
calendarWeekNumberHeaderText: '#',
|
|
43
|
+
calendarWeekNumberAriaLabelText: weekNumber => `第${weekNumber}週`,
|
|
44
|
+
calendarWeekNumberText: weekNumber => `${weekNumber}`,
|
|
45
|
+
// Open picker labels
|
|
46
|
+
openDatePickerDialogue: (value, utils, formattedDate) => formattedDate || value !== null && utils.isValid(value) ? `選擇日期,已選擇${formattedDate ?? utils.format(value, 'fullDate')}` : '選擇日期',
|
|
47
|
+
openTimePickerDialogue: (value, utils, formattedTime) => formattedTime || value !== null && utils.isValid(value) ? `選擇時間,已選擇${formattedTime ?? utils.format(value, 'fullTime')}` : '選擇時間',
|
|
48
|
+
fieldClearLabel: '清除',
|
|
49
|
+
// Table labels
|
|
50
|
+
timeTableLabel: '選擇時間',
|
|
51
|
+
dateTableLabel: '選擇日期',
|
|
52
|
+
// Field section placeholders
|
|
53
|
+
fieldYearPlaceholder: params => 'Y'.repeat(params.digitAmount),
|
|
54
|
+
fieldMonthPlaceholder: params => params.contentType === 'letter' ? 'MMMM' : 'MM',
|
|
55
|
+
fieldDayPlaceholder: () => 'DD',
|
|
56
|
+
fieldWeekDayPlaceholder: params => params.contentType === 'letter' ? 'EEEE' : 'EE',
|
|
57
|
+
fieldHoursPlaceholder: () => 'hh',
|
|
58
|
+
fieldMinutesPlaceholder: () => 'mm',
|
|
59
|
+
fieldSecondsPlaceholder: () => 'ss',
|
|
60
|
+
fieldMeridiemPlaceholder: () => 'aa',
|
|
61
|
+
// View names
|
|
62
|
+
year: '年份',
|
|
63
|
+
month: '月份',
|
|
64
|
+
day: '日期',
|
|
65
|
+
weekDay: '星期',
|
|
66
|
+
hours: '時',
|
|
67
|
+
minutes: '分',
|
|
68
|
+
seconds: '秒',
|
|
69
|
+
meridiem: '十二小時制',
|
|
70
|
+
// Common
|
|
71
|
+
empty: '空'
|
|
72
|
+
};
|
|
73
|
+
export const zhTW = getPickersLocalization(zhTWPickers);
|
|
@@ -197,6 +197,9 @@ const MultiSectionDigitalClock = exports.MultiSectionDigitalClock = /*#__PURE__*
|
|
|
197
197
|
{
|
|
198
198
|
const valueWithMeridiem = (0, _timeUtils.convertValueToMeridiem)(rawValue, meridiemMode, ampm);
|
|
199
199
|
const dateWithNewHours = utils.setHours(valueOrReferenceDate, valueWithMeridiem);
|
|
200
|
+
if (utils.getHours(dateWithNewHours) !== valueWithMeridiem) {
|
|
201
|
+
return true;
|
|
202
|
+
}
|
|
200
203
|
const start = utils.setSeconds(utils.setMinutes(dateWithNewHours, 0), 0);
|
|
201
204
|
const end = utils.setSeconds(utils.setMinutes(dateWithNewHours, 59), 59);
|
|
202
205
|
return !containsValidTime({
|
package/node/TimeClock/Clock.js
CHANGED
|
@@ -188,6 +188,7 @@ function Clock(inProps) {
|
|
|
188
188
|
selectedId,
|
|
189
189
|
type,
|
|
190
190
|
viewValue,
|
|
191
|
+
viewRange: [minViewValue, maxViewValue],
|
|
191
192
|
disabled = false,
|
|
192
193
|
readOnly,
|
|
193
194
|
className
|
|
@@ -260,6 +261,8 @@ function Clock(inProps) {
|
|
|
260
261
|
listboxRef.current.focus();
|
|
261
262
|
}
|
|
262
263
|
}, [autoFocus]);
|
|
264
|
+
const clampValue = newValue => Math.max(minViewValue, Math.min(maxViewValue, newValue));
|
|
265
|
+
const circleValue = newValue => (newValue + (maxViewValue + 1)) % (maxViewValue + 1);
|
|
263
266
|
const handleKeyDown = event => {
|
|
264
267
|
// TODO: Why this early exit?
|
|
265
268
|
if (isMoving.current) {
|
|
@@ -268,27 +271,27 @@ function Clock(inProps) {
|
|
|
268
271
|
switch (event.key) {
|
|
269
272
|
case 'Home':
|
|
270
273
|
// reset both hours and minutes
|
|
271
|
-
handleValueChange(
|
|
274
|
+
handleValueChange(minViewValue, 'partial');
|
|
272
275
|
event.preventDefault();
|
|
273
276
|
break;
|
|
274
277
|
case 'End':
|
|
275
|
-
handleValueChange(
|
|
278
|
+
handleValueChange(maxViewValue, 'partial');
|
|
276
279
|
event.preventDefault();
|
|
277
280
|
break;
|
|
278
281
|
case 'ArrowUp':
|
|
279
|
-
handleValueChange(viewValue + keyboardControlStep, 'partial');
|
|
282
|
+
handleValueChange(circleValue(viewValue + keyboardControlStep), 'partial');
|
|
280
283
|
event.preventDefault();
|
|
281
284
|
break;
|
|
282
285
|
case 'ArrowDown':
|
|
283
|
-
handleValueChange(viewValue - keyboardControlStep, 'partial');
|
|
286
|
+
handleValueChange(circleValue(viewValue - keyboardControlStep), 'partial');
|
|
284
287
|
event.preventDefault();
|
|
285
288
|
break;
|
|
286
289
|
case 'PageUp':
|
|
287
|
-
handleValueChange(viewValue + 5, 'partial');
|
|
290
|
+
handleValueChange(clampValue(viewValue + 5), 'partial');
|
|
288
291
|
event.preventDefault();
|
|
289
292
|
break;
|
|
290
293
|
case 'PageDown':
|
|
291
|
-
handleValueChange(viewValue - 5, 'partial');
|
|
294
|
+
handleValueChange(clampValue(viewValue - 5), 'partial');
|
|
292
295
|
event.preventDefault();
|
|
293
296
|
break;
|
|
294
297
|
case 'Enter':
|
|
@@ -190,6 +190,9 @@ const TimeClock = exports.TimeClock = /*#__PURE__*/React.forwardRef(function Tim
|
|
|
190
190
|
{
|
|
191
191
|
const valueWithMeridiem = (0, _timeUtils.convertValueToMeridiem)(rawValue, meridiemMode, ampm);
|
|
192
192
|
const dateWithNewHours = utils.setHours(valueOrReferenceDate, valueWithMeridiem);
|
|
193
|
+
if (utils.getHours(dateWithNewHours) !== valueWithMeridiem) {
|
|
194
|
+
return true;
|
|
195
|
+
}
|
|
193
196
|
const start = utils.setSeconds(utils.setMinutes(dateWithNewHours, 0), 0);
|
|
194
197
|
const end = utils.setSeconds(utils.setMinutes(dateWithNewHours, 59), 59);
|
|
195
198
|
return !containsValidTime({
|
|
@@ -230,9 +233,20 @@ const TimeClock = exports.TimeClock = /*#__PURE__*/React.forwardRef(function Tim
|
|
|
230
233
|
const valueWithMeridiem = (0, _timeUtils.convertValueToMeridiem)(hourValue, meridiemMode, ampm);
|
|
231
234
|
setValueAndGoToNextView(utils.setHours(valueOrReferenceDate, valueWithMeridiem), isFinish, 'hours');
|
|
232
235
|
};
|
|
236
|
+
const viewValue = utils.getHours(valueOrReferenceDate);
|
|
237
|
+
let viewRange;
|
|
238
|
+
if (ampm) {
|
|
239
|
+
if (viewValue > 12) {
|
|
240
|
+
viewRange = [12, 23];
|
|
241
|
+
} else {
|
|
242
|
+
viewRange = [0, 11];
|
|
243
|
+
}
|
|
244
|
+
} else {
|
|
245
|
+
viewRange = [0, 23];
|
|
246
|
+
}
|
|
233
247
|
return {
|
|
234
248
|
onChange: handleHoursChange,
|
|
235
|
-
viewValue
|
|
249
|
+
viewValue,
|
|
236
250
|
children: (0, _ClockNumbers.getHourNumbers)({
|
|
237
251
|
value,
|
|
238
252
|
utils,
|
|
@@ -241,7 +255,8 @@ const TimeClock = exports.TimeClock = /*#__PURE__*/React.forwardRef(function Tim
|
|
|
241
255
|
getClockNumberText: translations.hoursClockNumberText,
|
|
242
256
|
isDisabled: hourValue => disabled || isTimeDisabled(hourValue, 'hours'),
|
|
243
257
|
selectedId
|
|
244
|
-
})
|
|
258
|
+
}),
|
|
259
|
+
viewRange
|
|
245
260
|
};
|
|
246
261
|
}
|
|
247
262
|
case 'minutes':
|
|
@@ -260,7 +275,8 @@ const TimeClock = exports.TimeClock = /*#__PURE__*/React.forwardRef(function Tim
|
|
|
260
275
|
getClockNumberText: translations.minutesClockNumberText,
|
|
261
276
|
isDisabled: minuteValue => disabled || isTimeDisabled(minuteValue, 'minutes'),
|
|
262
277
|
selectedId
|
|
263
|
-
})
|
|
278
|
+
}),
|
|
279
|
+
viewRange: [0, 59]
|
|
264
280
|
};
|
|
265
281
|
}
|
|
266
282
|
case 'seconds':
|
|
@@ -279,7 +295,8 @@ const TimeClock = exports.TimeClock = /*#__PURE__*/React.forwardRef(function Tim
|
|
|
279
295
|
getClockNumberText: translations.secondsClockNumberText,
|
|
280
296
|
isDisabled: secondValue => disabled || isTimeDisabled(secondValue, 'seconds'),
|
|
281
297
|
selectedId
|
|
282
|
-
})
|
|
298
|
+
}),
|
|
299
|
+
viewRange: [0, 59]
|
|
283
300
|
};
|
|
284
301
|
}
|
|
285
302
|
default:
|
package/node/index.js
CHANGED
|
@@ -44,8 +44,8 @@ const addPositionPropertiesToSections = (sections, localizedDigits, isRtl) => {
|
|
|
44
44
|
exports.addPositionPropertiesToSections = addPositionPropertiesToSections;
|
|
45
45
|
const useFieldV6TextField = params => {
|
|
46
46
|
const isRtl = (0, _RtlProvider.useRtl)();
|
|
47
|
-
const focusTimeoutRef = React.useRef();
|
|
48
|
-
const selectionSyncTimeoutRef = React.useRef();
|
|
47
|
+
const focusTimeoutRef = React.useRef(undefined);
|
|
48
|
+
const selectionSyncTimeoutRef = React.useRef(undefined);
|
|
49
49
|
const {
|
|
50
50
|
forwardedProps: {
|
|
51
51
|
onFocus,
|
|
@@ -30,7 +30,7 @@ const useDefaultDates = () => useLocalizationContext().defaultDates;
|
|
|
30
30
|
exports.useDefaultDates = useDefaultDates;
|
|
31
31
|
const useNow = timezone => {
|
|
32
32
|
const utils = useUtils();
|
|
33
|
-
const now = React.useRef();
|
|
33
|
+
const now = React.useRef(undefined);
|
|
34
34
|
if (now.current === undefined) {
|
|
35
35
|
now.current = utils.date(undefined, timezone);
|
|
36
36
|
}
|
package/node/locales/index.js
CHANGED
|
@@ -421,6 +421,17 @@ Object.keys(_zhHK).forEach(function (key) {
|
|
|
421
421
|
}
|
|
422
422
|
});
|
|
423
423
|
});
|
|
424
|
+
var _zhTW = require("./zhTW");
|
|
425
|
+
Object.keys(_zhTW).forEach(function (key) {
|
|
426
|
+
if (key === "default" || key === "__esModule") return;
|
|
427
|
+
if (key in exports && exports[key] === _zhTW[key]) return;
|
|
428
|
+
Object.defineProperty(exports, key, {
|
|
429
|
+
enumerable: true,
|
|
430
|
+
get: function () {
|
|
431
|
+
return _zhTW[key];
|
|
432
|
+
}
|
|
433
|
+
});
|
|
434
|
+
});
|
|
424
435
|
var _pickersLocaleTextApi = require("./utils/pickersLocaleTextApi");
|
|
425
436
|
Object.keys(_pickersLocaleTextApi).forEach(function (key) {
|
|
426
437
|
if (key === "default" || key === "__esModule") return;
|
package/node/locales/nbNO.js
CHANGED
|
@@ -22,11 +22,10 @@ const nbNOPickers = {
|
|
|
22
22
|
// DateRange labels
|
|
23
23
|
start: 'Start',
|
|
24
24
|
end: 'Slutt',
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
25
|
+
startDate: 'Startdato',
|
|
26
|
+
startTime: 'Starttid',
|
|
27
|
+
endDate: 'Sluttdato',
|
|
28
|
+
endTime: 'Slutttid',
|
|
30
29
|
// Action bar
|
|
31
30
|
cancelButtonLabel: 'Avbryt',
|
|
32
31
|
clearButtonLabel: 'Fjern',
|
|
@@ -52,8 +51,7 @@ const nbNOPickers = {
|
|
|
52
51
|
// Open picker labels
|
|
53
52
|
openDatePickerDialogue: (value, utils, formattedDate) => formattedDate || value !== null && utils.isValid(value) ? `Velg dato, valgt dato er ${formattedDate ?? utils.format(value, 'fullDate')}` : 'Velg dato',
|
|
54
53
|
openTimePickerDialogue: (value, utils, formattedTime) => formattedTime || value !== null && utils.isValid(value) ? `Velg tid, valgt tid er ${formattedTime ?? utils.format(value, 'fullTime')}` : 'Velg tid',
|
|
55
|
-
|
|
56
|
-
|
|
54
|
+
fieldClearLabel: 'Slett',
|
|
57
55
|
// Table labels
|
|
58
56
|
timeTableLabel: 'velg tid',
|
|
59
57
|
dateTableLabel: 'velg dato',
|
|
@@ -65,19 +63,17 @@ const nbNOPickers = {
|
|
|
65
63
|
fieldHoursPlaceholder: () => 'tt',
|
|
66
64
|
fieldMinutesPlaceholder: () => 'mm',
|
|
67
65
|
fieldSecondsPlaceholder: () => 'ss',
|
|
68
|
-
fieldMeridiemPlaceholder: () => 'aa'
|
|
69
|
-
|
|
66
|
+
fieldMeridiemPlaceholder: () => 'aa',
|
|
70
67
|
// View names
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
68
|
+
year: 'År',
|
|
69
|
+
month: 'Måned',
|
|
70
|
+
day: 'Dag',
|
|
71
|
+
weekDay: 'Ukedag',
|
|
72
|
+
hours: 'Timer',
|
|
73
|
+
minutes: 'Minutter',
|
|
74
|
+
seconds: 'Sekunder',
|
|
75
|
+
meridiem: 'Meridiem',
|
|
80
76
|
// Common
|
|
81
|
-
|
|
77
|
+
empty: 'Tøm'
|
|
82
78
|
};
|
|
83
79
|
const nbNO = exports.nbNO = (0, _getPickersLocalization.getPickersLocalization)(nbNOPickers);
|