@elliemae/ds-form-date-time-picker 3.11.0-rc.2 → 3.11.0-rc.4

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.
@@ -191,6 +191,7 @@ const useDateInputs = () => {
191
191
  trackFocusYearInput();
192
192
  }
193
193
  if (key === "Backspace" && target === currentTarget && target.selectionStart === 0 && target.selectionEnd === 0) {
194
+ e.preventDefault();
194
195
  trackFocusMonthInput();
195
196
  }
196
197
  if ((ctrlKey || metaKey) && key === ";")
@@ -290,6 +291,7 @@ const useDateInputs = () => {
290
291
  trackNextFocus();
291
292
  }
292
293
  if (key === "Backspace" && target === currentTarget && target.selectionStart === 0 && target.selectionEnd === 0) {
294
+ e.preventDefault();
293
295
  trackFocusDayInput();
294
296
  }
295
297
  if ((ctrlKey || metaKey) && key === ";")
@@ -312,7 +314,6 @@ const useDateInputs = () => {
312
314
  ]
313
315
  );
314
316
  const onYearBlur = (0, import_react.useCallback)((e) => {
315
- e?.target.setSelectionRange(e?.target?.value.length, e?.target?.value.length);
316
317
  }, []);
317
318
  const onDayBlur = (0, import_react.useCallback)(
318
319
  (e) => {
@@ -323,7 +324,6 @@ const useDateInputs = () => {
323
324
  handleChangeDay((0, import_stringHelpers.prependStringWithPlaceHolders)(newDay, 2), e, {
324
325
  isAutomaticFillTrigger: true
325
326
  });
326
- e?.target.setSelectionRange(e?.target?.value.length, e?.target?.value.length);
327
327
  },
328
328
  [handleChangeDay]
329
329
  );
@@ -336,7 +336,6 @@ const useDateInputs = () => {
336
336
  handleChangeMonth((0, import_stringHelpers.prependStringWithPlaceHolders)(newMonth, 2), e, {
337
337
  isAutomaticFillTrigger: true
338
338
  });
339
- e?.target.setSelectionRange(e?.target?.value.length, e?.target?.value.length);
340
339
  },
341
340
  [handleChangeMonth]
342
341
  );
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/parts/DateInputs/useDateInputs.tsx", "../../../../../../scripts/build/transpile/react-shim.js"],
4
- "sourcesContent": ["/* eslint-disable complexity */\n/* eslint-disable max-statements */\n/* eslint-disable max-lines */\nimport { useCallback, useMemo, useContext } from 'react';\nimport { ControlledDateTimePickerContext } from '../../ControlledDateTimePickerCTX';\nimport {\n getFormattedDateString,\n prependStringWithPlaceHolders,\n fillStringWithPlaceHolders,\n} from '../../utils/stringHelpers';\nimport { getValidationDateStringMetaInfo } from '../../utils/dateHelpers';\nimport { defaultMetaInfo } from '../../utils/constants';\nimport type { DSControlledDateTimePickerInternalsT } from '../../sharedTypes';\nimport type { DSControlledDateTimePickerT } from '../../propTypes';\n\nexport const useDateInputs = (): DSControlledDateTimePickerInternalsT.UseDateInputsR => {\n const {\n props: { disabled },\n appOnMonthChange,\n appOnDayChange,\n appOnYearChange,\n getIsDisabledDay,\n getIsOutOfRangeDay,\n month,\n day,\n year,\n hideTime,\n handleChangeComposedDateString,\n withClearBtn,\n withAnyPicker,\n withAnyRightController,\n autoFocusMonthInput,\n innerRefMonthInput,\n trackFocusResetter,\n trackFocusFirstSegment,\n trackFocusLastSegment,\n trackFocusDayInput,\n trackFocusMonthInput,\n trackFocusYearInput,\n trackFocusHourInput,\n trackFocusClearBtn,\n trackFocusPicker,\n } = useContext(ControlledDateTimePickerContext);\n\n const onHomeKeyDown = useCallback(() => {\n trackFocusFirstSegment();\n }, [trackFocusFirstSegment]);\n const onEndKeyDown = useCallback(() => {\n trackFocusLastSegment();\n }, [trackFocusLastSegment]);\n\n const handleChangeMonth = useCallback(\n (\n newMonth: string,\n e: DSControlledDateTimePickerT.OnInternalValuesChangeEvent,\n metaInfo: Partial<DSControlledDateTimePickerT.InternalInputsChangeMetaInfo> = defaultMetaInfo,\n ) => {\n const newDateString = getFormattedDateString({\n month: newMonth,\n day,\n year,\n });\n const finalMetaInfo: DSControlledDateTimePickerT.InternalInputsChangeMetaInfo = {\n ...metaInfo,\n ...getValidationDateStringMetaInfo(newDateString, getIsOutOfRangeDay, getIsDisabledDay),\n newDateString,\n };\n appOnMonthChange(newMonth, e, finalMetaInfo);\n handleChangeComposedDateString(newDateString, finalMetaInfo);\n },\n [day, year, getIsOutOfRangeDay, getIsDisabledDay, appOnMonthChange, handleChangeComposedDateString],\n );\n const onMonthFocus: DSControlledDateTimePickerInternalsT.OnFocusFunc = useCallback(() => {\n trackFocusMonthInput();\n }, [trackFocusMonthInput]);\n const onMonthChange: DSControlledDateTimePickerInternalsT.OnChangeFunc = useCallback(\n (e) => {\n let newMonth = e?.target?.value;\n // converts months 2~9 to 02~09\n if (Number.parseInt(newMonth, 10) > 1) newMonth = prependStringWithPlaceHolders(newMonth, 2);\n handleChangeMonth(newMonth, e);\n // auto-advance functionality:\n if (newMonth.length === 2) trackFocusDayInput();\n },\n [handleChangeMonth, trackFocusDayInput],\n );\n const onMonthKeyDown: DSControlledDateTimePickerInternalsT.OnKeyDown = useCallback(\n (e) => {\n const { key, ctrlKey, metaKey } = e;\n const monthStringConvertedToInteger = Number.parseInt(month, 10);\n if (['Home', 'End', 'ArrowUp', 'ArrowDown', '-', '/', '\\\\'].includes(key)) e.preventDefault();\n if (['Home', 'End', 'ArrowUp', 'ArrowDown', '-', '/', '\\\\'].includes(key)) e.stopPropagation();\n if (key === 'Home') onHomeKeyDown();\n if (key === 'End') onEndKeyDown();\n if (key === 'ArrowUp' || key === 'ArrowDown') {\n const monthInteger = Number.isNaN(monthStringConvertedToInteger) ? 0 : monthStringConvertedToInteger;\n let newMonth;\n if (key === 'ArrowUp') newMonth = monthInteger + 1 <= 12 ? monthInteger + 1 : monthInteger;\n else newMonth = monthInteger - 1 > 0 ? monthInteger - 1 : 1;\n newMonth = prependStringWithPlaceHolders(`${newMonth}`, 2);\n handleChangeMonth(newMonth, e);\n }\n if (!Number.isNaN(monthStringConvertedToInteger) && (key === '-' || key === '/' || key === '\\\\')) {\n const newMonth = prependStringWithPlaceHolders(`${monthStringConvertedToInteger}`, 2);\n handleChangeMonth(newMonth, e);\n // auto-advance functionality:\n if (newMonth.length === 2) trackFocusDayInput();\n }\n\n // focus last fragment on fill with now\n if ((ctrlKey || metaKey) && key === ';') trackFocusLastSegment();\n },\n [month, onHomeKeyDown, onEndKeyDown, trackFocusLastSegment, trackFocusDayInput, handleChangeMonth],\n );\n\n const handleChangeDay = useCallback(\n (\n newDay: string,\n e: DSControlledDateTimePickerT.OnInternalValuesChangeEvent,\n metaInfo: Partial<DSControlledDateTimePickerT.InternalInputsChangeMetaInfo> = defaultMetaInfo,\n ) => {\n const newDateString = getFormattedDateString({\n month,\n day: newDay,\n year,\n });\n const finalMetaInfo: DSControlledDateTimePickerT.InternalInputsChangeMetaInfo = {\n ...metaInfo,\n ...getValidationDateStringMetaInfo(newDateString, getIsOutOfRangeDay, getIsDisabledDay),\n newDateString,\n };\n appOnDayChange(newDay, e, finalMetaInfo);\n handleChangeComposedDateString(newDateString, finalMetaInfo);\n },\n [month, year, getIsOutOfRangeDay, getIsDisabledDay, appOnDayChange, handleChangeComposedDateString],\n );\n const onDayFocus: DSControlledDateTimePickerInternalsT.OnFocusFunc = useCallback(() => {\n trackFocusDayInput();\n }, [trackFocusDayInput]);\n const onDayChange: DSControlledDateTimePickerInternalsT.OnChangeFunc = useCallback(\n (e) => {\n let newDay = e?.target?.value;\n // converts days 4~9 to 04~09\n if (Number.parseInt(newDay, 10) > 3) newDay = prependStringWithPlaceHolders(newDay, 2);\n handleChangeDay(newDay, e);\n // auto-advance functionality:\n if (newDay.length === 2) trackFocusYearInput();\n },\n [handleChangeDay, trackFocusYearInput],\n );\n const onDayKeyDown: DSControlledDateTimePickerInternalsT.OnKeyDown = useCallback(\n (e) => {\n const { key, ctrlKey, metaKey, target, currentTarget } = e;\n const dayStringConvertedToInteger = Number.parseInt(day, 10);\n if (['Home', 'End', 'ArrowUp', 'ArrowDown', '-', '/', '\\\\'].includes(key)) e.preventDefault();\n if (['Home', 'End', 'ArrowUp', 'ArrowDown', '-', '/', '\\\\'].includes(key)) e.stopPropagation();\n\n if (key === 'Home') onHomeKeyDown();\n if (key === 'End') onEndKeyDown();\n if (key === 'ArrowUp' || key === 'ArrowDown') {\n const dayInteger = Number.isNaN(dayStringConvertedToInteger) ? 0 : dayStringConvertedToInteger;\n let newDay;\n if (key === 'ArrowUp') newDay = dayInteger + 1 <= 31 ? dayInteger + 1 : dayInteger;\n else newDay = dayInteger - 1 > 0 ? dayInteger - 1 : 1;\n newDay = prependStringWithPlaceHolders(`${newDay}`, 2);\n handleChangeDay(newDay, e);\n }\n if (!Number.isNaN(dayStringConvertedToInteger) && (key === '-' || key === '/' || key === '\\\\')) {\n const newDay = prependStringWithPlaceHolders(`${dayStringConvertedToInteger}`, 2);\n handleChangeDay(newDay, e);\n // auto-advance functionality:\n if (newDay.length === 2) trackFocusYearInput();\n }\n // regressive backspace functionality\n if (\n key === 'Backspace' &&\n target === currentTarget &&\n (target as HTMLInputElement).selectionStart === 0 &&\n (target as HTMLInputElement).selectionEnd === 0\n ) {\n trackFocusMonthInput();\n }\n // focus last fragment on fill with now\n if ((ctrlKey || metaKey) && key === ';') trackFocusLastSegment();\n },\n [\n day,\n onHomeKeyDown,\n onEndKeyDown,\n trackFocusLastSegment,\n handleChangeDay,\n trackFocusYearInput,\n trackFocusMonthInput,\n ],\n );\n\n const handleChangeYear = useCallback(\n (\n newYear: string,\n e: DSControlledDateTimePickerT.OnInternalValuesChangeEvent,\n metaInfo: Partial<DSControlledDateTimePickerT.InternalInputsChangeMetaInfo> = defaultMetaInfo,\n ) => {\n const newDateString = getFormattedDateString({\n month,\n day,\n year: newYear,\n });\n const finalMetaInfo: DSControlledDateTimePickerT.InternalInputsChangeMetaInfo = {\n ...metaInfo,\n ...getValidationDateStringMetaInfo(newDateString, getIsOutOfRangeDay, getIsDisabledDay),\n newDateString,\n };\n appOnYearChange(newYear, e, finalMetaInfo);\n handleChangeComposedDateString(newDateString, finalMetaInfo);\n },\n [month, day, getIsOutOfRangeDay, getIsDisabledDay, appOnYearChange, handleChangeComposedDateString],\n );\n const onYearFocus: DSControlledDateTimePickerInternalsT.OnFocusFunc = useCallback(() => {\n trackFocusYearInput();\n }, [trackFocusYearInput]);\n const onYearChange: DSControlledDateTimePickerInternalsT.OnChangeFunc = useCallback(\n (e) => {\n const newYear = e?.target?.value;\n handleChangeYear(newYear, e);\n // auto-advance functionality:\n if (newYear.length === 4) {\n if (!hideTime) trackFocusHourInput();\n else if (withAnyRightController) {\n if (withClearBtn) trackFocusClearBtn();\n else if (withAnyPicker) trackFocusPicker();\n // pending approval from Seda, check which one should be focused first...\n }\n }\n },\n [\n handleChangeYear,\n hideTime,\n trackFocusHourInput,\n withAnyRightController,\n withClearBtn,\n trackFocusClearBtn,\n withAnyPicker,\n trackFocusPicker,\n ],\n );\n const onYearKeyDown: DSControlledDateTimePickerInternalsT.OnKeyDown = useCallback(\n (e) => {\n const { key, ctrlKey, metaKey, target, currentTarget } = e;\n\n /* ****** New year value calculator logic ********* */\n const yearStringConvertedToInteger = Number.parseInt(year, 10);\n const yearInteger = Number.isNaN(yearStringConvertedToInteger) ? 0 : yearStringConvertedToInteger;\n let newYear = yearInteger !== 0 ? fillStringWithPlaceHolders(`${yearInteger}`, 4, '0') : '';\n if (key === 'ArrowUp' || key === 'ArrowDown') {\n let newYearInteger;\n if (key === 'ArrowUp') newYearInteger = yearInteger + 1 <= 9999 ? yearInteger + 1 : yearInteger;\n else newYearInteger = yearInteger - 1 > 0 ? yearInteger - 1 : 1;\n newYear = prependStringWithPlaceHolders(`${newYearInteger}`, 4);\n }\n const isAutomaticFillTrigger = newYear !== year && ['Tab', ' '].includes(key);\n const metainfo = { isAutomaticFillTrigger };\n\n /* ************* new year apply logic ************* */\n // tab/spacebar applies auto-fill\n // arrows up/down applies increment/decrement\n if (key === 'ArrowUp' || key === 'ArrowDown' || isAutomaticFillTrigger) {\n handleChangeYear(newYear, e, metainfo);\n }\n\n /* ************* focus tracking logic ************* */\n let trackNextFocus = trackFocusResetter; // if nothing after, we reset internal focus tracker to avoid re-render unexpected focus shift\n if (!hideTime) trackNextFocus = trackFocusHourInput;\n else if (withClearBtn) trackNextFocus = trackFocusClearBtn;\n else if (withAnyPicker) trackNextFocus = trackFocusPicker;\n\n if (['Home', 'End', 'ArrowUp', 'ArrowDown', ' '].includes(key)) e.preventDefault();\n if (['Home', 'End', 'ArrowUp', 'ArrowDown', ' '].includes(key)) e.stopPropagation();\n if (key === 'Home') onHomeKeyDown();\n if (key === 'End') onEndKeyDown();\n\n /* ************** auto-advance logic ************** */\n if (key === ' ') {\n // auto-advance functionality:\n trackNextFocus();\n }\n /* ********** regressive backspace logic ********** */\n if (\n key === 'Backspace' &&\n target === currentTarget &&\n (target as HTMLInputElement).selectionStart === 0 &&\n (target as HTMLInputElement).selectionEnd === 0\n ) {\n trackFocusDayInput();\n }\n\n // focus last fragment on fill with now\n if ((ctrlKey || metaKey) && key === ';') trackFocusLastSegment();\n },\n [\n year,\n trackFocusResetter,\n hideTime,\n trackFocusHourInput,\n withClearBtn,\n trackFocusClearBtn,\n withAnyPicker,\n trackFocusPicker,\n onHomeKeyDown,\n onEndKeyDown,\n trackFocusLastSegment,\n trackFocusDayInput,\n handleChangeYear,\n ],\n );\n const onYearBlur: DSControlledDateTimePickerInternalsT.OnBlurFunc = useCallback((e) => {\n // this was used before, now that we have a wrapping onBlur resetting the focus tracker, this is unused;\n e?.target.setSelectionRange(e?.target?.value.length, e?.target?.value.length);\n }, []);\n\n const onDayBlur: DSControlledDateTimePickerInternalsT.OnBlurFunc = useCallback(\n (e) => {\n const newDay = e?.target?.value;\n if (newDay === '0') handleChangeDay('01', e, { isAutomaticFillTrigger: true });\n else if (newDay.length > 0 && newDay.length < 2)\n handleChangeDay(prependStringWithPlaceHolders(newDay, 2), e, {\n isAutomaticFillTrigger: true,\n });\n e?.target.setSelectionRange(e?.target?.value.length, e?.target?.value.length);\n },\n [handleChangeDay],\n );\n\n const onMonthBlur: DSControlledDateTimePickerInternalsT.OnBlurFunc = useCallback(\n (e) => {\n const newMonth = e?.target?.value;\n if (newMonth === '0') handleChangeMonth('01', e, { isAutomaticFillTrigger: true });\n else if (newMonth.length > 0 && newMonth.length < 2)\n handleChangeMonth(prependStringWithPlaceHolders(newMonth, 2), e, {\n isAutomaticFillTrigger: true,\n });\n\n e?.target.setSelectionRange(e?.target?.value.length, e?.target?.value.length);\n },\n [handleChangeMonth],\n );\n\n return useMemo(\n () => ({\n month,\n day,\n year,\n autoFocusMonthInput,\n innerRefMonthInput,\n disabled,\n onMonthFocus,\n onMonthChange,\n onDayFocus,\n onDayChange,\n onYearFocus,\n onYearChange,\n onMonthBlur,\n onDayBlur,\n onYearBlur,\n onMonthKeyDown,\n onDayKeyDown,\n onYearKeyDown,\n }),\n [\n month,\n day,\n year,\n autoFocusMonthInput,\n innerRefMonthInput,\n disabled,\n onMonthFocus,\n onMonthChange,\n onDayFocus,\n onDayChange,\n onYearFocus,\n onYearChange,\n onMonthBlur,\n onDayBlur,\n onYearBlur,\n onMonthKeyDown,\n onDayKeyDown,\n onYearKeyDown,\n ],\n );\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/* eslint-disable complexity */\n/* eslint-disable max-statements */\n/* eslint-disable max-lines */\nimport { useCallback, useMemo, useContext } from 'react';\nimport { ControlledDateTimePickerContext } from '../../ControlledDateTimePickerCTX';\nimport {\n getFormattedDateString,\n prependStringWithPlaceHolders,\n fillStringWithPlaceHolders,\n} from '../../utils/stringHelpers';\nimport { getValidationDateStringMetaInfo } from '../../utils/dateHelpers';\nimport { defaultMetaInfo } from '../../utils/constants';\nimport type { DSControlledDateTimePickerInternalsT } from '../../sharedTypes';\nimport type { DSControlledDateTimePickerT } from '../../propTypes';\n\nexport const useDateInputs = (): DSControlledDateTimePickerInternalsT.UseDateInputsR => {\n const {\n props: { disabled },\n appOnMonthChange,\n appOnDayChange,\n appOnYearChange,\n getIsDisabledDay,\n getIsOutOfRangeDay,\n month,\n day,\n year,\n hideTime,\n handleChangeComposedDateString,\n withClearBtn,\n withAnyPicker,\n withAnyRightController,\n autoFocusMonthInput,\n innerRefMonthInput,\n trackFocusResetter,\n trackFocusFirstSegment,\n trackFocusLastSegment,\n trackFocusDayInput,\n trackFocusMonthInput,\n trackFocusYearInput,\n trackFocusHourInput,\n trackFocusClearBtn,\n trackFocusPicker,\n } = useContext(ControlledDateTimePickerContext);\n\n const onHomeKeyDown = useCallback(() => {\n trackFocusFirstSegment();\n }, [trackFocusFirstSegment]);\n const onEndKeyDown = useCallback(() => {\n trackFocusLastSegment();\n }, [trackFocusLastSegment]);\n\n const handleChangeMonth = useCallback(\n (\n newMonth: string,\n e: DSControlledDateTimePickerT.OnInternalValuesChangeEvent,\n metaInfo: Partial<DSControlledDateTimePickerT.InternalInputsChangeMetaInfo> = defaultMetaInfo,\n ) => {\n const newDateString = getFormattedDateString({\n month: newMonth,\n day,\n year,\n });\n const finalMetaInfo: DSControlledDateTimePickerT.InternalInputsChangeMetaInfo = {\n ...metaInfo,\n ...getValidationDateStringMetaInfo(newDateString, getIsOutOfRangeDay, getIsDisabledDay),\n newDateString,\n };\n appOnMonthChange(newMonth, e, finalMetaInfo);\n handleChangeComposedDateString(newDateString, finalMetaInfo);\n },\n [day, year, getIsOutOfRangeDay, getIsDisabledDay, appOnMonthChange, handleChangeComposedDateString],\n );\n const onMonthFocus: DSControlledDateTimePickerInternalsT.OnFocusFunc = useCallback(() => {\n trackFocusMonthInput();\n }, [trackFocusMonthInput]);\n const onMonthChange: DSControlledDateTimePickerInternalsT.OnChangeFunc = useCallback(\n (e) => {\n let newMonth = e?.target?.value;\n // converts months 2~9 to 02~09\n if (Number.parseInt(newMonth, 10) > 1) newMonth = prependStringWithPlaceHolders(newMonth, 2);\n handleChangeMonth(newMonth, e);\n // auto-advance functionality:\n if (newMonth.length === 2) trackFocusDayInput();\n },\n [handleChangeMonth, trackFocusDayInput],\n );\n const onMonthKeyDown: DSControlledDateTimePickerInternalsT.OnKeyDown = useCallback(\n (e) => {\n const { key, ctrlKey, metaKey } = e;\n const monthStringConvertedToInteger = Number.parseInt(month, 10);\n if (['Home', 'End', 'ArrowUp', 'ArrowDown', '-', '/', '\\\\'].includes(key)) e.preventDefault();\n if (['Home', 'End', 'ArrowUp', 'ArrowDown', '-', '/', '\\\\'].includes(key)) e.stopPropagation();\n if (key === 'Home') onHomeKeyDown();\n if (key === 'End') onEndKeyDown();\n if (key === 'ArrowUp' || key === 'ArrowDown') {\n const monthInteger = Number.isNaN(monthStringConvertedToInteger) ? 0 : monthStringConvertedToInteger;\n let newMonth;\n if (key === 'ArrowUp') newMonth = monthInteger + 1 <= 12 ? monthInteger + 1 : monthInteger;\n else newMonth = monthInteger - 1 > 0 ? monthInteger - 1 : 1;\n newMonth = prependStringWithPlaceHolders(`${newMonth}`, 2);\n handleChangeMonth(newMonth, e);\n }\n if (!Number.isNaN(monthStringConvertedToInteger) && (key === '-' || key === '/' || key === '\\\\')) {\n const newMonth = prependStringWithPlaceHolders(`${monthStringConvertedToInteger}`, 2);\n handleChangeMonth(newMonth, e);\n // auto-advance functionality:\n if (newMonth.length === 2) trackFocusDayInput();\n }\n\n // focus last fragment on fill with now\n if ((ctrlKey || metaKey) && key === ';') trackFocusLastSegment();\n },\n [month, onHomeKeyDown, onEndKeyDown, trackFocusLastSegment, trackFocusDayInput, handleChangeMonth],\n );\n\n const handleChangeDay = useCallback(\n (\n newDay: string,\n e: DSControlledDateTimePickerT.OnInternalValuesChangeEvent,\n metaInfo: Partial<DSControlledDateTimePickerT.InternalInputsChangeMetaInfo> = defaultMetaInfo,\n ) => {\n const newDateString = getFormattedDateString({\n month,\n day: newDay,\n year,\n });\n const finalMetaInfo: DSControlledDateTimePickerT.InternalInputsChangeMetaInfo = {\n ...metaInfo,\n ...getValidationDateStringMetaInfo(newDateString, getIsOutOfRangeDay, getIsDisabledDay),\n newDateString,\n };\n appOnDayChange(newDay, e, finalMetaInfo);\n handleChangeComposedDateString(newDateString, finalMetaInfo);\n },\n [month, year, getIsOutOfRangeDay, getIsDisabledDay, appOnDayChange, handleChangeComposedDateString],\n );\n const onDayFocus: DSControlledDateTimePickerInternalsT.OnFocusFunc = useCallback(() => {\n trackFocusDayInput();\n }, [trackFocusDayInput]);\n const onDayChange: DSControlledDateTimePickerInternalsT.OnChangeFunc = useCallback(\n (e) => {\n let newDay = e?.target?.value;\n // converts days 4~9 to 04~09\n if (Number.parseInt(newDay, 10) > 3) newDay = prependStringWithPlaceHolders(newDay, 2);\n handleChangeDay(newDay, e);\n // auto-advance functionality:\n if (newDay.length === 2) trackFocusYearInput();\n },\n [handleChangeDay, trackFocusYearInput],\n );\n const onDayKeyDown: DSControlledDateTimePickerInternalsT.OnKeyDown = useCallback(\n (e) => {\n const { key, ctrlKey, metaKey, target, currentTarget } = e;\n const dayStringConvertedToInteger = Number.parseInt(day, 10);\n if (['Home', 'End', 'ArrowUp', 'ArrowDown', '-', '/', '\\\\'].includes(key)) e.preventDefault();\n if (['Home', 'End', 'ArrowUp', 'ArrowDown', '-', '/', '\\\\'].includes(key)) e.stopPropagation();\n\n if (key === 'Home') onHomeKeyDown();\n if (key === 'End') onEndKeyDown();\n if (key === 'ArrowUp' || key === 'ArrowDown') {\n const dayInteger = Number.isNaN(dayStringConvertedToInteger) ? 0 : dayStringConvertedToInteger;\n let newDay;\n if (key === 'ArrowUp') newDay = dayInteger + 1 <= 31 ? dayInteger + 1 : dayInteger;\n else newDay = dayInteger - 1 > 0 ? dayInteger - 1 : 1;\n newDay = prependStringWithPlaceHolders(`${newDay}`, 2);\n handleChangeDay(newDay, e);\n }\n if (!Number.isNaN(dayStringConvertedToInteger) && (key === '-' || key === '/' || key === '\\\\')) {\n const newDay = prependStringWithPlaceHolders(`${dayStringConvertedToInteger}`, 2);\n handleChangeDay(newDay, e);\n // auto-advance functionality:\n if (newDay.length === 2) trackFocusYearInput();\n }\n // regressive backspace functionality\n if (\n key === 'Backspace' &&\n target === currentTarget &&\n (target as HTMLInputElement).selectionStart === 0 &&\n (target as HTMLInputElement).selectionEnd === 0\n ) {\n e.preventDefault();\n trackFocusMonthInput();\n }\n // focus last fragment on fill with now\n if ((ctrlKey || metaKey) && key === ';') trackFocusLastSegment();\n },\n [\n day,\n onHomeKeyDown,\n onEndKeyDown,\n trackFocusLastSegment,\n handleChangeDay,\n trackFocusYearInput,\n trackFocusMonthInput,\n ],\n );\n\n const handleChangeYear = useCallback(\n (\n newYear: string,\n e: DSControlledDateTimePickerT.OnInternalValuesChangeEvent,\n metaInfo: Partial<DSControlledDateTimePickerT.InternalInputsChangeMetaInfo> = defaultMetaInfo,\n ) => {\n const newDateString = getFormattedDateString({\n month,\n day,\n year: newYear,\n });\n const finalMetaInfo: DSControlledDateTimePickerT.InternalInputsChangeMetaInfo = {\n ...metaInfo,\n ...getValidationDateStringMetaInfo(newDateString, getIsOutOfRangeDay, getIsDisabledDay),\n newDateString,\n };\n appOnYearChange(newYear, e, finalMetaInfo);\n handleChangeComposedDateString(newDateString, finalMetaInfo);\n },\n [month, day, getIsOutOfRangeDay, getIsDisabledDay, appOnYearChange, handleChangeComposedDateString],\n );\n const onYearFocus: DSControlledDateTimePickerInternalsT.OnFocusFunc = useCallback(() => {\n trackFocusYearInput();\n }, [trackFocusYearInput]);\n const onYearChange: DSControlledDateTimePickerInternalsT.OnChangeFunc = useCallback(\n (e) => {\n const newYear = e?.target?.value;\n handleChangeYear(newYear, e);\n // auto-advance functionality:\n if (newYear.length === 4) {\n if (!hideTime) trackFocusHourInput();\n else if (withAnyRightController) {\n if (withClearBtn) trackFocusClearBtn();\n else if (withAnyPicker) trackFocusPicker();\n // pending approval from Seda, check which one should be focused first...\n }\n }\n },\n [\n handleChangeYear,\n hideTime,\n trackFocusHourInput,\n withAnyRightController,\n withClearBtn,\n trackFocusClearBtn,\n withAnyPicker,\n trackFocusPicker,\n ],\n );\n const onYearKeyDown: DSControlledDateTimePickerInternalsT.OnKeyDown = useCallback(\n (e) => {\n const { key, ctrlKey, metaKey, target, currentTarget } = e;\n\n /* ****** New year value calculator logic ********* */\n const yearStringConvertedToInteger = Number.parseInt(year, 10);\n const yearInteger = Number.isNaN(yearStringConvertedToInteger) ? 0 : yearStringConvertedToInteger;\n let newYear = yearInteger !== 0 ? fillStringWithPlaceHolders(`${yearInteger}`, 4, '0') : '';\n if (key === 'ArrowUp' || key === 'ArrowDown') {\n let newYearInteger;\n if (key === 'ArrowUp') newYearInteger = yearInteger + 1 <= 9999 ? yearInteger + 1 : yearInteger;\n else newYearInteger = yearInteger - 1 > 0 ? yearInteger - 1 : 1;\n newYear = prependStringWithPlaceHolders(`${newYearInteger}`, 4);\n }\n const isAutomaticFillTrigger = newYear !== year && ['Tab', ' '].includes(key);\n const metainfo = { isAutomaticFillTrigger };\n\n /* ************* new year apply logic ************* */\n // tab/spacebar applies auto-fill\n // arrows up/down applies increment/decrement\n if (key === 'ArrowUp' || key === 'ArrowDown' || isAutomaticFillTrigger) {\n handleChangeYear(newYear, e, metainfo);\n }\n\n /* ************* focus tracking logic ************* */\n let trackNextFocus = trackFocusResetter; // if nothing after, we reset internal focus tracker to avoid re-render unexpected focus shift\n if (!hideTime) trackNextFocus = trackFocusHourInput;\n else if (withClearBtn) trackNextFocus = trackFocusClearBtn;\n else if (withAnyPicker) trackNextFocus = trackFocusPicker;\n\n if (['Home', 'End', 'ArrowUp', 'ArrowDown', ' '].includes(key)) e.preventDefault();\n if (['Home', 'End', 'ArrowUp', 'ArrowDown', ' '].includes(key)) e.stopPropagation();\n if (key === 'Home') onHomeKeyDown();\n if (key === 'End') onEndKeyDown();\n\n /* ************** auto-advance logic ************** */\n if (key === ' ') {\n // auto-advance functionality:\n trackNextFocus();\n }\n /* ********** regressive backspace logic ********** */\n if (\n key === 'Backspace' &&\n target === currentTarget &&\n (target as HTMLInputElement).selectionStart === 0 &&\n (target as HTMLInputElement).selectionEnd === 0\n ) {\n e.preventDefault();\n trackFocusDayInput();\n }\n\n // focus last fragment on fill with now\n if ((ctrlKey || metaKey) && key === ';') trackFocusLastSegment();\n },\n [\n year,\n trackFocusResetter,\n hideTime,\n trackFocusHourInput,\n withClearBtn,\n trackFocusClearBtn,\n withAnyPicker,\n trackFocusPicker,\n onHomeKeyDown,\n onEndKeyDown,\n trackFocusLastSegment,\n trackFocusDayInput,\n handleChangeYear,\n ],\n );\n const onYearBlur: DSControlledDateTimePickerInternalsT.OnBlurFunc = useCallback((e) => {\n // this was used before, now that we have a wrapping onBlur resetting the focus tracker, this is unused;\n }, []);\n\n const onDayBlur: DSControlledDateTimePickerInternalsT.OnBlurFunc = useCallback(\n (e) => {\n const newDay = e?.target?.value;\n if (newDay === '0') handleChangeDay('01', e, { isAutomaticFillTrigger: true });\n else if (newDay.length > 0 && newDay.length < 2)\n handleChangeDay(prependStringWithPlaceHolders(newDay, 2), e, {\n isAutomaticFillTrigger: true,\n });\n },\n [handleChangeDay],\n );\n\n const onMonthBlur: DSControlledDateTimePickerInternalsT.OnBlurFunc = useCallback(\n (e) => {\n const newMonth = e?.target?.value;\n if (newMonth === '0') handleChangeMonth('01', e, { isAutomaticFillTrigger: true });\n else if (newMonth.length > 0 && newMonth.length < 2)\n handleChangeMonth(prependStringWithPlaceHolders(newMonth, 2), e, {\n isAutomaticFillTrigger: true,\n });\n },\n [handleChangeMonth],\n );\n\n return useMemo(\n () => ({\n month,\n day,\n year,\n autoFocusMonthInput,\n innerRefMonthInput,\n disabled,\n onMonthFocus,\n onMonthChange,\n onDayFocus,\n onDayChange,\n onYearFocus,\n onYearChange,\n onMonthBlur,\n onDayBlur,\n onYearBlur,\n onMonthKeyDown,\n onDayKeyDown,\n onYearKeyDown,\n }),\n [\n month,\n day,\n year,\n autoFocusMonthInput,\n innerRefMonthInput,\n disabled,\n onMonthFocus,\n onMonthChange,\n onDayFocus,\n onDayChange,\n onYearFocus,\n onYearChange,\n onMonthBlur,\n onDayBlur,\n onYearBlur,\n onMonthKeyDown,\n onDayKeyDown,\n onYearKeyDown,\n ],\n );\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -104,6 +104,7 @@ const useTimeInputs = () => {
104
104
  trackFocusMinuteInput();
105
105
  }
106
106
  if (key === "Backspace" && e.target === e.currentTarget && isWithDateInputs && e.target.selectionStart === 0 && e.target.selectionEnd === 0) {
107
+ e.preventDefault();
107
108
  trackFocusYearInput();
108
109
  }
109
110
  if ((ctrlKey || metaKey) && key === ";")
@@ -129,7 +130,6 @@ const useTimeInputs = () => {
129
130
  handleChangeHours((0, import_stringHelpers.prependStringWithPlaceHolders)(newHours, 2), e, {
130
131
  isAutomaticFillTrigger: true
131
132
  });
132
- e?.target.setSelectionRange(e?.target?.value.length, e?.target?.value.length);
133
133
  },
134
134
  [handleChangeHours]
135
135
  );
@@ -176,6 +176,7 @@ const useTimeInputs = () => {
176
176
  trackFocusMeridiemInput();
177
177
  }
178
178
  if (key === "Backspace" && e.target === e.currentTarget && e.target.selectionStart === 0 && e.target.selectionEnd === 0) {
179
+ e.preventDefault();
179
180
  trackFocusHourInput();
180
181
  }
181
182
  if ((ctrlKey || metaKey) && key === ";")
@@ -199,7 +200,6 @@ const useTimeInputs = () => {
199
200
  handleChangeMinutes((0, import_stringHelpers.prependStringWithPlaceHolders)(newMinutes, 2), e, {
200
201
  isAutomaticFillTrigger: true
201
202
  });
202
- e?.target.setSelectionRange(e?.target?.value.length, e?.target?.value.length);
203
203
  },
204
204
  [handleChangeMinutes]
205
205
  );
@@ -249,6 +249,7 @@ const useTimeInputs = () => {
249
249
  handleChangeMeridiem("PM", e);
250
250
  if (key === "Backspace") {
251
251
  if (e.target === e.currentTarget && e.target.selectionStart === 0 && e.target.selectionEnd === 0) {
252
+ e.preventDefault();
252
253
  trackFocusMinuteInput();
253
254
  } else if (meridiem?.length === 2)
254
255
  handleChangeMeridiem("", e);
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/parts/TimeInputs/useTimeInputs.tsx", "../../../../../../scripts/build/transpile/react-shim.js"],
4
- "sourcesContent": ["/* eslint-disable complexity */\n/* eslint-disable max-statements */\n/* eslint-disable max-lines */\nimport { useCallback, useMemo, useContext } from 'react';\nimport { ControlledDateTimePickerContext } from '../../ControlledDateTimePickerCTX';\nimport { prependStringWithPlaceHolders } from '../../utils/stringHelpers';\nimport type { DSControlledDateTimePickerInternalsT } from '../../sharedTypes';\ninterface UseTimeInputsR {\n autoFocusHourInput: boolean;\n disabled: boolean;\n handleChangeHours: DSControlledDateTimePickerInternalsT.HandleOnChangeFunc;\n onHoursChange: DSControlledDateTimePickerInternalsT.OnChangeFunc;\n handleChangeMinutes: DSControlledDateTimePickerInternalsT.HandleOnChangeFunc;\n onMinutesChange: DSControlledDateTimePickerInternalsT.OnChangeFunc;\n handleChangeMeridiem: DSControlledDateTimePickerInternalsT.HandleOnChangeFunc;\n onMeridiemChange: DSControlledDateTimePickerInternalsT.OnChangeFunc;\n onHoursFocus: DSControlledDateTimePickerInternalsT.OnFocusFunc;\n onMinutesFocus: DSControlledDateTimePickerInternalsT.OnFocusFunc;\n onMeridiemFocus: DSControlledDateTimePickerInternalsT.OnFocusFunc;\n onHoursBlur: DSControlledDateTimePickerInternalsT.OnBlurFunc;\n onMinutesBlur: DSControlledDateTimePickerInternalsT.OnBlurFunc;\n onMeridiemBlur: DSControlledDateTimePickerInternalsT.OnBlurFunc;\n onHoursKeyDown: DSControlledDateTimePickerInternalsT.OnKeyDown;\n onMinutesKeyDown: DSControlledDateTimePickerInternalsT.OnKeyDown;\n onMeridiemKeyDown: DSControlledDateTimePickerInternalsT.OnKeyDown;\n}\nexport const useTimeInputs = (): UseTimeInputsR => {\n const {\n props: { disabled },\n hours,\n minutes,\n meridiem,\n withAnyRightController,\n withAnyPicker,\n withClearBtn,\n isWithDateInputs,\n autoFocusHourInput,\n handleChangeHours,\n handleChangeMinutes,\n handleChangeMeridiem,\n minutesInterval,\n trackFocusFirstSegment,\n trackFocusLastSegment,\n trackFocusHourInput,\n trackFocusMinuteInput,\n trackFocusMeridiemInput,\n trackFocusClearBtn,\n trackFocusPicker,\n trackFocusYearInput,\n } = useContext(ControlledDateTimePickerContext);\n\n const onHomeKeyDown = useCallback(() => {\n trackFocusFirstSegment();\n }, [trackFocusFirstSegment]);\n const onEndKeyDown = useCallback(() => {\n trackFocusLastSegment();\n }, [trackFocusLastSegment]);\n\n const onHoursFocus: DSControlledDateTimePickerInternalsT.OnFocusFunc = useCallback(() => {\n trackFocusHourInput();\n }, [trackFocusHourInput]);\n const onHoursChange: DSControlledDateTimePickerInternalsT.OnChangeFunc = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n let newHours = e?.target?.value;\n // converts hours 2~9 to 07~09\n if (Number.parseInt(newHours, 10) > 1) newHours = prependStringWithPlaceHolders(newHours, 2);\n handleChangeHours(newHours, e);\n // auto-advance functionality:\n if (newHours.length === 2) trackFocusMinuteInput();\n },\n [handleChangeHours, trackFocusMinuteInput],\n );\n const onHoursKeyDown: DSControlledDateTimePickerInternalsT.OnKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n const { key, ctrlKey, metaKey } = e;\n const hoursStringConvertedToInteger = Number.parseInt(hours, 10);\n\n if (['Home', 'End', 'ArrowUp', 'ArrowDown', ':'].includes(key)) e.preventDefault();\n if (['Home', 'End', 'ArrowUp', 'ArrowDown', ':'].includes(key)) e.stopPropagation();\n if (key === 'Home') onHomeKeyDown();\n if (key === 'End') onEndKeyDown();\n if (key === 'ArrowUp' || key === 'ArrowDown') {\n const hoursInteger = Number.isNaN(hoursStringConvertedToInteger) ? 0 : hoursStringConvertedToInteger;\n let newHours;\n if (key === 'ArrowUp') newHours = hoursInteger + 1 <= 12 ? hoursInteger + 1 : hoursInteger;\n else newHours = hoursInteger - 1 > 1 ? hoursInteger - 1 : 1;\n newHours = prependStringWithPlaceHolders(`${newHours}`, 2);\n handleChangeHours(newHours, e);\n }\n if (!Number.isNaN(hoursStringConvertedToInteger) && key === ':') {\n const newHours = prependStringWithPlaceHolders(`${hoursStringConvertedToInteger}`, 2);\n handleChangeHours(newHours, e);\n // auto-advance functionality:\n if (newHours.length === 2) trackFocusMinuteInput();\n }\n\n // regressive backspace functionality\n if (\n key === 'Backspace' &&\n e.target === e.currentTarget &&\n isWithDateInputs &&\n (e.target as HTMLInputElement).selectionStart === 0 &&\n (e.target as HTMLInputElement).selectionEnd === 0\n ) {\n trackFocusYearInput();\n }\n // focus last fragment on fill with now\n if ((ctrlKey || metaKey) && key === ';') trackFocusLastSegment();\n },\n [\n hours,\n isWithDateInputs,\n trackFocusYearInput,\n onHomeKeyDown,\n onEndKeyDown,\n trackFocusLastSegment,\n trackFocusMinuteInput,\n handleChangeHours,\n ],\n );\n const onHoursBlur: DSControlledDateTimePickerInternalsT.OnBlurFunc = useCallback(\n (e: React.FocusEvent<HTMLInputElement>) => {\n const newHours = e?.target?.value;\n if (newHours === '0') handleChangeHours('01', e, { isAutomaticFillTrigger: true });\n else if (newHours.length > 0 && newHours.length < 2)\n handleChangeHours(prependStringWithPlaceHolders(newHours, 2), e, {\n isAutomaticFillTrigger: true,\n });\n\n e?.target.setSelectionRange(e?.target?.value.length, e?.target?.value.length);\n },\n [handleChangeHours],\n );\n\n const onMinutesFocus: DSControlledDateTimePickerInternalsT.OnFocusFunc = useCallback(() => {\n trackFocusMinuteInput();\n }, [trackFocusMinuteInput]);\n const onMinutesChange: DSControlledDateTimePickerInternalsT.OnChangeFunc = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n let newMinutes = e?.target?.value;\n // converts minutes 7~9 to 07~09\n if (Number.parseInt(newMinutes, 10) > 6) newMinutes = prependStringWithPlaceHolders(newMinutes, 2);\n handleChangeMinutes(newMinutes, e);\n\n // auto-advance functionality:\n if (newMinutes.length === 2) trackFocusMeridiemInput();\n },\n [handleChangeMinutes, trackFocusMeridiemInput],\n );\n const onMinutesKeyDown: DSControlledDateTimePickerInternalsT.OnKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n const { key, ctrlKey, metaKey } = e;\n const minutesStringConvertedToInteger = Number.parseInt(minutes, 10);\n if (['Home', 'End', 'ArrowUp', 'ArrowDown', ' '].includes(key)) e.preventDefault();\n if (['Home', 'End', 'ArrowUp', 'ArrowDown', ' '].includes(key)) e.stopPropagation();\n\n if (key === 'Home') onHomeKeyDown();\n if (key === 'End') onEndKeyDown();\n if (key === 'ArrowUp' || key === 'ArrowDown') {\n const minutesInteger = Number.isNaN(minutesStringConvertedToInteger) ? 0 : minutesStringConvertedToInteger;\n let newMinutes;\n if (key === 'ArrowUp')\n newMinutes = minutesInteger + minutesInterval <= 59 ? minutesInteger + minutesInterval : minutesInteger;\n else newMinutes = minutesInteger - minutesInterval > 0 ? minutesInteger - minutesInterval : 0;\n newMinutes = prependStringWithPlaceHolders(`${newMinutes}`, 2);\n handleChangeMinutes(newMinutes, e);\n }\n if (!Number.isNaN(minutesStringConvertedToInteger) && key === ' ') {\n const newMinutes = prependStringWithPlaceHolders(`${minutesStringConvertedToInteger}`, 2);\n handleChangeMinutes(newMinutes, e);\n // auto-advance functionality:\n if (newMinutes.length === 2) trackFocusMeridiemInput();\n }\n\n // regressive backspace functionality\n if (\n key === 'Backspace' &&\n e.target === e.currentTarget &&\n (e.target as HTMLInputElement).selectionStart === 0 &&\n (e.target as HTMLInputElement).selectionEnd === 0\n ) {\n trackFocusHourInput();\n }\n\n // focus last fragment on fill with now\n if ((ctrlKey || metaKey) && key === ';') trackFocusLastSegment();\n },\n [\n minutes,\n onHomeKeyDown,\n onEndKeyDown,\n trackFocusLastSegment,\n minutesInterval,\n handleChangeMinutes,\n trackFocusMeridiemInput,\n trackFocusHourInput,\n ],\n );\n const onMinutesBlur: DSControlledDateTimePickerInternalsT.OnBlurFunc = useCallback(\n (e: React.FocusEvent<HTMLInputElement>) => {\n const newMinutes = e?.target?.value;\n if (newMinutes.length > 0 && newMinutes.length < 2)\n handleChangeMinutes(prependStringWithPlaceHolders(newMinutes, 2), e, {\n isAutomaticFillTrigger: true,\n });\n\n e?.target.setSelectionRange(e?.target?.value.length, e?.target?.value.length);\n },\n [handleChangeMinutes],\n );\n\n const onMeridiemFocus: DSControlledDateTimePickerInternalsT.OnFocusFunc = useCallback(() => {\n trackFocusMeridiemInput();\n }, [trackFocusMeridiemInput]);\n const onMeridiemChange: DSControlledDateTimePickerInternalsT.OnChangeFunc = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n let newMeridiem = e?.target?.value?.toUpperCase?.();\n // if new value is length 1,\n // if previous value was empty, auto-complete\n // if previous value was not empty, set to empty (regressive backspace)\n if (newMeridiem.length === 1)\n if (meridiem === '') newMeridiem = `${newMeridiem}M`;\n else newMeridiem = '';\n handleChangeMeridiem(newMeridiem, e);\n // auto-advance functionality:\n if (newMeridiem.length === 2 && withAnyRightController) {\n if (withClearBtn) trackFocusClearBtn();\n else if (withAnyPicker) trackFocusPicker();\n }\n },\n [\n meridiem,\n handleChangeMeridiem,\n withAnyRightController,\n withClearBtn,\n trackFocusClearBtn,\n withAnyPicker,\n trackFocusPicker,\n ],\n );\n const onMeridiemKeyDown: DSControlledDateTimePickerInternalsT.OnKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n const { key, ctrlKey, metaKey } = e;\n\n if (['Home', 'End', 'ArrowUp', 'ArrowDown'].includes(key)) e.preventDefault();\n if (['Home', 'End', 'ArrowUp', 'ArrowDown'].includes(key)) e.stopPropagation();\n\n if (key === 'Home') onHomeKeyDown();\n if (key === 'End') onEndKeyDown();\n if (key === 'ArrowUp' && meridiem !== 'AM') handleChangeMeridiem('AM', e);\n if (key === 'ArrowDown' && meridiem !== 'PM') handleChangeMeridiem('PM', e);\n // regressive backspace functionality\n if (key === 'Backspace') {\n if (\n e.target === e.currentTarget &&\n (e.target as HTMLInputElement).selectionStart === 0 &&\n (e.target as HTMLInputElement).selectionEnd === 0\n ) {\n trackFocusMinuteInput();\n } else if (meridiem?.length === 2) handleChangeMeridiem('', e);\n }\n\n // focus last fragment on fill with now\n if ((ctrlKey || metaKey) && key === ';') trackFocusLastSegment();\n },\n [onHomeKeyDown, onEndKeyDown, meridiem, handleChangeMeridiem, trackFocusLastSegment, trackFocusMinuteInput],\n );\n const onMeridiemBlur: DSControlledDateTimePickerInternalsT.OnBlurFunc = useCallback(\n (e: React.FocusEvent<HTMLInputElement>) => {\n const newMeridiem = e?.target?.value?.toUpperCase?.();\n\n if (newMeridiem.length === 1)\n handleChangeMeridiem(`${newMeridiem}M`, e, {\n isAutomaticFillTrigger: true,\n });\n },\n [handleChangeMeridiem],\n );\n\n return useMemo(\n () => ({\n autoFocusHourInput,\n disabled,\n handleChangeHours,\n onHoursFocus,\n onHoursChange,\n handleChangeMinutes,\n onMinutesFocus,\n onMinutesChange,\n handleChangeMeridiem,\n onMeridiemFocus,\n onMeridiemChange,\n onHoursBlur,\n onMinutesBlur,\n onMeridiemBlur,\n onHoursKeyDown,\n onMinutesKeyDown,\n onMeridiemKeyDown,\n }),\n [\n autoFocusHourInput,\n disabled,\n handleChangeHours,\n onHoursFocus,\n onHoursChange,\n handleChangeMinutes,\n onMinutesFocus,\n onMinutesChange,\n handleChangeMeridiem,\n onMeridiemFocus,\n onMeridiemChange,\n onHoursBlur,\n onMinutesBlur,\n onMeridiemBlur,\n onHoursKeyDown,\n onMinutesKeyDown,\n onMeridiemKeyDown,\n ],\n );\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADGvB,mBAAiD;AACjD,yCAAgD;AAChD,2BAA8C;AAqBvC,MAAM,gBAAgB,MAAsB;AACjD,QAAM;AAAA,IACJ,OAAO,EAAE,SAAS;AAAA,IAClB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,QAAI,yBAAW,kEAA+B;AAE9C,QAAM,oBAAgB,0BAAY,MAAM;AACtC,2BAAuB;AAAA,EACzB,GAAG,CAAC,sBAAsB,CAAC;AAC3B,QAAM,mBAAe,0BAAY,MAAM;AACrC,0BAAsB;AAAA,EACxB,GAAG,CAAC,qBAAqB,CAAC;AAE1B,QAAM,mBAAiE,0BAAY,MAAM;AACvF,wBAAoB;AAAA,EACtB,GAAG,CAAC,mBAAmB,CAAC;AACxB,QAAM,oBAAmE;AAAA,IACvE,CAAC,MAA2C;AAC1C,UAAI,WAAW,GAAG,QAAQ;AAE1B,UAAI,OAAO,SAAS,UAAU,EAAE,IAAI;AAAG,uBAAW,oDAA8B,UAAU,CAAC;AAC3F,wBAAkB,UAAU,CAAC;AAE7B,UAAI,SAAS,WAAW;AAAG,8BAAsB;AAAA,IACnD;AAAA,IACA,CAAC,mBAAmB,qBAAqB;AAAA,EAC3C;AACA,QAAM,qBAAiE;AAAA,IACrE,CAAC,MAA6C;AAC5C,YAAM,EAAE,KAAK,SAAS,QAAQ,IAAI;AAClC,YAAM,gCAAgC,OAAO,SAAS,OAAO,EAAE;AAE/D,UAAI,CAAC,QAAQ,OAAO,WAAW,aAAa,GAAG,EAAE,SAAS,GAAG;AAAG,UAAE,eAAe;AACjF,UAAI,CAAC,QAAQ,OAAO,WAAW,aAAa,GAAG,EAAE,SAAS,GAAG;AAAG,UAAE,gBAAgB;AAClF,UAAI,QAAQ;AAAQ,sBAAc;AAClC,UAAI,QAAQ;AAAO,qBAAa;AAChC,UAAI,QAAQ,aAAa,QAAQ,aAAa;AAC5C,cAAM,eAAe,OAAO,MAAM,6BAA6B,IAAI,IAAI;AACvE,YAAI;AACJ,YAAI,QAAQ;AAAW,qBAAW,eAAe,KAAK,KAAK,eAAe,IAAI;AAAA;AACzE,qBAAW,eAAe,IAAI,IAAI,eAAe,IAAI;AAC1D,uBAAW,oDAA8B,GAAG,YAAY,CAAC;AACzD,0BAAkB,UAAU,CAAC;AAAA,MAC/B;AACA,UAAI,CAAC,OAAO,MAAM,6BAA6B,KAAK,QAAQ,KAAK;AAC/D,cAAM,eAAW,oDAA8B,GAAG,iCAAiC,CAAC;AACpF,0BAAkB,UAAU,CAAC;AAE7B,YAAI,SAAS,WAAW;AAAG,gCAAsB;AAAA,MACnD;AAGA,UACE,QAAQ,eACR,EAAE,WAAW,EAAE,iBACf,oBACC,EAAE,OAA4B,mBAAmB,KACjD,EAAE,OAA4B,iBAAiB,GAChD;AACA,4BAAoB;AAAA,MACtB;AAEA,WAAK,WAAW,YAAY,QAAQ;AAAK,8BAAsB;AAAA,IACjE;AAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACA,QAAM,kBAA+D;AAAA,IACnE,CAAC,MAA0C;AACzC,YAAM,WAAW,GAAG,QAAQ;AAC5B,UAAI,aAAa;AAAK,0BAAkB,MAAM,GAAG,EAAE,wBAAwB,KAAK,CAAC;AAAA,eACxE,SAAS,SAAS,KAAK,SAAS,SAAS;AAChD,8BAAkB,oDAA8B,UAAU,CAAC,GAAG,GAAG;AAAA,UAC/D,wBAAwB;AAAA,QAC1B,CAAC;AAEH,SAAG,OAAO,kBAAkB,GAAG,QAAQ,MAAM,QAAQ,GAAG,QAAQ,MAAM,MAAM;AAAA,IAC9E;AAAA,IACA,CAAC,iBAAiB;AAAA,EACpB;AAEA,QAAM,qBAAmE,0BAAY,MAAM;AACzF,0BAAsB;AAAA,EACxB,GAAG,CAAC,qBAAqB,CAAC;AAC1B,QAAM,sBAAqE;AAAA,IACzE,CAAC,MAA2C;AAC1C,UAAI,aAAa,GAAG,QAAQ;AAE5B,UAAI,OAAO,SAAS,YAAY,EAAE,IAAI;AAAG,yBAAa,oDAA8B,YAAY,CAAC;AACjG,0BAAoB,YAAY,CAAC;AAGjC,UAAI,WAAW,WAAW;AAAG,gCAAwB;AAAA,IACvD;AAAA,IACA,CAAC,qBAAqB,uBAAuB;AAAA,EAC/C;AACA,QAAM,uBAAmE;AAAA,IACvE,CAAC,MAA6C;AAC5C,YAAM,EAAE,KAAK,SAAS,QAAQ,IAAI;AAClC,YAAM,kCAAkC,OAAO,SAAS,SAAS,EAAE;AACnE,UAAI,CAAC,QAAQ,OAAO,WAAW,aAAa,GAAG,EAAE,SAAS,GAAG;AAAG,UAAE,eAAe;AACjF,UAAI,CAAC,QAAQ,OAAO,WAAW,aAAa,GAAG,EAAE,SAAS,GAAG;AAAG,UAAE,gBAAgB;AAElF,UAAI,QAAQ;AAAQ,sBAAc;AAClC,UAAI,QAAQ;AAAO,qBAAa;AAChC,UAAI,QAAQ,aAAa,QAAQ,aAAa;AAC5C,cAAM,iBAAiB,OAAO,MAAM,+BAA+B,IAAI,IAAI;AAC3E,YAAI;AACJ,YAAI,QAAQ;AACV,uBAAa,iBAAiB,mBAAmB,KAAK,iBAAiB,kBAAkB;AAAA;AACtF,uBAAa,iBAAiB,kBAAkB,IAAI,iBAAiB,kBAAkB;AAC5F,yBAAa,oDAA8B,GAAG,cAAc,CAAC;AAC7D,4BAAoB,YAAY,CAAC;AAAA,MACnC;AACA,UAAI,CAAC,OAAO,MAAM,+BAA+B,KAAK,QAAQ,KAAK;AACjE,cAAM,iBAAa,oDAA8B,GAAG,mCAAmC,CAAC;AACxF,4BAAoB,YAAY,CAAC;AAEjC,YAAI,WAAW,WAAW;AAAG,kCAAwB;AAAA,MACvD;AAGA,UACE,QAAQ,eACR,EAAE,WAAW,EAAE,iBACd,EAAE,OAA4B,mBAAmB,KACjD,EAAE,OAA4B,iBAAiB,GAChD;AACA,4BAAoB;AAAA,MACtB;AAGA,WAAK,WAAW,YAAY,QAAQ;AAAK,8BAAsB;AAAA,IACjE;AAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACA,QAAM,oBAAiE;AAAA,IACrE,CAAC,MAA0C;AACzC,YAAM,aAAa,GAAG,QAAQ;AAC9B,UAAI,WAAW,SAAS,KAAK,WAAW,SAAS;AAC/C,gCAAoB,oDAA8B,YAAY,CAAC,GAAG,GAAG;AAAA,UACnE,wBAAwB;AAAA,QAC1B,CAAC;AAEH,SAAG,OAAO,kBAAkB,GAAG,QAAQ,MAAM,QAAQ,GAAG,QAAQ,MAAM,MAAM;AAAA,IAC9E;AAAA,IACA,CAAC,mBAAmB;AAAA,EACtB;AAEA,QAAM,sBAAoE,0BAAY,MAAM;AAC1F,4BAAwB;AAAA,EAC1B,GAAG,CAAC,uBAAuB,CAAC;AAC5B,QAAM,uBAAsE;AAAA,IAC1E,CAAC,MAA2C;AAC1C,UAAI,cAAc,GAAG,QAAQ,OAAO,cAAc;AAIlD,UAAI,YAAY,WAAW;AACzB,YAAI,aAAa;AAAI,wBAAc,GAAG;AAAA;AACjC,wBAAc;AACrB,2BAAqB,aAAa,CAAC;AAEnC,UAAI,YAAY,WAAW,KAAK,wBAAwB;AACtD,YAAI;AAAc,6BAAmB;AAAA,iBAC5B;AAAe,2BAAiB;AAAA,MAC3C;AAAA,IACF;AAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACA,QAAM,wBAAoE;AAAA,IACxE,CAAC,MAA6C;AAC5C,YAAM,EAAE,KAAK,SAAS,QAAQ,IAAI;AAElC,UAAI,CAAC,QAAQ,OAAO,WAAW,WAAW,EAAE,SAAS,GAAG;AAAG,UAAE,eAAe;AAC5E,UAAI,CAAC,QAAQ,OAAO,WAAW,WAAW,EAAE,SAAS,GAAG;AAAG,UAAE,gBAAgB;AAE7E,UAAI,QAAQ;AAAQ,sBAAc;AAClC,UAAI,QAAQ;AAAO,qBAAa;AAChC,UAAI,QAAQ,aAAa,aAAa;AAAM,6BAAqB,MAAM,CAAC;AACxE,UAAI,QAAQ,eAAe,aAAa;AAAM,6BAAqB,MAAM,CAAC;AAE1E,UAAI,QAAQ,aAAa;AACvB,YACE,EAAE,WAAW,EAAE,iBACd,EAAE,OAA4B,mBAAmB,KACjD,EAAE,OAA4B,iBAAiB,GAChD;AACA,gCAAsB;AAAA,QACxB,WAAW,UAAU,WAAW;AAAG,+BAAqB,IAAI,CAAC;AAAA,MAC/D;AAGA,WAAK,WAAW,YAAY,QAAQ;AAAK,8BAAsB;AAAA,IACjE;AAAA,IACA,CAAC,eAAe,cAAc,UAAU,sBAAsB,uBAAuB,qBAAqB;AAAA,EAC5G;AACA,QAAM,qBAAkE;AAAA,IACtE,CAAC,MAA0C;AACzC,YAAM,cAAc,GAAG,QAAQ,OAAO,cAAc;AAEpD,UAAI,YAAY,WAAW;AACzB,6BAAqB,GAAG,gBAAgB,GAAG;AAAA,UACzC,wBAAwB;AAAA,QAC1B,CAAC;AAAA,IACL;AAAA,IACA,CAAC,oBAAoB;AAAA,EACvB;AAEA,aAAO;AAAA,IACL,OAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACF;",
4
+ "sourcesContent": ["/* eslint-disable complexity */\n/* eslint-disable max-statements */\n/* eslint-disable max-lines */\nimport { useCallback, useMemo, useContext } from 'react';\nimport { ControlledDateTimePickerContext } from '../../ControlledDateTimePickerCTX';\nimport { prependStringWithPlaceHolders } from '../../utils/stringHelpers';\nimport type { DSControlledDateTimePickerInternalsT } from '../../sharedTypes';\ninterface UseTimeInputsR {\n autoFocusHourInput: boolean;\n disabled: boolean;\n handleChangeHours: DSControlledDateTimePickerInternalsT.HandleOnChangeFunc;\n onHoursChange: DSControlledDateTimePickerInternalsT.OnChangeFunc;\n handleChangeMinutes: DSControlledDateTimePickerInternalsT.HandleOnChangeFunc;\n onMinutesChange: DSControlledDateTimePickerInternalsT.OnChangeFunc;\n handleChangeMeridiem: DSControlledDateTimePickerInternalsT.HandleOnChangeFunc;\n onMeridiemChange: DSControlledDateTimePickerInternalsT.OnChangeFunc;\n onHoursFocus: DSControlledDateTimePickerInternalsT.OnFocusFunc;\n onMinutesFocus: DSControlledDateTimePickerInternalsT.OnFocusFunc;\n onMeridiemFocus: DSControlledDateTimePickerInternalsT.OnFocusFunc;\n onHoursBlur: DSControlledDateTimePickerInternalsT.OnBlurFunc;\n onMinutesBlur: DSControlledDateTimePickerInternalsT.OnBlurFunc;\n onMeridiemBlur: DSControlledDateTimePickerInternalsT.OnBlurFunc;\n onHoursKeyDown: DSControlledDateTimePickerInternalsT.OnKeyDown;\n onMinutesKeyDown: DSControlledDateTimePickerInternalsT.OnKeyDown;\n onMeridiemKeyDown: DSControlledDateTimePickerInternalsT.OnKeyDown;\n}\nexport const useTimeInputs = (): UseTimeInputsR => {\n const {\n props: { disabled },\n hours,\n minutes,\n meridiem,\n withAnyRightController,\n withAnyPicker,\n withClearBtn,\n isWithDateInputs,\n autoFocusHourInput,\n handleChangeHours,\n handleChangeMinutes,\n handleChangeMeridiem,\n minutesInterval,\n trackFocusFirstSegment,\n trackFocusLastSegment,\n trackFocusHourInput,\n trackFocusMinuteInput,\n trackFocusMeridiemInput,\n trackFocusClearBtn,\n trackFocusPicker,\n trackFocusYearInput,\n } = useContext(ControlledDateTimePickerContext);\n\n const onHomeKeyDown = useCallback(() => {\n trackFocusFirstSegment();\n }, [trackFocusFirstSegment]);\n const onEndKeyDown = useCallback(() => {\n trackFocusLastSegment();\n }, [trackFocusLastSegment]);\n\n const onHoursFocus: DSControlledDateTimePickerInternalsT.OnFocusFunc = useCallback(() => {\n trackFocusHourInput();\n }, [trackFocusHourInput]);\n const onHoursChange: DSControlledDateTimePickerInternalsT.OnChangeFunc = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n let newHours = e?.target?.value;\n // converts hours 2~9 to 07~09\n if (Number.parseInt(newHours, 10) > 1) newHours = prependStringWithPlaceHolders(newHours, 2);\n handleChangeHours(newHours, e);\n // auto-advance functionality:\n if (newHours.length === 2) trackFocusMinuteInput();\n },\n [handleChangeHours, trackFocusMinuteInput],\n );\n const onHoursKeyDown: DSControlledDateTimePickerInternalsT.OnKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n const { key, ctrlKey, metaKey } = e;\n const hoursStringConvertedToInteger = Number.parseInt(hours, 10);\n\n if (['Home', 'End', 'ArrowUp', 'ArrowDown', ':'].includes(key)) e.preventDefault();\n if (['Home', 'End', 'ArrowUp', 'ArrowDown', ':'].includes(key)) e.stopPropagation();\n if (key === 'Home') onHomeKeyDown();\n if (key === 'End') onEndKeyDown();\n if (key === 'ArrowUp' || key === 'ArrowDown') {\n const hoursInteger = Number.isNaN(hoursStringConvertedToInteger) ? 0 : hoursStringConvertedToInteger;\n let newHours;\n if (key === 'ArrowUp') newHours = hoursInteger + 1 <= 12 ? hoursInteger + 1 : hoursInteger;\n else newHours = hoursInteger - 1 > 1 ? hoursInteger - 1 : 1;\n newHours = prependStringWithPlaceHolders(`${newHours}`, 2);\n handleChangeHours(newHours, e);\n }\n if (!Number.isNaN(hoursStringConvertedToInteger) && key === ':') {\n const newHours = prependStringWithPlaceHolders(`${hoursStringConvertedToInteger}`, 2);\n handleChangeHours(newHours, e);\n // auto-advance functionality:\n if (newHours.length === 2) trackFocusMinuteInput();\n }\n\n // regressive backspace functionality\n if (\n key === 'Backspace' &&\n e.target === e.currentTarget &&\n isWithDateInputs &&\n (e.target as HTMLInputElement).selectionStart === 0 &&\n (e.target as HTMLInputElement).selectionEnd === 0\n ) {\n e.preventDefault();\n\n trackFocusYearInput();\n }\n // focus last fragment on fill with now\n if ((ctrlKey || metaKey) && key === ';') trackFocusLastSegment();\n },\n [\n hours,\n isWithDateInputs,\n trackFocusYearInput,\n onHomeKeyDown,\n onEndKeyDown,\n trackFocusLastSegment,\n trackFocusMinuteInput,\n handleChangeHours,\n ],\n );\n const onHoursBlur: DSControlledDateTimePickerInternalsT.OnBlurFunc = useCallback(\n (e: React.FocusEvent<HTMLInputElement>) => {\n const newHours = e?.target?.value;\n if (newHours === '0') handleChangeHours('01', e, { isAutomaticFillTrigger: true });\n else if (newHours.length > 0 && newHours.length < 2)\n handleChangeHours(prependStringWithPlaceHolders(newHours, 2), e, {\n isAutomaticFillTrigger: true,\n });\n },\n [handleChangeHours],\n );\n\n const onMinutesFocus: DSControlledDateTimePickerInternalsT.OnFocusFunc = useCallback(() => {\n trackFocusMinuteInput();\n }, [trackFocusMinuteInput]);\n const onMinutesChange: DSControlledDateTimePickerInternalsT.OnChangeFunc = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n let newMinutes = e?.target?.value;\n // converts minutes 7~9 to 07~09\n if (Number.parseInt(newMinutes, 10) > 6) newMinutes = prependStringWithPlaceHolders(newMinutes, 2);\n handleChangeMinutes(newMinutes, e);\n\n // auto-advance functionality:\n if (newMinutes.length === 2) trackFocusMeridiemInput();\n },\n [handleChangeMinutes, trackFocusMeridiemInput],\n );\n const onMinutesKeyDown: DSControlledDateTimePickerInternalsT.OnKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n const { key, ctrlKey, metaKey } = e;\n const minutesStringConvertedToInteger = Number.parseInt(minutes, 10);\n if (['Home', 'End', 'ArrowUp', 'ArrowDown', ' '].includes(key)) e.preventDefault();\n if (['Home', 'End', 'ArrowUp', 'ArrowDown', ' '].includes(key)) e.stopPropagation();\n\n if (key === 'Home') onHomeKeyDown();\n if (key === 'End') onEndKeyDown();\n if (key === 'ArrowUp' || key === 'ArrowDown') {\n const minutesInteger = Number.isNaN(minutesStringConvertedToInteger) ? 0 : minutesStringConvertedToInteger;\n let newMinutes;\n if (key === 'ArrowUp')\n newMinutes = minutesInteger + minutesInterval <= 59 ? minutesInteger + minutesInterval : minutesInteger;\n else newMinutes = minutesInteger - minutesInterval > 0 ? minutesInteger - minutesInterval : 0;\n newMinutes = prependStringWithPlaceHolders(`${newMinutes}`, 2);\n handleChangeMinutes(newMinutes, e);\n }\n if (!Number.isNaN(minutesStringConvertedToInteger) && key === ' ') {\n const newMinutes = prependStringWithPlaceHolders(`${minutesStringConvertedToInteger}`, 2);\n handleChangeMinutes(newMinutes, e);\n // auto-advance functionality:\n if (newMinutes.length === 2) trackFocusMeridiemInput();\n }\n\n // regressive backspace functionality\n if (\n key === 'Backspace' &&\n e.target === e.currentTarget &&\n (e.target as HTMLInputElement).selectionStart === 0 &&\n (e.target as HTMLInputElement).selectionEnd === 0\n ) {\n e.preventDefault();\n\n trackFocusHourInput();\n }\n\n // focus last fragment on fill with now\n if ((ctrlKey || metaKey) && key === ';') trackFocusLastSegment();\n },\n [\n minutes,\n onHomeKeyDown,\n onEndKeyDown,\n trackFocusLastSegment,\n minutesInterval,\n handleChangeMinutes,\n trackFocusMeridiemInput,\n trackFocusHourInput,\n ],\n );\n const onMinutesBlur: DSControlledDateTimePickerInternalsT.OnBlurFunc = useCallback(\n (e: React.FocusEvent<HTMLInputElement>) => {\n const newMinutes = e?.target?.value;\n if (newMinutes.length > 0 && newMinutes.length < 2)\n handleChangeMinutes(prependStringWithPlaceHolders(newMinutes, 2), e, {\n isAutomaticFillTrigger: true,\n });\n },\n [handleChangeMinutes],\n );\n\n const onMeridiemFocus: DSControlledDateTimePickerInternalsT.OnFocusFunc = useCallback(() => {\n trackFocusMeridiemInput();\n }, [trackFocusMeridiemInput]);\n const onMeridiemChange: DSControlledDateTimePickerInternalsT.OnChangeFunc = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n let newMeridiem = e?.target?.value?.toUpperCase?.();\n // if new value is length 1,\n // if previous value was empty, auto-complete\n // if previous value was not empty, set to empty (regressive backspace)\n if (newMeridiem.length === 1)\n if (meridiem === '') newMeridiem = `${newMeridiem}M`;\n else newMeridiem = '';\n handleChangeMeridiem(newMeridiem, e);\n // auto-advance functionality:\n if (newMeridiem.length === 2 && withAnyRightController) {\n if (withClearBtn) trackFocusClearBtn();\n else if (withAnyPicker) trackFocusPicker();\n }\n },\n [\n meridiem,\n handleChangeMeridiem,\n withAnyRightController,\n withClearBtn,\n trackFocusClearBtn,\n withAnyPicker,\n trackFocusPicker,\n ],\n );\n const onMeridiemKeyDown: DSControlledDateTimePickerInternalsT.OnKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n const { key, ctrlKey, metaKey } = e;\n\n if (['Home', 'End', 'ArrowUp', 'ArrowDown'].includes(key)) e.preventDefault();\n if (['Home', 'End', 'ArrowUp', 'ArrowDown'].includes(key)) e.stopPropagation();\n\n if (key === 'Home') onHomeKeyDown();\n if (key === 'End') onEndKeyDown();\n if (key === 'ArrowUp' && meridiem !== 'AM') handleChangeMeridiem('AM', e);\n if (key === 'ArrowDown' && meridiem !== 'PM') handleChangeMeridiem('PM', e);\n // regressive backspace functionality\n if (key === 'Backspace') {\n if (\n e.target === e.currentTarget &&\n (e.target as HTMLInputElement).selectionStart === 0 &&\n (e.target as HTMLInputElement).selectionEnd === 0\n ) {\n e.preventDefault();\n trackFocusMinuteInput();\n } else if (meridiem?.length === 2) handleChangeMeridiem('', e);\n }\n\n // focus last fragment on fill with now\n if ((ctrlKey || metaKey) && key === ';') trackFocusLastSegment();\n },\n [onHomeKeyDown, onEndKeyDown, meridiem, handleChangeMeridiem, trackFocusLastSegment, trackFocusMinuteInput],\n );\n const onMeridiemBlur: DSControlledDateTimePickerInternalsT.OnBlurFunc = useCallback(\n (e: React.FocusEvent<HTMLInputElement>) => {\n const newMeridiem = e?.target?.value?.toUpperCase?.();\n\n if (newMeridiem.length === 1)\n handleChangeMeridiem(`${newMeridiem}M`, e, {\n isAutomaticFillTrigger: true,\n });\n },\n [handleChangeMeridiem],\n );\n\n return useMemo(\n () => ({\n autoFocusHourInput,\n disabled,\n handleChangeHours,\n onHoursFocus,\n onHoursChange,\n handleChangeMinutes,\n onMinutesFocus,\n onMinutesChange,\n handleChangeMeridiem,\n onMeridiemFocus,\n onMeridiemChange,\n onHoursBlur,\n onMinutesBlur,\n onMeridiemBlur,\n onHoursKeyDown,\n onMinutesKeyDown,\n onMeridiemKeyDown,\n }),\n [\n autoFocusHourInput,\n disabled,\n handleChangeHours,\n onHoursFocus,\n onHoursChange,\n handleChangeMinutes,\n onMinutesFocus,\n onMinutesChange,\n handleChangeMeridiem,\n onMeridiemFocus,\n onMeridiemChange,\n onHoursBlur,\n onMinutesBlur,\n onMeridiemBlur,\n onHoursKeyDown,\n onMinutesKeyDown,\n onMeridiemKeyDown,\n ],\n );\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -166,6 +166,7 @@ const useDateInputs = () => {
166
166
  trackFocusYearInput();
167
167
  }
168
168
  if (key === "Backspace" && target === currentTarget && target.selectionStart === 0 && target.selectionEnd === 0) {
169
+ e.preventDefault();
169
170
  trackFocusMonthInput();
170
171
  }
171
172
  if ((ctrlKey || metaKey) && key === ";")
@@ -265,6 +266,7 @@ const useDateInputs = () => {
265
266
  trackNextFocus();
266
267
  }
267
268
  if (key === "Backspace" && target === currentTarget && target.selectionStart === 0 && target.selectionEnd === 0) {
269
+ e.preventDefault();
268
270
  trackFocusDayInput();
269
271
  }
270
272
  if ((ctrlKey || metaKey) && key === ";")
@@ -287,7 +289,6 @@ const useDateInputs = () => {
287
289
  ]
288
290
  );
289
291
  const onYearBlur = useCallback((e) => {
290
- e?.target.setSelectionRange(e?.target?.value.length, e?.target?.value.length);
291
292
  }, []);
292
293
  const onDayBlur = useCallback(
293
294
  (e) => {
@@ -298,7 +299,6 @@ const useDateInputs = () => {
298
299
  handleChangeDay(prependStringWithPlaceHolders(newDay, 2), e, {
299
300
  isAutomaticFillTrigger: true
300
301
  });
301
- e?.target.setSelectionRange(e?.target?.value.length, e?.target?.value.length);
302
302
  },
303
303
  [handleChangeDay]
304
304
  );
@@ -311,7 +311,6 @@ const useDateInputs = () => {
311
311
  handleChangeMonth(prependStringWithPlaceHolders(newMonth, 2), e, {
312
312
  isAutomaticFillTrigger: true
313
313
  });
314
- e?.target.setSelectionRange(e?.target?.value.length, e?.target?.value.length);
315
314
  },
316
315
  [handleChangeMonth]
317
316
  );
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../scripts/build/transpile/react-shim.js", "../../../../src/parts/DateInputs/useDateInputs.tsx"],
4
- "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable complexity */\n/* eslint-disable max-statements */\n/* eslint-disable max-lines */\nimport { useCallback, useMemo, useContext } from 'react';\nimport { ControlledDateTimePickerContext } from '../../ControlledDateTimePickerCTX';\nimport {\n getFormattedDateString,\n prependStringWithPlaceHolders,\n fillStringWithPlaceHolders,\n} from '../../utils/stringHelpers';\nimport { getValidationDateStringMetaInfo } from '../../utils/dateHelpers';\nimport { defaultMetaInfo } from '../../utils/constants';\nimport type { DSControlledDateTimePickerInternalsT } from '../../sharedTypes';\nimport type { DSControlledDateTimePickerT } from '../../propTypes';\n\nexport const useDateInputs = (): DSControlledDateTimePickerInternalsT.UseDateInputsR => {\n const {\n props: { disabled },\n appOnMonthChange,\n appOnDayChange,\n appOnYearChange,\n getIsDisabledDay,\n getIsOutOfRangeDay,\n month,\n day,\n year,\n hideTime,\n handleChangeComposedDateString,\n withClearBtn,\n withAnyPicker,\n withAnyRightController,\n autoFocusMonthInput,\n innerRefMonthInput,\n trackFocusResetter,\n trackFocusFirstSegment,\n trackFocusLastSegment,\n trackFocusDayInput,\n trackFocusMonthInput,\n trackFocusYearInput,\n trackFocusHourInput,\n trackFocusClearBtn,\n trackFocusPicker,\n } = useContext(ControlledDateTimePickerContext);\n\n const onHomeKeyDown = useCallback(() => {\n trackFocusFirstSegment();\n }, [trackFocusFirstSegment]);\n const onEndKeyDown = useCallback(() => {\n trackFocusLastSegment();\n }, [trackFocusLastSegment]);\n\n const handleChangeMonth = useCallback(\n (\n newMonth: string,\n e: DSControlledDateTimePickerT.OnInternalValuesChangeEvent,\n metaInfo: Partial<DSControlledDateTimePickerT.InternalInputsChangeMetaInfo> = defaultMetaInfo,\n ) => {\n const newDateString = getFormattedDateString({\n month: newMonth,\n day,\n year,\n });\n const finalMetaInfo: DSControlledDateTimePickerT.InternalInputsChangeMetaInfo = {\n ...metaInfo,\n ...getValidationDateStringMetaInfo(newDateString, getIsOutOfRangeDay, getIsDisabledDay),\n newDateString,\n };\n appOnMonthChange(newMonth, e, finalMetaInfo);\n handleChangeComposedDateString(newDateString, finalMetaInfo);\n },\n [day, year, getIsOutOfRangeDay, getIsDisabledDay, appOnMonthChange, handleChangeComposedDateString],\n );\n const onMonthFocus: DSControlledDateTimePickerInternalsT.OnFocusFunc = useCallback(() => {\n trackFocusMonthInput();\n }, [trackFocusMonthInput]);\n const onMonthChange: DSControlledDateTimePickerInternalsT.OnChangeFunc = useCallback(\n (e) => {\n let newMonth = e?.target?.value;\n // converts months 2~9 to 02~09\n if (Number.parseInt(newMonth, 10) > 1) newMonth = prependStringWithPlaceHolders(newMonth, 2);\n handleChangeMonth(newMonth, e);\n // auto-advance functionality:\n if (newMonth.length === 2) trackFocusDayInput();\n },\n [handleChangeMonth, trackFocusDayInput],\n );\n const onMonthKeyDown: DSControlledDateTimePickerInternalsT.OnKeyDown = useCallback(\n (e) => {\n const { key, ctrlKey, metaKey } = e;\n const monthStringConvertedToInteger = Number.parseInt(month, 10);\n if (['Home', 'End', 'ArrowUp', 'ArrowDown', '-', '/', '\\\\'].includes(key)) e.preventDefault();\n if (['Home', 'End', 'ArrowUp', 'ArrowDown', '-', '/', '\\\\'].includes(key)) e.stopPropagation();\n if (key === 'Home') onHomeKeyDown();\n if (key === 'End') onEndKeyDown();\n if (key === 'ArrowUp' || key === 'ArrowDown') {\n const monthInteger = Number.isNaN(monthStringConvertedToInteger) ? 0 : monthStringConvertedToInteger;\n let newMonth;\n if (key === 'ArrowUp') newMonth = monthInteger + 1 <= 12 ? monthInteger + 1 : monthInteger;\n else newMonth = monthInteger - 1 > 0 ? monthInteger - 1 : 1;\n newMonth = prependStringWithPlaceHolders(`${newMonth}`, 2);\n handleChangeMonth(newMonth, e);\n }\n if (!Number.isNaN(monthStringConvertedToInteger) && (key === '-' || key === '/' || key === '\\\\')) {\n const newMonth = prependStringWithPlaceHolders(`${monthStringConvertedToInteger}`, 2);\n handleChangeMonth(newMonth, e);\n // auto-advance functionality:\n if (newMonth.length === 2) trackFocusDayInput();\n }\n\n // focus last fragment on fill with now\n if ((ctrlKey || metaKey) && key === ';') trackFocusLastSegment();\n },\n [month, onHomeKeyDown, onEndKeyDown, trackFocusLastSegment, trackFocusDayInput, handleChangeMonth],\n );\n\n const handleChangeDay = useCallback(\n (\n newDay: string,\n e: DSControlledDateTimePickerT.OnInternalValuesChangeEvent,\n metaInfo: Partial<DSControlledDateTimePickerT.InternalInputsChangeMetaInfo> = defaultMetaInfo,\n ) => {\n const newDateString = getFormattedDateString({\n month,\n day: newDay,\n year,\n });\n const finalMetaInfo: DSControlledDateTimePickerT.InternalInputsChangeMetaInfo = {\n ...metaInfo,\n ...getValidationDateStringMetaInfo(newDateString, getIsOutOfRangeDay, getIsDisabledDay),\n newDateString,\n };\n appOnDayChange(newDay, e, finalMetaInfo);\n handleChangeComposedDateString(newDateString, finalMetaInfo);\n },\n [month, year, getIsOutOfRangeDay, getIsDisabledDay, appOnDayChange, handleChangeComposedDateString],\n );\n const onDayFocus: DSControlledDateTimePickerInternalsT.OnFocusFunc = useCallback(() => {\n trackFocusDayInput();\n }, [trackFocusDayInput]);\n const onDayChange: DSControlledDateTimePickerInternalsT.OnChangeFunc = useCallback(\n (e) => {\n let newDay = e?.target?.value;\n // converts days 4~9 to 04~09\n if (Number.parseInt(newDay, 10) > 3) newDay = prependStringWithPlaceHolders(newDay, 2);\n handleChangeDay(newDay, e);\n // auto-advance functionality:\n if (newDay.length === 2) trackFocusYearInput();\n },\n [handleChangeDay, trackFocusYearInput],\n );\n const onDayKeyDown: DSControlledDateTimePickerInternalsT.OnKeyDown = useCallback(\n (e) => {\n const { key, ctrlKey, metaKey, target, currentTarget } = e;\n const dayStringConvertedToInteger = Number.parseInt(day, 10);\n if (['Home', 'End', 'ArrowUp', 'ArrowDown', '-', '/', '\\\\'].includes(key)) e.preventDefault();\n if (['Home', 'End', 'ArrowUp', 'ArrowDown', '-', '/', '\\\\'].includes(key)) e.stopPropagation();\n\n if (key === 'Home') onHomeKeyDown();\n if (key === 'End') onEndKeyDown();\n if (key === 'ArrowUp' || key === 'ArrowDown') {\n const dayInteger = Number.isNaN(dayStringConvertedToInteger) ? 0 : dayStringConvertedToInteger;\n let newDay;\n if (key === 'ArrowUp') newDay = dayInteger + 1 <= 31 ? dayInteger + 1 : dayInteger;\n else newDay = dayInteger - 1 > 0 ? dayInteger - 1 : 1;\n newDay = prependStringWithPlaceHolders(`${newDay}`, 2);\n handleChangeDay(newDay, e);\n }\n if (!Number.isNaN(dayStringConvertedToInteger) && (key === '-' || key === '/' || key === '\\\\')) {\n const newDay = prependStringWithPlaceHolders(`${dayStringConvertedToInteger}`, 2);\n handleChangeDay(newDay, e);\n // auto-advance functionality:\n if (newDay.length === 2) trackFocusYearInput();\n }\n // regressive backspace functionality\n if (\n key === 'Backspace' &&\n target === currentTarget &&\n (target as HTMLInputElement).selectionStart === 0 &&\n (target as HTMLInputElement).selectionEnd === 0\n ) {\n trackFocusMonthInput();\n }\n // focus last fragment on fill with now\n if ((ctrlKey || metaKey) && key === ';') trackFocusLastSegment();\n },\n [\n day,\n onHomeKeyDown,\n onEndKeyDown,\n trackFocusLastSegment,\n handleChangeDay,\n trackFocusYearInput,\n trackFocusMonthInput,\n ],\n );\n\n const handleChangeYear = useCallback(\n (\n newYear: string,\n e: DSControlledDateTimePickerT.OnInternalValuesChangeEvent,\n metaInfo: Partial<DSControlledDateTimePickerT.InternalInputsChangeMetaInfo> = defaultMetaInfo,\n ) => {\n const newDateString = getFormattedDateString({\n month,\n day,\n year: newYear,\n });\n const finalMetaInfo: DSControlledDateTimePickerT.InternalInputsChangeMetaInfo = {\n ...metaInfo,\n ...getValidationDateStringMetaInfo(newDateString, getIsOutOfRangeDay, getIsDisabledDay),\n newDateString,\n };\n appOnYearChange(newYear, e, finalMetaInfo);\n handleChangeComposedDateString(newDateString, finalMetaInfo);\n },\n [month, day, getIsOutOfRangeDay, getIsDisabledDay, appOnYearChange, handleChangeComposedDateString],\n );\n const onYearFocus: DSControlledDateTimePickerInternalsT.OnFocusFunc = useCallback(() => {\n trackFocusYearInput();\n }, [trackFocusYearInput]);\n const onYearChange: DSControlledDateTimePickerInternalsT.OnChangeFunc = useCallback(\n (e) => {\n const newYear = e?.target?.value;\n handleChangeYear(newYear, e);\n // auto-advance functionality:\n if (newYear.length === 4) {\n if (!hideTime) trackFocusHourInput();\n else if (withAnyRightController) {\n if (withClearBtn) trackFocusClearBtn();\n else if (withAnyPicker) trackFocusPicker();\n // pending approval from Seda, check which one should be focused first...\n }\n }\n },\n [\n handleChangeYear,\n hideTime,\n trackFocusHourInput,\n withAnyRightController,\n withClearBtn,\n trackFocusClearBtn,\n withAnyPicker,\n trackFocusPicker,\n ],\n );\n const onYearKeyDown: DSControlledDateTimePickerInternalsT.OnKeyDown = useCallback(\n (e) => {\n const { key, ctrlKey, metaKey, target, currentTarget } = e;\n\n /* ****** New year value calculator logic ********* */\n const yearStringConvertedToInteger = Number.parseInt(year, 10);\n const yearInteger = Number.isNaN(yearStringConvertedToInteger) ? 0 : yearStringConvertedToInteger;\n let newYear = yearInteger !== 0 ? fillStringWithPlaceHolders(`${yearInteger}`, 4, '0') : '';\n if (key === 'ArrowUp' || key === 'ArrowDown') {\n let newYearInteger;\n if (key === 'ArrowUp') newYearInteger = yearInteger + 1 <= 9999 ? yearInteger + 1 : yearInteger;\n else newYearInteger = yearInteger - 1 > 0 ? yearInteger - 1 : 1;\n newYear = prependStringWithPlaceHolders(`${newYearInteger}`, 4);\n }\n const isAutomaticFillTrigger = newYear !== year && ['Tab', ' '].includes(key);\n const metainfo = { isAutomaticFillTrigger };\n\n /* ************* new year apply logic ************* */\n // tab/spacebar applies auto-fill\n // arrows up/down applies increment/decrement\n if (key === 'ArrowUp' || key === 'ArrowDown' || isAutomaticFillTrigger) {\n handleChangeYear(newYear, e, metainfo);\n }\n\n /* ************* focus tracking logic ************* */\n let trackNextFocus = trackFocusResetter; // if nothing after, we reset internal focus tracker to avoid re-render unexpected focus shift\n if (!hideTime) trackNextFocus = trackFocusHourInput;\n else if (withClearBtn) trackNextFocus = trackFocusClearBtn;\n else if (withAnyPicker) trackNextFocus = trackFocusPicker;\n\n if (['Home', 'End', 'ArrowUp', 'ArrowDown', ' '].includes(key)) e.preventDefault();\n if (['Home', 'End', 'ArrowUp', 'ArrowDown', ' '].includes(key)) e.stopPropagation();\n if (key === 'Home') onHomeKeyDown();\n if (key === 'End') onEndKeyDown();\n\n /* ************** auto-advance logic ************** */\n if (key === ' ') {\n // auto-advance functionality:\n trackNextFocus();\n }\n /* ********** regressive backspace logic ********** */\n if (\n key === 'Backspace' &&\n target === currentTarget &&\n (target as HTMLInputElement).selectionStart === 0 &&\n (target as HTMLInputElement).selectionEnd === 0\n ) {\n trackFocusDayInput();\n }\n\n // focus last fragment on fill with now\n if ((ctrlKey || metaKey) && key === ';') trackFocusLastSegment();\n },\n [\n year,\n trackFocusResetter,\n hideTime,\n trackFocusHourInput,\n withClearBtn,\n trackFocusClearBtn,\n withAnyPicker,\n trackFocusPicker,\n onHomeKeyDown,\n onEndKeyDown,\n trackFocusLastSegment,\n trackFocusDayInput,\n handleChangeYear,\n ],\n );\n const onYearBlur: DSControlledDateTimePickerInternalsT.OnBlurFunc = useCallback((e) => {\n // this was used before, now that we have a wrapping onBlur resetting the focus tracker, this is unused;\n e?.target.setSelectionRange(e?.target?.value.length, e?.target?.value.length);\n }, []);\n\n const onDayBlur: DSControlledDateTimePickerInternalsT.OnBlurFunc = useCallback(\n (e) => {\n const newDay = e?.target?.value;\n if (newDay === '0') handleChangeDay('01', e, { isAutomaticFillTrigger: true });\n else if (newDay.length > 0 && newDay.length < 2)\n handleChangeDay(prependStringWithPlaceHolders(newDay, 2), e, {\n isAutomaticFillTrigger: true,\n });\n e?.target.setSelectionRange(e?.target?.value.length, e?.target?.value.length);\n },\n [handleChangeDay],\n );\n\n const onMonthBlur: DSControlledDateTimePickerInternalsT.OnBlurFunc = useCallback(\n (e) => {\n const newMonth = e?.target?.value;\n if (newMonth === '0') handleChangeMonth('01', e, { isAutomaticFillTrigger: true });\n else if (newMonth.length > 0 && newMonth.length < 2)\n handleChangeMonth(prependStringWithPlaceHolders(newMonth, 2), e, {\n isAutomaticFillTrigger: true,\n });\n\n e?.target.setSelectionRange(e?.target?.value.length, e?.target?.value.length);\n },\n [handleChangeMonth],\n );\n\n return useMemo(\n () => ({\n month,\n day,\n year,\n autoFocusMonthInput,\n innerRefMonthInput,\n disabled,\n onMonthFocus,\n onMonthChange,\n onDayFocus,\n onDayChange,\n onYearFocus,\n onYearChange,\n onMonthBlur,\n onDayBlur,\n onYearBlur,\n onMonthKeyDown,\n onDayKeyDown,\n onYearKeyDown,\n }),\n [\n month,\n day,\n year,\n autoFocusMonthInput,\n innerRefMonthInput,\n disabled,\n onMonthFocus,\n onMonthChange,\n onDayFocus,\n onDayChange,\n onYearFocus,\n onYearChange,\n onMonthBlur,\n onDayBlur,\n onYearBlur,\n onMonthKeyDown,\n onDayKeyDown,\n onYearKeyDown,\n ],\n );\n};\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable complexity */\n/* eslint-disable max-statements */\n/* eslint-disable max-lines */\nimport { useCallback, useMemo, useContext } from 'react';\nimport { ControlledDateTimePickerContext } from '../../ControlledDateTimePickerCTX';\nimport {\n getFormattedDateString,\n prependStringWithPlaceHolders,\n fillStringWithPlaceHolders,\n} from '../../utils/stringHelpers';\nimport { getValidationDateStringMetaInfo } from '../../utils/dateHelpers';\nimport { defaultMetaInfo } from '../../utils/constants';\nimport type { DSControlledDateTimePickerInternalsT } from '../../sharedTypes';\nimport type { DSControlledDateTimePickerT } from '../../propTypes';\n\nexport const useDateInputs = (): DSControlledDateTimePickerInternalsT.UseDateInputsR => {\n const {\n props: { disabled },\n appOnMonthChange,\n appOnDayChange,\n appOnYearChange,\n getIsDisabledDay,\n getIsOutOfRangeDay,\n month,\n day,\n year,\n hideTime,\n handleChangeComposedDateString,\n withClearBtn,\n withAnyPicker,\n withAnyRightController,\n autoFocusMonthInput,\n innerRefMonthInput,\n trackFocusResetter,\n trackFocusFirstSegment,\n trackFocusLastSegment,\n trackFocusDayInput,\n trackFocusMonthInput,\n trackFocusYearInput,\n trackFocusHourInput,\n trackFocusClearBtn,\n trackFocusPicker,\n } = useContext(ControlledDateTimePickerContext);\n\n const onHomeKeyDown = useCallback(() => {\n trackFocusFirstSegment();\n }, [trackFocusFirstSegment]);\n const onEndKeyDown = useCallback(() => {\n trackFocusLastSegment();\n }, [trackFocusLastSegment]);\n\n const handleChangeMonth = useCallback(\n (\n newMonth: string,\n e: DSControlledDateTimePickerT.OnInternalValuesChangeEvent,\n metaInfo: Partial<DSControlledDateTimePickerT.InternalInputsChangeMetaInfo> = defaultMetaInfo,\n ) => {\n const newDateString = getFormattedDateString({\n month: newMonth,\n day,\n year,\n });\n const finalMetaInfo: DSControlledDateTimePickerT.InternalInputsChangeMetaInfo = {\n ...metaInfo,\n ...getValidationDateStringMetaInfo(newDateString, getIsOutOfRangeDay, getIsDisabledDay),\n newDateString,\n };\n appOnMonthChange(newMonth, e, finalMetaInfo);\n handleChangeComposedDateString(newDateString, finalMetaInfo);\n },\n [day, year, getIsOutOfRangeDay, getIsDisabledDay, appOnMonthChange, handleChangeComposedDateString],\n );\n const onMonthFocus: DSControlledDateTimePickerInternalsT.OnFocusFunc = useCallback(() => {\n trackFocusMonthInput();\n }, [trackFocusMonthInput]);\n const onMonthChange: DSControlledDateTimePickerInternalsT.OnChangeFunc = useCallback(\n (e) => {\n let newMonth = e?.target?.value;\n // converts months 2~9 to 02~09\n if (Number.parseInt(newMonth, 10) > 1) newMonth = prependStringWithPlaceHolders(newMonth, 2);\n handleChangeMonth(newMonth, e);\n // auto-advance functionality:\n if (newMonth.length === 2) trackFocusDayInput();\n },\n [handleChangeMonth, trackFocusDayInput],\n );\n const onMonthKeyDown: DSControlledDateTimePickerInternalsT.OnKeyDown = useCallback(\n (e) => {\n const { key, ctrlKey, metaKey } = e;\n const monthStringConvertedToInteger = Number.parseInt(month, 10);\n if (['Home', 'End', 'ArrowUp', 'ArrowDown', '-', '/', '\\\\'].includes(key)) e.preventDefault();\n if (['Home', 'End', 'ArrowUp', 'ArrowDown', '-', '/', '\\\\'].includes(key)) e.stopPropagation();\n if (key === 'Home') onHomeKeyDown();\n if (key === 'End') onEndKeyDown();\n if (key === 'ArrowUp' || key === 'ArrowDown') {\n const monthInteger = Number.isNaN(monthStringConvertedToInteger) ? 0 : monthStringConvertedToInteger;\n let newMonth;\n if (key === 'ArrowUp') newMonth = monthInteger + 1 <= 12 ? monthInteger + 1 : monthInteger;\n else newMonth = monthInteger - 1 > 0 ? monthInteger - 1 : 1;\n newMonth = prependStringWithPlaceHolders(`${newMonth}`, 2);\n handleChangeMonth(newMonth, e);\n }\n if (!Number.isNaN(monthStringConvertedToInteger) && (key === '-' || key === '/' || key === '\\\\')) {\n const newMonth = prependStringWithPlaceHolders(`${monthStringConvertedToInteger}`, 2);\n handleChangeMonth(newMonth, e);\n // auto-advance functionality:\n if (newMonth.length === 2) trackFocusDayInput();\n }\n\n // focus last fragment on fill with now\n if ((ctrlKey || metaKey) && key === ';') trackFocusLastSegment();\n },\n [month, onHomeKeyDown, onEndKeyDown, trackFocusLastSegment, trackFocusDayInput, handleChangeMonth],\n );\n\n const handleChangeDay = useCallback(\n (\n newDay: string,\n e: DSControlledDateTimePickerT.OnInternalValuesChangeEvent,\n metaInfo: Partial<DSControlledDateTimePickerT.InternalInputsChangeMetaInfo> = defaultMetaInfo,\n ) => {\n const newDateString = getFormattedDateString({\n month,\n day: newDay,\n year,\n });\n const finalMetaInfo: DSControlledDateTimePickerT.InternalInputsChangeMetaInfo = {\n ...metaInfo,\n ...getValidationDateStringMetaInfo(newDateString, getIsOutOfRangeDay, getIsDisabledDay),\n newDateString,\n };\n appOnDayChange(newDay, e, finalMetaInfo);\n handleChangeComposedDateString(newDateString, finalMetaInfo);\n },\n [month, year, getIsOutOfRangeDay, getIsDisabledDay, appOnDayChange, handleChangeComposedDateString],\n );\n const onDayFocus: DSControlledDateTimePickerInternalsT.OnFocusFunc = useCallback(() => {\n trackFocusDayInput();\n }, [trackFocusDayInput]);\n const onDayChange: DSControlledDateTimePickerInternalsT.OnChangeFunc = useCallback(\n (e) => {\n let newDay = e?.target?.value;\n // converts days 4~9 to 04~09\n if (Number.parseInt(newDay, 10) > 3) newDay = prependStringWithPlaceHolders(newDay, 2);\n handleChangeDay(newDay, e);\n // auto-advance functionality:\n if (newDay.length === 2) trackFocusYearInput();\n },\n [handleChangeDay, trackFocusYearInput],\n );\n const onDayKeyDown: DSControlledDateTimePickerInternalsT.OnKeyDown = useCallback(\n (e) => {\n const { key, ctrlKey, metaKey, target, currentTarget } = e;\n const dayStringConvertedToInteger = Number.parseInt(day, 10);\n if (['Home', 'End', 'ArrowUp', 'ArrowDown', '-', '/', '\\\\'].includes(key)) e.preventDefault();\n if (['Home', 'End', 'ArrowUp', 'ArrowDown', '-', '/', '\\\\'].includes(key)) e.stopPropagation();\n\n if (key === 'Home') onHomeKeyDown();\n if (key === 'End') onEndKeyDown();\n if (key === 'ArrowUp' || key === 'ArrowDown') {\n const dayInteger = Number.isNaN(dayStringConvertedToInteger) ? 0 : dayStringConvertedToInteger;\n let newDay;\n if (key === 'ArrowUp') newDay = dayInteger + 1 <= 31 ? dayInteger + 1 : dayInteger;\n else newDay = dayInteger - 1 > 0 ? dayInteger - 1 : 1;\n newDay = prependStringWithPlaceHolders(`${newDay}`, 2);\n handleChangeDay(newDay, e);\n }\n if (!Number.isNaN(dayStringConvertedToInteger) && (key === '-' || key === '/' || key === '\\\\')) {\n const newDay = prependStringWithPlaceHolders(`${dayStringConvertedToInteger}`, 2);\n handleChangeDay(newDay, e);\n // auto-advance functionality:\n if (newDay.length === 2) trackFocusYearInput();\n }\n // regressive backspace functionality\n if (\n key === 'Backspace' &&\n target === currentTarget &&\n (target as HTMLInputElement).selectionStart === 0 &&\n (target as HTMLInputElement).selectionEnd === 0\n ) {\n e.preventDefault();\n trackFocusMonthInput();\n }\n // focus last fragment on fill with now\n if ((ctrlKey || metaKey) && key === ';') trackFocusLastSegment();\n },\n [\n day,\n onHomeKeyDown,\n onEndKeyDown,\n trackFocusLastSegment,\n handleChangeDay,\n trackFocusYearInput,\n trackFocusMonthInput,\n ],\n );\n\n const handleChangeYear = useCallback(\n (\n newYear: string,\n e: DSControlledDateTimePickerT.OnInternalValuesChangeEvent,\n metaInfo: Partial<DSControlledDateTimePickerT.InternalInputsChangeMetaInfo> = defaultMetaInfo,\n ) => {\n const newDateString = getFormattedDateString({\n month,\n day,\n year: newYear,\n });\n const finalMetaInfo: DSControlledDateTimePickerT.InternalInputsChangeMetaInfo = {\n ...metaInfo,\n ...getValidationDateStringMetaInfo(newDateString, getIsOutOfRangeDay, getIsDisabledDay),\n newDateString,\n };\n appOnYearChange(newYear, e, finalMetaInfo);\n handleChangeComposedDateString(newDateString, finalMetaInfo);\n },\n [month, day, getIsOutOfRangeDay, getIsDisabledDay, appOnYearChange, handleChangeComposedDateString],\n );\n const onYearFocus: DSControlledDateTimePickerInternalsT.OnFocusFunc = useCallback(() => {\n trackFocusYearInput();\n }, [trackFocusYearInput]);\n const onYearChange: DSControlledDateTimePickerInternalsT.OnChangeFunc = useCallback(\n (e) => {\n const newYear = e?.target?.value;\n handleChangeYear(newYear, e);\n // auto-advance functionality:\n if (newYear.length === 4) {\n if (!hideTime) trackFocusHourInput();\n else if (withAnyRightController) {\n if (withClearBtn) trackFocusClearBtn();\n else if (withAnyPicker) trackFocusPicker();\n // pending approval from Seda, check which one should be focused first...\n }\n }\n },\n [\n handleChangeYear,\n hideTime,\n trackFocusHourInput,\n withAnyRightController,\n withClearBtn,\n trackFocusClearBtn,\n withAnyPicker,\n trackFocusPicker,\n ],\n );\n const onYearKeyDown: DSControlledDateTimePickerInternalsT.OnKeyDown = useCallback(\n (e) => {\n const { key, ctrlKey, metaKey, target, currentTarget } = e;\n\n /* ****** New year value calculator logic ********* */\n const yearStringConvertedToInteger = Number.parseInt(year, 10);\n const yearInteger = Number.isNaN(yearStringConvertedToInteger) ? 0 : yearStringConvertedToInteger;\n let newYear = yearInteger !== 0 ? fillStringWithPlaceHolders(`${yearInteger}`, 4, '0') : '';\n if (key === 'ArrowUp' || key === 'ArrowDown') {\n let newYearInteger;\n if (key === 'ArrowUp') newYearInteger = yearInteger + 1 <= 9999 ? yearInteger + 1 : yearInteger;\n else newYearInteger = yearInteger - 1 > 0 ? yearInteger - 1 : 1;\n newYear = prependStringWithPlaceHolders(`${newYearInteger}`, 4);\n }\n const isAutomaticFillTrigger = newYear !== year && ['Tab', ' '].includes(key);\n const metainfo = { isAutomaticFillTrigger };\n\n /* ************* new year apply logic ************* */\n // tab/spacebar applies auto-fill\n // arrows up/down applies increment/decrement\n if (key === 'ArrowUp' || key === 'ArrowDown' || isAutomaticFillTrigger) {\n handleChangeYear(newYear, e, metainfo);\n }\n\n /* ************* focus tracking logic ************* */\n let trackNextFocus = trackFocusResetter; // if nothing after, we reset internal focus tracker to avoid re-render unexpected focus shift\n if (!hideTime) trackNextFocus = trackFocusHourInput;\n else if (withClearBtn) trackNextFocus = trackFocusClearBtn;\n else if (withAnyPicker) trackNextFocus = trackFocusPicker;\n\n if (['Home', 'End', 'ArrowUp', 'ArrowDown', ' '].includes(key)) e.preventDefault();\n if (['Home', 'End', 'ArrowUp', 'ArrowDown', ' '].includes(key)) e.stopPropagation();\n if (key === 'Home') onHomeKeyDown();\n if (key === 'End') onEndKeyDown();\n\n /* ************** auto-advance logic ************** */\n if (key === ' ') {\n // auto-advance functionality:\n trackNextFocus();\n }\n /* ********** regressive backspace logic ********** */\n if (\n key === 'Backspace' &&\n target === currentTarget &&\n (target as HTMLInputElement).selectionStart === 0 &&\n (target as HTMLInputElement).selectionEnd === 0\n ) {\n e.preventDefault();\n trackFocusDayInput();\n }\n\n // focus last fragment on fill with now\n if ((ctrlKey || metaKey) && key === ';') trackFocusLastSegment();\n },\n [\n year,\n trackFocusResetter,\n hideTime,\n trackFocusHourInput,\n withClearBtn,\n trackFocusClearBtn,\n withAnyPicker,\n trackFocusPicker,\n onHomeKeyDown,\n onEndKeyDown,\n trackFocusLastSegment,\n trackFocusDayInput,\n handleChangeYear,\n ],\n );\n const onYearBlur: DSControlledDateTimePickerInternalsT.OnBlurFunc = useCallback((e) => {\n // this was used before, now that we have a wrapping onBlur resetting the focus tracker, this is unused;\n }, []);\n\n const onDayBlur: DSControlledDateTimePickerInternalsT.OnBlurFunc = useCallback(\n (e) => {\n const newDay = e?.target?.value;\n if (newDay === '0') handleChangeDay('01', e, { isAutomaticFillTrigger: true });\n else if (newDay.length > 0 && newDay.length < 2)\n handleChangeDay(prependStringWithPlaceHolders(newDay, 2), e, {\n isAutomaticFillTrigger: true,\n });\n },\n [handleChangeDay],\n );\n\n const onMonthBlur: DSControlledDateTimePickerInternalsT.OnBlurFunc = useCallback(\n (e) => {\n const newMonth = e?.target?.value;\n if (newMonth === '0') handleChangeMonth('01', e, { isAutomaticFillTrigger: true });\n else if (newMonth.length > 0 && newMonth.length < 2)\n handleChangeMonth(prependStringWithPlaceHolders(newMonth, 2), e, {\n isAutomaticFillTrigger: true,\n });\n },\n [handleChangeMonth],\n );\n\n return useMemo(\n () => ({\n month,\n day,\n year,\n autoFocusMonthInput,\n innerRefMonthInput,\n disabled,\n onMonthFocus,\n onMonthChange,\n onDayFocus,\n onDayChange,\n onYearFocus,\n onYearChange,\n onMonthBlur,\n onDayBlur,\n onYearBlur,\n onMonthKeyDown,\n onDayKeyDown,\n onYearKeyDown,\n }),\n [\n month,\n day,\n year,\n autoFocusMonthInput,\n innerRefMonthInput,\n disabled,\n onMonthFocus,\n onMonthChange,\n onDayFocus,\n onDayChange,\n onYearFocus,\n onYearChange,\n onMonthBlur,\n onDayBlur,\n onYearBlur,\n onMonthKeyDown,\n onDayKeyDown,\n onYearKeyDown,\n ],\n );\n};\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -75,6 +75,7 @@ const useTimeInputs = () => {
75
75
  trackFocusMinuteInput();
76
76
  }
77
77
  if (key === "Backspace" && e.target === e.currentTarget && isWithDateInputs && e.target.selectionStart === 0 && e.target.selectionEnd === 0) {
78
+ e.preventDefault();
78
79
  trackFocusYearInput();
79
80
  }
80
81
  if ((ctrlKey || metaKey) && key === ";")
@@ -100,7 +101,6 @@ const useTimeInputs = () => {
100
101
  handleChangeHours(prependStringWithPlaceHolders(newHours, 2), e, {
101
102
  isAutomaticFillTrigger: true
102
103
  });
103
- e?.target.setSelectionRange(e?.target?.value.length, e?.target?.value.length);
104
104
  },
105
105
  [handleChangeHours]
106
106
  );
@@ -147,6 +147,7 @@ const useTimeInputs = () => {
147
147
  trackFocusMeridiemInput();
148
148
  }
149
149
  if (key === "Backspace" && e.target === e.currentTarget && e.target.selectionStart === 0 && e.target.selectionEnd === 0) {
150
+ e.preventDefault();
150
151
  trackFocusHourInput();
151
152
  }
152
153
  if ((ctrlKey || metaKey) && key === ";")
@@ -170,7 +171,6 @@ const useTimeInputs = () => {
170
171
  handleChangeMinutes(prependStringWithPlaceHolders(newMinutes, 2), e, {
171
172
  isAutomaticFillTrigger: true
172
173
  });
173
- e?.target.setSelectionRange(e?.target?.value.length, e?.target?.value.length);
174
174
  },
175
175
  [handleChangeMinutes]
176
176
  );
@@ -220,6 +220,7 @@ const useTimeInputs = () => {
220
220
  handleChangeMeridiem("PM", e);
221
221
  if (key === "Backspace") {
222
222
  if (e.target === e.currentTarget && e.target.selectionStart === 0 && e.target.selectionEnd === 0) {
223
+ e.preventDefault();
223
224
  trackFocusMinuteInput();
224
225
  } else if (meridiem?.length === 2)
225
226
  handleChangeMeridiem("", e);
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../scripts/build/transpile/react-shim.js", "../../../../src/parts/TimeInputs/useTimeInputs.tsx"],
4
- "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable complexity */\n/* eslint-disable max-statements */\n/* eslint-disable max-lines */\nimport { useCallback, useMemo, useContext } from 'react';\nimport { ControlledDateTimePickerContext } from '../../ControlledDateTimePickerCTX';\nimport { prependStringWithPlaceHolders } from '../../utils/stringHelpers';\nimport type { DSControlledDateTimePickerInternalsT } from '../../sharedTypes';\ninterface UseTimeInputsR {\n autoFocusHourInput: boolean;\n disabled: boolean;\n handleChangeHours: DSControlledDateTimePickerInternalsT.HandleOnChangeFunc;\n onHoursChange: DSControlledDateTimePickerInternalsT.OnChangeFunc;\n handleChangeMinutes: DSControlledDateTimePickerInternalsT.HandleOnChangeFunc;\n onMinutesChange: DSControlledDateTimePickerInternalsT.OnChangeFunc;\n handleChangeMeridiem: DSControlledDateTimePickerInternalsT.HandleOnChangeFunc;\n onMeridiemChange: DSControlledDateTimePickerInternalsT.OnChangeFunc;\n onHoursFocus: DSControlledDateTimePickerInternalsT.OnFocusFunc;\n onMinutesFocus: DSControlledDateTimePickerInternalsT.OnFocusFunc;\n onMeridiemFocus: DSControlledDateTimePickerInternalsT.OnFocusFunc;\n onHoursBlur: DSControlledDateTimePickerInternalsT.OnBlurFunc;\n onMinutesBlur: DSControlledDateTimePickerInternalsT.OnBlurFunc;\n onMeridiemBlur: DSControlledDateTimePickerInternalsT.OnBlurFunc;\n onHoursKeyDown: DSControlledDateTimePickerInternalsT.OnKeyDown;\n onMinutesKeyDown: DSControlledDateTimePickerInternalsT.OnKeyDown;\n onMeridiemKeyDown: DSControlledDateTimePickerInternalsT.OnKeyDown;\n}\nexport const useTimeInputs = (): UseTimeInputsR => {\n const {\n props: { disabled },\n hours,\n minutes,\n meridiem,\n withAnyRightController,\n withAnyPicker,\n withClearBtn,\n isWithDateInputs,\n autoFocusHourInput,\n handleChangeHours,\n handleChangeMinutes,\n handleChangeMeridiem,\n minutesInterval,\n trackFocusFirstSegment,\n trackFocusLastSegment,\n trackFocusHourInput,\n trackFocusMinuteInput,\n trackFocusMeridiemInput,\n trackFocusClearBtn,\n trackFocusPicker,\n trackFocusYearInput,\n } = useContext(ControlledDateTimePickerContext);\n\n const onHomeKeyDown = useCallback(() => {\n trackFocusFirstSegment();\n }, [trackFocusFirstSegment]);\n const onEndKeyDown = useCallback(() => {\n trackFocusLastSegment();\n }, [trackFocusLastSegment]);\n\n const onHoursFocus: DSControlledDateTimePickerInternalsT.OnFocusFunc = useCallback(() => {\n trackFocusHourInput();\n }, [trackFocusHourInput]);\n const onHoursChange: DSControlledDateTimePickerInternalsT.OnChangeFunc = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n let newHours = e?.target?.value;\n // converts hours 2~9 to 07~09\n if (Number.parseInt(newHours, 10) > 1) newHours = prependStringWithPlaceHolders(newHours, 2);\n handleChangeHours(newHours, e);\n // auto-advance functionality:\n if (newHours.length === 2) trackFocusMinuteInput();\n },\n [handleChangeHours, trackFocusMinuteInput],\n );\n const onHoursKeyDown: DSControlledDateTimePickerInternalsT.OnKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n const { key, ctrlKey, metaKey } = e;\n const hoursStringConvertedToInteger = Number.parseInt(hours, 10);\n\n if (['Home', 'End', 'ArrowUp', 'ArrowDown', ':'].includes(key)) e.preventDefault();\n if (['Home', 'End', 'ArrowUp', 'ArrowDown', ':'].includes(key)) e.stopPropagation();\n if (key === 'Home') onHomeKeyDown();\n if (key === 'End') onEndKeyDown();\n if (key === 'ArrowUp' || key === 'ArrowDown') {\n const hoursInteger = Number.isNaN(hoursStringConvertedToInteger) ? 0 : hoursStringConvertedToInteger;\n let newHours;\n if (key === 'ArrowUp') newHours = hoursInteger + 1 <= 12 ? hoursInteger + 1 : hoursInteger;\n else newHours = hoursInteger - 1 > 1 ? hoursInteger - 1 : 1;\n newHours = prependStringWithPlaceHolders(`${newHours}`, 2);\n handleChangeHours(newHours, e);\n }\n if (!Number.isNaN(hoursStringConvertedToInteger) && key === ':') {\n const newHours = prependStringWithPlaceHolders(`${hoursStringConvertedToInteger}`, 2);\n handleChangeHours(newHours, e);\n // auto-advance functionality:\n if (newHours.length === 2) trackFocusMinuteInput();\n }\n\n // regressive backspace functionality\n if (\n key === 'Backspace' &&\n e.target === e.currentTarget &&\n isWithDateInputs &&\n (e.target as HTMLInputElement).selectionStart === 0 &&\n (e.target as HTMLInputElement).selectionEnd === 0\n ) {\n trackFocusYearInput();\n }\n // focus last fragment on fill with now\n if ((ctrlKey || metaKey) && key === ';') trackFocusLastSegment();\n },\n [\n hours,\n isWithDateInputs,\n trackFocusYearInput,\n onHomeKeyDown,\n onEndKeyDown,\n trackFocusLastSegment,\n trackFocusMinuteInput,\n handleChangeHours,\n ],\n );\n const onHoursBlur: DSControlledDateTimePickerInternalsT.OnBlurFunc = useCallback(\n (e: React.FocusEvent<HTMLInputElement>) => {\n const newHours = e?.target?.value;\n if (newHours === '0') handleChangeHours('01', e, { isAutomaticFillTrigger: true });\n else if (newHours.length > 0 && newHours.length < 2)\n handleChangeHours(prependStringWithPlaceHolders(newHours, 2), e, {\n isAutomaticFillTrigger: true,\n });\n\n e?.target.setSelectionRange(e?.target?.value.length, e?.target?.value.length);\n },\n [handleChangeHours],\n );\n\n const onMinutesFocus: DSControlledDateTimePickerInternalsT.OnFocusFunc = useCallback(() => {\n trackFocusMinuteInput();\n }, [trackFocusMinuteInput]);\n const onMinutesChange: DSControlledDateTimePickerInternalsT.OnChangeFunc = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n let newMinutes = e?.target?.value;\n // converts minutes 7~9 to 07~09\n if (Number.parseInt(newMinutes, 10) > 6) newMinutes = prependStringWithPlaceHolders(newMinutes, 2);\n handleChangeMinutes(newMinutes, e);\n\n // auto-advance functionality:\n if (newMinutes.length === 2) trackFocusMeridiemInput();\n },\n [handleChangeMinutes, trackFocusMeridiemInput],\n );\n const onMinutesKeyDown: DSControlledDateTimePickerInternalsT.OnKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n const { key, ctrlKey, metaKey } = e;\n const minutesStringConvertedToInteger = Number.parseInt(minutes, 10);\n if (['Home', 'End', 'ArrowUp', 'ArrowDown', ' '].includes(key)) e.preventDefault();\n if (['Home', 'End', 'ArrowUp', 'ArrowDown', ' '].includes(key)) e.stopPropagation();\n\n if (key === 'Home') onHomeKeyDown();\n if (key === 'End') onEndKeyDown();\n if (key === 'ArrowUp' || key === 'ArrowDown') {\n const minutesInteger = Number.isNaN(minutesStringConvertedToInteger) ? 0 : minutesStringConvertedToInteger;\n let newMinutes;\n if (key === 'ArrowUp')\n newMinutes = minutesInteger + minutesInterval <= 59 ? minutesInteger + minutesInterval : minutesInteger;\n else newMinutes = minutesInteger - minutesInterval > 0 ? minutesInteger - minutesInterval : 0;\n newMinutes = prependStringWithPlaceHolders(`${newMinutes}`, 2);\n handleChangeMinutes(newMinutes, e);\n }\n if (!Number.isNaN(minutesStringConvertedToInteger) && key === ' ') {\n const newMinutes = prependStringWithPlaceHolders(`${minutesStringConvertedToInteger}`, 2);\n handleChangeMinutes(newMinutes, e);\n // auto-advance functionality:\n if (newMinutes.length === 2) trackFocusMeridiemInput();\n }\n\n // regressive backspace functionality\n if (\n key === 'Backspace' &&\n e.target === e.currentTarget &&\n (e.target as HTMLInputElement).selectionStart === 0 &&\n (e.target as HTMLInputElement).selectionEnd === 0\n ) {\n trackFocusHourInput();\n }\n\n // focus last fragment on fill with now\n if ((ctrlKey || metaKey) && key === ';') trackFocusLastSegment();\n },\n [\n minutes,\n onHomeKeyDown,\n onEndKeyDown,\n trackFocusLastSegment,\n minutesInterval,\n handleChangeMinutes,\n trackFocusMeridiemInput,\n trackFocusHourInput,\n ],\n );\n const onMinutesBlur: DSControlledDateTimePickerInternalsT.OnBlurFunc = useCallback(\n (e: React.FocusEvent<HTMLInputElement>) => {\n const newMinutes = e?.target?.value;\n if (newMinutes.length > 0 && newMinutes.length < 2)\n handleChangeMinutes(prependStringWithPlaceHolders(newMinutes, 2), e, {\n isAutomaticFillTrigger: true,\n });\n\n e?.target.setSelectionRange(e?.target?.value.length, e?.target?.value.length);\n },\n [handleChangeMinutes],\n );\n\n const onMeridiemFocus: DSControlledDateTimePickerInternalsT.OnFocusFunc = useCallback(() => {\n trackFocusMeridiemInput();\n }, [trackFocusMeridiemInput]);\n const onMeridiemChange: DSControlledDateTimePickerInternalsT.OnChangeFunc = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n let newMeridiem = e?.target?.value?.toUpperCase?.();\n // if new value is length 1,\n // if previous value was empty, auto-complete\n // if previous value was not empty, set to empty (regressive backspace)\n if (newMeridiem.length === 1)\n if (meridiem === '') newMeridiem = `${newMeridiem}M`;\n else newMeridiem = '';\n handleChangeMeridiem(newMeridiem, e);\n // auto-advance functionality:\n if (newMeridiem.length === 2 && withAnyRightController) {\n if (withClearBtn) trackFocusClearBtn();\n else if (withAnyPicker) trackFocusPicker();\n }\n },\n [\n meridiem,\n handleChangeMeridiem,\n withAnyRightController,\n withClearBtn,\n trackFocusClearBtn,\n withAnyPicker,\n trackFocusPicker,\n ],\n );\n const onMeridiemKeyDown: DSControlledDateTimePickerInternalsT.OnKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n const { key, ctrlKey, metaKey } = e;\n\n if (['Home', 'End', 'ArrowUp', 'ArrowDown'].includes(key)) e.preventDefault();\n if (['Home', 'End', 'ArrowUp', 'ArrowDown'].includes(key)) e.stopPropagation();\n\n if (key === 'Home') onHomeKeyDown();\n if (key === 'End') onEndKeyDown();\n if (key === 'ArrowUp' && meridiem !== 'AM') handleChangeMeridiem('AM', e);\n if (key === 'ArrowDown' && meridiem !== 'PM') handleChangeMeridiem('PM', e);\n // regressive backspace functionality\n if (key === 'Backspace') {\n if (\n e.target === e.currentTarget &&\n (e.target as HTMLInputElement).selectionStart === 0 &&\n (e.target as HTMLInputElement).selectionEnd === 0\n ) {\n trackFocusMinuteInput();\n } else if (meridiem?.length === 2) handleChangeMeridiem('', e);\n }\n\n // focus last fragment on fill with now\n if ((ctrlKey || metaKey) && key === ';') trackFocusLastSegment();\n },\n [onHomeKeyDown, onEndKeyDown, meridiem, handleChangeMeridiem, trackFocusLastSegment, trackFocusMinuteInput],\n );\n const onMeridiemBlur: DSControlledDateTimePickerInternalsT.OnBlurFunc = useCallback(\n (e: React.FocusEvent<HTMLInputElement>) => {\n const newMeridiem = e?.target?.value?.toUpperCase?.();\n\n if (newMeridiem.length === 1)\n handleChangeMeridiem(`${newMeridiem}M`, e, {\n isAutomaticFillTrigger: true,\n });\n },\n [handleChangeMeridiem],\n );\n\n return useMemo(\n () => ({\n autoFocusHourInput,\n disabled,\n handleChangeHours,\n onHoursFocus,\n onHoursChange,\n handleChangeMinutes,\n onMinutesFocus,\n onMinutesChange,\n handleChangeMeridiem,\n onMeridiemFocus,\n onMeridiemChange,\n onHoursBlur,\n onMinutesBlur,\n onMeridiemBlur,\n onHoursKeyDown,\n onMinutesKeyDown,\n onMeridiemKeyDown,\n }),\n [\n autoFocusHourInput,\n disabled,\n handleChangeHours,\n onHoursFocus,\n onHoursChange,\n handleChangeMinutes,\n onMinutesFocus,\n onMinutesChange,\n handleChangeMeridiem,\n onMeridiemFocus,\n onMeridiemChange,\n onHoursBlur,\n onMinutesBlur,\n onMeridiemBlur,\n onHoursKeyDown,\n onMinutesKeyDown,\n onMeridiemKeyDown,\n ],\n );\n};\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable complexity */\n/* eslint-disable max-statements */\n/* eslint-disable max-lines */\nimport { useCallback, useMemo, useContext } from 'react';\nimport { ControlledDateTimePickerContext } from '../../ControlledDateTimePickerCTX';\nimport { prependStringWithPlaceHolders } from '../../utils/stringHelpers';\nimport type { DSControlledDateTimePickerInternalsT } from '../../sharedTypes';\ninterface UseTimeInputsR {\n autoFocusHourInput: boolean;\n disabled: boolean;\n handleChangeHours: DSControlledDateTimePickerInternalsT.HandleOnChangeFunc;\n onHoursChange: DSControlledDateTimePickerInternalsT.OnChangeFunc;\n handleChangeMinutes: DSControlledDateTimePickerInternalsT.HandleOnChangeFunc;\n onMinutesChange: DSControlledDateTimePickerInternalsT.OnChangeFunc;\n handleChangeMeridiem: DSControlledDateTimePickerInternalsT.HandleOnChangeFunc;\n onMeridiemChange: DSControlledDateTimePickerInternalsT.OnChangeFunc;\n onHoursFocus: DSControlledDateTimePickerInternalsT.OnFocusFunc;\n onMinutesFocus: DSControlledDateTimePickerInternalsT.OnFocusFunc;\n onMeridiemFocus: DSControlledDateTimePickerInternalsT.OnFocusFunc;\n onHoursBlur: DSControlledDateTimePickerInternalsT.OnBlurFunc;\n onMinutesBlur: DSControlledDateTimePickerInternalsT.OnBlurFunc;\n onMeridiemBlur: DSControlledDateTimePickerInternalsT.OnBlurFunc;\n onHoursKeyDown: DSControlledDateTimePickerInternalsT.OnKeyDown;\n onMinutesKeyDown: DSControlledDateTimePickerInternalsT.OnKeyDown;\n onMeridiemKeyDown: DSControlledDateTimePickerInternalsT.OnKeyDown;\n}\nexport const useTimeInputs = (): UseTimeInputsR => {\n const {\n props: { disabled },\n hours,\n minutes,\n meridiem,\n withAnyRightController,\n withAnyPicker,\n withClearBtn,\n isWithDateInputs,\n autoFocusHourInput,\n handleChangeHours,\n handleChangeMinutes,\n handleChangeMeridiem,\n minutesInterval,\n trackFocusFirstSegment,\n trackFocusLastSegment,\n trackFocusHourInput,\n trackFocusMinuteInput,\n trackFocusMeridiemInput,\n trackFocusClearBtn,\n trackFocusPicker,\n trackFocusYearInput,\n } = useContext(ControlledDateTimePickerContext);\n\n const onHomeKeyDown = useCallback(() => {\n trackFocusFirstSegment();\n }, [trackFocusFirstSegment]);\n const onEndKeyDown = useCallback(() => {\n trackFocusLastSegment();\n }, [trackFocusLastSegment]);\n\n const onHoursFocus: DSControlledDateTimePickerInternalsT.OnFocusFunc = useCallback(() => {\n trackFocusHourInput();\n }, [trackFocusHourInput]);\n const onHoursChange: DSControlledDateTimePickerInternalsT.OnChangeFunc = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n let newHours = e?.target?.value;\n // converts hours 2~9 to 07~09\n if (Number.parseInt(newHours, 10) > 1) newHours = prependStringWithPlaceHolders(newHours, 2);\n handleChangeHours(newHours, e);\n // auto-advance functionality:\n if (newHours.length === 2) trackFocusMinuteInput();\n },\n [handleChangeHours, trackFocusMinuteInput],\n );\n const onHoursKeyDown: DSControlledDateTimePickerInternalsT.OnKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n const { key, ctrlKey, metaKey } = e;\n const hoursStringConvertedToInteger = Number.parseInt(hours, 10);\n\n if (['Home', 'End', 'ArrowUp', 'ArrowDown', ':'].includes(key)) e.preventDefault();\n if (['Home', 'End', 'ArrowUp', 'ArrowDown', ':'].includes(key)) e.stopPropagation();\n if (key === 'Home') onHomeKeyDown();\n if (key === 'End') onEndKeyDown();\n if (key === 'ArrowUp' || key === 'ArrowDown') {\n const hoursInteger = Number.isNaN(hoursStringConvertedToInteger) ? 0 : hoursStringConvertedToInteger;\n let newHours;\n if (key === 'ArrowUp') newHours = hoursInteger + 1 <= 12 ? hoursInteger + 1 : hoursInteger;\n else newHours = hoursInteger - 1 > 1 ? hoursInteger - 1 : 1;\n newHours = prependStringWithPlaceHolders(`${newHours}`, 2);\n handleChangeHours(newHours, e);\n }\n if (!Number.isNaN(hoursStringConvertedToInteger) && key === ':') {\n const newHours = prependStringWithPlaceHolders(`${hoursStringConvertedToInteger}`, 2);\n handleChangeHours(newHours, e);\n // auto-advance functionality:\n if (newHours.length === 2) trackFocusMinuteInput();\n }\n\n // regressive backspace functionality\n if (\n key === 'Backspace' &&\n e.target === e.currentTarget &&\n isWithDateInputs &&\n (e.target as HTMLInputElement).selectionStart === 0 &&\n (e.target as HTMLInputElement).selectionEnd === 0\n ) {\n e.preventDefault();\n\n trackFocusYearInput();\n }\n // focus last fragment on fill with now\n if ((ctrlKey || metaKey) && key === ';') trackFocusLastSegment();\n },\n [\n hours,\n isWithDateInputs,\n trackFocusYearInput,\n onHomeKeyDown,\n onEndKeyDown,\n trackFocusLastSegment,\n trackFocusMinuteInput,\n handleChangeHours,\n ],\n );\n const onHoursBlur: DSControlledDateTimePickerInternalsT.OnBlurFunc = useCallback(\n (e: React.FocusEvent<HTMLInputElement>) => {\n const newHours = e?.target?.value;\n if (newHours === '0') handleChangeHours('01', e, { isAutomaticFillTrigger: true });\n else if (newHours.length > 0 && newHours.length < 2)\n handleChangeHours(prependStringWithPlaceHolders(newHours, 2), e, {\n isAutomaticFillTrigger: true,\n });\n },\n [handleChangeHours],\n );\n\n const onMinutesFocus: DSControlledDateTimePickerInternalsT.OnFocusFunc = useCallback(() => {\n trackFocusMinuteInput();\n }, [trackFocusMinuteInput]);\n const onMinutesChange: DSControlledDateTimePickerInternalsT.OnChangeFunc = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n let newMinutes = e?.target?.value;\n // converts minutes 7~9 to 07~09\n if (Number.parseInt(newMinutes, 10) > 6) newMinutes = prependStringWithPlaceHolders(newMinutes, 2);\n handleChangeMinutes(newMinutes, e);\n\n // auto-advance functionality:\n if (newMinutes.length === 2) trackFocusMeridiemInput();\n },\n [handleChangeMinutes, trackFocusMeridiemInput],\n );\n const onMinutesKeyDown: DSControlledDateTimePickerInternalsT.OnKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n const { key, ctrlKey, metaKey } = e;\n const minutesStringConvertedToInteger = Number.parseInt(minutes, 10);\n if (['Home', 'End', 'ArrowUp', 'ArrowDown', ' '].includes(key)) e.preventDefault();\n if (['Home', 'End', 'ArrowUp', 'ArrowDown', ' '].includes(key)) e.stopPropagation();\n\n if (key === 'Home') onHomeKeyDown();\n if (key === 'End') onEndKeyDown();\n if (key === 'ArrowUp' || key === 'ArrowDown') {\n const minutesInteger = Number.isNaN(minutesStringConvertedToInteger) ? 0 : minutesStringConvertedToInteger;\n let newMinutes;\n if (key === 'ArrowUp')\n newMinutes = minutesInteger + minutesInterval <= 59 ? minutesInteger + minutesInterval : minutesInteger;\n else newMinutes = minutesInteger - minutesInterval > 0 ? minutesInteger - minutesInterval : 0;\n newMinutes = prependStringWithPlaceHolders(`${newMinutes}`, 2);\n handleChangeMinutes(newMinutes, e);\n }\n if (!Number.isNaN(minutesStringConvertedToInteger) && key === ' ') {\n const newMinutes = prependStringWithPlaceHolders(`${minutesStringConvertedToInteger}`, 2);\n handleChangeMinutes(newMinutes, e);\n // auto-advance functionality:\n if (newMinutes.length === 2) trackFocusMeridiemInput();\n }\n\n // regressive backspace functionality\n if (\n key === 'Backspace' &&\n e.target === e.currentTarget &&\n (e.target as HTMLInputElement).selectionStart === 0 &&\n (e.target as HTMLInputElement).selectionEnd === 0\n ) {\n e.preventDefault();\n\n trackFocusHourInput();\n }\n\n // focus last fragment on fill with now\n if ((ctrlKey || metaKey) && key === ';') trackFocusLastSegment();\n },\n [\n minutes,\n onHomeKeyDown,\n onEndKeyDown,\n trackFocusLastSegment,\n minutesInterval,\n handleChangeMinutes,\n trackFocusMeridiemInput,\n trackFocusHourInput,\n ],\n );\n const onMinutesBlur: DSControlledDateTimePickerInternalsT.OnBlurFunc = useCallback(\n (e: React.FocusEvent<HTMLInputElement>) => {\n const newMinutes = e?.target?.value;\n if (newMinutes.length > 0 && newMinutes.length < 2)\n handleChangeMinutes(prependStringWithPlaceHolders(newMinutes, 2), e, {\n isAutomaticFillTrigger: true,\n });\n },\n [handleChangeMinutes],\n );\n\n const onMeridiemFocus: DSControlledDateTimePickerInternalsT.OnFocusFunc = useCallback(() => {\n trackFocusMeridiemInput();\n }, [trackFocusMeridiemInput]);\n const onMeridiemChange: DSControlledDateTimePickerInternalsT.OnChangeFunc = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n let newMeridiem = e?.target?.value?.toUpperCase?.();\n // if new value is length 1,\n // if previous value was empty, auto-complete\n // if previous value was not empty, set to empty (regressive backspace)\n if (newMeridiem.length === 1)\n if (meridiem === '') newMeridiem = `${newMeridiem}M`;\n else newMeridiem = '';\n handleChangeMeridiem(newMeridiem, e);\n // auto-advance functionality:\n if (newMeridiem.length === 2 && withAnyRightController) {\n if (withClearBtn) trackFocusClearBtn();\n else if (withAnyPicker) trackFocusPicker();\n }\n },\n [\n meridiem,\n handleChangeMeridiem,\n withAnyRightController,\n withClearBtn,\n trackFocusClearBtn,\n withAnyPicker,\n trackFocusPicker,\n ],\n );\n const onMeridiemKeyDown: DSControlledDateTimePickerInternalsT.OnKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n const { key, ctrlKey, metaKey } = e;\n\n if (['Home', 'End', 'ArrowUp', 'ArrowDown'].includes(key)) e.preventDefault();\n if (['Home', 'End', 'ArrowUp', 'ArrowDown'].includes(key)) e.stopPropagation();\n\n if (key === 'Home') onHomeKeyDown();\n if (key === 'End') onEndKeyDown();\n if (key === 'ArrowUp' && meridiem !== 'AM') handleChangeMeridiem('AM', e);\n if (key === 'ArrowDown' && meridiem !== 'PM') handleChangeMeridiem('PM', e);\n // regressive backspace functionality\n if (key === 'Backspace') {\n if (\n e.target === e.currentTarget &&\n (e.target as HTMLInputElement).selectionStart === 0 &&\n (e.target as HTMLInputElement).selectionEnd === 0\n ) {\n e.preventDefault();\n trackFocusMinuteInput();\n } else if (meridiem?.length === 2) handleChangeMeridiem('', e);\n }\n\n // focus last fragment on fill with now\n if ((ctrlKey || metaKey) && key === ';') trackFocusLastSegment();\n },\n [onHomeKeyDown, onEndKeyDown, meridiem, handleChangeMeridiem, trackFocusLastSegment, trackFocusMinuteInput],\n );\n const onMeridiemBlur: DSControlledDateTimePickerInternalsT.OnBlurFunc = useCallback(\n (e: React.FocusEvent<HTMLInputElement>) => {\n const newMeridiem = e?.target?.value?.toUpperCase?.();\n\n if (newMeridiem.length === 1)\n handleChangeMeridiem(`${newMeridiem}M`, e, {\n isAutomaticFillTrigger: true,\n });\n },\n [handleChangeMeridiem],\n );\n\n return useMemo(\n () => ({\n autoFocusHourInput,\n disabled,\n handleChangeHours,\n onHoursFocus,\n onHoursChange,\n handleChangeMinutes,\n onMinutesFocus,\n onMinutesChange,\n handleChangeMeridiem,\n onMeridiemFocus,\n onMeridiemChange,\n onHoursBlur,\n onMinutesBlur,\n onMeridiemBlur,\n onHoursKeyDown,\n onMinutesKeyDown,\n onMeridiemKeyDown,\n }),\n [\n autoFocusHourInput,\n disabled,\n handleChangeHours,\n onHoursFocus,\n onHoursChange,\n handleChangeMinutes,\n onMinutesFocus,\n onMinutesChange,\n handleChangeMeridiem,\n onMeridiemFocus,\n onMeridiemChange,\n onHoursBlur,\n onMinutesBlur,\n onMeridiemBlur,\n onHoursKeyDown,\n onMinutesKeyDown,\n onMeridiemKeyDown,\n ],\n );\n};\n"],
5
+ "mappings": "AAAA,YAAY,WAAW;ACGvB,SAAS,aAAa,SAAS,kBAAkB;AACjD,SAAS,uCAAuC;AAChD,SAAS,qCAAqC;AAqBvC,MAAM,gBAAgB,MAAsB;AACjD,QAAM;AAAA,IACJ,OAAO,EAAE,SAAS;AAAA,IAClB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI,WAAW,+BAA+B;AAE9C,QAAM,gBAAgB,YAAY,MAAM;AACtC,2BAAuB;AAAA,EACzB,GAAG,CAAC,sBAAsB,CAAC;AAC3B,QAAM,eAAe,YAAY,MAAM;AACrC,0BAAsB;AAAA,EACxB,GAAG,CAAC,qBAAqB,CAAC;AAE1B,QAAM,eAAiE,YAAY,MAAM;AACvF,wBAAoB;AAAA,EACtB,GAAG,CAAC,mBAAmB,CAAC;AACxB,QAAM,gBAAmE;AAAA,IACvE,CAAC,MAA2C;AAC1C,UAAI,WAAW,GAAG,QAAQ;AAE1B,UAAI,OAAO,SAAS,UAAU,EAAE,IAAI;AAAG,mBAAW,8BAA8B,UAAU,CAAC;AAC3F,wBAAkB,UAAU,CAAC;AAE7B,UAAI,SAAS,WAAW;AAAG,8BAAsB;AAAA,IACnD;AAAA,IACA,CAAC,mBAAmB,qBAAqB;AAAA,EAC3C;AACA,QAAM,iBAAiE;AAAA,IACrE,CAAC,MAA6C;AAC5C,YAAM,EAAE,KAAK,SAAS,QAAQ,IAAI;AAClC,YAAM,gCAAgC,OAAO,SAAS,OAAO,EAAE;AAE/D,UAAI,CAAC,QAAQ,OAAO,WAAW,aAAa,GAAG,EAAE,SAAS,GAAG;AAAG,UAAE,eAAe;AACjF,UAAI,CAAC,QAAQ,OAAO,WAAW,aAAa,GAAG,EAAE,SAAS,GAAG;AAAG,UAAE,gBAAgB;AAClF,UAAI,QAAQ;AAAQ,sBAAc;AAClC,UAAI,QAAQ;AAAO,qBAAa;AAChC,UAAI,QAAQ,aAAa,QAAQ,aAAa;AAC5C,cAAM,eAAe,OAAO,MAAM,6BAA6B,IAAI,IAAI;AACvE,YAAI;AACJ,YAAI,QAAQ;AAAW,qBAAW,eAAe,KAAK,KAAK,eAAe,IAAI;AAAA;AACzE,qBAAW,eAAe,IAAI,IAAI,eAAe,IAAI;AAC1D,mBAAW,8BAA8B,GAAG,YAAY,CAAC;AACzD,0BAAkB,UAAU,CAAC;AAAA,MAC/B;AACA,UAAI,CAAC,OAAO,MAAM,6BAA6B,KAAK,QAAQ,KAAK;AAC/D,cAAM,WAAW,8BAA8B,GAAG,iCAAiC,CAAC;AACpF,0BAAkB,UAAU,CAAC;AAE7B,YAAI,SAAS,WAAW;AAAG,gCAAsB;AAAA,MACnD;AAGA,UACE,QAAQ,eACR,EAAE,WAAW,EAAE,iBACf,oBACC,EAAE,OAA4B,mBAAmB,KACjD,EAAE,OAA4B,iBAAiB,GAChD;AACA,UAAE,eAAe;AAEjB,4BAAoB;AAAA,MACtB;AAEA,WAAK,WAAW,YAAY,QAAQ;AAAK,8BAAsB;AAAA,IACjE;AAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACA,QAAM,cAA+D;AAAA,IACnE,CAAC,MAA0C;AACzC,YAAM,WAAW,GAAG,QAAQ;AAC5B,UAAI,aAAa;AAAK,0BAAkB,MAAM,GAAG,EAAE,wBAAwB,KAAK,CAAC;AAAA,eACxE,SAAS,SAAS,KAAK,SAAS,SAAS;AAChD,0BAAkB,8BAA8B,UAAU,CAAC,GAAG,GAAG;AAAA,UAC/D,wBAAwB;AAAA,QAC1B,CAAC;AAAA,IACL;AAAA,IACA,CAAC,iBAAiB;AAAA,EACpB;AAEA,QAAM,iBAAmE,YAAY,MAAM;AACzF,0BAAsB;AAAA,EACxB,GAAG,CAAC,qBAAqB,CAAC;AAC1B,QAAM,kBAAqE;AAAA,IACzE,CAAC,MAA2C;AAC1C,UAAI,aAAa,GAAG,QAAQ;AAE5B,UAAI,OAAO,SAAS,YAAY,EAAE,IAAI;AAAG,qBAAa,8BAA8B,YAAY,CAAC;AACjG,0BAAoB,YAAY,CAAC;AAGjC,UAAI,WAAW,WAAW;AAAG,gCAAwB;AAAA,IACvD;AAAA,IACA,CAAC,qBAAqB,uBAAuB;AAAA,EAC/C;AACA,QAAM,mBAAmE;AAAA,IACvE,CAAC,MAA6C;AAC5C,YAAM,EAAE,KAAK,SAAS,QAAQ,IAAI;AAClC,YAAM,kCAAkC,OAAO,SAAS,SAAS,EAAE;AACnE,UAAI,CAAC,QAAQ,OAAO,WAAW,aAAa,GAAG,EAAE,SAAS,GAAG;AAAG,UAAE,eAAe;AACjF,UAAI,CAAC,QAAQ,OAAO,WAAW,aAAa,GAAG,EAAE,SAAS,GAAG;AAAG,UAAE,gBAAgB;AAElF,UAAI,QAAQ;AAAQ,sBAAc;AAClC,UAAI,QAAQ;AAAO,qBAAa;AAChC,UAAI,QAAQ,aAAa,QAAQ,aAAa;AAC5C,cAAM,iBAAiB,OAAO,MAAM,+BAA+B,IAAI,IAAI;AAC3E,YAAI;AACJ,YAAI,QAAQ;AACV,uBAAa,iBAAiB,mBAAmB,KAAK,iBAAiB,kBAAkB;AAAA;AACtF,uBAAa,iBAAiB,kBAAkB,IAAI,iBAAiB,kBAAkB;AAC5F,qBAAa,8BAA8B,GAAG,cAAc,CAAC;AAC7D,4BAAoB,YAAY,CAAC;AAAA,MACnC;AACA,UAAI,CAAC,OAAO,MAAM,+BAA+B,KAAK,QAAQ,KAAK;AACjE,cAAM,aAAa,8BAA8B,GAAG,mCAAmC,CAAC;AACxF,4BAAoB,YAAY,CAAC;AAEjC,YAAI,WAAW,WAAW;AAAG,kCAAwB;AAAA,MACvD;AAGA,UACE,QAAQ,eACR,EAAE,WAAW,EAAE,iBACd,EAAE,OAA4B,mBAAmB,KACjD,EAAE,OAA4B,iBAAiB,GAChD;AACA,UAAE,eAAe;AAEjB,4BAAoB;AAAA,MACtB;AAGA,WAAK,WAAW,YAAY,QAAQ;AAAK,8BAAsB;AAAA,IACjE;AAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACA,QAAM,gBAAiE;AAAA,IACrE,CAAC,MAA0C;AACzC,YAAM,aAAa,GAAG,QAAQ;AAC9B,UAAI,WAAW,SAAS,KAAK,WAAW,SAAS;AAC/C,4BAAoB,8BAA8B,YAAY,CAAC,GAAG,GAAG;AAAA,UACnE,wBAAwB;AAAA,QAC1B,CAAC;AAAA,IACL;AAAA,IACA,CAAC,mBAAmB;AAAA,EACtB;AAEA,QAAM,kBAAoE,YAAY,MAAM;AAC1F,4BAAwB;AAAA,EAC1B,GAAG,CAAC,uBAAuB,CAAC;AAC5B,QAAM,mBAAsE;AAAA,IAC1E,CAAC,MAA2C;AAC1C,UAAI,cAAc,GAAG,QAAQ,OAAO,cAAc;AAIlD,UAAI,YAAY,WAAW;AACzB,YAAI,aAAa;AAAI,wBAAc,GAAG;AAAA;AACjC,wBAAc;AACrB,2BAAqB,aAAa,CAAC;AAEnC,UAAI,YAAY,WAAW,KAAK,wBAAwB;AACtD,YAAI;AAAc,6BAAmB;AAAA,iBAC5B;AAAe,2BAAiB;AAAA,MAC3C;AAAA,IACF;AAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACA,QAAM,oBAAoE;AAAA,IACxE,CAAC,MAA6C;AAC5C,YAAM,EAAE,KAAK,SAAS,QAAQ,IAAI;AAElC,UAAI,CAAC,QAAQ,OAAO,WAAW,WAAW,EAAE,SAAS,GAAG;AAAG,UAAE,eAAe;AAC5E,UAAI,CAAC,QAAQ,OAAO,WAAW,WAAW,EAAE,SAAS,GAAG;AAAG,UAAE,gBAAgB;AAE7E,UAAI,QAAQ;AAAQ,sBAAc;AAClC,UAAI,QAAQ;AAAO,qBAAa;AAChC,UAAI,QAAQ,aAAa,aAAa;AAAM,6BAAqB,MAAM,CAAC;AACxE,UAAI,QAAQ,eAAe,aAAa;AAAM,6BAAqB,MAAM,CAAC;AAE1E,UAAI,QAAQ,aAAa;AACvB,YACE,EAAE,WAAW,EAAE,iBACd,EAAE,OAA4B,mBAAmB,KACjD,EAAE,OAA4B,iBAAiB,GAChD;AACA,YAAE,eAAe;AACjB,gCAAsB;AAAA,QACxB,WAAW,UAAU,WAAW;AAAG,+BAAqB,IAAI,CAAC;AAAA,MAC/D;AAGA,WAAK,WAAW,YAAY,QAAQ;AAAK,8BAAsB;AAAA,IACjE;AAAA,IACA,CAAC,eAAe,cAAc,UAAU,sBAAsB,uBAAuB,qBAAqB;AAAA,EAC5G;AACA,QAAM,iBAAkE;AAAA,IACtE,CAAC,MAA0C;AACzC,YAAM,cAAc,GAAG,QAAQ,OAAO,cAAc;AAEpD,UAAI,YAAY,WAAW;AACzB,6BAAqB,GAAG,gBAAgB,GAAG;AAAA,UACzC,wBAAwB;AAAA,QAC1B,CAAC;AAAA,IACL;AAAA,IACA,CAAC,oBAAoB;AAAA,EACvB;AAEA,SAAO;AAAA,IACL,OAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACF;",
6
6
  "names": []
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elliemae/ds-form-date-time-picker",
3
- "version": "3.11.0-rc.2",
3
+ "version": "3.11.0-rc.4",
4
4
  "license": "MIT",
5
5
  "description": "ICE MT - Dimsum - Controlled Form Date Time Picker",
6
6
  "files": [
@@ -35,13 +35,13 @@
35
35
  "indent": 4
36
36
  },
37
37
  "dependencies": {
38
- "@elliemae/ds-button": "3.11.0-rc.2",
39
- "@elliemae/ds-grid": "3.11.0-rc.2",
40
- "@elliemae/ds-icon": "3.11.0-rc.2",
41
- "@elliemae/ds-icons": "3.11.0-rc.2",
42
- "@elliemae/ds-popperjs": "3.11.0-rc.2",
43
- "@elliemae/ds-system": "3.11.0-rc.2",
44
- "@elliemae/ds-utilities": "3.11.0-rc.2"
38
+ "@elliemae/ds-button": "3.11.0-rc.4",
39
+ "@elliemae/ds-grid": "3.11.0-rc.4",
40
+ "@elliemae/ds-icon": "3.11.0-rc.4",
41
+ "@elliemae/ds-icons": "3.11.0-rc.4",
42
+ "@elliemae/ds-popperjs": "3.11.0-rc.4",
43
+ "@elliemae/ds-system": "3.11.0-rc.4",
44
+ "@elliemae/ds-utilities": "3.11.0-rc.4"
45
45
  },
46
46
  "devDependencies": {
47
47
  "@elliemae/pui-theme": "~2.6.0",