useFilledProps.d.ts 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. import type { FormatType, InternalMode, PickerMode } from '../../interface';
  2. import type { RangePickerProps } from '../RangePicker';
  3. import useInvalidate from './useInvalidate';
  4. type UseInvalidate<DateType extends object = any> = typeof useInvalidate<DateType>;
  5. type PickedProps<DateType extends object = any> = Pick<RangePickerProps<DateType>, 'generateConfig' | 'locale' | 'picker' | 'prefixCls' | 'styles' | 'classNames' | 'order' | 'components' | 'inputRender' | 'clearIcon' | 'allowClear' | 'needConfirm' | 'format' | 'inputReadOnly' | 'disabledDate' | 'minDate' | 'maxDate' | 'defaultOpenValue'> & {
  6. multiple?: boolean;
  7. showTime?: any;
  8. value?: any;
  9. defaultValue?: any;
  10. pickerValue?: any;
  11. defaultPickerValue?: any;
  12. };
  13. type ExcludeBooleanType<T> = T extends boolean ? never : T;
  14. type GetGeneric<T> = T extends PickedProps<infer U> ? U : never;
  15. type ToArrayType<T, DateType> = T extends any[] ? T : DateType[];
  16. /**
  17. * Align the outer props with unique typed and fill undefined props.
  18. * This is shared with both RangePicker and Picker. This will do:
  19. * - Convert `value` & `defaultValue` to array
  20. * - handle the legacy props fill like `clearIcon` + `allowClear` = `clearIcon`
  21. */
  22. export default function useFilledProps<InProps extends PickedProps, DateType extends GetGeneric<InProps>, UpdaterProps extends object>(props: InProps, updater?: () => UpdaterProps): [
  23. filledProps: Omit<InProps, keyof UpdaterProps | 'showTime' | 'value' | 'defaultValue'> & UpdaterProps & {
  24. picker: PickerMode;
  25. showTime?: ExcludeBooleanType<InProps['showTime']>;
  26. value?: ToArrayType<InProps['value'], DateType>;
  27. defaultValue?: ToArrayType<InProps['value'], DateType>;
  28. pickerValue?: ToArrayType<InProps['value'], DateType>;
  29. defaultPickerValue?: ToArrayType<InProps['value'], DateType>;
  30. },
  31. internalPicker: InternalMode,
  32. complexPicker: boolean,
  33. formatList: FormatType<DateType>[],
  34. maskFormat: string,
  35. isInvalidateDate: ReturnType<UseInvalidate<DateType>>
  36. ];
  37. export {};