useTimeConfig.js 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
  2. import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
  3. import _typeof from "@babel/runtime/helpers/esm/typeof";
  4. import { getRowFormat, pickProps, toArray } from "../utils/miscUtil";
  5. import { fillTimeFormat } from "./useLocale";
  6. function checkShow(format, keywords, show) {
  7. return show !== null && show !== void 0 ? show : keywords.some(function (keyword) {
  8. return format.includes(keyword);
  9. });
  10. }
  11. var showTimeKeys = [
  12. // 'format',
  13. 'showNow', 'showHour', 'showMinute', 'showSecond', 'showMillisecond', 'use12Hours', 'hourStep', 'minuteStep', 'secondStep', 'millisecondStep', 'hideDisabledOptions', 'defaultValue', 'disabledHours', 'disabledMinutes', 'disabledSeconds', 'disabledMilliseconds', 'disabledTime', 'changeOnScroll', 'defaultOpenValue'];
  14. /**
  15. * Get SharedTimeProps from props.
  16. */
  17. function pickTimeProps(props) {
  18. var timeProps = pickProps(props, showTimeKeys);
  19. var format = props.format,
  20. picker = props.picker;
  21. var propFormat = null;
  22. if (format) {
  23. propFormat = format;
  24. if (Array.isArray(propFormat)) {
  25. propFormat = propFormat[0];
  26. }
  27. propFormat = _typeof(propFormat) === 'object' ? propFormat.format : propFormat;
  28. }
  29. if (picker === 'time') {
  30. timeProps.format = propFormat;
  31. }
  32. return [timeProps, propFormat];
  33. }
  34. function isStringFormat(format) {
  35. return format && typeof format === 'string';
  36. }
  37. /** Check if all the showXXX is `undefined` */
  38. function existShowConfig(showHour, showMinute, showSecond, showMillisecond) {
  39. return [showHour, showMinute, showSecond, showMillisecond].some(function (show) {
  40. return show !== undefined;
  41. });
  42. }
  43. /** Fill the showXXX if needed */
  44. function fillShowConfig(hasShowConfig, showHour, showMinute, showSecond, showMillisecond) {
  45. var parsedShowHour = showHour;
  46. var parsedShowMinute = showMinute;
  47. var parsedShowSecond = showSecond;
  48. if (!hasShowConfig && !parsedShowHour && !parsedShowMinute && !parsedShowSecond && !showMillisecond) {
  49. parsedShowHour = true;
  50. parsedShowMinute = true;
  51. parsedShowSecond = true;
  52. } else if (hasShowConfig) {
  53. var _parsedShowHour, _parsedShowMinute, _parsedShowSecond;
  54. var existFalse = [parsedShowHour, parsedShowMinute, parsedShowSecond].some(function (show) {
  55. return show === false;
  56. });
  57. var existTrue = [parsedShowHour, parsedShowMinute, parsedShowSecond].some(function (show) {
  58. return show === true;
  59. });
  60. var defaultShow = existFalse ? true : !existTrue;
  61. parsedShowHour = (_parsedShowHour = parsedShowHour) !== null && _parsedShowHour !== void 0 ? _parsedShowHour : defaultShow;
  62. parsedShowMinute = (_parsedShowMinute = parsedShowMinute) !== null && _parsedShowMinute !== void 0 ? _parsedShowMinute : defaultShow;
  63. parsedShowSecond = (_parsedShowSecond = parsedShowSecond) !== null && _parsedShowSecond !== void 0 ? _parsedShowSecond : defaultShow;
  64. }
  65. return [parsedShowHour, parsedShowMinute, parsedShowSecond, showMillisecond];
  66. }
  67. /**
  68. * Get `showHour`, `showMinute`, `showSecond` or other from the props.
  69. * This is pure function, will not get `showXXX` from the `format` prop.
  70. */
  71. export function getTimeProps(componentProps) {
  72. var showTime = componentProps.showTime;
  73. var _pickTimeProps = pickTimeProps(componentProps),
  74. _pickTimeProps2 = _slicedToArray(_pickTimeProps, 2),
  75. pickedProps = _pickTimeProps2[0],
  76. propFormat = _pickTimeProps2[1];
  77. var showTimeConfig = showTime && _typeof(showTime) === 'object' ? showTime : {};
  78. var timeConfig = _objectSpread(_objectSpread({
  79. defaultOpenValue: showTimeConfig.defaultOpenValue || showTimeConfig.defaultValue
  80. }, pickedProps), showTimeConfig);
  81. var showMillisecond = timeConfig.showMillisecond;
  82. var showHour = timeConfig.showHour,
  83. showMinute = timeConfig.showMinute,
  84. showSecond = timeConfig.showSecond;
  85. var hasShowConfig = existShowConfig(showHour, showMinute, showSecond, showMillisecond);
  86. var _fillShowConfig = fillShowConfig(hasShowConfig, showHour, showMinute, showSecond, showMillisecond);
  87. var _fillShowConfig2 = _slicedToArray(_fillShowConfig, 3);
  88. showHour = _fillShowConfig2[0];
  89. showMinute = _fillShowConfig2[1];
  90. showSecond = _fillShowConfig2[2];
  91. return [timeConfig, _objectSpread(_objectSpread({}, timeConfig), {}, {
  92. showHour: showHour,
  93. showMinute: showMinute,
  94. showSecond: showSecond,
  95. showMillisecond: showMillisecond
  96. }), timeConfig.format, propFormat];
  97. }
  98. export function fillShowTimeConfig(picker, showTimeFormat, propFormat, timeConfig, locale) {
  99. var isTimePicker = picker === 'time';
  100. if (picker === 'datetime' || isTimePicker) {
  101. var pickedProps = timeConfig;
  102. // ====================== BaseFormat ======================
  103. var defaultLocaleFormat = getRowFormat(picker, locale, null);
  104. var baselineFormat = defaultLocaleFormat;
  105. var formatList = [showTimeFormat, propFormat];
  106. for (var i = 0; i < formatList.length; i += 1) {
  107. var format = toArray(formatList[i])[0];
  108. if (isStringFormat(format)) {
  109. baselineFormat = format;
  110. break;
  111. }
  112. }
  113. // ========================= Show =========================
  114. var showHour = pickedProps.showHour,
  115. showMinute = pickedProps.showMinute,
  116. showSecond = pickedProps.showSecond,
  117. showMillisecond = pickedProps.showMillisecond;
  118. var use12Hours = pickedProps.use12Hours;
  119. var showMeridiem = checkShow(baselineFormat, ['a', 'A', 'LT', 'LLL', 'LTS'], use12Hours);
  120. var hasShowConfig = existShowConfig(showHour, showMinute, showSecond, showMillisecond);
  121. // Fill with format, if needed
  122. if (!hasShowConfig) {
  123. showHour = checkShow(baselineFormat, ['H', 'h', 'k', 'LT', 'LLL']);
  124. showMinute = checkShow(baselineFormat, ['m', 'LT', 'LLL']);
  125. showSecond = checkShow(baselineFormat, ['s', 'LTS']);
  126. showMillisecond = checkShow(baselineFormat, ['SSS']);
  127. }
  128. // Fallback if all can not see
  129. // ======================== Format ========================
  130. var _fillShowConfig3 = fillShowConfig(hasShowConfig, showHour, showMinute, showSecond, showMillisecond);
  131. var _fillShowConfig4 = _slicedToArray(_fillShowConfig3, 3);
  132. showHour = _fillShowConfig4[0];
  133. showMinute = _fillShowConfig4[1];
  134. showSecond = _fillShowConfig4[2];
  135. var timeFormat = showTimeFormat || fillTimeFormat(showHour, showMinute, showSecond, showMillisecond, showMeridiem);
  136. // ======================== Props =========================
  137. return _objectSpread(_objectSpread({}, pickedProps), {}, {
  138. // Format
  139. format: timeFormat,
  140. // Show Config
  141. showHour: showHour,
  142. showMinute: showMinute,
  143. showSecond: showSecond,
  144. showMillisecond: showMillisecond,
  145. use12Hours: showMeridiem
  146. });
  147. }
  148. return null;
  149. }