@elliemae/ds-controlled-form 1.54.0-next.7 → 1.54.0-rc.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. package/cjs/controlled-date-time-picker/ControlledDateTimePickerCTX.js +10 -0
  2. package/cjs/controlled-date-time-picker/ControlledDateTimePickerCTX.js.map +1 -1
  3. package/cjs/controlled-date-time-picker/config/useControlledDateTimePicker.js +41 -23
  4. package/cjs/controlled-date-time-picker/config/useControlledDateTimePicker.js.map +1 -1
  5. package/cjs/controlled-date-time-picker/parts/ClearButton/ClearButton.js +2 -0
  6. package/cjs/controlled-date-time-picker/parts/ClearButton/ClearButton.js.map +1 -1
  7. package/cjs/controlled-date-time-picker/parts/ClearButton/useClearButton.js +33 -4
  8. package/cjs/controlled-date-time-picker/parts/ClearButton/useClearButton.js.map +1 -1
  9. package/cjs/controlled-date-time-picker/parts/DateInputs/DateInputs.js +2 -0
  10. package/cjs/controlled-date-time-picker/parts/DateInputs/DateInputs.js.map +1 -1
  11. package/cjs/controlled-date-time-picker/parts/DateInputs/MMInput.js +3 -1
  12. package/cjs/controlled-date-time-picker/parts/DateInputs/MMInput.js.map +1 -1
  13. package/cjs/controlled-date-time-picker/parts/DateInputs/useDateInputs.js +17 -12
  14. package/cjs/controlled-date-time-picker/parts/DateInputs/useDateInputs.js.map +1 -1
  15. package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/CalendarContext.js +1 -0
  16. package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/CalendarContext.js.map +1 -1
  17. package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/CalendarHead.js +6 -2
  18. package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/CalendarHead.js.map +1 -1
  19. package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/useConfigCalendarCTX.js +8 -3
  20. package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/useConfigCalendarCTX.js.map +1 -1
  21. package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/useKeyboardHandlers.js +102 -27
  22. package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/useKeyboardHandlers.js.map +1 -1
  23. package/cjs/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/useConfigCalendarWithTimeWheelCTX.js +3 -1
  24. package/cjs/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/useConfigCalendarWithTimeWheelCTX.js.map +1 -1
  25. package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/HoursList.js +3 -1
  26. package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/HoursList.js.map +1 -1
  27. package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/TimeWheelContext.js +1 -0
  28. package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/TimeWheelContext.js.map +1 -1
  29. package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/useConfigTimePickerCTX.js +9 -4
  30. package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/useConfigTimePickerCTX.js.map +1 -1
  31. package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/useKeyboardHandlers.js +181 -67
  32. package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/useKeyboardHandlers.js.map +1 -1
  33. package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/usePopperTriggerLogic.js +14 -8
  34. package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/usePopperTriggerLogic.js.map +1 -1
  35. package/cjs/controlled-date-time-picker/parts/TimeInputs/HHInput.js +3 -1
  36. package/cjs/controlled-date-time-picker/parts/TimeInputs/HHInput.js.map +1 -1
  37. package/cjs/controlled-date-time-picker/parts/TimeInputs/TimeInputs.js +3 -1
  38. package/cjs/controlled-date-time-picker/parts/TimeInputs/TimeInputs.js.map +1 -1
  39. package/cjs/controlled-date-time-picker/parts/TimeInputs/useTimeInputs.js +15 -10
  40. package/cjs/controlled-date-time-picker/parts/TimeInputs/useTimeInputs.js.map +1 -1
  41. package/esm/controlled-date-time-picker/ControlledDateTimePickerCTX.js +10 -0
  42. package/esm/controlled-date-time-picker/ControlledDateTimePickerCTX.js.map +1 -1
  43. package/esm/controlled-date-time-picker/config/useControlledDateTimePicker.js +41 -23
  44. package/esm/controlled-date-time-picker/config/useControlledDateTimePicker.js.map +1 -1
  45. package/esm/controlled-date-time-picker/parts/ClearButton/ClearButton.js +2 -0
  46. package/esm/controlled-date-time-picker/parts/ClearButton/ClearButton.js.map +1 -1
  47. package/esm/controlled-date-time-picker/parts/ClearButton/useClearButton.js +33 -4
  48. package/esm/controlled-date-time-picker/parts/ClearButton/useClearButton.js.map +1 -1
  49. package/esm/controlled-date-time-picker/parts/DateInputs/DateInputs.js +2 -0
  50. package/esm/controlled-date-time-picker/parts/DateInputs/DateInputs.js.map +1 -1
  51. package/esm/controlled-date-time-picker/parts/DateInputs/MMInput.js +3 -1
  52. package/esm/controlled-date-time-picker/parts/DateInputs/MMInput.js.map +1 -1
  53. package/esm/controlled-date-time-picker/parts/DateInputs/useDateInputs.js +17 -12
  54. package/esm/controlled-date-time-picker/parts/DateInputs/useDateInputs.js.map +1 -1
  55. package/esm/controlled-date-time-picker/parts/Pickers/Calendar/CalendarContext.js +1 -0
  56. package/esm/controlled-date-time-picker/parts/Pickers/Calendar/CalendarContext.js.map +1 -1
  57. package/esm/controlled-date-time-picker/parts/Pickers/Calendar/CalendarHead.js +6 -2
  58. package/esm/controlled-date-time-picker/parts/Pickers/Calendar/CalendarHead.js.map +1 -1
  59. package/esm/controlled-date-time-picker/parts/Pickers/Calendar/useConfigCalendarCTX.js +8 -3
  60. package/esm/controlled-date-time-picker/parts/Pickers/Calendar/useConfigCalendarCTX.js.map +1 -1
  61. package/esm/controlled-date-time-picker/parts/Pickers/Calendar/useKeyboardHandlers.js +102 -27
  62. package/esm/controlled-date-time-picker/parts/Pickers/Calendar/useKeyboardHandlers.js.map +1 -1
  63. package/esm/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/useConfigCalendarWithTimeWheelCTX.js +3 -1
  64. package/esm/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/useConfigCalendarWithTimeWheelCTX.js.map +1 -1
  65. package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/HoursList.js +3 -1
  66. package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/HoursList.js.map +1 -1
  67. package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/TimeWheelContext.js +1 -0
  68. package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/TimeWheelContext.js.map +1 -1
  69. package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/useConfigTimePickerCTX.js +9 -4
  70. package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/useConfigTimePickerCTX.js.map +1 -1
  71. package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/useKeyboardHandlers.js +181 -67
  72. package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/useKeyboardHandlers.js.map +1 -1
  73. package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/usePopperTriggerLogic.js +14 -8
  74. package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/usePopperTriggerLogic.js.map +1 -1
  75. package/esm/controlled-date-time-picker/parts/TimeInputs/HHInput.js +3 -1
  76. package/esm/controlled-date-time-picker/parts/TimeInputs/HHInput.js.map +1 -1
  77. package/esm/controlled-date-time-picker/parts/TimeInputs/TimeInputs.js +3 -1
  78. package/esm/controlled-date-time-picker/parts/TimeInputs/TimeInputs.js.map +1 -1
  79. package/esm/controlled-date-time-picker/parts/TimeInputs/useTimeInputs.js +15 -10
  80. package/esm/controlled-date-time-picker/parts/TimeInputs/useTimeInputs.js.map +1 -1
  81. package/package.json +4 -4
@@ -15,6 +15,7 @@ var defaultReturnFalse = function defaultReturnFalse() {
15
15
 
16
16
  var mockedSetLatestInteractionRegion = noop;
17
17
  var defaultProps = {
18
+ // changing default type requires changing default booleans (hideDate, withAnyInputs, etc...) in the context too
18
19
  type: controlledDateTimePicker_ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.FULL,
19
20
  dateTime: '',
20
21
  date: '',
@@ -42,6 +43,7 @@ var defaultProps = {
42
43
  minutesInterval: 1,
43
44
  isClearable: false,
44
45
  hasError: false,
46
+ autoFocus: false,
45
47
  preventCloseOnSelection: false,
46
48
  pickerFooterMsg: undefined
47
49
  };
@@ -94,6 +96,14 @@ var defaultContext = {
94
96
  isControllerOnly: false,
95
97
  isWithTimeWheelToo: true,
96
98
  isWithCalendarToo: true,
99
+ isWithDateInputs: true,
100
+ isWithDateInputsOnly: false,
101
+ isWithTimeInputs: true,
102
+ isWithTimeInputsOnly: false,
103
+ autoFocusMonthInput: false,
104
+ autoFocusHourInput: false,
105
+ autoFocusPrevMonthArrow: false,
106
+ autoFocusHourTimeWheel: false,
97
107
  shouldPreserveClearableSpace: false,
98
108
  latestInteractionRegion: '',
99
109
  setLatestInteractionRegion: mockedSetLatestInteractionRegion
@@ -1 +1 @@
1
- {"version":3,"file":"ControlledDateTimePickerCTX.js","sources":["../../../src/controlled-date-time-picker/ControlledDateTimePickerCTX.tsx"],"sourcesContent":["import { createContext, createRef } from 'react';\nimport { CONTROLLED_DATE_TIME_PICKER_TYPES } from './ControlledDateTimePickerTypes';\nimport type { ControlledDateTimePickerContextT, PropsWithDefaultsT, latestInteractionRegionT } from './index.d';\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nconst noop = (): void => {};\nconst defaultReturnFalse = (): boolean => false;\n// const mockedStringStateSetter: React.Dispatch<React.SetStateAction<string>> = noop;\nconst mockedSetLatestInteractionRegion: React.Dispatch<React.SetStateAction<latestInteractionRegionT>> = noop;\n\nexport const defaultProps: PropsWithDefaultsT = {\n type: CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.FULL,\n dateTime: '',\n date: '',\n time: '',\n onDateChange: noop,\n onMonthChange: noop,\n onDayChange: noop,\n onYearChange: noop,\n onTimeChange: noop,\n onHourChange: noop,\n onMinuteChange: noop,\n // onSecondsChange: noop,\n onMeridiemChange: noop,\n onDateTimeChange: noop,\n onPickerOpen: noop,\n onPickerClose: noop,\n getIsDisabledDay: defaultReturnFalse,\n getIsOutOfRangeDay: defaultReturnFalse,\n getIsStartRangeDay: defaultReturnFalse,\n getIsDayInRange: defaultReturnFalse,\n getIsEndRangeDay: defaultReturnFalse,\n getIsDisabledTime: defaultReturnFalse,\n emptyPickerStartingMonth: undefined,\n onCalendarOpenFocusedDay: undefined,\n minutesInterval: 1,\n isClearable: false,\n hasError: false,\n preventCloseOnSelection: false,\n pickerFooterMsg: undefined,\n};\nconst defaultContext = {\n props: defaultProps as PropsWithDefaultsT,\n monthInputRef: createRef<HTMLInputElement>(),\n dayInputRef: createRef<HTMLInputElement>(),\n yearInputRef: createRef<HTMLInputElement>(),\n hourInputRef: createRef<HTMLInputElement>(),\n minutesInputRef: createRef<HTMLInputElement>(),\n // secondsInputRef: createRef<HTMLInputElement>(),\n meridiemInputRef: createRef<HTMLInputElement>(),\n clearButtonRef: createRef<HTMLButtonElement>(),\n pickerButtonRef: createRef<HTMLButtonElement>(),\n prevYearBtnRef: createRef<HTMLButtonElement>(),\n prevMonthBtnRef: createRef<HTMLButtonElement>(),\n nextMonthBtnRef: createRef<HTMLButtonElement>(),\n nextYearBtnRef: createRef<HTMLButtonElement>(),\n calendarDaysWrapperRef: createRef<HTMLDivElement>(),\n prevHourBtnRef: createRef<HTMLButtonElement>(),\n currHourBtnRef: createRef<HTMLButtonElement>(),\n nextHourBtnRef: createRef<HTMLButtonElement>(),\n prevMinutesBtnRef: createRef<HTMLButtonElement>(),\n currMinutesBtnRef: createRef<HTMLButtonElement>(),\n nextMinutesBtnRef: createRef<HTMLButtonElement>(),\n prevMeridiemBtnRef: createRef<HTMLButtonElement>(),\n currMeridiemBtnRef: createRef<HTMLButtonElement>(),\n nextMeridiemBtnRef: createRef<HTMLButtonElement>(),\n dateStringFromProps: '',\n tempDateString: '__/__/____',\n // setDateString: mockedStringStateSetter,\n tempTimeString: '__:__:__ __',\n // setTimeString: mockedStringStateSetter,\n handleChangeComposedDateTimeString: noop,\n handleChangeComposedDateString: noop,\n handleChangeComposedTimeString: noop,\n handleClearAll: noop,\n hideDate: false,\n hideTime: false,\n hideDateTimePicker: false,\n hideDatePicker: true,\n hideTimePicker: true,\n withAnyInputs: true,\n withAnyPicker: true,\n withClearBtn: false,\n withAnyRightController: true,\n isDateSelector: false,\n isTimeSelector: false,\n isDateTimeSelector: true,\n isControllerOnly: false,\n isWithTimeWheelToo: true,\n isWithCalendarToo: true,\n shouldPreserveClearableSpace: false,\n latestInteractionRegion: '' as latestInteractionRegionT,\n setLatestInteractionRegion: mockedSetLatestInteractionRegion,\n};\n\n/** Context for cross component communication */\nexport const ControlledDateTimePickerContext = createContext<ControlledDateTimePickerContextT>(defaultContext);\n\nexport default ControlledDateTimePickerContext;\n"],"names":["noop","defaultReturnFalse","mockedSetLatestInteractionRegion","defaultProps","type","CONTROLLED_DATE_TIME_PICKER_TYPES","DATE_TIME","FULL","dateTime","date","time","onDateChange","onMonthChange","onDayChange","onYearChange","onTimeChange","onHourChange","onMinuteChange","onMeridiemChange","onDateTimeChange","onPickerOpen","onPickerClose","getIsDisabledDay","getIsOutOfRangeDay","getIsStartRangeDay","getIsDayInRange","getIsEndRangeDay","getIsDisabledTime","emptyPickerStartingMonth","undefined","onCalendarOpenFocusedDay","minutesInterval","isClearable","hasError","preventCloseOnSelection","pickerFooterMsg","defaultContext","props","monthInputRef","createRef","dayInputRef","yearInputRef","hourInputRef","minutesInputRef","meridiemInputRef","clearButtonRef","pickerButtonRef","prevYearBtnRef","prevMonthBtnRef","nextMonthBtnRef","nextYearBtnRef","calendarDaysWrapperRef","prevHourBtnRef","currHourBtnRef","nextHourBtnRef","prevMinutesBtnRef","currMinutesBtnRef","nextMinutesBtnRef","prevMeridiemBtnRef","currMeridiemBtnRef","nextMeridiemBtnRef","dateStringFromProps","tempDateString","tempTimeString","handleChangeComposedDateTimeString","handleChangeComposedDateString","handleChangeComposedTimeString","handleClearAll","hideDate","hideTime","hideDateTimePicker","hideDatePicker","hideTimePicker","withAnyInputs","withAnyPicker","withClearBtn","withAnyRightController","isDateSelector","isTimeSelector","isDateTimeSelector","isControllerOnly","isWithTimeWheelToo","isWithCalendarToo","shouldPreserveClearableSpace","latestInteractionRegion","setLatestInteractionRegion","ControlledDateTimePickerContext","createContext"],"mappings":"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"}
1
+ {"version":3,"file":"ControlledDateTimePickerCTX.js","sources":["../../../src/controlled-date-time-picker/ControlledDateTimePickerCTX.tsx"],"sourcesContent":["import { createContext, createRef } from 'react';\nimport { CONTROLLED_DATE_TIME_PICKER_TYPES } from './ControlledDateTimePickerTypes';\nimport type { ControlledDateTimePickerContextT, PropsWithDefaultsT, latestInteractionRegionT } from './index.d';\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nconst noop = (): void => {};\nconst defaultReturnFalse = (): boolean => false;\n// const mockedStringStateSetter: React.Dispatch<React.SetStateAction<string>> = noop;\nconst mockedSetLatestInteractionRegion: React.Dispatch<React.SetStateAction<latestInteractionRegionT>> = noop;\n\nexport const defaultProps: PropsWithDefaultsT = {\n // changing default type requires changing default booleans (hideDate, withAnyInputs, etc...) in the context too\n type: CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.FULL,\n dateTime: '',\n date: '',\n time: '',\n onDateChange: noop,\n onMonthChange: noop,\n onDayChange: noop,\n onYearChange: noop,\n onTimeChange: noop,\n onHourChange: noop,\n onMinuteChange: noop,\n // onSecondsChange: noop,\n onMeridiemChange: noop,\n onDateTimeChange: noop,\n onPickerOpen: noop,\n onPickerClose: noop,\n getIsDisabledDay: defaultReturnFalse,\n getIsOutOfRangeDay: defaultReturnFalse,\n getIsStartRangeDay: defaultReturnFalse,\n getIsDayInRange: defaultReturnFalse,\n getIsEndRangeDay: defaultReturnFalse,\n getIsDisabledTime: defaultReturnFalse,\n emptyPickerStartingMonth: undefined,\n onCalendarOpenFocusedDay: undefined,\n minutesInterval: 1,\n isClearable: false,\n hasError: false,\n autoFocus: false,\n preventCloseOnSelection: false,\n pickerFooterMsg: undefined,\n};\nconst defaultContext = {\n props: defaultProps as PropsWithDefaultsT,\n monthInputRef: createRef<HTMLInputElement>(),\n dayInputRef: createRef<HTMLInputElement>(),\n yearInputRef: createRef<HTMLInputElement>(),\n hourInputRef: createRef<HTMLInputElement>(),\n minutesInputRef: createRef<HTMLInputElement>(),\n // secondsInputRef: createRef<HTMLInputElement>(),\n meridiemInputRef: createRef<HTMLInputElement>(),\n clearButtonRef: createRef<HTMLButtonElement>(),\n pickerButtonRef: createRef<HTMLButtonElement>(),\n prevYearBtnRef: createRef<HTMLButtonElement>(),\n prevMonthBtnRef: createRef<HTMLButtonElement>(),\n nextMonthBtnRef: createRef<HTMLButtonElement>(),\n nextYearBtnRef: createRef<HTMLButtonElement>(),\n calendarDaysWrapperRef: createRef<HTMLDivElement>(),\n prevHourBtnRef: createRef<HTMLButtonElement>(),\n currHourBtnRef: createRef<HTMLButtonElement>(),\n nextHourBtnRef: createRef<HTMLButtonElement>(),\n prevMinutesBtnRef: createRef<HTMLButtonElement>(),\n currMinutesBtnRef: createRef<HTMLButtonElement>(),\n nextMinutesBtnRef: createRef<HTMLButtonElement>(),\n prevMeridiemBtnRef: createRef<HTMLButtonElement>(),\n currMeridiemBtnRef: createRef<HTMLButtonElement>(),\n nextMeridiemBtnRef: createRef<HTMLButtonElement>(),\n dateStringFromProps: '',\n tempDateString: '__/__/____',\n // setDateString: mockedStringStateSetter,\n tempTimeString: '__:__:__ __',\n // setTimeString: mockedStringStateSetter,\n handleChangeComposedDateTimeString: noop,\n handleChangeComposedDateString: noop,\n handleChangeComposedTimeString: noop,\n handleClearAll: noop,\n hideDate: false,\n hideTime: false,\n hideDateTimePicker: false,\n hideDatePicker: true,\n hideTimePicker: true,\n withAnyInputs: true,\n withAnyPicker: true,\n withClearBtn: false,\n withAnyRightController: true,\n isDateSelector: false,\n isTimeSelector: false,\n isDateTimeSelector: true,\n isControllerOnly: false,\n isWithTimeWheelToo: true,\n isWithCalendarToo: true,\n isWithDateInputs: true,\n isWithDateInputsOnly: false,\n isWithTimeInputs: true,\n isWithTimeInputsOnly: false,\n autoFocusMonthInput: false,\n autoFocusHourInput: false,\n autoFocusPrevMonthArrow: false,\n autoFocusHourTimeWheel: false,\n shouldPreserveClearableSpace: false,\n latestInteractionRegion: '' as latestInteractionRegionT,\n setLatestInteractionRegion: mockedSetLatestInteractionRegion,\n};\n\n/** Context for cross component communication */\nexport const ControlledDateTimePickerContext = createContext<ControlledDateTimePickerContextT>(defaultContext);\n\nexport default ControlledDateTimePickerContext;\n"],"names":["noop","defaultReturnFalse","mockedSetLatestInteractionRegion","defaultProps","type","CONTROLLED_DATE_TIME_PICKER_TYPES","DATE_TIME","FULL","dateTime","date","time","onDateChange","onMonthChange","onDayChange","onYearChange","onTimeChange","onHourChange","onMinuteChange","onMeridiemChange","onDateTimeChange","onPickerOpen","onPickerClose","getIsDisabledDay","getIsOutOfRangeDay","getIsStartRangeDay","getIsDayInRange","getIsEndRangeDay","getIsDisabledTime","emptyPickerStartingMonth","undefined","onCalendarOpenFocusedDay","minutesInterval","isClearable","hasError","autoFocus","preventCloseOnSelection","pickerFooterMsg","defaultContext","props","monthInputRef","createRef","dayInputRef","yearInputRef","hourInputRef","minutesInputRef","meridiemInputRef","clearButtonRef","pickerButtonRef","prevYearBtnRef","prevMonthBtnRef","nextMonthBtnRef","nextYearBtnRef","calendarDaysWrapperRef","prevHourBtnRef","currHourBtnRef","nextHourBtnRef","prevMinutesBtnRef","currMinutesBtnRef","nextMinutesBtnRef","prevMeridiemBtnRef","currMeridiemBtnRef","nextMeridiemBtnRef","dateStringFromProps","tempDateString","tempTimeString","handleChangeComposedDateTimeString","handleChangeComposedDateString","handleChangeComposedTimeString","handleClearAll","hideDate","hideTime","hideDateTimePicker","hideDatePicker","hideTimePicker","withAnyInputs","withAnyPicker","withClearBtn","withAnyRightController","isDateSelector","isTimeSelector","isDateTimeSelector","isControllerOnly","isWithTimeWheelToo","isWithCalendarToo","isWithDateInputs","isWithDateInputsOnly","isWithTimeInputs","isWithTimeInputsOnly","autoFocusMonthInput","autoFocusHourInput","autoFocusPrevMonthArrow","autoFocusHourTimeWheel","shouldPreserveClearableSpace","latestInteractionRegion","setLatestInteractionRegion","ControlledDateTimePickerContext","createContext"],"mappings":"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"}
@@ -62,6 +62,7 @@ var useControlledDateTimePicker = function useControlledDateTimePicker(props) {
62
62
  getIsOutOfRangeDay = propsWithDefaults.getIsOutOfRangeDay,
63
63
  getIsDisabledTime = propsWithDefaults.getIsDisabledTime,
64
64
  isClearable = propsWithDefaults.isClearable,
65
+ autoFocus = propsWithDefaults.autoFocus,
65
66
  appOnDateChange = propsWithDefaults.onDateChange,
66
67
  appOnDateTimeChange = propsWithDefaults.onDateTimeChange,
67
68
  appOnTimeChange = propsWithDefaults.onTimeChange,
@@ -101,19 +102,21 @@ var useControlledDateTimePicker = function useControlledDateTimePicker(props) {
101
102
  var isDateSelector = type === controlledDateTimePicker_ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.DATE.FULL || type === controlledDateTimePicker_ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.DATE.INPUTS || type === controlledDateTimePicker_ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.DATE.PICKER || type === controlledDateTimePicker_ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.DATE.CONTROLLER_ONLY;
102
103
  var isTimeSelector = type === controlledDateTimePicker_ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.TIME.FULL || type === controlledDateTimePicker_ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.TIME.INPUTS || type === controlledDateTimePicker_ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.TIME.PICKER || type === controlledDateTimePicker_ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.TIME.CONTROLLER_ONLY;
103
104
  var isDateTimeSelector = type === controlledDateTimePicker_ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.FULL || type === controlledDateTimePicker_ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.INPUTS || type === controlledDateTimePicker_ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.PICKER || type === controlledDateTimePicker_ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.CONTROLLER_ONLY;
104
- var isControllerOnly = React.useMemo(function () {
105
- return type === controlledDateTimePicker_ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.CONTROLLER_ONLY || type === controlledDateTimePicker_ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.DATE.CONTROLLER_ONLY || type === controlledDateTimePicker_ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.TIME.CONTROLLER_ONLY;
106
- }, [type]);
107
- var isWithTimeWheelToo = React.useMemo(function () {
108
- return type === controlledDateTimePicker_ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.FULL || type === controlledDateTimePicker_ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.PICKER || type === controlledDateTimePicker_ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.CONTROLLER_ONLY;
109
- }, [type]);
110
- var isWithCalendarToo = React.useMemo(function () {
111
- return type === controlledDateTimePicker_ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.FULL || type === controlledDateTimePicker_ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.PICKER || type === controlledDateTimePicker_ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.CONTROLLER_ONLY;
112
- }, [type]);
105
+ var isControllerOnly = type === controlledDateTimePicker_ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.CONTROLLER_ONLY || type === controlledDateTimePicker_ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.DATE.CONTROLLER_ONLY || type === controlledDateTimePicker_ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.TIME.CONTROLLER_ONLY;
106
+ var isWithTimeWheelToo = type === controlledDateTimePicker_ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.FULL || type === controlledDateTimePicker_ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.PICKER || type === controlledDateTimePicker_ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.CONTROLLER_ONLY;
107
+ var isWithCalendarToo = type === controlledDateTimePicker_ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.FULL || type === controlledDateTimePicker_ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.PICKER || type === controlledDateTimePicker_ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.CONTROLLER_ONLY;
113
108
  var withAnyInputs = !hideDate || !hideTime;
114
109
  var withAnyPicker = !hideDateTimePicker || !hideTimePicker || !hideDatePicker;
115
110
  var withClearBtn = isClearable && withAnyInputs && (dateStringFromProps !== '__/__/____' && dateStringFromProps !== '' || timeStringFromProps !== '__:__ __' && timeStringFromProps !== ''); // or time is not "empty-ish"
116
111
 
112
+ var isWithDateInputs = withAnyInputs && (isDateTimeSelector || isDateSelector);
113
+ var isWithDateInputsOnly = withAnyInputs && isDateSelector;
114
+ var isWithTimeInputs = withAnyInputs && (isDateTimeSelector || isTimeSelector);
115
+ var isWithTimeInputsOnly = withAnyInputs && isTimeSelector;
116
+ var autoFocusMonthInput = isWithDateInputs && autoFocus;
117
+ var autoFocusHourInput = isWithTimeInputsOnly && autoFocus;
118
+ var autoFocusPrevMonthArrow = isControllerOnly && autoFocus;
119
+ var autoFocusHourTimeWheel = isControllerOnly && isTimeSelector && autoFocus;
117
120
  var shouldPreserveClearableSpace = isClearable && withAnyInputs;
118
121
  var withAnyRightController = withAnyPicker || withClearBtn || shouldPreserveClearableSpace;
119
122
 
@@ -198,22 +201,29 @@ var useControlledDateTimePicker = function useControlledDateTimePicker(props) {
198
201
 
199
202
  var datePartsChangesMetainfo = _objectSpread({}, metaInfo);
200
203
 
201
- delete datePartsChangesMetainfo.newDateTimeString;
202
- delete datePartsChangesMetainfo.newTimeString;
203
-
204
204
  var timePartsChangesMetainfo = _objectSpread({}, metaInfo);
205
205
 
206
- delete timePartsChangesMetainfo.newDateTimeString;
207
- delete timePartsChangesMetainfo.newDateString;
208
- handleChangeComposedDateTimeString('__/__/____', '__:__ __', metaInfo);
209
- appOnMonthChange('', e, datePartsChangesMetainfo);
210
- appOnDayChange('', e, datePartsChangesMetainfo);
211
- appOnYearChange('', e, datePartsChangesMetainfo);
212
- appOnHourChange('', e, timePartsChangesMetainfo);
213
- appOnMinuteChange('', e, timePartsChangesMetainfo);
214
- appOnMeridiemChange('', e, timePartsChangesMetainfo);
206
+ if (isDateSelector || isDateTimeSelector) {
207
+ delete datePartsChangesMetainfo.newDateTimeString;
208
+ delete datePartsChangesMetainfo.newTimeString;
209
+ appOnMonthChange('', e, datePartsChangesMetainfo);
210
+ appOnDayChange('', e, datePartsChangesMetainfo);
211
+ appOnYearChange('', e, datePartsChangesMetainfo);
212
+ }
213
+
214
+ if (isTimeSelector || isDateTimeSelector) {
215
+ delete timePartsChangesMetainfo.newDateTimeString;
216
+ delete timePartsChangesMetainfo.newDateString;
217
+ appOnHourChange('', e, timePartsChangesMetainfo);
218
+ appOnMinuteChange('', e, timePartsChangesMetainfo);
219
+ appOnMeridiemChange('', e, timePartsChangesMetainfo);
220
+ }
221
+
222
+ if (isDateTimeSelector) handleChangeComposedDateTimeString('__/__/____', '__:__ __', metaInfo);
223
+ if (isDateSelector) handleChangeComposedDateString('__/__/____', datePartsChangesMetainfo);
224
+ if (isTimeSelector) handleChangeComposedTimeString('__:__ __', timePartsChangesMetainfo);
215
225
  setLatestInteractionRegion('clear-btn');
216
- }, [appOnDayChange, appOnHourChange, appOnMeridiemChange, appOnMinuteChange, appOnMonthChange, appOnYearChange, handleChangeComposedDateTimeString, setLatestInteractionRegion]);
226
+ }, [appOnDayChange, appOnHourChange, appOnMeridiemChange, appOnMinuteChange, appOnMonthChange, appOnYearChange, handleChangeComposedDateString, handleChangeComposedDateTimeString, handleChangeComposedTimeString, isDateSelector, isDateTimeSelector, isTimeSelector]);
217
227
  var ctx = React__default['default'].useMemo(function () {
218
228
  return {
219
229
  props: propsWithDefaults,
@@ -260,6 +270,14 @@ var useControlledDateTimePicker = function useControlledDateTimePicker(props) {
260
270
  isControllerOnly: isControllerOnly,
261
271
  isWithTimeWheelToo: isWithTimeWheelToo,
262
272
  isWithCalendarToo: isWithCalendarToo,
273
+ isWithDateInputs: isWithDateInputs,
274
+ isWithDateInputsOnly: isWithDateInputsOnly,
275
+ isWithTimeInputs: isWithTimeInputs,
276
+ isWithTimeInputsOnly: isWithTimeInputsOnly,
277
+ autoFocusMonthInput: autoFocusMonthInput,
278
+ autoFocusHourInput: autoFocusHourInput,
279
+ autoFocusPrevMonthArrow: autoFocusPrevMonthArrow,
280
+ autoFocusHourTimeWheel: autoFocusHourTimeWheel,
263
281
  latestInteractionRegion: latestInteractionRegion,
264
282
  setLatestInteractionRegion: setLatestInteractionRegion,
265
283
  withAnyInputs: withAnyInputs,
@@ -268,7 +286,7 @@ var useControlledDateTimePicker = function useControlledDateTimePicker(props) {
268
286
  withAnyRightController: withAnyRightController,
269
287
  shouldPreserveClearableSpace: shouldPreserveClearableSpace
270
288
  };
271
- }, [propsWithDefaults, dateStringFromProps, tempDateString, tempTimeString, handleChangeComposedDateTimeString, handleChangeComposedDateString, handleChangeComposedTimeString, handleClearAll, hideDate, hideTime, hideDateTimePicker, hideDatePicker, hideTimePicker, isDateSelector, isTimeSelector, isDateTimeSelector, isControllerOnly, isWithTimeWheelToo, isWithCalendarToo, latestInteractionRegion, withAnyInputs, withAnyPicker, withClearBtn, withAnyRightController, shouldPreserveClearableSpace] // refs are mutable so we don't need to listen to them
289
+ }, [propsWithDefaults, dateStringFromProps, tempDateString, tempTimeString, handleChangeComposedDateTimeString, handleChangeComposedDateString, handleChangeComposedTimeString, handleClearAll, hideDate, hideTime, hideDateTimePicker, hideDatePicker, hideTimePicker, isDateSelector, isTimeSelector, isDateTimeSelector, isControllerOnly, isWithTimeWheelToo, isWithCalendarToo, isWithDateInputs, isWithDateInputsOnly, isWithTimeInputs, isWithTimeInputsOnly, autoFocusMonthInput, autoFocusHourInput, autoFocusPrevMonthArrow, autoFocusHourTimeWheel, latestInteractionRegion, withAnyInputs, withAnyPicker, withClearBtn, withAnyRightController, shouldPreserveClearableSpace] // refs are mutable so we don't need to listen to them
272
290
  );
273
291
  return ctx;
274
292
  };
@@ -1 +1 @@
1
- {"version":3,"file":"useControlledDateTimePicker.js","sources":["../../../../src/controlled-date-time-picker/config/useControlledDateTimePicker.tsx"],"sourcesContent":["/* eslint-disable no-nested-ternary */\n/* eslint-disable max-lines */\n/* eslint-disable import/prefer-default-export */\n/* eslint-disable complexity */\n/* eslint-disable max-statements */\nimport React, { useRef, useState, useCallback, useMemo } from 'react';\nimport { useGetDatePickerWithDefaultsProps } from './useGetPropsWithDefault';\nimport { CONTROLLED_DATE_TIME_PICKER_TYPES } from '../ControlledDateTimePickerTypes';\nimport { useValidateProps } from './useValidateProps';\nimport { getValidationDateStringMetaInfo } from '../utils/dateHelpers';\nimport { getValidationTimeStringMetaInfo } from '../utils/timeHelpers';\nimport {\n isEmptyDateStringMask,\n isEmptyTimeStringMask,\n isEmptyDateTimeStringMask,\n dateTimeToTime,\n dateTimeToDate,\n} from '../utils/stringHelpers';\nimport type {\n DateTimePickerPropsT,\n ControlledDateTimePickerContextT,\n latestInteractionRegionT,\n onClearClickT,\n} from '../index.d';\n\nexport const useControlledDateTimePicker = (props: Partial<DateTimePickerPropsT>): ControlledDateTimePickerContextT => {\n // if we detect wrong props configuration we throw meaningful errors\n useValidateProps(props);\n\n // refs are used for \"auto-advance\" feature\n const monthInputRef = useRef<HTMLInputElement>();\n const dayInputRef = useRef<HTMLInputElement>();\n const yearInputRef = useRef<HTMLInputElement>();\n const hourInputRef = useRef<HTMLInputElement>();\n const minutesInputRef = useRef<HTMLInputElement>();\n // const secondsInputRef = useRef<HTMLInputElement>();\n const meridiemInputRef = useRef<HTMLInputElement>();\n const clearButtonRef = useRef<HTMLButtonElement>();\n const pickerButtonRef = useRef<HTMLButtonElement>();\n\n const prevYearBtnRef = useRef<HTMLButtonElement>();\n const prevMonthBtnRef = useRef<HTMLButtonElement>();\n const nextMonthBtnRef = useRef<HTMLButtonElement>();\n const nextYearBtnRef = useRef<HTMLButtonElement>();\n const calendarDaysWrapperRef = useRef<HTMLDivElement>();\n\n const prevHourBtnRef = useRef<HTMLButtonElement>();\n const currHourBtnRef = useRef<HTMLButtonElement>();\n const nextHourBtnRef = useRef<HTMLButtonElement>();\n const prevMinutesBtnRef = useRef<HTMLButtonElement>();\n const currMinutesBtnRef = useRef<HTMLButtonElement>();\n const nextMinutesBtnRef = useRef<HTMLButtonElement>();\n // const prevSecondsBtnRef = useRef<HTMLButtonElement>();\n // const currSecondsBtnRef = useRef<HTMLButtonElement>();\n // const nextSecondsBtnRef = useRef<HTMLButtonElement>();\n const prevMeridiemBtnRef = useRef<HTMLButtonElement>();\n const currMeridiemBtnRef = useRef<HTMLButtonElement>();\n const nextMeridiemBtnRef = useRef<HTMLButtonElement>();\n\n const propsWithDefaults = useGetDatePickerWithDefaultsProps(props);\n const {\n type,\n getIsDisabledDay,\n getIsOutOfRangeDay,\n getIsDisabledTime,\n isClearable,\n onDateChange: appOnDateChange,\n onDateTimeChange: appOnDateTimeChange,\n onTimeChange: appOnTimeChange,\n onMonthChange: appOnMonthChange,\n onDayChange: appOnDayChange,\n onYearChange: appOnYearChange,\n onHourChange: appOnHourChange,\n onMinuteChange: appOnMinuteChange,\n onMeridiemChange: appOnMeridiemChange,\n } = propsWithDefaults;\n\n const dateStringFromProps = useMemo(\n () =>\n propsWithDefaults.dateTime && propsWithDefaults.dateTime !== ''\n ? dateTimeToDate(propsWithDefaults.dateTime)\n : propsWithDefaults.date && propsWithDefaults.date !== ''\n ? propsWithDefaults.date\n : '__/__/____',\n [propsWithDefaults.date, propsWithDefaults.dateTime],\n );\n // don't use tempDateString to trigger useEffect for onDateChange\n // that is an anti-pattern and leads to a lot of issue\n // if you don't believe me, check date-time-picker v1 which is doing it\n const [tempDateString, setTempDateString] = useState(dateStringFromProps);\n\n const timeStringFromProps = useMemo(\n () =>\n propsWithDefaults.dateTime && propsWithDefaults.dateTime !== ''\n ? dateTimeToTime(propsWithDefaults.dateTime)\n : propsWithDefaults.time && propsWithDefaults.time !== ''\n ? propsWithDefaults.time\n : '__:__ __',\n [propsWithDefaults.time, propsWithDefaults.dateTime],\n );\n // don't use tempTimeString to trigger useEffect for onTimeChange\n // that is an anti-pattern and leads to a lot of issue\n // if you don't believe me, check date-time-picker v1 which is doing it\n const [tempTimeString, setTimeString] = useState(timeStringFromProps);\n\n const hideDate =\n type !== CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.FULL &&\n type !== CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.INPUTS &&\n type !== CONTROLLED_DATE_TIME_PICKER_TYPES.DATE.FULL &&\n type !== CONTROLLED_DATE_TIME_PICKER_TYPES.DATE.INPUTS;\n const hideTime =\n type !== CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.FULL &&\n type !== CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.INPUTS &&\n type !== CONTROLLED_DATE_TIME_PICKER_TYPES.TIME.FULL &&\n type !== CONTROLLED_DATE_TIME_PICKER_TYPES.TIME.INPUTS;\n const hideDateTimePicker =\n type !== CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.FULL &&\n type !== CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.PICKER &&\n type !== CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.CONTROLLER_ONLY;\n const hideDatePicker =\n type !== CONTROLLED_DATE_TIME_PICKER_TYPES.DATE.FULL &&\n type !== CONTROLLED_DATE_TIME_PICKER_TYPES.DATE.PICKER &&\n type !== CONTROLLED_DATE_TIME_PICKER_TYPES.DATE.CONTROLLER_ONLY;\n const hideTimePicker =\n type !== CONTROLLED_DATE_TIME_PICKER_TYPES.TIME.FULL &&\n type !== CONTROLLED_DATE_TIME_PICKER_TYPES.TIME.PICKER &&\n type !== CONTROLLED_DATE_TIME_PICKER_TYPES.TIME.CONTROLLER_ONLY;\n const isDateSelector =\n type === CONTROLLED_DATE_TIME_PICKER_TYPES.DATE.FULL ||\n type === CONTROLLED_DATE_TIME_PICKER_TYPES.DATE.INPUTS ||\n type === CONTROLLED_DATE_TIME_PICKER_TYPES.DATE.PICKER ||\n type === CONTROLLED_DATE_TIME_PICKER_TYPES.DATE.CONTROLLER_ONLY;\n const isTimeSelector =\n type === CONTROLLED_DATE_TIME_PICKER_TYPES.TIME.FULL ||\n type === CONTROLLED_DATE_TIME_PICKER_TYPES.TIME.INPUTS ||\n type === CONTROLLED_DATE_TIME_PICKER_TYPES.TIME.PICKER ||\n type === CONTROLLED_DATE_TIME_PICKER_TYPES.TIME.CONTROLLER_ONLY;\n const isDateTimeSelector =\n type === CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.FULL ||\n type === CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.INPUTS ||\n type === CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.PICKER ||\n type === CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.CONTROLLER_ONLY;\n const isControllerOnly = useMemo(\n () =>\n type === CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.CONTROLLER_ONLY ||\n type === CONTROLLED_DATE_TIME_PICKER_TYPES.DATE.CONTROLLER_ONLY ||\n type === CONTROLLED_DATE_TIME_PICKER_TYPES.TIME.CONTROLLER_ONLY,\n [type],\n );\n const isWithTimeWheelToo = useMemo(\n () =>\n type === CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.FULL ||\n type === CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.PICKER ||\n type === CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.CONTROLLER_ONLY,\n [type],\n );\n\n const isWithCalendarToo = useMemo(\n () =>\n type === CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.FULL ||\n type === CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.PICKER ||\n type === CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.CONTROLLER_ONLY,\n [type],\n );\n\n const withAnyInputs = !hideDate || !hideTime;\n const withAnyPicker = !hideDateTimePicker || !hideTimePicker || !hideDatePicker;\n const withClearBtn =\n isClearable &&\n withAnyInputs &&\n ((dateStringFromProps !== '__/__/____' && dateStringFromProps !== '') || // date is not \"empty-ish\"\n (timeStringFromProps !== '__:__ __' && timeStringFromProps !== '')); // or time is not \"empty-ish\"\n\n const shouldPreserveClearableSpace = isClearable && withAnyInputs;\n\n const withAnyRightController = withAnyPicker || withClearBtn || shouldPreserveClearableSpace;\n\n const [latestInteractionRegion, setLatestInteractionRegion] = useState<latestInteractionRegionT>('');\n\n const getDateMetaInfo = useCallback(\n (newDateString = null, metaInfo = {}) => {\n const finalDateString = newDateString || tempDateString;\n return {\n ...metaInfo,\n ...getValidationDateStringMetaInfo(finalDateString, getIsOutOfRangeDay, getIsDisabledDay),\n };\n },\n [tempDateString, getIsDisabledDay, getIsOutOfRangeDay],\n );\n const getTimeMetaInfo = useCallback(\n (newTimeString = null, metaInfo = {}) => {\n const finalTimeString = newTimeString || tempTimeString;\n return {\n ...metaInfo,\n ...getValidationTimeStringMetaInfo(finalTimeString, getIsDisabledTime),\n };\n },\n [tempTimeString, getIsDisabledTime],\n );\n\n const handleChangeComposedDateTimeString = useCallback(\n (newDateString, newTimeString, metaInfo) => {\n const appDateString = isEmptyDateStringMask(newDateString) ? '' : newDateString;\n const appTimeString = isEmptyTimeStringMask(newTimeString) ? '' : newTimeString;\n appOnDateChange(appDateString, metaInfo); // don't do this on useEffect to avoid complete chaos\n setTempDateString(newDateString);\n\n appOnTimeChange(appTimeString, metaInfo); // don't do this on useEffect to avoid complete chaos\n setTimeString(newTimeString);\n\n const newDateTimeString = `${newDateString} ${newTimeString}`;\n const newMetaInfo = {\n ...getTimeMetaInfo(newTimeString, metaInfo),\n ...getDateMetaInfo(newDateString, metaInfo),\n newDateString,\n newTimeString,\n newDateTimeString,\n };\n\n const appDateTimeString = isEmptyDateTimeStringMask(newDateTimeString) ? '' : newDateTimeString;\n appOnDateTimeChange(appDateTimeString, newMetaInfo); // don't do this on useEffect to avoid complete chaos\n },\n [appOnDateChange, appOnTimeChange, getTimeMetaInfo, getDateMetaInfo, appOnDateTimeChange],\n );\n const handleChangeComposedDateString = useCallback(\n (newDateString, metaInfo) => {\n // if we receive an \"empty\" mask, we comunicate empty string to the app\n const appDateString = isEmptyDateStringMask(newDateString) ? '' : newDateString;\n appOnDateChange(appDateString, metaInfo); // don't do this on useEffect to avoid complete chaos\n setTempDateString(newDateString);\n const newDateTimeString = `${newDateString} ${tempTimeString}`;\n const newMetaInfo = {\n ...getTimeMetaInfo(tempTimeString, metaInfo),\n ...getDateMetaInfo(newDateString, metaInfo),\n newDateString,\n newTimeString: tempTimeString,\n newDateTimeString,\n };\n\n const appDateTimeString = isEmptyDateTimeStringMask(newDateTimeString) ? '' : newDateTimeString;\n appOnDateTimeChange(appDateTimeString, newMetaInfo); // don't do this on useEffect to avoid complete chaos\n },\n [appOnDateChange, tempTimeString, getTimeMetaInfo, getDateMetaInfo, appOnDateTimeChange],\n );\n const handleChangeComposedTimeString = useCallback(\n (newTimeString, metaInfo) => {\n const appTimeString = isEmptyTimeStringMask(newTimeString) ? '' : newTimeString;\n appOnTimeChange(appTimeString, metaInfo); // don't do this on useEffect to avoid complete chaos\n\n setTimeString(newTimeString);\n const newDateTimeString = `${tempDateString} ${newTimeString}`;\n const newMetaInfo = {\n ...getTimeMetaInfo(newTimeString, metaInfo),\n ...getDateMetaInfo(tempDateString, metaInfo),\n newDateTimeString,\n newDateString: tempDateString,\n newTimeString,\n };\n\n const appDateTimeString = isEmptyDateTimeStringMask(newDateTimeString) ? '' : newDateTimeString;\n appOnDateTimeChange(appDateTimeString, newMetaInfo); // don't do this on useEffect to avoid complete chaos\n },\n [appOnTimeChange, tempDateString, getTimeMetaInfo, getDateMetaInfo, appOnDateTimeChange],\n );\n\n const handleClearAll: onClearClickT = useCallback(\n (e) => {\n const metaInfo = {\n isAutomaticFillTrigger: false,\n isClearButtonAction: true,\n newDateString: '',\n newTimeString: '',\n newDateTimeString: '',\n };\n const datePartsChangesMetainfo = { ...metaInfo };\n delete datePartsChangesMetainfo.newDateTimeString;\n delete datePartsChangesMetainfo.newTimeString;\n const timePartsChangesMetainfo = { ...metaInfo };\n delete timePartsChangesMetainfo.newDateTimeString;\n delete timePartsChangesMetainfo.newDateString;\n handleChangeComposedDateTimeString('__/__/____', '__:__ __', metaInfo);\n\n appOnMonthChange('', e, datePartsChangesMetainfo);\n appOnDayChange('', e, datePartsChangesMetainfo);\n appOnYearChange('', e, datePartsChangesMetainfo);\n\n appOnHourChange('', e, timePartsChangesMetainfo);\n appOnMinuteChange('', e, timePartsChangesMetainfo);\n appOnMeridiemChange('', e, timePartsChangesMetainfo);\n\n setLatestInteractionRegion('clear-btn');\n },\n [\n appOnDayChange,\n appOnHourChange,\n appOnMeridiemChange,\n appOnMinuteChange,\n appOnMonthChange,\n appOnYearChange,\n handleChangeComposedDateTimeString,\n setLatestInteractionRegion,\n ],\n );\n\n const ctx = React.useMemo(\n () => ({\n props: propsWithDefaults,\n monthInputRef,\n dayInputRef,\n yearInputRef,\n hourInputRef,\n minutesInputRef,\n // secondsInputRef,\n meridiemInputRef,\n clearButtonRef,\n pickerButtonRef,\n prevYearBtnRef,\n prevMonthBtnRef,\n nextMonthBtnRef,\n nextYearBtnRef,\n calendarDaysWrapperRef,\n prevHourBtnRef,\n currHourBtnRef,\n nextHourBtnRef,\n prevMinutesBtnRef,\n currMinutesBtnRef,\n nextMinutesBtnRef,\n prevMeridiemBtnRef,\n currMeridiemBtnRef,\n nextMeridiemBtnRef,\n dateStringFromProps,\n tempDateString,\n setTempDateString,\n tempTimeString,\n setTimeString,\n handleChangeComposedDateTimeString,\n handleChangeComposedDateString,\n handleChangeComposedTimeString,\n handleClearAll,\n hideDate,\n hideTime,\n hideDateTimePicker,\n hideDatePicker,\n hideTimePicker,\n isDateSelector,\n isTimeSelector,\n isDateTimeSelector,\n isControllerOnly,\n isWithTimeWheelToo,\n isWithCalendarToo,\n latestInteractionRegion,\n setLatestInteractionRegion,\n withAnyInputs,\n withAnyPicker,\n withClearBtn,\n withAnyRightController,\n shouldPreserveClearableSpace,\n }),\n [\n propsWithDefaults,\n dateStringFromProps,\n tempDateString,\n tempTimeString,\n handleChangeComposedDateTimeString,\n handleChangeComposedDateString,\n handleChangeComposedTimeString,\n handleClearAll,\n hideDate,\n hideTime,\n hideDateTimePicker,\n hideDatePicker,\n hideTimePicker,\n isDateSelector,\n isTimeSelector,\n isDateTimeSelector,\n isControllerOnly,\n isWithTimeWheelToo,\n isWithCalendarToo,\n latestInteractionRegion,\n withAnyInputs,\n withAnyPicker,\n withClearBtn,\n withAnyRightController,\n shouldPreserveClearableSpace,\n ], // refs are mutable so we don't need to listen to them\n );\n\n return ctx;\n};\n"],"names":["useControlledDateTimePicker","props","useValidateProps","monthInputRef","useRef","dayInputRef","yearInputRef","hourInputRef","minutesInputRef","meridiemInputRef","clearButtonRef","pickerButtonRef","prevYearBtnRef","prevMonthBtnRef","nextMonthBtnRef","nextYearBtnRef","calendarDaysWrapperRef","prevHourBtnRef","currHourBtnRef","nextHourBtnRef","prevMinutesBtnRef","currMinutesBtnRef","nextMinutesBtnRef","prevMeridiemBtnRef","currMeridiemBtnRef","nextMeridiemBtnRef","propsWithDefaults","useGetDatePickerWithDefaultsProps","type","getIsDisabledDay","getIsOutOfRangeDay","getIsDisabledTime","isClearable","appOnDateChange","onDateChange","appOnDateTimeChange","onDateTimeChange","appOnTimeChange","onTimeChange","appOnMonthChange","onMonthChange","appOnDayChange","onDayChange","appOnYearChange","onYearChange","appOnHourChange","onHourChange","appOnMinuteChange","onMinuteChange","appOnMeridiemChange","onMeridiemChange","dateStringFromProps","useMemo","dateTime","dateTimeToDate","date","useState","tempDateString","setTempDateString","timeStringFromProps","dateTimeToTime","time","tempTimeString","setTimeString","hideDate","CONTROLLED_DATE_TIME_PICKER_TYPES","DATE_TIME","FULL","INPUTS","DATE","hideTime","TIME","hideDateTimePicker","PICKER","CONTROLLER_ONLY","hideDatePicker","hideTimePicker","isDateSelector","isTimeSelector","isDateTimeSelector","isControllerOnly","isWithTimeWheelToo","isWithCalendarToo","withAnyInputs","withAnyPicker","withClearBtn","shouldPreserveClearableSpace","withAnyRightController","latestInteractionRegion","setLatestInteractionRegion","getDateMetaInfo","useCallback","newDateString","metaInfo","finalDateString","getValidationDateStringMetaInfo","getTimeMetaInfo","newTimeString","finalTimeString","getValidationTimeStringMetaInfo","handleChangeComposedDateTimeString","appDateString","isEmptyDateStringMask","appTimeString","isEmptyTimeStringMask","newDateTimeString","newMetaInfo","appDateTimeString","isEmptyDateTimeStringMask","handleChangeComposedDateString","handleChangeComposedTimeString","handleClearAll","e","isAutomaticFillTrigger","isClearButtonAction","datePartsChangesMetainfo","timePartsChangesMetainfo","ctx","React"],"mappings":"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"}
1
+ {"version":3,"file":"useControlledDateTimePicker.js","sources":["../../../../src/controlled-date-time-picker/config/useControlledDateTimePicker.tsx"],"sourcesContent":["/* eslint-disable no-nested-ternary */\n/* eslint-disable max-lines */\n/* eslint-disable import/prefer-default-export */\n/* eslint-disable complexity */\n/* eslint-disable max-statements */\nimport React, { useRef, useState, useCallback, useMemo } from 'react';\nimport { useGetDatePickerWithDefaultsProps } from './useGetPropsWithDefault';\nimport { CONTROLLED_DATE_TIME_PICKER_TYPES } from '../ControlledDateTimePickerTypes';\nimport { useValidateProps } from './useValidateProps';\nimport { getValidationDateStringMetaInfo } from '../utils/dateHelpers';\nimport { getValidationTimeStringMetaInfo } from '../utils/timeHelpers';\nimport {\n isEmptyDateStringMask,\n isEmptyTimeStringMask,\n isEmptyDateTimeStringMask,\n dateTimeToTime,\n dateTimeToDate,\n} from '../utils/stringHelpers';\nimport type {\n DateTimePickerPropsT,\n ControlledDateTimePickerContextT,\n latestInteractionRegionT,\n onClearClickT,\n} from '../index.d';\n\nexport const useControlledDateTimePicker = (props: Partial<DateTimePickerPropsT>): ControlledDateTimePickerContextT => {\n // if we detect wrong props configuration we throw meaningful errors\n useValidateProps(props);\n\n // refs are used for \"auto-advance\" feature\n const monthInputRef = useRef<HTMLInputElement>();\n const dayInputRef = useRef<HTMLInputElement>();\n const yearInputRef = useRef<HTMLInputElement>();\n const hourInputRef = useRef<HTMLInputElement>();\n const minutesInputRef = useRef<HTMLInputElement>();\n // const secondsInputRef = useRef<HTMLInputElement>();\n const meridiemInputRef = useRef<HTMLInputElement>();\n const clearButtonRef = useRef<HTMLButtonElement>();\n const pickerButtonRef = useRef<HTMLButtonElement>();\n\n const prevYearBtnRef = useRef<HTMLButtonElement>();\n const prevMonthBtnRef = useRef<HTMLButtonElement>();\n const nextMonthBtnRef = useRef<HTMLButtonElement>();\n const nextYearBtnRef = useRef<HTMLButtonElement>();\n const calendarDaysWrapperRef = useRef<HTMLDivElement>();\n\n const prevHourBtnRef = useRef<HTMLButtonElement>();\n const currHourBtnRef = useRef<HTMLButtonElement>();\n const nextHourBtnRef = useRef<HTMLButtonElement>();\n const prevMinutesBtnRef = useRef<HTMLButtonElement>();\n const currMinutesBtnRef = useRef<HTMLButtonElement>();\n const nextMinutesBtnRef = useRef<HTMLButtonElement>();\n // const prevSecondsBtnRef = useRef<HTMLButtonElement>();\n // const currSecondsBtnRef = useRef<HTMLButtonElement>();\n // const nextSecondsBtnRef = useRef<HTMLButtonElement>();\n const prevMeridiemBtnRef = useRef<HTMLButtonElement>();\n const currMeridiemBtnRef = useRef<HTMLButtonElement>();\n const nextMeridiemBtnRef = useRef<HTMLButtonElement>();\n\n const propsWithDefaults = useGetDatePickerWithDefaultsProps(props);\n const {\n type,\n getIsDisabledDay,\n getIsOutOfRangeDay,\n getIsDisabledTime,\n isClearable,\n autoFocus,\n onDateChange: appOnDateChange,\n onDateTimeChange: appOnDateTimeChange,\n onTimeChange: appOnTimeChange,\n onMonthChange: appOnMonthChange,\n onDayChange: appOnDayChange,\n onYearChange: appOnYearChange,\n onHourChange: appOnHourChange,\n onMinuteChange: appOnMinuteChange,\n onMeridiemChange: appOnMeridiemChange,\n } = propsWithDefaults;\n\n const dateStringFromProps = useMemo(\n () =>\n propsWithDefaults.dateTime && propsWithDefaults.dateTime !== ''\n ? dateTimeToDate(propsWithDefaults.dateTime)\n : propsWithDefaults.date && propsWithDefaults.date !== ''\n ? propsWithDefaults.date\n : '__/__/____',\n [propsWithDefaults.date, propsWithDefaults.dateTime],\n );\n // don't use tempDateString to trigger useEffect for onDateChange\n // that is an anti-pattern and leads to a lot of issue\n // if you don't believe me, check date-time-picker v1 which is doing it\n const [tempDateString, setTempDateString] = useState(dateStringFromProps);\n\n const timeStringFromProps = useMemo(\n () =>\n propsWithDefaults.dateTime && propsWithDefaults.dateTime !== ''\n ? dateTimeToTime(propsWithDefaults.dateTime)\n : propsWithDefaults.time && propsWithDefaults.time !== ''\n ? propsWithDefaults.time\n : '__:__ __',\n [propsWithDefaults.time, propsWithDefaults.dateTime],\n );\n // don't use tempTimeString to trigger useEffect for onTimeChange\n // that is an anti-pattern and leads to a lot of issue\n // if you don't believe me, check date-time-picker v1 which is doing it\n const [tempTimeString, setTimeString] = useState(timeStringFromProps);\n\n const hideDate =\n type !== CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.FULL &&\n type !== CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.INPUTS &&\n type !== CONTROLLED_DATE_TIME_PICKER_TYPES.DATE.FULL &&\n type !== CONTROLLED_DATE_TIME_PICKER_TYPES.DATE.INPUTS;\n const hideTime =\n type !== CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.FULL &&\n type !== CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.INPUTS &&\n type !== CONTROLLED_DATE_TIME_PICKER_TYPES.TIME.FULL &&\n type !== CONTROLLED_DATE_TIME_PICKER_TYPES.TIME.INPUTS;\n const hideDateTimePicker =\n type !== CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.FULL &&\n type !== CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.PICKER &&\n type !== CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.CONTROLLER_ONLY;\n const hideDatePicker =\n type !== CONTROLLED_DATE_TIME_PICKER_TYPES.DATE.FULL &&\n type !== CONTROLLED_DATE_TIME_PICKER_TYPES.DATE.PICKER &&\n type !== CONTROLLED_DATE_TIME_PICKER_TYPES.DATE.CONTROLLER_ONLY;\n const hideTimePicker =\n type !== CONTROLLED_DATE_TIME_PICKER_TYPES.TIME.FULL &&\n type !== CONTROLLED_DATE_TIME_PICKER_TYPES.TIME.PICKER &&\n type !== CONTROLLED_DATE_TIME_PICKER_TYPES.TIME.CONTROLLER_ONLY;\n const isDateSelector =\n type === CONTROLLED_DATE_TIME_PICKER_TYPES.DATE.FULL ||\n type === CONTROLLED_DATE_TIME_PICKER_TYPES.DATE.INPUTS ||\n type === CONTROLLED_DATE_TIME_PICKER_TYPES.DATE.PICKER ||\n type === CONTROLLED_DATE_TIME_PICKER_TYPES.DATE.CONTROLLER_ONLY;\n const isTimeSelector =\n type === CONTROLLED_DATE_TIME_PICKER_TYPES.TIME.FULL ||\n type === CONTROLLED_DATE_TIME_PICKER_TYPES.TIME.INPUTS ||\n type === CONTROLLED_DATE_TIME_PICKER_TYPES.TIME.PICKER ||\n type === CONTROLLED_DATE_TIME_PICKER_TYPES.TIME.CONTROLLER_ONLY;\n const isDateTimeSelector =\n type === CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.FULL ||\n type === CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.INPUTS ||\n type === CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.PICKER ||\n type === CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.CONTROLLER_ONLY;\n\n const isControllerOnly =\n type === CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.CONTROLLER_ONLY ||\n type === CONTROLLED_DATE_TIME_PICKER_TYPES.DATE.CONTROLLER_ONLY ||\n type === CONTROLLED_DATE_TIME_PICKER_TYPES.TIME.CONTROLLER_ONLY;\n const isWithTimeWheelToo =\n type === CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.FULL ||\n type === CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.PICKER ||\n type === CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.CONTROLLER_ONLY;\n const isWithCalendarToo =\n type === CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.FULL ||\n type === CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.PICKER ||\n type === CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.CONTROLLER_ONLY;\n\n const withAnyInputs = !hideDate || !hideTime;\n const withAnyPicker = !hideDateTimePicker || !hideTimePicker || !hideDatePicker;\n const withClearBtn =\n isClearable &&\n withAnyInputs &&\n ((dateStringFromProps !== '__/__/____' && dateStringFromProps !== '') || // date is not \"empty-ish\"\n (timeStringFromProps !== '__:__ __' && timeStringFromProps !== '')); // or time is not \"empty-ish\"\n\n const isWithDateInputs = withAnyInputs && (isDateTimeSelector || isDateSelector);\n const isWithDateInputsOnly = withAnyInputs && isDateSelector;\n const isWithTimeInputs = withAnyInputs && (isDateTimeSelector || isTimeSelector);\n const isWithTimeInputsOnly = withAnyInputs && isTimeSelector;\n\n const autoFocusMonthInput = isWithDateInputs && autoFocus;\n const autoFocusHourInput = isWithTimeInputsOnly && autoFocus;\n const autoFocusPrevMonthArrow = isControllerOnly && autoFocus;\n const autoFocusHourTimeWheel = isControllerOnly && isTimeSelector && autoFocus;\n\n const shouldPreserveClearableSpace = isClearable && withAnyInputs;\n\n const withAnyRightController = withAnyPicker || withClearBtn || shouldPreserveClearableSpace;\n\n const [latestInteractionRegion, setLatestInteractionRegion] = useState<latestInteractionRegionT>('');\n\n const getDateMetaInfo = useCallback(\n (newDateString = null, metaInfo = {}) => {\n const finalDateString = newDateString || tempDateString;\n return {\n ...metaInfo,\n ...getValidationDateStringMetaInfo(finalDateString, getIsOutOfRangeDay, getIsDisabledDay),\n };\n },\n [tempDateString, getIsDisabledDay, getIsOutOfRangeDay],\n );\n const getTimeMetaInfo = useCallback(\n (newTimeString = null, metaInfo = {}) => {\n const finalTimeString = newTimeString || tempTimeString;\n return {\n ...metaInfo,\n ...getValidationTimeStringMetaInfo(finalTimeString, getIsDisabledTime),\n };\n },\n [tempTimeString, getIsDisabledTime],\n );\n\n const handleChangeComposedDateTimeString = useCallback(\n (newDateString, newTimeString, metaInfo) => {\n const appDateString = isEmptyDateStringMask(newDateString) ? '' : newDateString;\n const appTimeString = isEmptyTimeStringMask(newTimeString) ? '' : newTimeString;\n appOnDateChange(appDateString, metaInfo); // don't do this on useEffect to avoid complete chaos\n setTempDateString(newDateString);\n\n appOnTimeChange(appTimeString, metaInfo); // don't do this on useEffect to avoid complete chaos\n setTimeString(newTimeString);\n\n const newDateTimeString = `${newDateString} ${newTimeString}`;\n const newMetaInfo = {\n ...getTimeMetaInfo(newTimeString, metaInfo),\n ...getDateMetaInfo(newDateString, metaInfo),\n newDateString,\n newTimeString,\n newDateTimeString,\n };\n\n const appDateTimeString = isEmptyDateTimeStringMask(newDateTimeString) ? '' : newDateTimeString;\n appOnDateTimeChange(appDateTimeString, newMetaInfo); // don't do this on useEffect to avoid complete chaos\n },\n [appOnDateChange, appOnTimeChange, getTimeMetaInfo, getDateMetaInfo, appOnDateTimeChange],\n );\n const handleChangeComposedDateString = useCallback(\n (newDateString, metaInfo) => {\n // if we receive an \"empty\" mask, we comunicate empty string to the app\n const appDateString = isEmptyDateStringMask(newDateString) ? '' : newDateString;\n appOnDateChange(appDateString, metaInfo); // don't do this on useEffect to avoid complete chaos\n setTempDateString(newDateString);\n const newDateTimeString = `${newDateString} ${tempTimeString}`;\n const newMetaInfo = {\n ...getTimeMetaInfo(tempTimeString, metaInfo),\n ...getDateMetaInfo(newDateString, metaInfo),\n newDateString,\n newTimeString: tempTimeString,\n newDateTimeString,\n };\n\n const appDateTimeString = isEmptyDateTimeStringMask(newDateTimeString) ? '' : newDateTimeString;\n appOnDateTimeChange(appDateTimeString, newMetaInfo); // don't do this on useEffect to avoid complete chaos\n },\n [appOnDateChange, tempTimeString, getTimeMetaInfo, getDateMetaInfo, appOnDateTimeChange],\n );\n const handleChangeComposedTimeString = useCallback(\n (newTimeString, metaInfo) => {\n const appTimeString = isEmptyTimeStringMask(newTimeString) ? '' : newTimeString;\n appOnTimeChange(appTimeString, metaInfo); // don't do this on useEffect to avoid complete chaos\n\n setTimeString(newTimeString);\n const newDateTimeString = `${tempDateString} ${newTimeString}`;\n const newMetaInfo = {\n ...getTimeMetaInfo(newTimeString, metaInfo),\n ...getDateMetaInfo(tempDateString, metaInfo),\n newDateTimeString,\n newDateString: tempDateString,\n newTimeString,\n };\n\n const appDateTimeString = isEmptyDateTimeStringMask(newDateTimeString) ? '' : newDateTimeString;\n appOnDateTimeChange(appDateTimeString, newMetaInfo); // don't do this on useEffect to avoid complete chaos\n },\n [appOnTimeChange, tempDateString, getTimeMetaInfo, getDateMetaInfo, appOnDateTimeChange],\n );\n\n const handleClearAll: onClearClickT = useCallback(\n (e) => {\n const metaInfo = {\n isAutomaticFillTrigger: false,\n isClearButtonAction: true,\n newDateString: '',\n newTimeString: '',\n newDateTimeString: '',\n };\n const datePartsChangesMetainfo = { ...metaInfo };\n const timePartsChangesMetainfo = { ...metaInfo };\n\n if (isDateSelector || isDateTimeSelector) {\n delete datePartsChangesMetainfo.newDateTimeString;\n delete datePartsChangesMetainfo.newTimeString;\n appOnMonthChange('', e, datePartsChangesMetainfo);\n appOnDayChange('', e, datePartsChangesMetainfo);\n appOnYearChange('', e, datePartsChangesMetainfo);\n }\n if (isTimeSelector || isDateTimeSelector) {\n delete timePartsChangesMetainfo.newDateTimeString;\n delete timePartsChangesMetainfo.newDateString;\n appOnHourChange('', e, timePartsChangesMetainfo);\n appOnMinuteChange('', e, timePartsChangesMetainfo);\n appOnMeridiemChange('', e, timePartsChangesMetainfo);\n }\n if (isDateTimeSelector) handleChangeComposedDateTimeString('__/__/____', '__:__ __', metaInfo);\n if (isDateSelector) handleChangeComposedDateString('__/__/____', datePartsChangesMetainfo);\n if (isTimeSelector) handleChangeComposedTimeString('__:__ __', timePartsChangesMetainfo);\n\n setLatestInteractionRegion('clear-btn');\n },\n [\n appOnDayChange,\n appOnHourChange,\n appOnMeridiemChange,\n appOnMinuteChange,\n appOnMonthChange,\n appOnYearChange,\n handleChangeComposedDateString,\n handleChangeComposedDateTimeString,\n handleChangeComposedTimeString,\n isDateSelector,\n isDateTimeSelector,\n isTimeSelector,\n ],\n );\n\n const ctx = React.useMemo(\n () => ({\n props: propsWithDefaults,\n monthInputRef,\n dayInputRef,\n yearInputRef,\n hourInputRef,\n minutesInputRef,\n // secondsInputRef,\n meridiemInputRef,\n clearButtonRef,\n pickerButtonRef,\n prevYearBtnRef,\n prevMonthBtnRef,\n nextMonthBtnRef,\n nextYearBtnRef,\n calendarDaysWrapperRef,\n prevHourBtnRef,\n currHourBtnRef,\n nextHourBtnRef,\n prevMinutesBtnRef,\n currMinutesBtnRef,\n nextMinutesBtnRef,\n prevMeridiemBtnRef,\n currMeridiemBtnRef,\n nextMeridiemBtnRef,\n dateStringFromProps,\n tempDateString,\n setTempDateString,\n tempTimeString,\n setTimeString,\n handleChangeComposedDateTimeString,\n handleChangeComposedDateString,\n handleChangeComposedTimeString,\n handleClearAll,\n hideDate,\n hideTime,\n hideDateTimePicker,\n hideDatePicker,\n hideTimePicker,\n isDateSelector,\n isTimeSelector,\n isDateTimeSelector,\n isControllerOnly,\n isWithTimeWheelToo,\n isWithCalendarToo,\n isWithDateInputs,\n isWithDateInputsOnly,\n isWithTimeInputs,\n isWithTimeInputsOnly,\n autoFocusMonthInput,\n autoFocusHourInput,\n autoFocusPrevMonthArrow,\n autoFocusHourTimeWheel,\n latestInteractionRegion,\n setLatestInteractionRegion,\n withAnyInputs,\n withAnyPicker,\n withClearBtn,\n withAnyRightController,\n shouldPreserveClearableSpace,\n }),\n [\n propsWithDefaults,\n dateStringFromProps,\n tempDateString,\n tempTimeString,\n handleChangeComposedDateTimeString,\n handleChangeComposedDateString,\n handleChangeComposedTimeString,\n handleClearAll,\n hideDate,\n hideTime,\n hideDateTimePicker,\n hideDatePicker,\n hideTimePicker,\n isDateSelector,\n isTimeSelector,\n isDateTimeSelector,\n isControllerOnly,\n isWithTimeWheelToo,\n isWithCalendarToo,\n isWithDateInputs,\n isWithDateInputsOnly,\n isWithTimeInputs,\n isWithTimeInputsOnly,\n autoFocusMonthInput,\n autoFocusHourInput,\n autoFocusPrevMonthArrow,\n autoFocusHourTimeWheel,\n latestInteractionRegion,\n withAnyInputs,\n withAnyPicker,\n withClearBtn,\n withAnyRightController,\n shouldPreserveClearableSpace,\n ], // refs are mutable so we don't need to listen to them\n );\n\n return ctx;\n};\n"],"names":["useControlledDateTimePicker","props","useValidateProps","monthInputRef","useRef","dayInputRef","yearInputRef","hourInputRef","minutesInputRef","meridiemInputRef","clearButtonRef","pickerButtonRef","prevYearBtnRef","prevMonthBtnRef","nextMonthBtnRef","nextYearBtnRef","calendarDaysWrapperRef","prevHourBtnRef","currHourBtnRef","nextHourBtnRef","prevMinutesBtnRef","currMinutesBtnRef","nextMinutesBtnRef","prevMeridiemBtnRef","currMeridiemBtnRef","nextMeridiemBtnRef","propsWithDefaults","useGetDatePickerWithDefaultsProps","type","getIsDisabledDay","getIsOutOfRangeDay","getIsDisabledTime","isClearable","autoFocus","appOnDateChange","onDateChange","appOnDateTimeChange","onDateTimeChange","appOnTimeChange","onTimeChange","appOnMonthChange","onMonthChange","appOnDayChange","onDayChange","appOnYearChange","onYearChange","appOnHourChange","onHourChange","appOnMinuteChange","onMinuteChange","appOnMeridiemChange","onMeridiemChange","dateStringFromProps","useMemo","dateTime","dateTimeToDate","date","useState","tempDateString","setTempDateString","timeStringFromProps","dateTimeToTime","time","tempTimeString","setTimeString","hideDate","CONTROLLED_DATE_TIME_PICKER_TYPES","DATE_TIME","FULL","INPUTS","DATE","hideTime","TIME","hideDateTimePicker","PICKER","CONTROLLER_ONLY","hideDatePicker","hideTimePicker","isDateSelector","isTimeSelector","isDateTimeSelector","isControllerOnly","isWithTimeWheelToo","isWithCalendarToo","withAnyInputs","withAnyPicker","withClearBtn","isWithDateInputs","isWithDateInputsOnly","isWithTimeInputs","isWithTimeInputsOnly","autoFocusMonthInput","autoFocusHourInput","autoFocusPrevMonthArrow","autoFocusHourTimeWheel","shouldPreserveClearableSpace","withAnyRightController","latestInteractionRegion","setLatestInteractionRegion","getDateMetaInfo","useCallback","newDateString","metaInfo","finalDateString","getValidationDateStringMetaInfo","getTimeMetaInfo","newTimeString","finalTimeString","getValidationTimeStringMetaInfo","handleChangeComposedDateTimeString","appDateString","isEmptyDateStringMask","appTimeString","isEmptyTimeStringMask","newDateTimeString","newMetaInfo","appDateTimeString","isEmptyDateTimeStringMask","handleChangeComposedDateString","handleChangeComposedTimeString","handleClearAll","e","isAutomaticFillTrigger","isClearButtonAction","datePartsChangesMetainfo","timePartsChangesMetainfo","ctx","React"],"mappings":"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"}
@@ -21,6 +21,7 @@ var CloseMedium__default = /*#__PURE__*/_interopDefaultLegacy(CloseMedium);
21
21
  var ClearButton = function ClearButton() {
22
22
  var _useClearButton = controlledDateTimePicker_parts_ClearButton_useClearButton.useClearButton(),
23
23
  onClearClick = _useClearButton.onClearClick,
24
+ onClearButtonKeyDown = _useClearButton.onClearButtonKeyDown,
24
25
  clearButtonRef = _useClearButton.clearButtonRef,
25
26
  withAnyPicker = _useClearButton.withAnyPicker,
26
27
  withClearBtn = _useClearButton.withClearBtn;
@@ -35,6 +36,7 @@ var ClearButton = function ClearButton() {
35
36
  "data-testid": controlledDateTimePicker_ControlledDateTimePickerDatatestid.ControlledDateTimePickerDatatestid.CLEAR_BUTTON,
36
37
  innerRef: clearButtonRef,
37
38
  onClick: onClearClick,
39
+ onKeyDown: onClearButtonKeyDown,
38
40
  withAnyPicker: withAnyPicker
39
41
  });
40
42
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ClearButton.js","sources":["../../../../../src/controlled-date-time-picker/parts/ClearButton/ClearButton.tsx"],"sourcesContent":["import React from 'react';\nimport CloseMedium from '@elliemae/ds-icons/CloseMedium';\nimport { BUTTON_VARIANT } from '@elliemae/ds-basic/Button';\nimport { StyledClearButton } from '../Styleds';\nimport { ControlledDateTimePickerDatatestid } from '../../ControlledDateTimePickerDatatestid';\nimport { useClearButton } from './useClearButton';\n\nexport const ClearButton = (): JSX.Element => {\n const { onClearClick, clearButtonRef, withAnyPicker, withClearBtn } = useClearButton();\n return (\n <StyledClearButton\n shouldDisplay={withClearBtn}\n aria-label=\"clear selected date\"\n buttonType=\"text\"\n leftIcon={<CloseMedium />}\n size=\"m\"\n variant={BUTTON_VARIANT.DEFAULT}\n data-testid={ControlledDateTimePickerDatatestid.CLEAR_BUTTON}\n innerRef={clearButtonRef}\n onClick={onClearClick}\n withAnyPicker={withAnyPicker}\n />\n );\n};\n"],"names":["ClearButton","useClearButton","onClearClick","clearButtonRef","withAnyPicker","withClearBtn","React","StyledClearButton","CloseMedium","BUTTON_VARIANT","DEFAULT","ControlledDateTimePickerDatatestid","CLEAR_BUTTON"],"mappings":";;;;;;;;;;;;;;;;;;;;IAOaA,WAAW,GAAG,SAAdA,WAAc,GAAmB;AAC5C,wBAAsEC,wEAAc,EAApF;AAAA,MAAQC,YAAR,mBAAQA,YAAR;AAAA,MAAsBC,cAAtB,mBAAsBA,cAAtB;AAAA,MAAsCC,aAAtC,mBAAsCA,aAAtC;AAAA,MAAqDC,YAArD,mBAAqDA,YAArD;;AACA,sBACEC,wCAACC,wDAAD;AACE,IAAA,aAAa,EAAEF,YADjB;AAEE,kBAAW,qBAFb;AAGE,IAAA,UAAU,EAAC,MAHb;AAIE,IAAA,QAAQ,eAAEC,wCAACE,+BAAD,OAJZ;AAKE,IAAA,IAAI,EAAC,GALP;AAME,IAAA,OAAO,EAAEC,uBAAc,CAACC,OAN1B;AAOE,mBAAaC,8FAAkC,CAACC,YAPlD;AAQE,IAAA,QAAQ,EAAET,cARZ;AASE,IAAA,OAAO,EAAED,YATX;AAUE,IAAA,aAAa,EAAEE;AAVjB,IADF;AAcD;;;;"}
1
+ {"version":3,"file":"ClearButton.js","sources":["../../../../../src/controlled-date-time-picker/parts/ClearButton/ClearButton.tsx"],"sourcesContent":["import React from 'react';\nimport CloseMedium from '@elliemae/ds-icons/CloseMedium';\nimport { BUTTON_VARIANT } from '@elliemae/ds-basic/Button';\nimport { StyledClearButton } from '../Styleds';\nimport { ControlledDateTimePickerDatatestid } from '../../ControlledDateTimePickerDatatestid';\nimport { useClearButton } from './useClearButton';\n\nexport const ClearButton = (): JSX.Element => {\n const { onClearClick, onClearButtonKeyDown, clearButtonRef, withAnyPicker, withClearBtn } = useClearButton();\n return (\n <StyledClearButton\n shouldDisplay={withClearBtn}\n aria-label=\"clear selected date\"\n buttonType=\"text\"\n leftIcon={<CloseMedium />}\n size=\"m\"\n variant={BUTTON_VARIANT.DEFAULT}\n data-testid={ControlledDateTimePickerDatatestid.CLEAR_BUTTON}\n innerRef={clearButtonRef}\n onClick={onClearClick}\n onKeyDown={onClearButtonKeyDown}\n withAnyPicker={withAnyPicker}\n />\n );\n};\n"],"names":["ClearButton","useClearButton","onClearClick","onClearButtonKeyDown","clearButtonRef","withAnyPicker","withClearBtn","React","StyledClearButton","CloseMedium","BUTTON_VARIANT","DEFAULT","ControlledDateTimePickerDatatestid","CLEAR_BUTTON"],"mappings":";;;;;;;;;;;;;;;;;;;;IAOaA,WAAW,GAAG,SAAdA,WAAc,GAAmB;AAC5C,wBAA4FC,wEAAc,EAA1G;AAAA,MAAQC,YAAR,mBAAQA,YAAR;AAAA,MAAsBC,oBAAtB,mBAAsBA,oBAAtB;AAAA,MAA4CC,cAA5C,mBAA4CA,cAA5C;AAAA,MAA4DC,aAA5D,mBAA4DA,aAA5D;AAAA,MAA2EC,YAA3E,mBAA2EA,YAA3E;;AACA,sBACEC,wCAACC,wDAAD;AACE,IAAA,aAAa,EAAEF,YADjB;AAEE,kBAAW,qBAFb;AAGE,IAAA,UAAU,EAAC,MAHb;AAIE,IAAA,QAAQ,eAAEC,wCAACE,+BAAD,OAJZ;AAKE,IAAA,IAAI,EAAC,GALP;AAME,IAAA,OAAO,EAAEC,uBAAc,CAACC,OAN1B;AAOE,mBAAaC,8FAAkC,CAACC,YAPlD;AAQE,IAAA,QAAQ,EAAET,cARZ;AASE,IAAA,OAAO,EAAEF,YATX;AAUE,IAAA,SAAS,EAAEC,oBAVb;AAWE,IAAA,aAAa,EAAEE;AAXjB,IADF;AAeD;;;;"}
@@ -12,19 +12,48 @@ var useClearButton = function useClearButton() {
12
12
  handleClearAll = _useContext.handleClearAll,
13
13
  clearButtonRef = _useContext.clearButtonRef,
14
14
  withAnyPicker = _useContext.withAnyPicker,
15
- withClearBtn = _useContext.withClearBtn;
15
+ withClearBtn = _useContext.withClearBtn,
16
+ withAnyInputs = _useContext.withAnyInputs,
17
+ isTimeSelector = _useContext.isTimeSelector,
18
+ hourInputRef = _useContext.hourInputRef,
19
+ monthInputRef = _useContext.monthInputRef,
20
+ pickerButtonRef = _useContext.pickerButtonRef;
16
21
 
22
+ var focusFirstRegion = React.useCallback(function () {
23
+ var _hourInputRef$current, _hourInputRef$current2, _monthInputRef$curren, _monthInputRef$curren2;
24
+
25
+ if (withAnyInputs) if (isTimeSelector) hourInputRef === null || hourInputRef === void 0 ? void 0 : (_hourInputRef$current = hourInputRef.current) === null || _hourInputRef$current === void 0 ? void 0 : (_hourInputRef$current2 = _hourInputRef$current.focus) === null || _hourInputRef$current2 === void 0 ? void 0 : _hourInputRef$current2.call(_hourInputRef$current);else monthInputRef === null || monthInputRef === void 0 ? void 0 : (_monthInputRef$curren = monthInputRef.current) === null || _monthInputRef$curren === void 0 ? void 0 : (_monthInputRef$curren2 = _monthInputRef$curren.focus) === null || _monthInputRef$curren2 === void 0 ? void 0 : _monthInputRef$curren2.call(_monthInputRef$curren);
26
+ }, [withAnyInputs, isTimeSelector, hourInputRef, monthInputRef]);
17
27
  var onClearClick = React.useCallback(function (e) {
18
- return handleClearAll(e);
19
- }, [handleClearAll]);
28
+ handleClearAll(e);
29
+ focusFirstRegion();
30
+ }, [focusFirstRegion, handleClearAll]);
31
+ var onHomeKeyDown = React.useCallback(function () {
32
+ focusFirstRegion();
33
+ }, [focusFirstRegion]);
34
+ var onEndKeyDown = React.useCallback(function () {
35
+ var _pickerButtonRef$curr, _pickerButtonRef$curr2;
36
+
37
+ if (withAnyPicker) pickerButtonRef === null || pickerButtonRef === void 0 ? void 0 : (_pickerButtonRef$curr = pickerButtonRef.current) === null || _pickerButtonRef$curr === void 0 ? void 0 : (_pickerButtonRef$curr2 = _pickerButtonRef$curr.focus) === null || _pickerButtonRef$curr2 === void 0 ? void 0 : _pickerButtonRef$curr2.call(_pickerButtonRef$curr);
38
+ }, [withAnyPicker, pickerButtonRef]);
39
+ var onClearButtonKeyDown = React.useCallback(function (e) {
40
+ var key = e.key;
41
+ var preventDefaultKeys = ['Home', 'End'];
42
+ var stopPropagationKeys = ['Home', 'End'];
43
+ if (preventDefaultKeys.includes(key)) e.preventDefault();
44
+ if (stopPropagationKeys.includes(key)) e.stopPropagation();
45
+ if (key === 'Home') onHomeKeyDown();
46
+ if (key === 'End') onEndKeyDown();
47
+ }, [onEndKeyDown, onHomeKeyDown]);
20
48
  return React.useMemo(function () {
21
49
  return {
22
50
  onClearClick: onClearClick,
51
+ onClearButtonKeyDown: onClearButtonKeyDown,
23
52
  clearButtonRef: clearButtonRef,
24
53
  withAnyPicker: withAnyPicker,
25
54
  withClearBtn: withClearBtn
26
55
  };
27
- }, [onClearClick, clearButtonRef, withAnyPicker, withClearBtn]);
56
+ }, [onClearClick, onClearButtonKeyDown, clearButtonRef, withAnyPicker, withClearBtn]);
28
57
  };
29
58
 
30
59
  exports.useClearButton = useClearButton;
@@ -1 +1 @@
1
- {"version":3,"file":"useClearButton.js","sources":["../../../../../src/controlled-date-time-picker/parts/ClearButton/useClearButton.tsx"],"sourcesContent":["/* eslint-disable max-statements */\n/* eslint-disable max-lines */\nimport { useCallback, useMemo, useContext } from 'react';\nimport { ControlledDateTimePickerContext } from '../../ControlledDateTimePickerCTX';\nimport type { onClearClickT } from '../../index.d';\n\ninterface useOnClearClickRT {\n onClearClick: onClearClickT;\n clearButtonRef: React.MutableRefObject<HTMLButtonElement>;\n withAnyPicker: boolean;\n withClearBtn: boolean;\n}\nexport const useClearButton = (): useOnClearClickRT => {\n const { handleClearAll, clearButtonRef, withAnyPicker, withClearBtn } = useContext(ControlledDateTimePickerContext);\n\n const onClearClick = useCallback((e) => handleClearAll(e), [handleClearAll]);\n\n return useMemo(\n () => ({ onClearClick, clearButtonRef, withAnyPicker, withClearBtn }),\n [onClearClick, clearButtonRef, withAnyPicker, withClearBtn],\n );\n};\n"],"names":["useClearButton","useContext","ControlledDateTimePickerContext","handleClearAll","clearButtonRef","withAnyPicker","withClearBtn","onClearClick","useCallback","e","useMemo"],"mappings":";;;;;;;;AAAA;IAYaA,cAAc,GAAG,SAAjBA,cAAiB,GAAyB;AACrD,oBAAwEC,gBAAU,CAACC,oFAAD,CAAlF;AAAA,MAAQC,cAAR,eAAQA,cAAR;AAAA,MAAwBC,cAAxB,eAAwBA,cAAxB;AAAA,MAAwCC,aAAxC,eAAwCA,aAAxC;AAAA,MAAuDC,YAAvD,eAAuDA,YAAvD;;AAEA,MAAMC,YAAY,GAAGC,iBAAW,CAAC,UAACC,CAAD;AAAA,WAAON,cAAc,CAACM,CAAD,CAArB;AAAA,GAAD,EAA2B,CAACN,cAAD,CAA3B,CAAhC;AAEA,SAAOO,aAAO,CACZ;AAAA,WAAO;AAAEH,MAAAA,YAAY,EAAZA,YAAF;AAAgBH,MAAAA,cAAc,EAAdA,cAAhB;AAAgCC,MAAAA,aAAa,EAAbA,aAAhC;AAA+CC,MAAAA,YAAY,EAAZA;AAA/C,KAAP;AAAA,GADY,EAEZ,CAACC,YAAD,EAAeH,cAAf,EAA+BC,aAA/B,EAA8CC,YAA9C,CAFY,CAAd;AAID;;;;"}
1
+ {"version":3,"file":"useClearButton.js","sources":["../../../../../src/controlled-date-time-picker/parts/ClearButton/useClearButton.tsx"],"sourcesContent":["/* eslint-disable max-statements */\n/* eslint-disable max-lines */\nimport { useCallback, useMemo, useContext } from 'react';\nimport { ControlledDateTimePickerContext } from '../../ControlledDateTimePickerCTX';\nimport type { onClearClickT, onKeyDownT } from '../../index.d';\n\ninterface useOnClearClickRT {\n onClearClick: onClearClickT;\n onClearButtonKeyDown: onKeyDownT<HTMLButtonElement>;\n clearButtonRef: React.MutableRefObject<HTMLButtonElement>;\n withAnyPicker: boolean;\n withClearBtn: boolean;\n}\nexport const useClearButton = (): useOnClearClickRT => {\n const {\n handleClearAll,\n clearButtonRef,\n withAnyPicker,\n withClearBtn,\n withAnyInputs,\n isTimeSelector,\n hourInputRef,\n monthInputRef,\n pickerButtonRef,\n } = useContext(ControlledDateTimePickerContext);\n\n const focusFirstRegion = useCallback(() => {\n if (withAnyInputs)\n if (isTimeSelector) hourInputRef?.current?.focus?.();\n else monthInputRef?.current?.focus?.();\n }, [withAnyInputs, isTimeSelector, hourInputRef, monthInputRef]);\n\n const onClearClick = useCallback(\n (e) => {\n handleClearAll(e);\n focusFirstRegion();\n },\n [focusFirstRegion, handleClearAll],\n );\n const onHomeKeyDown = useCallback(() => {\n focusFirstRegion();\n }, [focusFirstRegion]);\n const onEndKeyDown = useCallback(() => {\n if (withAnyPicker) pickerButtonRef?.current?.focus?.();\n }, [withAnyPicker, pickerButtonRef]);\n\n const onClearButtonKeyDown = useCallback(\n (e) => {\n const { key } = e;\n const preventDefaultKeys = ['Home', 'End'];\n const stopPropagationKeys = ['Home', 'End'];\n if (preventDefaultKeys.includes(key)) e.preventDefault();\n if (stopPropagationKeys.includes(key)) e.stopPropagation();\n if (key === 'Home') onHomeKeyDown();\n if (key === 'End') onEndKeyDown();\n },\n [onEndKeyDown, onHomeKeyDown],\n );\n\n return useMemo(\n () => ({ onClearClick, onClearButtonKeyDown, clearButtonRef, withAnyPicker, withClearBtn }),\n [onClearClick, onClearButtonKeyDown, clearButtonRef, withAnyPicker, withClearBtn],\n );\n};\n"],"names":["useClearButton","useContext","ControlledDateTimePickerContext","handleClearAll","clearButtonRef","withAnyPicker","withClearBtn","withAnyInputs","isTimeSelector","hourInputRef","monthInputRef","pickerButtonRef","focusFirstRegion","useCallback","current","focus","onClearClick","e","onHomeKeyDown","onEndKeyDown","onClearButtonKeyDown","key","preventDefaultKeys","stopPropagationKeys","includes","preventDefault","stopPropagation","useMemo"],"mappings":";;;;;;;;AAAA;IAaaA,cAAc,GAAG,SAAjBA,cAAiB,GAAyB;AACrD,oBAUIC,gBAAU,CAACC,oFAAD,CAVd;AAAA,MACEC,cADF,eACEA,cADF;AAAA,MAEEC,cAFF,eAEEA,cAFF;AAAA,MAGEC,aAHF,eAGEA,aAHF;AAAA,MAIEC,YAJF,eAIEA,YAJF;AAAA,MAKEC,aALF,eAKEA,aALF;AAAA,MAMEC,cANF,eAMEA,cANF;AAAA,MAOEC,YAPF,eAOEA,YAPF;AAAA,MAQEC,aARF,eAQEA,aARF;AAAA,MASEC,eATF,eASEA,eATF;;AAYA,MAAMC,gBAAgB,GAAGC,iBAAW,CAAC,YAAM;AAAA;;AACzC,QAAIN,aAAJ,EACE,IAAIC,cAAJ,EAAoBC,YAAY,SAAZ,IAAAA,YAAY,WAAZ,qCAAAA,YAAY,CAAEK,OAAd,0GAAuBC,KAAvB,8GAApB,KACKL,aAAa,SAAb,IAAAA,aAAa,WAAb,qCAAAA,aAAa,CAAEI,OAAf,0GAAwBC,KAAxB;AACR,GAJmC,EAIjC,CAACR,aAAD,EAAgBC,cAAhB,EAAgCC,YAAhC,EAA8CC,aAA9C,CAJiC,CAApC;AAMA,MAAMM,YAAY,GAAGH,iBAAW,CAC9B,UAACI,CAAD,EAAO;AACLd,IAAAA,cAAc,CAACc,CAAD,CAAd;AACAL,IAAAA,gBAAgB;AACjB,GAJ6B,EAK9B,CAACA,gBAAD,EAAmBT,cAAnB,CAL8B,CAAhC;AAOA,MAAMe,aAAa,GAAGL,iBAAW,CAAC,YAAM;AACtCD,IAAAA,gBAAgB;AACjB,GAFgC,EAE9B,CAACA,gBAAD,CAF8B,CAAjC;AAGA,MAAMO,YAAY,GAAGN,iBAAW,CAAC,YAAM;AAAA;;AACrC,QAAIR,aAAJ,EAAmBM,eAAe,SAAf,IAAAA,eAAe,WAAf,qCAAAA,eAAe,CAAEG,OAAjB,0GAA0BC,KAA1B;AACpB,GAF+B,EAE7B,CAACV,aAAD,EAAgBM,eAAhB,CAF6B,CAAhC;AAIA,MAAMS,oBAAoB,GAAGP,iBAAW,CACtC,UAACI,CAAD,EAAO;AACL,QAAQI,GAAR,GAAgBJ,CAAhB,CAAQI,GAAR;AACA,QAAMC,kBAAkB,GAAG,CAAC,MAAD,EAAS,KAAT,CAA3B;AACA,QAAMC,mBAAmB,GAAG,CAAC,MAAD,EAAS,KAAT,CAA5B;AACA,QAAID,kBAAkB,CAACE,QAAnB,CAA4BH,GAA5B,CAAJ,EAAsCJ,CAAC,CAACQ,cAAF;AACtC,QAAIF,mBAAmB,CAACC,QAApB,CAA6BH,GAA7B,CAAJ,EAAuCJ,CAAC,CAACS,eAAF;AACvC,QAAIL,GAAG,KAAK,MAAZ,EAAoBH,aAAa;AACjC,QAAIG,GAAG,KAAK,KAAZ,EAAmBF,YAAY;AAChC,GATqC,EAUtC,CAACA,YAAD,EAAeD,aAAf,CAVsC,CAAxC;AAaA,SAAOS,aAAO,CACZ;AAAA,WAAO;AAAEX,MAAAA,YAAY,EAAZA,YAAF;AAAgBI,MAAAA,oBAAoB,EAApBA,oBAAhB;AAAsChB,MAAAA,cAAc,EAAdA,cAAtC;AAAsDC,MAAAA,aAAa,EAAbA,aAAtD;AAAqEC,MAAAA,YAAY,EAAZA;AAArE,KAAP;AAAA,GADY,EAEZ,CAACU,YAAD,EAAeI,oBAAf,EAAqChB,cAArC,EAAqDC,aAArD,EAAoEC,YAApE,CAFY,CAAd;AAID;;;;"}
@@ -31,6 +31,7 @@ var DateInputs = function DateInputs() {
31
31
  month = _useDateInputs.month,
32
32
  day = _useDateInputs.day,
33
33
  year = _useDateInputs.year,
34
+ autoFocusMonthInput = _useDateInputs.autoFocusMonthInput,
34
35
  onMonthChange = _useDateInputs.onMonthChange,
35
36
  onDayChange = _useDateInputs.onDayChange,
36
37
  onYearChange = _useDateInputs.onYearChange,
@@ -59,6 +60,7 @@ var DateInputs = function DateInputs() {
59
60
  onKeyDown: onMonthKeyDown,
60
61
  value: month,
61
62
  contextRef: monthInputRef,
63
+ autoFocusMonthInput: autoFocusMonthInput,
62
64
  placeholder: "MM"
63
65
  })), /*#__PURE__*/React__default['default'].createElement(controlledDateTimePicker_parts_Styleds.StyledSeparator, {
64
66
  alignItems: "center"
@@ -1 +1 @@
1
- {"version":3,"file":"DateInputs.js","sources":["../../../../../src/controlled-date-time-picker/parts/DateInputs/DateInputs.tsx"],"sourcesContent":["import React, { useContext } from 'react';\nimport { Grid } from '@elliemae/ds-grid';\nimport { ControlledDateTimePickerContext } from '../../ControlledDateTimePickerCTX';\nimport { MMInput } from './MMInput';\nimport { DDInput } from './DDInput';\nimport { YYYYInput } from './YYYYInput';\nimport { StyledFocusWithIn, StyledSeparator } from '../Styleds';\nimport { useDateInputs } from './useDateInputs';\nimport { fixedValues } from '../config';\n\nexport const DateInputs = (): JSX.Element => {\n const {\n month,\n day,\n year,\n onMonthChange,\n onDayChange,\n onYearChange,\n onMonthBlur,\n onDayBlur,\n onYearBlur,\n onMonthFocus,\n onDayFocus,\n onYearFocus,\n onMonthKeyDown,\n onDayKeyDown,\n onYearKeyDown,\n } = useDateInputs();\n // we do this here so MMInput,DDInput,YYYYInput can be pure component memoized via React.memo\n const { monthInputRef, dayInputRef, yearInputRef } = useContext(ControlledDateTimePickerContext);\n return (\n <Grid\n cols={[\n fixedValues.smallInputWidth,\n fixedValues.separatorWidth,\n fixedValues.smallInputWidth,\n fixedValues.separatorWidth,\n fixedValues.largeInputWidth,\n ]}\n >\n <StyledFocusWithIn>\n <MMInput\n onChange={onMonthChange}\n onBlur={onMonthBlur}\n onFocus={onMonthFocus}\n onKeyDown={onMonthKeyDown}\n value={month}\n contextRef={monthInputRef}\n placeholder=\"MM\"\n />\n </StyledFocusWithIn>\n <StyledSeparator alignItems=\"center\">/</StyledSeparator>\n <StyledFocusWithIn>\n <DDInput\n onChange={onDayChange}\n onBlur={onDayBlur}\n onFocus={onDayFocus}\n onKeyDown={onDayKeyDown}\n value={day}\n contextRef={dayInputRef}\n placeholder=\"DD\"\n />\n </StyledFocusWithIn>\n <StyledSeparator alignItems=\"center\">/</StyledSeparator>\n <StyledFocusWithIn>\n <YYYYInput\n onChange={onYearChange}\n onBlur={onYearBlur}\n onFocus={onYearFocus}\n onKeyDown={onYearKeyDown}\n value={year}\n contextRef={yearInputRef}\n placeholder=\"YYYY\"\n />\n </StyledFocusWithIn>\n </Grid>\n );\n};\n"],"names":["DateInputs","useDateInputs","month","day","year","onMonthChange","onDayChange","onYearChange","onMonthBlur","onDayBlur","onYearBlur","onMonthFocus","onDayFocus","onYearFocus","onMonthKeyDown","onDayKeyDown","onYearKeyDown","useContext","ControlledDateTimePickerContext","monthInputRef","dayInputRef","yearInputRef","React","Grid","fixedValues","smallInputWidth","separatorWidth","largeInputWidth","StyledFocusWithIn","MMInput","StyledSeparator","DDInput","YYYYInput"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;IAUaA,UAAU,GAAG,SAAbA,UAAa,GAAmB;AAC3C,uBAgBIC,qEAAa,EAhBjB;AAAA,MACEC,KADF,kBACEA,KADF;AAAA,MAEEC,GAFF,kBAEEA,GAFF;AAAA,MAGEC,IAHF,kBAGEA,IAHF;AAAA,MAIEC,aAJF,kBAIEA,aAJF;AAAA,MAKEC,WALF,kBAKEA,WALF;AAAA,MAMEC,YANF,kBAMEA,YANF;AAAA,MAOEC,WAPF,kBAOEA,WAPF;AAAA,MAQEC,SARF,kBAQEA,SARF;AAAA,MASEC,UATF,kBASEA,UATF;AAAA,MAUEC,YAVF,kBAUEA,YAVF;AAAA,MAWEC,UAXF,kBAWEA,UAXF;AAAA,MAYEC,WAZF,kBAYEA,WAZF;AAAA,MAaEC,cAbF,kBAaEA,cAbF;AAAA,MAcEC,YAdF,kBAcEA,YAdF;AAAA,MAeEC,aAfF,kBAeEA,aAfF,CAD2C;;;AAmB3C,oBAAqDC,gBAAU,CAACC,oFAAD,CAA/D;AAAA,MAAQC,aAAR,eAAQA,aAAR;AAAA,MAAuBC,WAAvB,eAAuBA,WAAvB;AAAA,MAAoCC,YAApC,eAAoCA,YAApC;;AACA,sBACEC,wCAACC,WAAD;AACE,IAAA,IAAI,EAAE,CACJC,iDAAW,CAACC,eADR,EAEJD,iDAAW,CAACE,cAFR,EAGJF,iDAAW,CAACC,eAHR,EAIJD,iDAAW,CAACE,cAJR,EAKJF,iDAAW,CAACG,eALR;AADR,kBASEL,wCAACM,wDAAD,qBACEN,wCAACO,yDAAD;AACE,IAAA,QAAQ,EAAExB,aADZ;AAEE,IAAA,MAAM,EAAEG,WAFV;AAGE,IAAA,OAAO,EAAEG,YAHX;AAIE,IAAA,SAAS,EAAEG,cAJb;AAKE,IAAA,KAAK,EAAEZ,KALT;AAME,IAAA,UAAU,EAAEiB,aANd;AAOE,IAAA,WAAW,EAAC;AAPd,IADF,CATF,eAoBEG,wCAACQ,sDAAD;AAAiB,IAAA,UAAU,EAAC;AAA5B,SApBF,eAqBER,wCAACM,wDAAD,qBACEN,wCAACS,yDAAD;AACE,IAAA,QAAQ,EAAEzB,WADZ;AAEE,IAAA,MAAM,EAAEG,SAFV;AAGE,IAAA,OAAO,EAAEG,UAHX;AAIE,IAAA,SAAS,EAAEG,YAJb;AAKE,IAAA,KAAK,EAAEZ,GALT;AAME,IAAA,UAAU,EAAEiB,WANd;AAOE,IAAA,WAAW,EAAC;AAPd,IADF,CArBF,eAgCEE,wCAACQ,sDAAD;AAAiB,IAAA,UAAU,EAAC;AAA5B,SAhCF,eAiCER,wCAACM,wDAAD,qBACEN,wCAACU,6DAAD;AACE,IAAA,QAAQ,EAAEzB,YADZ;AAEE,IAAA,MAAM,EAAEG,UAFV;AAGE,IAAA,OAAO,EAAEG,WAHX;AAIE,IAAA,SAAS,EAAEG,aAJb;AAKE,IAAA,KAAK,EAAEZ,IALT;AAME,IAAA,UAAU,EAAEiB,YANd;AAOE,IAAA,WAAW,EAAC;AAPd,IADF,CAjCF,CADF;AA+CD;;;;"}
1
+ {"version":3,"file":"DateInputs.js","sources":["../../../../../src/controlled-date-time-picker/parts/DateInputs/DateInputs.tsx"],"sourcesContent":["import React, { useContext } from 'react';\nimport { Grid } from '@elliemae/ds-grid';\nimport { ControlledDateTimePickerContext } from '../../ControlledDateTimePickerCTX';\nimport { MMInput } from './MMInput';\nimport { DDInput } from './DDInput';\nimport { YYYYInput } from './YYYYInput';\nimport { StyledFocusWithIn, StyledSeparator } from '../Styleds';\nimport { useDateInputs } from './useDateInputs';\nimport { fixedValues } from '../config';\n\nexport const DateInputs = (): JSX.Element => {\n const {\n month,\n day,\n year,\n autoFocusMonthInput,\n onMonthChange,\n onDayChange,\n onYearChange,\n onMonthBlur,\n onDayBlur,\n onYearBlur,\n onMonthFocus,\n onDayFocus,\n onYearFocus,\n onMonthKeyDown,\n onDayKeyDown,\n onYearKeyDown,\n } = useDateInputs();\n // we do this here so MMInput,DDInput,YYYYInput can be pure component memoized via React.memo\n const { monthInputRef, dayInputRef, yearInputRef } = useContext(ControlledDateTimePickerContext);\n return (\n <Grid\n cols={[\n fixedValues.smallInputWidth,\n fixedValues.separatorWidth,\n fixedValues.smallInputWidth,\n fixedValues.separatorWidth,\n fixedValues.largeInputWidth,\n ]}\n >\n <StyledFocusWithIn>\n <MMInput\n onChange={onMonthChange}\n onBlur={onMonthBlur}\n onFocus={onMonthFocus}\n onKeyDown={onMonthKeyDown}\n value={month}\n contextRef={monthInputRef}\n autoFocusMonthInput={autoFocusMonthInput}\n placeholder=\"MM\"\n />\n </StyledFocusWithIn>\n <StyledSeparator alignItems=\"center\">/</StyledSeparator>\n <StyledFocusWithIn>\n <DDInput\n onChange={onDayChange}\n onBlur={onDayBlur}\n onFocus={onDayFocus}\n onKeyDown={onDayKeyDown}\n value={day}\n contextRef={dayInputRef}\n placeholder=\"DD\"\n />\n </StyledFocusWithIn>\n <StyledSeparator alignItems=\"center\">/</StyledSeparator>\n <StyledFocusWithIn>\n <YYYYInput\n onChange={onYearChange}\n onBlur={onYearBlur}\n onFocus={onYearFocus}\n onKeyDown={onYearKeyDown}\n value={year}\n contextRef={yearInputRef}\n placeholder=\"YYYY\"\n />\n </StyledFocusWithIn>\n </Grid>\n );\n};\n"],"names":["DateInputs","useDateInputs","month","day","year","autoFocusMonthInput","onMonthChange","onDayChange","onYearChange","onMonthBlur","onDayBlur","onYearBlur","onMonthFocus","onDayFocus","onYearFocus","onMonthKeyDown","onDayKeyDown","onYearKeyDown","useContext","ControlledDateTimePickerContext","monthInputRef","dayInputRef","yearInputRef","React","Grid","fixedValues","smallInputWidth","separatorWidth","largeInputWidth","StyledFocusWithIn","MMInput","StyledSeparator","DDInput","YYYYInput"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;IAUaA,UAAU,GAAG,SAAbA,UAAa,GAAmB;AAC3C,uBAiBIC,qEAAa,EAjBjB;AAAA,MACEC,KADF,kBACEA,KADF;AAAA,MAEEC,GAFF,kBAEEA,GAFF;AAAA,MAGEC,IAHF,kBAGEA,IAHF;AAAA,MAIEC,mBAJF,kBAIEA,mBAJF;AAAA,MAKEC,aALF,kBAKEA,aALF;AAAA,MAMEC,WANF,kBAMEA,WANF;AAAA,MAOEC,YAPF,kBAOEA,YAPF;AAAA,MAQEC,WARF,kBAQEA,WARF;AAAA,MASEC,SATF,kBASEA,SATF;AAAA,MAUEC,UAVF,kBAUEA,UAVF;AAAA,MAWEC,YAXF,kBAWEA,YAXF;AAAA,MAYEC,UAZF,kBAYEA,UAZF;AAAA,MAaEC,WAbF,kBAaEA,WAbF;AAAA,MAcEC,cAdF,kBAcEA,cAdF;AAAA,MAeEC,YAfF,kBAeEA,YAfF;AAAA,MAgBEC,aAhBF,kBAgBEA,aAhBF,CAD2C;;;AAoB3C,oBAAqDC,gBAAU,CAACC,oFAAD,CAA/D;AAAA,MAAQC,aAAR,eAAQA,aAAR;AAAA,MAAuBC,WAAvB,eAAuBA,WAAvB;AAAA,MAAoCC,YAApC,eAAoCA,YAApC;;AACA,sBACEC,wCAACC,WAAD;AACE,IAAA,IAAI,EAAE,CACJC,iDAAW,CAACC,eADR,EAEJD,iDAAW,CAACE,cAFR,EAGJF,iDAAW,CAACC,eAHR,EAIJD,iDAAW,CAACE,cAJR,EAKJF,iDAAW,CAACG,eALR;AADR,kBASEL,wCAACM,wDAAD,qBACEN,wCAACO,yDAAD;AACE,IAAA,QAAQ,EAAExB,aADZ;AAEE,IAAA,MAAM,EAAEG,WAFV;AAGE,IAAA,OAAO,EAAEG,YAHX;AAIE,IAAA,SAAS,EAAEG,cAJb;AAKE,IAAA,KAAK,EAAEb,KALT;AAME,IAAA,UAAU,EAAEkB,aANd;AAOE,IAAA,mBAAmB,EAAEf,mBAPvB;AAQE,IAAA,WAAW,EAAC;AARd,IADF,CATF,eAqBEkB,wCAACQ,sDAAD;AAAiB,IAAA,UAAU,EAAC;AAA5B,SArBF,eAsBER,wCAACM,wDAAD,qBACEN,wCAACS,yDAAD;AACE,IAAA,QAAQ,EAAEzB,WADZ;AAEE,IAAA,MAAM,EAAEG,SAFV;AAGE,IAAA,OAAO,EAAEG,UAHX;AAIE,IAAA,SAAS,EAAEG,YAJb;AAKE,IAAA,KAAK,EAAEb,GALT;AAME,IAAA,UAAU,EAAEkB,WANd;AAOE,IAAA,WAAW,EAAC;AAPd,IADF,CAtBF,eAiCEE,wCAACQ,sDAAD;AAAiB,IAAA,UAAU,EAAC;AAA5B,SAjCF,eAkCER,wCAACM,wDAAD,qBACEN,wCAACU,6DAAD;AACE,IAAA,QAAQ,EAAEzB,YADZ;AAEE,IAAA,MAAM,EAAEG,UAFV;AAGE,IAAA,OAAO,EAAEG,WAHX;AAIE,IAAA,SAAS,EAAEG,aAJb;AAKE,IAAA,KAAK,EAAEb,IALT;AAME,IAAA,UAAU,EAAEkB,YANd;AAOE,IAAA,WAAW,EAAC;AAPd,IADF,CAlCF,CADF;AAgDD;;;;"}
@@ -28,7 +28,8 @@ var MMInput = /*#__PURE__*/React__default['default'].memo(function (_ref) {
28
28
  onKeyDown = _ref.onKeyDown,
29
29
  value = _ref.value,
30
30
  placeholder = _ref.placeholder,
31
- contextRef = _ref.contextRef;
31
+ contextRef = _ref.contextRef,
32
+ autoFocusMonthInput = _ref.autoFocusMonthInput;
32
33
  var validateOnChange = React.useCallback(function (e) {
33
34
  var _e$target;
34
35
 
@@ -40,6 +41,7 @@ var MMInput = /*#__PURE__*/React__default['default'].memo(function (_ref) {
40
41
  onChange(e);
41
42
  }, [onChange]);
42
43
  return /*#__PURE__*/React__default['default'].createElement(controlledDateTimePicker_parts_Styleds.Styled2DigitsInput, {
44
+ autoFocus: autoFocusMonthInput,
43
45
  onChange: validateOnChange,
44
46
  onBlur: onBlur,
45
47
  onFocus: onFocus,
@@ -1 +1 @@
1
- {"version":3,"file":"MMInput.js","sources":["../../../../../src/controlled-date-time-picker/parts/DateInputs/MMInput.tsx"],"sourcesContent":["import React, { useCallback } from 'react';\nimport { Styled2DigitsInput } from '../Styleds';\nimport { ControlledDateTimePickerDatatestid } from '../../ControlledDateTimePickerDatatestid';\nimport type { onChangeFuncT, onBlurFuncT, onFocusFuncT, onKeyDownT } from '../../index.d';\n\nconst regExpNumbers = /^[0-9]+$/;\nconst isInvalidMonth = (month) => {\n if (month === '') return false;\n const numberOnly = regExpNumbers.test(month);\n return month.length > 2 || month === '00'|| !numberOnly || Number.parseInt(month, 10) > 12;\n};\ninterface MMInputsPropsT {\n onChange: onChangeFuncT;\n onBlur: onBlurFuncT;\n onFocus: onFocusFuncT;\n onKeyDown: onKeyDownT;\n value: string;\n contextRef: React.RefObject<HTMLInputElement>;\n placeholder: string;\n}\nexport const MMInput = React.memo(\n ({ onChange, onBlur, onFocus, onKeyDown, value, placeholder, contextRef }: MMInputsPropsT): JSX.Element => {\n const validateOnChange = useCallback(\n (e) => {\n if (isInvalidMonth(e?.target?.value)) {\n e.preventDefault();\n return;\n }\n onChange(e);\n },\n [onChange],\n );\n return (\n <Styled2DigitsInput\n onChange={validateOnChange}\n onBlur={onBlur}\n onFocus={onFocus}\n onKeyDown={onKeyDown}\n value={value}\n ref={contextRef}\n placeholder={placeholder}\n aria-label=\"month input field\"\n data-testid={ControlledDateTimePickerDatatestid.DATE_INPUTS.MONTH}\n />\n );\n },\n);\n"],"names":["regExpNumbers","isInvalidMonth","month","numberOnly","test","length","Number","parseInt","MMInput","React","memo","onChange","onBlur","onFocus","onKeyDown","value","placeholder","contextRef","validateOnChange","useCallback","e","target","preventDefault","Styled2DigitsInput","ControlledDateTimePickerDatatestid","DATE_INPUTS","MONTH"],"mappings":";;;;;;;;;;;;;;;AAKA,IAAMA,aAAa,GAAG,UAAtB;;AACA,IAAMC,cAAc,GAAG,SAAjBA,cAAiB,CAACC,KAAD,EAAW;AAChC,MAAIA,KAAK,KAAK,EAAd,EAAkB,OAAO,KAAP;AAClB,MAAMC,UAAU,GAAGH,aAAa,CAACI,IAAd,CAAmBF,KAAnB,CAAnB;AACA,SAAOA,KAAK,CAACG,MAAN,GAAe,CAAf,IAAoBH,KAAK,KAAK,IAA9B,IAAqC,CAACC,UAAtC,IAAoDG,MAAM,CAACC,QAAP,CAAgBL,KAAhB,EAAuB,EAAvB,IAA6B,EAAxF;AACD,CAJD;;IAcaM,OAAO,gBAAGC,yBAAK,CAACC,IAAN,CACrB,gBAA2G;AAAA,MAAxGC,QAAwG,QAAxGA,QAAwG;AAAA,MAA9FC,MAA8F,QAA9FA,MAA8F;AAAA,MAAtFC,OAAsF,QAAtFA,OAAsF;AAAA,MAA7EC,SAA6E,QAA7EA,SAA6E;AAAA,MAAlEC,KAAkE,QAAlEA,KAAkE;AAAA,MAA3DC,WAA2D,QAA3DA,WAA2D;AAAA,MAA9CC,UAA8C,QAA9CA,UAA8C;AACzG,MAAMC,gBAAgB,GAAGC,iBAAW,CAClC,UAACC,CAAD,EAAO;AAAA;;AACL,QAAInB,cAAc,CAACmB,CAAD,aAACA,CAAD,oCAACA,CAAC,CAAEC,MAAJ,8CAAC,UAAWN,KAAZ,CAAlB,EAAsC;AACpCK,MAAAA,CAAC,CAACE,cAAF;AACA;AACD;;AACDX,IAAAA,QAAQ,CAACS,CAAD,CAAR;AACD,GAPiC,EAQlC,CAACT,QAAD,CARkC,CAApC;AAUA,sBACEF,wCAACc,yDAAD;AACE,IAAA,QAAQ,EAAEL,gBADZ;AAEE,IAAA,MAAM,EAAEN,MAFV;AAGE,IAAA,OAAO,EAAEC,OAHX;AAIE,IAAA,SAAS,EAAEC,SAJb;AAKE,IAAA,KAAK,EAAEC,KALT;AAME,IAAA,GAAG,EAAEE,UANP;AAOE,IAAA,WAAW,EAAED,WAPf;AAQE,kBAAW,mBARb;AASE,mBAAaQ,8FAAkC,CAACC,WAAnC,CAA+CC;AAT9D,IADF;AAaD,CAzBoB;;;;"}
1
+ {"version":3,"file":"MMInput.js","sources":["../../../../../src/controlled-date-time-picker/parts/DateInputs/MMInput.tsx"],"sourcesContent":["import React, { useCallback } from 'react';\nimport { Styled2DigitsInput } from '../Styleds';\nimport { ControlledDateTimePickerDatatestid } from '../../ControlledDateTimePickerDatatestid';\nimport type { onChangeFuncT, onBlurFuncT, onFocusFuncT, onKeyDownT } from '../../index.d';\n\nconst regExpNumbers = /^[0-9]+$/;\nconst isInvalidMonth = (month) => {\n if (month === '') return false;\n const numberOnly = regExpNumbers.test(month);\n return month.length > 2 || month === '00' || !numberOnly || Number.parseInt(month, 10) > 12;\n};\ninterface MMInputsPropsT {\n onChange: onChangeFuncT;\n onBlur: onBlurFuncT;\n onFocus: onFocusFuncT;\n onKeyDown: onKeyDownT;\n autoFocusMonthInput: boolean;\n value: string;\n contextRef: React.RefObject<HTMLInputElement>;\n placeholder: string;\n}\nexport const MMInput = React.memo(\n ({\n onChange,\n onBlur,\n onFocus,\n onKeyDown,\n value,\n placeholder,\n contextRef,\n autoFocusMonthInput,\n }: MMInputsPropsT): JSX.Element => {\n const validateOnChange = useCallback(\n (e) => {\n if (isInvalidMonth(e?.target?.value)) {\n e.preventDefault();\n return;\n }\n onChange(e);\n },\n [onChange],\n );\n return (\n <Styled2DigitsInput\n autoFocus={autoFocusMonthInput}\n onChange={validateOnChange}\n onBlur={onBlur}\n onFocus={onFocus}\n onKeyDown={onKeyDown}\n value={value}\n ref={contextRef}\n placeholder={placeholder}\n aria-label=\"month input field\"\n data-testid={ControlledDateTimePickerDatatestid.DATE_INPUTS.MONTH}\n />\n );\n },\n);\n"],"names":["regExpNumbers","isInvalidMonth","month","numberOnly","test","length","Number","parseInt","MMInput","React","memo","onChange","onBlur","onFocus","onKeyDown","value","placeholder","contextRef","autoFocusMonthInput","validateOnChange","useCallback","e","target","preventDefault","Styled2DigitsInput","ControlledDateTimePickerDatatestid","DATE_INPUTS","MONTH"],"mappings":";;;;;;;;;;;;;;;AAKA,IAAMA,aAAa,GAAG,UAAtB;;AACA,IAAMC,cAAc,GAAG,SAAjBA,cAAiB,CAACC,KAAD,EAAW;AAChC,MAAIA,KAAK,KAAK,EAAd,EAAkB,OAAO,KAAP;AAClB,MAAMC,UAAU,GAAGH,aAAa,CAACI,IAAd,CAAmBF,KAAnB,CAAnB;AACA,SAAOA,KAAK,CAACG,MAAN,GAAe,CAAf,IAAoBH,KAAK,KAAK,IAA9B,IAAsC,CAACC,UAAvC,IAAqDG,MAAM,CAACC,QAAP,CAAgBL,KAAhB,EAAuB,EAAvB,IAA6B,EAAzF;AACD,CAJD;;IAeaM,OAAO,gBAAGC,yBAAK,CAACC,IAAN,CACrB,gBASmC;AAAA,MARjCC,QAQiC,QARjCA,QAQiC;AAAA,MAPjCC,MAOiC,QAPjCA,MAOiC;AAAA,MANjCC,OAMiC,QANjCA,OAMiC;AAAA,MALjCC,SAKiC,QALjCA,SAKiC;AAAA,MAJjCC,KAIiC,QAJjCA,KAIiC;AAAA,MAHjCC,WAGiC,QAHjCA,WAGiC;AAAA,MAFjCC,UAEiC,QAFjCA,UAEiC;AAAA,MADjCC,mBACiC,QADjCA,mBACiC;AACjC,MAAMC,gBAAgB,GAAGC,iBAAW,CAClC,UAACC,CAAD,EAAO;AAAA;;AACL,QAAIpB,cAAc,CAACoB,CAAD,aAACA,CAAD,oCAACA,CAAC,CAAEC,MAAJ,8CAAC,UAAWP,KAAZ,CAAlB,EAAsC;AACpCM,MAAAA,CAAC,CAACE,cAAF;AACA;AACD;;AACDZ,IAAAA,QAAQ,CAACU,CAAD,CAAR;AACD,GAPiC,EAQlC,CAACV,QAAD,CARkC,CAApC;AAUA,sBACEF,wCAACe,yDAAD;AACE,IAAA,SAAS,EAAEN,mBADb;AAEE,IAAA,QAAQ,EAAEC,gBAFZ;AAGE,IAAA,MAAM,EAAEP,MAHV;AAIE,IAAA,OAAO,EAAEC,OAJX;AAKE,IAAA,SAAS,EAAEC,SALb;AAME,IAAA,KAAK,EAAEC,KANT;AAOE,IAAA,GAAG,EAAEE,UAPP;AAQE,IAAA,WAAW,EAAED,WARf;AASE,kBAAW,mBATb;AAUE,mBAAaS,8FAAkC,CAACC,WAAnC,CAA+CC;AAV9D,IADF;AAcD,CAnCoB;;;;"}