index.tsx 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. import React from 'react';
  2. import { forwardStatics } from '@douyinfe/semi-foundation/utils/object';
  3. import DatePicker, { DatePickerProps } from './datePicker';
  4. import ConfigContext from '../configProvider/context';
  5. import LocaleConsumer from '../locale/localeConsumer';
  6. import { Locale } from '../locale/interface';
  7. export { DateInputProps } from './dateInput';
  8. export { DatePickerProps } from './datePicker';
  9. export { MonthProps } from './month';
  10. export { MonthsGridProps } from './monthsGrid';
  11. export { QuickControlProps } from './quickControl';
  12. export { YearAndMonthProps } from './yearAndMonth';
  13. export default forwardStatics(
  14. React.forwardRef<DatePicker, DatePickerProps>((props, ref) => {
  15. const propsObj = { ...props };
  16. const { type, format, rangeSeparator } = propsObj;
  17. if (typeof format === 'string' && format) {
  18. if (!/[Hhms]+/.test(format)) {
  19. if (type === 'dateTime') {
  20. propsObj.type = 'date';
  21. } else if (type === 'dateTimeRange') {
  22. propsObj.type = 'dateRange';
  23. }
  24. }
  25. }
  26. // Add spaces at both ends to prevent conflicts with characters in the date when separating
  27. if (rangeSeparator && typeof rangeSeparator === 'string') {
  28. propsObj.rangeSeparator = ` ${rangeSeparator.trim()} `;
  29. }
  30. return (
  31. <ConfigContext.Consumer>
  32. {({ timeZone }: { timeZone?: string | number }) => (
  33. <LocaleConsumer componentName={'DatePicker'}>
  34. {(locale: Locale['DatePicker'], localeCode: string, dateFnsLocale: Locale['dateFnsLocale']) => (
  35. <DatePicker
  36. timeZone={timeZone}
  37. localeCode={localeCode}
  38. locale={locale}
  39. dateFnsLocale={dateFnsLocale}
  40. {...propsObj}
  41. ref={ref}
  42. />
  43. )}
  44. </LocaleConsumer>
  45. )}
  46. </ConfigContext.Consumer>
  47. );
  48. }),
  49. DatePicker
  50. );
  51. export {
  52. BaseValueType,
  53. DayStatusType,
  54. DisabledDateOptions,
  55. DisabledDateType,
  56. DisabledTimeType,
  57. InputSize,
  58. Position,
  59. PresetType,
  60. PresetsType,
  61. TriggerRenderProps,
  62. ValidateStatus,
  63. ValueType,
  64. } from '@douyinfe/semi-foundation/datePicker/foundation';