useLocale.js 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
  2. import React from 'react';
  3. export function fillTimeFormat(showHour, showMinute, showSecond, showMillisecond, showMeridiem) {
  4. var timeFormat = '';
  5. // Base HH:mm:ss
  6. var cells = [];
  7. if (showHour) {
  8. cells.push(showMeridiem ? 'hh' : 'HH');
  9. }
  10. if (showMinute) {
  11. cells.push('mm');
  12. }
  13. if (showSecond) {
  14. cells.push('ss');
  15. }
  16. timeFormat = cells.join(':');
  17. // Millisecond
  18. if (showMillisecond) {
  19. timeFormat += '.SSS';
  20. }
  21. // Meridiem
  22. if (showMeridiem) {
  23. timeFormat += ' A';
  24. }
  25. return timeFormat;
  26. }
  27. /**
  28. * Used for `useFilledProps` since it already in the React.useMemo
  29. */
  30. function fillLocale(locale, showHour, showMinute, showSecond, showMillisecond, use12Hours) {
  31. // Not fill `monthFormat` since `locale.shortMonths` handle this
  32. // Not fill `cellMeridiemFormat` since AM & PM by default
  33. var fieldDateTimeFormat = locale.fieldDateTimeFormat,
  34. fieldDateFormat = locale.fieldDateFormat,
  35. fieldTimeFormat = locale.fieldTimeFormat,
  36. fieldMonthFormat = locale.fieldMonthFormat,
  37. fieldYearFormat = locale.fieldYearFormat,
  38. fieldWeekFormat = locale.fieldWeekFormat,
  39. fieldQuarterFormat = locale.fieldQuarterFormat,
  40. yearFormat = locale.yearFormat,
  41. cellYearFormat = locale.cellYearFormat,
  42. cellQuarterFormat = locale.cellQuarterFormat,
  43. dayFormat = locale.dayFormat,
  44. cellDateFormat = locale.cellDateFormat;
  45. var timeFormat = fillTimeFormat(showHour, showMinute, showSecond, showMillisecond, use12Hours);
  46. return _objectSpread(_objectSpread({}, locale), {}, {
  47. fieldDateTimeFormat: fieldDateTimeFormat || "YYYY-MM-DD ".concat(timeFormat),
  48. fieldDateFormat: fieldDateFormat || 'YYYY-MM-DD',
  49. fieldTimeFormat: fieldTimeFormat || timeFormat,
  50. fieldMonthFormat: fieldMonthFormat || 'YYYY-MM',
  51. fieldYearFormat: fieldYearFormat || 'YYYY',
  52. fieldWeekFormat: fieldWeekFormat || 'gggg-wo',
  53. fieldQuarterFormat: fieldQuarterFormat || 'YYYY-[Q]Q',
  54. yearFormat: yearFormat || 'YYYY',
  55. cellYearFormat: cellYearFormat || 'YYYY',
  56. cellQuarterFormat: cellQuarterFormat || '[Q]Q',
  57. cellDateFormat: cellDateFormat || dayFormat || 'D'
  58. });
  59. }
  60. /**
  61. * Fill locale format as start up
  62. */
  63. export default function useLocale(locale, showProps) {
  64. var showHour = showProps.showHour,
  65. showMinute = showProps.showMinute,
  66. showSecond = showProps.showSecond,
  67. showMillisecond = showProps.showMillisecond,
  68. use12Hours = showProps.use12Hours;
  69. return React.useMemo(function () {
  70. return fillLocale(locale, showHour, showMinute, showSecond, showMillisecond, use12Hours);
  71. }, [locale, showHour, showMinute, showSecond, showMillisecond, use12Hours]);
  72. }