useLocale.js 3.0 KB

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