@dnb/eufemia 10.71.0 → 10.71.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/cjs/components/date-picker/DatePickerFooter.d.ts +2 -2
  3. package/cjs/components/date-picker/DatePickerFooter.js.map +1 -1
  4. package/cjs/components/date-picker/DatePickerInput.js +18 -22
  5. package/cjs/components/date-picker/DatePickerInput.js.map +1 -1
  6. package/cjs/components/date-picker/hooks/useDates.d.ts +1 -10
  7. package/cjs/components/date-picker/hooks/useDates.js +2 -40
  8. package/cjs/components/date-picker/hooks/useDates.js.map +1 -1
  9. package/cjs/components/date-picker/hooks/useInputDates.d.ts +14 -0
  10. package/cjs/components/date-picker/hooks/useInputDates.js +80 -0
  11. package/cjs/components/date-picker/hooks/useInputDates.js.map +1 -0
  12. package/cjs/components/input-masked/text-mask/adjustCaretPosition.js +2 -2
  13. package/cjs/components/input-masked/text-mask/adjustCaretPosition.js.map +1 -1
  14. package/cjs/components/tooltip/TooltipContainer.js +2 -1
  15. package/cjs/components/tooltip/TooltipContainer.js.map +1 -1
  16. package/cjs/extensions/forms/utils/FormError.d.ts +3 -0
  17. package/cjs/extensions/forms/utils/FormError.js.map +1 -1
  18. package/cjs/shared/Eufemia.d.ts +1 -1
  19. package/cjs/shared/Eufemia.js +2 -2
  20. package/cjs/shared/Eufemia.js.map +1 -1
  21. package/cjs/shared/locales/en-GB.js +2 -2
  22. package/cjs/shared/locales/en-GB.js.map +1 -1
  23. package/cjs/style/core/scopes.scss +1 -1
  24. package/cjs/style/dnb-ui-basis.css +1 -1
  25. package/cjs/style/dnb-ui-basis.min.css +1 -1
  26. package/cjs/style/dnb-ui-body.css +1 -1
  27. package/cjs/style/dnb-ui-body.min.css +1 -1
  28. package/cjs/style/dnb-ui-core.css +1 -1
  29. package/cjs/style/dnb-ui-core.min.css +1 -1
  30. package/components/date-picker/DatePickerFooter.d.ts +2 -2
  31. package/components/date-picker/DatePickerFooter.js.map +1 -1
  32. package/components/date-picker/DatePickerInput.js +18 -22
  33. package/components/date-picker/DatePickerInput.js.map +1 -1
  34. package/components/date-picker/hooks/useDates.d.ts +1 -10
  35. package/components/date-picker/hooks/useDates.js +2 -36
  36. package/components/date-picker/hooks/useDates.js.map +1 -1
  37. package/components/date-picker/hooks/useInputDates.d.ts +14 -0
  38. package/components/date-picker/hooks/useInputDates.js +72 -0
  39. package/components/date-picker/hooks/useInputDates.js.map +1 -0
  40. package/components/input-masked/text-mask/adjustCaretPosition.js +2 -2
  41. package/components/input-masked/text-mask/adjustCaretPosition.js.map +1 -1
  42. package/components/tooltip/TooltipContainer.js +2 -1
  43. package/components/tooltip/TooltipContainer.js.map +1 -1
  44. package/es/components/date-picker/DatePickerFooter.d.ts +2 -2
  45. package/es/components/date-picker/DatePickerFooter.js.map +1 -1
  46. package/es/components/date-picker/DatePickerInput.js +18 -22
  47. package/es/components/date-picker/DatePickerInput.js.map +1 -1
  48. package/es/components/date-picker/hooks/useDates.d.ts +1 -10
  49. package/es/components/date-picker/hooks/useDates.js +2 -36
  50. package/es/components/date-picker/hooks/useDates.js.map +1 -1
  51. package/es/components/date-picker/hooks/useInputDates.d.ts +14 -0
  52. package/es/components/date-picker/hooks/useInputDates.js +70 -0
  53. package/es/components/date-picker/hooks/useInputDates.js.map +1 -0
  54. package/es/components/input-masked/text-mask/adjustCaretPosition.js +2 -2
  55. package/es/components/input-masked/text-mask/adjustCaretPosition.js.map +1 -1
  56. package/es/components/tooltip/TooltipContainer.js +2 -1
  57. package/es/components/tooltip/TooltipContainer.js.map +1 -1
  58. package/es/extensions/forms/utils/FormError.d.ts +3 -0
  59. package/es/extensions/forms/utils/FormError.js.map +1 -1
  60. package/es/shared/Eufemia.d.ts +1 -1
  61. package/es/shared/Eufemia.js +2 -2
  62. package/es/shared/Eufemia.js.map +1 -1
  63. package/es/shared/locales/en-GB.js +2 -2
  64. package/es/shared/locales/en-GB.js.map +1 -1
  65. package/es/style/core/scopes.scss +1 -1
  66. package/es/style/dnb-ui-basis.css +1 -1
  67. package/es/style/dnb-ui-basis.min.css +1 -1
  68. package/es/style/dnb-ui-body.css +1 -1
  69. package/es/style/dnb-ui-body.min.css +1 -1
  70. package/es/style/dnb-ui-core.css +1 -1
  71. package/es/style/dnb-ui-core.min.css +1 -1
  72. package/esm/dnb-ui-basis.min.mjs +1 -1
  73. package/esm/dnb-ui-components.min.mjs +1 -1
  74. package/esm/dnb-ui-elements.min.mjs +1 -1
  75. package/esm/dnb-ui-extensions.min.mjs +1 -1
  76. package/esm/dnb-ui-lib.min.mjs +1 -1
  77. package/extensions/forms/utils/FormError.d.ts +3 -0
  78. package/extensions/forms/utils/FormError.js.map +1 -1
  79. package/package.json +1 -1
  80. package/shared/Eufemia.d.ts +1 -1
  81. package/shared/Eufemia.js +2 -2
  82. package/shared/Eufemia.js.map +1 -1
  83. package/shared/locales/en-GB.js +2 -2
  84. package/shared/locales/en-GB.js.map +1 -1
  85. package/style/core/scopes.scss +1 -1
  86. package/style/dnb-ui-basis.css +1 -1
  87. package/style/dnb-ui-basis.min.css +1 -1
  88. package/style/dnb-ui-body.css +1 -1
  89. package/style/dnb-ui-body.min.css +1 -1
  90. package/style/dnb-ui-core.css +1 -1
  91. package/style/dnb-ui-core.min.css +1 -1
  92. package/umd/dnb-ui-basis.min.js +1 -1
  93. package/umd/dnb-ui-components.min.js +1 -1
  94. package/umd/dnb-ui-elements.min.js +1 -1
  95. package/umd/dnb-ui-extensions.min.js +1 -1
  96. package/umd/dnb-ui-lib.min.js +1 -1
  97. package/cjs/components/icon/lib/SvgComparison.d.ts +0 -2
  98. package/cjs/components/icon/lib/SvgComparison.js +0 -56
  99. package/cjs/components/icon/lib/SvgComparison.js.map +0 -1
  100. package/components/icon/lib/SvgComparison.d.ts +0 -2
  101. package/components/icon/lib/SvgComparison.js +0 -49
  102. package/components/icon/lib/SvgComparison.js.map +0 -1
  103. package/es/components/icon/lib/SvgComparison.d.ts +0 -2
  104. package/es/components/icon/lib/SvgComparison.js +0 -49
  105. package/es/components/icon/lib/SvgComparison.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"DatePickerInput.js","names":["React","useCallback","useContext","useMemo","useRef","useState","isValid","parseISO","classnames","TextMask","Button","Input","SubmitButton","warn","validateDOMAttributes","toCapitalized","IS_ANDROID","IS_IOS","convertStringToDate","DatePickerContext","useTranslation","usePartialDates","defaultProps","maskOrder","maskPlaceholder","separatorRegExp","statusState","opened","DatePickerInput","externalProps","props","_objectSpread","isRange","id","title","submitAttributes","onFocus","onBlur","onChange","onSubmit","selectedDateTitle","showInput","inputElement","lang","disabled","skeleton","size","status","statusProps","attributes","_objectWithoutProperties","_excluded","focusState","setFocusState","partialDatesRef","setPartialDates","invalidDatesRef","invalidStartDate","invalidEndDate","isDateFullyFilledOutRef","updateDates","callOnChangeHandler","getReturnObject","__startDay","__startMonth","__startYear","__endDay","__endMonth","__endYear","startDate","endDate","onType","label","correctInvalidDate","translation","DatePicker","hasHadValidDate","modeDate","inputDates","inputRefs","startDayRef","current","undefined","startMonthRef","startYearRef","endDayRef","endMonthRef","endYearRef","dateRefs","startDay","startMonth","startYear","endDay","endMonth","endYear","syncDateRefs","temporaryDates","refList","focusMode","maskList","separators","match","split","reduce","acc","cur","push","length","shift","pasteHandler","event","success","clipboardData","window","getData","preventDefault","possibleFormats","forEach","date","sep","replace","reverse","join","index","dateFormat","mode","error","callOnChangeAsInvalid","state","hoverDate","dates","callOnChange","_ref","callOnType","_ref2","getDates","partialStartDate","partialEndDate","parsedStartDate","parsedEndDate","isStartDateValid","isEndDateValid","_getReturnObject","is_valid","is_valid_start_date","is_valid_end_date","returnObject","_excluded2","typedDates","start_date","end_date","setDate","type","persist","value","target","fallback","year","getFullYear","month","getMonth","day","getDate","Date","parseFloat","String","isValidDate","test","dateString","dateSetters","set_startDay","set_startMonth","set_startYear","set_endDay","set_endMonth","set_endYear","onFocusHandler","isNaN","setCursorPosition","onBlurHandler","onKeyDownHandler","keyCode","key","selectionStart","selectionEnd","getAttribute","firstSelectionStart","firstSelectionEnd","wait","secondSelectionStart","refListArray","findIndex","_ref3","isLastChar","isFirstChar","isMovingForward","isExplicitForward","hasNextField","_refListArray","nextSibling","withoutDelay","name","slice","isMovingBackward","isPressingBackspace","_refListArray2","prevSibling","endPos","onInputHandler","currentTarget","nativeEvent","inputType","getPlaceholderChar","indexOf","generateDateList","element","map","i","placeholderChar","isRangeLabel","onInput","onKeyDown","onPaste","e","DateField","isValidElement","InputElement","inputSizeClassName","createElement","Fragment","_extends","className","mask","inputRef","hidden","htmlFor","renderInputElement","startDateList","endDateList","_span","ariaLabel","openPickerText","SubmitElement","innerRef","ref","input_state","input_element","status_state","submit_element","icon","variant","on_submit","on_click","position","arguments","options","focus","select","setSelectionRange","process","env","NODE_ENV","setTimeout","_ref4","_excluded3","guide","inputMode","showMask","keepCharPositions","autoComplete","autoCapitalize","spellCheck","autoCorrect","dateRefValue","inputDateValue","duration","Promise","r"],"sources":["../../../../src/components/date-picker/DatePickerInput.tsx"],"sourcesContent":["/**\n * Web DatePicker Component\n *\n */\n\nimport React, {\n MutableRefObject,\n useCallback,\n useContext,\n useMemo,\n useRef,\n useState,\n} from 'react'\n\n// date-fns\nimport isValid from 'date-fns/isValid'\nimport parseISO from 'date-fns/parseISO'\n\nimport classnames from 'classnames'\nimport TextMask, { TextMaskProps } from '../input-masked/TextMask'\nimport Button from '../button/Button'\nimport Input, { SubmitButton } from '../input/Input'\nimport type { InputInputElement, InputSize } from '../Input'\nimport {\n warn,\n validateDOMAttributes,\n toCapitalized,\n} from '../../shared/component-helper'\nimport { IS_ANDROID, IS_IOS } from '../../shared/helpers'\nimport { convertStringToDate } from './DatePickerCalc'\nimport DatePickerContext from './DatePickerContext'\n\nimport type {\n FormStatusProps,\n FormStatusState,\n FormStatusText,\n} from '../FormStatus'\nimport type { SkeletonShow } from '../Skeleton'\nimport { ReturnObject } from './DatePickerProvider'\nimport { DatePickerEventAttributes } from './DatePicker'\nimport { useTranslation } from '../../shared'\nimport { DatePickerInputDates } from './hooks/useDates'\nimport usePartialDates from './hooks/usePartialDates'\n\nexport type DatePickerInputProps = Omit<\n React.HTMLProps<HTMLInputElement>,\n | 'children'\n | 'ref'\n | 'value'\n | 'size'\n | 'onFocus'\n | 'onBlur'\n | 'onSubmit'\n | 'label'\n> & {\n selectedDateTitle?: string\n maskOrder?: string\n maskPlaceholder?: string\n separatorRegExp?: RegExp\n submitAttributes?: Record<string, unknown>\n isRange?: boolean\n /**\n * The sizes you can choose is `small` (1.5rem), `default` (2rem), `medium` (2.5rem) and `large` (3rem) are supported component sizes. Defaults to `default` / `null`.\n */\n size?: InputSize\n /**\n * Text with a status message. The style defaults to an error message. You can use `true` to only get the status color, without a message.\n */\n status?: FormStatusText\n /**\n * Defines the state of the status. Currently, there are two statuses `[error, info]`. Defaults to `error`.\n */\n statusState?: FormStatusState\n /**\n * Use an object to define additional FormStatus properties.\n */\n statusProps?: FormStatusProps\n /**\n * Gives you the possibility to use a plain/vanilla `<input />` HTML element by defining it as a string `input_element=\"input\"`, a React element, or a render function `input_element={(internalProps) => (<Return />)}`. Can also be used in circumstances where the `react-text-mask` not should be used, e.g. in testing environments. Defaults to custom masked input.\n */\n inputElement?: InputInputElement\n /**\n * If set to `true`, an overlaying skeleton with animation will be shown.\n */\n skeleton?: SkeletonShow\n /**\n * To open the date-picker by default. Defaults to `false`.\n */\n opened?: boolean\n showInput?: boolean\n onSubmit?: (event: React.MouseEvent<HTMLButtonElement>) => void\n onChange?: (\n event: ReturnObject<React.ChangeEvent<HTMLInputElement>>\n ) => void\n /**\n * Will be called once the input gets focus.\n */\n onFocus?: (\n event: ReturnObject<React.FocusEvent<HTMLInputElement>>\n ) => void\n /**\n * Will be called once the input lose focus.\n */\n onBlur?: (\n event: ReturnObject<React.FocusEvent<HTMLInputElement>>\n ) => void\n}\n\nexport type InvalidDates = {\n invalidDate?: string\n invalidStartDate?: string\n invalidEndDate?: string\n}\n\nconst defaultProps: DatePickerInputProps = {\n maskOrder: 'dd/mm/yyyy',\n maskPlaceholder: 'dd/mm/åååå',\n separatorRegExp: /[-/ ]/g,\n statusState: 'error',\n opened: false,\n}\n\nfunction DatePickerInput(externalProps: DatePickerInputProps) {\n const props = { ...defaultProps, ...externalProps }\n\n const {\n isRange,\n maskOrder,\n separatorRegExp,\n id,\n title,\n submitAttributes,\n maskPlaceholder, // eslint-disable-line\n onFocus,\n onBlur,\n onChange, // eslint-disable-line\n onSubmit, // eslint-disable-line\n selectedDateTitle, // eslint-disable-line\n showInput, // eslint-disable-line\n inputElement,\n lang,\n disabled,\n skeleton,\n opened,\n size,\n status,\n statusState,\n statusProps,\n\n ...attributes\n } = props\n const [focusState, setFocusState] = useState<string>('virgin')\n\n const { partialDatesRef, setPartialDates } = usePartialDates()\n\n const invalidDatesRef = useRef<InvalidDates>({\n invalidStartDate: null,\n invalidEndDate: null,\n })\n const isDateFullyFilledOutRef = useRef(false)\n\n const {\n updateDates,\n callOnChangeHandler,\n getReturnObject,\n __startDay,\n __startMonth,\n __startYear,\n __endDay,\n __endMonth,\n __endYear,\n startDate,\n endDate,\n props: { onType, label, correctInvalidDate },\n } = useContext(DatePickerContext)\n\n const translation = useTranslation().DatePicker\n\n const hasHadValidDate = isValid(startDate) || isValid(endDate)\n\n const modeDate = useMemo(\n () => ({\n startDate,\n endDate,\n }),\n [startDate, endDate]\n )\n\n const inputDates = useMemo(\n () => ({\n __startDay,\n __startMonth,\n __startYear,\n __endDay,\n __endMonth,\n __endYear,\n }),\n [\n __startDay,\n __startMonth,\n __startYear,\n __endDay,\n __endMonth,\n __endYear,\n ]\n )\n\n const inputRefs = useRef<\n Record<string, MutableRefObject<HTMLInputElement>>\n >({\n startDayRef: { current: undefined },\n startMonthRef: { current: undefined },\n startYearRef: { current: undefined },\n endDayRef: { current: undefined },\n endMonthRef: { current: undefined },\n endYearRef: { current: undefined },\n })\n\n const dateRefs = useRef<Record<string, string>>({\n startDay: '',\n startMonth: '',\n startYear: '',\n endDay: '',\n endMonth: '',\n endYear: '',\n })\n\n // Keep dateRefs in sync with inputDates on re-render\n syncDateRefs(dateRefs, inputDates)\n\n const temporaryDates = useRef<Record<string, Date>>({\n startDate: undefined,\n endDate: undefined,\n })\n\n const refList = useRef<Array<MutableRefObject<HTMLInputElement>>>()\n\n const focusMode = useRef<string>()\n\n const maskList = useMemo(() => {\n const separators = maskOrder.match(separatorRegExp)\n\n return maskOrder\n .split(separatorRegExp)\n .reduce<Array<string>>((acc, cur) => {\n if (!cur) {\n return acc\n }\n\n acc.push(cur)\n\n if (separators.length > 0) {\n // makes sure that separators are added at the correct places and removed from array when added\n acc.push(separators.shift())\n }\n\n return acc\n }, [])\n }, [maskOrder, separatorRegExp])\n\n const pasteHandler = useCallback(\n async (event: React.ClipboardEvent<HTMLInputElement>) => {\n if (!focusMode.current) {\n return // Stop here\n }\n\n const success = (\n event.clipboardData ||\n (typeof window !== 'undefined' && window['clipboardData'])\n ).getData('text')\n\n if (!success) {\n return // Stop here\n }\n\n event.preventDefault()\n\n try {\n const separators = ['.', '/']\n const possibleFormats = ['yyyy-MM-dd']\n\n // TODO: Merge these loops\n possibleFormats.forEach((date) => {\n separators.forEach((sep) => {\n possibleFormats.push(date.replace(/-/g, sep))\n })\n })\n\n possibleFormats.forEach((date) => {\n possibleFormats.push(date.split('').reverse().join(''))\n })\n\n let date: Date\n let index = 0\n\n for (index; index < possibleFormats.length; ++index) {\n date = convertStringToDate(success, {\n dateFormat: possibleFormats[index],\n })\n\n if (date) {\n break\n }\n }\n\n const mode =\n focusMode.current === 'start' ? 'startDate' : 'endDate'\n\n if (date) {\n updateDates({\n [mode]: date,\n })\n }\n } catch (error: unknown) {\n warn(error)\n }\n },\n [updateDates]\n )\n\n const callOnChangeAsInvalid = useCallback(\n (state: {\n endDate?: Date\n starDate?: Date\n event: React.ChangeEvent<HTMLInputElement>\n }) => {\n updateDates(\n {\n hoverDate: null,\n },\n (dates) => {\n // Should fire if user has filled out an invalid date,\n // or if the date was valid. Like if the user has pressed backspace or removed the valid date.\n if (isDateFullyFilledOutRef.current || hasHadValidDate) {\n const { startDate, endDate, event } = {\n ...state,\n ...dates,\n }\n callOnChangeHandler({\n startDate,\n endDate,\n event,\n ...invalidDatesRef.current,\n })\n }\n }\n )\n },\n [updateDates, callOnChangeHandler, hasHadValidDate]\n )\n\n const callOnChange = useCallback(\n ({\n startDate,\n endDate,\n event,\n }: {\n startDate?: Date\n endDate?: Date\n event:\n | React.ChangeEvent<HTMLInputElement>\n | React.KeyboardEvent<HTMLInputElement>\n }) => {\n const state = {}\n if (typeof startDate !== 'undefined' && isValid(startDate)) {\n state['startDate'] = startDate\n }\n if (!isRange) {\n endDate = startDate\n }\n if (typeof endDate !== 'undefined' && isValid(endDate)) {\n state['endDate'] = endDate\n }\n\n updateDates(state, (dates) => {\n if (\n (typeof startDate !== 'undefined' && isValid(startDate)) ||\n (typeof endDate !== 'undefined' && isValid(endDate))\n ) {\n callOnChangeHandler({\n event,\n ...dates,\n ...invalidDatesRef.current,\n })\n }\n })\n },\n [updateDates, callOnChangeHandler, isRange]\n )\n\n const callOnType = useCallback(\n ({ event }: { event: React.ChangeEvent<HTMLInputElement> }) => {\n const getDates = () =>\n ['start', 'end'].reduce(\n (acc, mode) => {\n acc[`${mode}Date`] = [\n dateRefs.current[`${mode}Year`] ||\n inputDates[`__${mode}Year`] ||\n 'yyyy',\n dateRefs.current[`${mode}Month`] ||\n inputDates[`__${mode}Month`] ||\n 'mm',\n dateRefs.current[`${mode}Day`] ||\n inputDates[`__${mode}Day`] ||\n 'dd',\n ].join('-')\n return acc\n },\n { startDate: undefined, endDate: undefined }\n )\n\n // Get the typed dates, so we can ...\n const { startDate, endDate } = getDates()\n\n // Get the partial dates, so we can know if something was typed or not in an optional date field\n setPartialDates({\n partialStartDate: startDate,\n // Only set endDate if in range mode\n ...(isRange && { partialEndDate: endDate }),\n })\n\n const parsedStartDate = parseISO(startDate)\n const parsedEndDate = parseISO(endDate)\n\n const isStartDateValid = isValid(parsedStartDate)\n const isEndDateValid = isValid(parsedEndDate)\n\n const {\n is_valid,\n is_valid_start_date,\n is_valid_end_date,\n ...returnObject\n } = getReturnObject({\n startDate: isStartDateValid ? parsedStartDate : null,\n endDate: isEndDateValid ? parsedEndDate : null,\n event,\n ...partialDatesRef.current,\n ...invalidDatesRef.current,\n })\n\n // Re-assigns dates to the typed date, instead of `null` from getReturnObject, if dates are invalid\n const typedDates = {\n ...(!isRange && is_valid === false && { date: startDate }),\n ...(isRange &&\n is_valid_start_date === false && { start_date: startDate }),\n ...(isRange &&\n is_valid_end_date === false && { end_date: endDate }),\n }\n\n onType?.({\n is_valid,\n is_valid_start_date,\n is_valid_end_date,\n ...returnObject,\n ...typedDates,\n })\n },\n [\n setPartialDates,\n isRange,\n getReturnObject,\n partialDatesRef,\n onType,\n inputDates,\n ]\n )\n\n const setDate = useCallback(\n (\n event: React.ChangeEvent<HTMLInputElement>,\n mode: 'start' | 'end',\n type: 'Day' | 'Month' | 'Year'\n ) => {\n event.persist() // since we have later a state update and afterwards the callback\n\n const value = (event.target as HTMLInputElement).value\n\n dateRefs.current[`${mode}${type}`] = value\n\n if (modeDate[`${mode}Date`]) {\n temporaryDates.current[`${mode}Date`] = modeDate[`${mode}Date`]\n }\n\n const fallback = temporaryDates.current[`${mode}Date`]\n\n // provide fallbacks to create a temp fallback\n const year =\n dateRefs.current[`${mode}Year`] ||\n (fallback && fallback.getFullYear())\n const month =\n dateRefs.current[`${mode}Month`] ||\n (fallback && fallback.getMonth() + 1)\n const day =\n dateRefs.current[`${mode}Day`] || (fallback && fallback.getDate())\n\n // calculate new date\n const date = new Date(\n parseFloat(String(year)),\n parseFloat(String(month)) - 1,\n parseFloat(String(day))\n )\n\n const isValidDate =\n !/[^0-9]/.test(String(day)) &&\n !/[^0-9]/.test(String(month)) &&\n !/[^0-9]/.test(String(year)) &&\n isValid(date) &&\n date.getDate() == parseFloat(String(day)) &&\n date.getMonth() + 1 == parseFloat(String(month)) &&\n date.getFullYear() == parseFloat(String(year))\n\n const dateString = `${year}-${month}-${day}`\n\n isDateFullyFilledOutRef.current =\n /^[0-9]{4}-[0-9]{2}-[0-9]{2}$/.test(dateString)\n\n // update the date\n if (isValidDate) {\n invalidDatesRef.current = {\n ...invalidDatesRef.current,\n ...(mode === 'start'\n ? { invalidStartDate: null }\n : { invalidEndDate: null }),\n }\n\n callOnChange({\n [`${mode}Date`]: date,\n event,\n })\n } else {\n updateDates({\n [`${mode}Date`]: null,\n [`__${mode}${type}`]: value,\n })\n\n invalidDatesRef.current = {\n ...invalidDatesRef.current,\n ...(mode === 'start'\n ? { invalidStartDate: dateString }\n : { invalidEndDate: dateString }),\n }\n\n callOnChangeAsInvalid({\n [`${mode}Date`]: null,\n event,\n })\n }\n\n callOnType({ event })\n },\n [\n updateDates,\n callOnChange,\n callOnChangeAsInvalid,\n callOnType,\n modeDate,\n dateRefs,\n temporaryDates,\n ]\n )\n\n const dateSetters = useMemo(\n () => ({\n set_startDay: (event: React.ChangeEvent<HTMLInputElement>) => {\n setDate(event, 'start', 'Day')\n },\n\n set_startMonth: (event: React.ChangeEvent<HTMLInputElement>) => {\n setDate(event, 'start', 'Month')\n },\n\n set_startYear: (event: React.ChangeEvent<HTMLInputElement>) => {\n setDate(event, 'start', 'Year')\n },\n\n set_endDay: (event: React.ChangeEvent<HTMLInputElement>) => {\n setDate(event, 'end', 'Day')\n },\n\n set_endMonth: (event: React.ChangeEvent<HTMLInputElement>) => {\n setDate(event, 'end', 'Month')\n },\n\n set_endYear: (event: React.ChangeEvent<HTMLInputElement>) => {\n setDate(event, 'end', 'Year')\n },\n }),\n [setDate]\n )\n\n const onFocusHandler = useCallback(\n (event: React.FocusEvent<HTMLInputElement>) => {\n setFocusState('focus')\n\n onFocus?.({\n ...event,\n ...getReturnObject({ event }),\n })\n\n if (isNaN(parseFloat(event.target.value))) {\n setCursorPosition(event.target)\n }\n },\n [getReturnObject, onFocus]\n )\n\n const onBlurHandler = useCallback(\n (event: React.FocusEvent<HTMLInputElement>) => {\n focusMode.current = null\n setFocusState('blur')\n\n onBlur?.({\n ...event,\n ...getReturnObject({ event, ...partialDatesRef.current }),\n })\n },\n [onBlur, getReturnObject, partialDatesRef]\n )\n\n const onKeyDownHandler = useCallback(\n async (event: React.KeyboardEvent<HTMLInputElement>) => {\n const keyCode = event.key\n const target = event.target as HTMLInputElement\n\n if (\n correctInvalidDate &&\n target.selectionStart !== target.selectionEnd\n ) {\n setCursorPosition(target)\n }\n\n // The rest is for value entry\n\n const size = parseFloat(target.getAttribute('size'))\n const firstSelectionStart = target.selectionStart\n const firstSelectionEnd = target.selectionEnd\n\n // To get the correct position afterwards.\n // Use 10ms in order to make it work on iOS Safari\n await wait(IS_IOS ? 10 : 1)\n\n const secondSelectionStart = target.selectionStart\n\n // Always false (since the old keycode function set number keys to undefined) but needed to not break tests\n const isValid = /[0-9]/g.test(keyCode)\n const refListArray = refList.current\n\n const index = refListArray.findIndex(\n ({ current }) => current === target\n )\n\n const isLastChar = secondSelectionStart === size\n const isFirstChar = firstSelectionStart === size\n\n const isMovingForward =\n keyCode !== 'ArrowLeft' &&\n keyCode !== 'Backspace' &&\n isValid &&\n isLastChar\n\n const isExplicitForward =\n (keyCode === 'ArrowRight' || keyCode === 'Enter') && isFirstChar\n\n const hasNextField = index < refListArray.length - 1\n\n if (hasNextField && (isMovingForward || isExplicitForward)) {\n // stop in case there is no next input element\n if (!refListArray[index + 1].current) {\n return // stop here\n }\n const nextSibling = refListArray[index + 1]?.current\n\n if (nextSibling) {\n setCursorPosition(nextSibling, 0, { withoutDelay: true })\n }\n\n // When the cursor is at the end of the input\n // and the user types a number, we want to set the value on the next input.\n if (\n parseFloat(keyCode) <= 9 &&\n firstSelectionStart === target.size\n ) {\n const name = toCapitalized(\n nextSibling\n .getAttribute('class')\n .match(/__input--(day|month|year)($|\\s)/)[1]\n )\n const mode = nextSibling\n .getAttribute('id')\n .match(/-(start|end)-(day|month|year)/)[1]\n\n dateSetters[`set_${mode}${name}`]({\n persist: () => null,\n ...event,\n target: {\n value: keyCode + nextSibling.value.slice(1),\n },\n })\n\n setCursorPosition(nextSibling, 1)\n }\n } else if (index > 0 && firstSelectionStart === firstSelectionEnd) {\n const isMovingBackward =\n keyCode === 'ArrowLeft' && firstSelectionStart === 0\n const isPressingBackspace =\n keyCode === 'Backspace' && firstSelectionStart <= 1\n\n if (isMovingBackward || isPressingBackspace) {\n const prevSibling = refListArray[index - 1]?.current\n if (prevSibling) {\n const endPos = prevSibling.value.length\n setCursorPosition(prevSibling, endPos, {\n withoutDelay: true,\n })\n }\n }\n }\n },\n [correctInvalidDate, dateSetters]\n )\n\n const onInputHandler = useCallback(\n (event) => {\n const target = event.currentTarget\n\n // Add support for \"backspace\" on Android virtual keyboard\n if (\n IS_ANDROID &&\n event.nativeEvent.inputType === 'deleteContentBackward' &&\n target.selectionStart === 0 &&\n target.selectionEnd === 0\n ) {\n onKeyDownHandler({\n ...event,\n key: 'Backspace',\n })\n }\n },\n [onKeyDownHandler]\n )\n\n const getPlaceholderChar = useCallback(\n (value: string) => {\n const index = maskOrder.indexOf(value)\n return maskPlaceholder[index]\n },\n [maskOrder, maskPlaceholder]\n )\n\n // TODO: Replace with MultiInputMask\n const generateDateList = useCallback(\n (\n element: Omit<React.HTMLProps<HTMLInputElement>, 'size'> &\n DatePickerEventAttributes,\n mode: 'start' | 'end'\n ) => {\n return maskList.map((value, i) => {\n const state = value.slice(0, 1)\n const placeholderChar = getPlaceholderChar(value)\n const { day, month, year } = translation\n const isRangeLabel = isRange ? `${translation[mode]} ` : ''\n\n if (!separatorRegExp.test(value)) {\n if (!inputElement) {\n element = {\n ...element,\n onInput: onInputHandler,\n onKeyDown: onKeyDownHandler,\n onPaste: pasteHandler,\n onFocus: (e) => {\n focusMode.current = mode\n onFocusHandler(e)\n },\n onBlur: onBlurHandler,\n placeholderChar,\n }\n }\n\n // this makes it possible to use a vanilla <input /> like: input_element=\"input\"\n const DateField =\n inputElement && React.isValidElement(inputElement)\n ? inputElement.type\n : InputElement\n\n const inputSizeClassName =\n size && `dnb-date-picker__input--${size}`\n\n switch (state) {\n case 'd':\n refList.current.push(inputRefs.current[`${mode}DayRef`])\n\n return (\n <React.Fragment key={'dd' + i}>\n <DateField\n {...element}\n id={`${id}-${mode}-day`}\n key={'di' + i}\n className={classnames(\n element.className,\n 'dnb-date-picker__input',\n 'dnb-date-picker__input--day',\n inputSizeClassName\n )}\n size={2}\n mask={[/[0-9]/, /[0-9]/]}\n inputRef={inputRefs.current[`${mode}DayRef`]}\n onChange={dateSetters[`set_${mode}Day`]}\n value={inputDates[`__${mode}Day`] || ''}\n aria-labelledby={`${id}-${mode}-day-label`}\n />\n <label\n key={'dl' + i}\n hidden\n id={`${id}-${mode}-day-label`}\n htmlFor={`${id}-${mode}-day`}\n >\n {isRangeLabel + day}\n </label>\n </React.Fragment>\n )\n case 'm':\n refList.current.push(inputRefs.current[`${mode}MonthRef`])\n\n return (\n <React.Fragment key={'mm' + i}>\n <DateField\n {...element}\n id={`${id}-${mode}-month`}\n key={'mi' + i}\n className={classnames(\n element.className,\n 'dnb-date-picker__input',\n 'dnb-date-picker__input--month',\n inputSizeClassName\n )}\n size={2}\n mask={[/[0-9]/, /[0-9]/]}\n inputRef={inputRefs.current[`${mode}MonthRef`]}\n onChange={dateSetters[`set_${mode}Month`]}\n value={inputDates[`__${mode}Month`] || ''}\n aria-labelledby={`${id}-${mode}-month-label`}\n />\n <label\n key={'ml' + i}\n hidden\n id={`${id}-${mode}-month-label`}\n htmlFor={`${id}-${mode}-month`}\n >\n {isRangeLabel + month}\n </label>\n </React.Fragment>\n )\n case 'y':\n refList.current.push(inputRefs.current[`${mode}YearRef`])\n\n return (\n <React.Fragment key={'yy' + i}>\n <DateField\n {...element}\n id={`${id}-${mode}-year`}\n key={'yi' + i}\n className={classnames(\n element.className,\n 'dnb-date-picker__input',\n 'dnb-date-picker__input--year',\n inputSizeClassName\n )}\n size={4}\n mask={[/[0-9]/, /[0-9]/, /[0-9]/, /[0-9]/]}\n inputRef={inputRefs.current[`${mode}YearRef`]}\n onChange={dateSetters[`set_${mode}Year`]}\n value={inputDates[`__${mode}Year`] || ''}\n aria-labelledby={`${id}-${mode}-year-label`}\n />\n <label\n key={'yl' + i}\n hidden\n id={`${id}-${mode}-year-label`}\n htmlFor={`${id}-${mode}-year`}\n >\n {isRangeLabel + year}\n </label>\n </React.Fragment>\n )\n }\n }\n return (\n <span\n key={'s' + i}\n className=\"dnb-date-picker--separator\"\n aria-hidden\n >\n {placeholderChar}\n </span>\n )\n })\n },\n [\n maskList,\n getPlaceholderChar,\n translation,\n isRange,\n separatorRegExp,\n inputElement,\n size,\n onInputHandler,\n onKeyDownHandler,\n pasteHandler,\n onBlurHandler,\n onFocusHandler,\n id,\n dateSetters,\n inputDates,\n ]\n )\n\n const renderInputElement = useCallback(\n (\n element: React.HTMLProps<HTMLInputElement> &\n DatePickerEventAttributes\n ) => {\n refList.current = []\n const startDateList = generateDateList(element, 'start')\n const endDateList = generateDateList(element, 'end')\n\n return (\n <span\n id={`${id}-input`}\n className=\"dnb-date-picker__input__wrapper\"\n >\n {startDateList}\n {isRange && (\n <span className=\"dnb-date-picker--separator\" aria-hidden>\n {' – '}\n </span>\n )}\n {isRange && endDateList}\n </span>\n )\n },\n [id, isRange, generateDateList]\n )\n\n const ariaLabel = useMemo(\n () =>\n selectedDateTitle\n ? `${selectedDateTitle}, ${translation.openPickerText}`\n : translation.openPickerText,\n [selectedDateTitle, translation]\n )\n\n validateDOMAttributes(props, attributes)\n validateDOMAttributes(null, submitAttributes)\n\n const SubmitElement: React.ElementType = useMemo(\n () => (showInput ? SubmitButton : Button),\n [showInput]\n )\n\n if (!showInput) {\n // Use Button inner ref\n submitAttributes.innerRef = submitAttributes.ref\n submitAttributes.ref = null\n }\n\n return (\n <fieldset className=\"dnb-date-picker__fieldset\" lang={lang}>\n {label && <legend className=\"dnb-sr-only\">{label}</legend>}\n <Input\n id={`${id}__input`}\n input_state={disabled ? 'disabled' : focusState}\n input_element={\n inputElement && typeof inputElement !== 'string'\n ? typeof inputElement === 'function'\n ? inputElement(props)\n : inputElement\n : renderInputElement\n }\n disabled={disabled || skeleton}\n skeleton={skeleton}\n size={size}\n status={!opened ? status : null}\n status_state={statusState}\n {...statusProps}\n submit_element={\n <SubmitElement\n id={id}\n disabled={disabled}\n skeleton={skeleton}\n className={classnames(\n showInput && 'dnb-button--input-button',\n opened ? 'dnb-button--active' : null\n )}\n aria-label={ariaLabel}\n title={title}\n size={size}\n status={status}\n status_state={statusState}\n type=\"button\"\n icon=\"calendar\"\n variant=\"secondary\"\n on_submit={onSubmit}\n on_click={onSubmit}\n {...submitAttributes}\n {...statusProps}\n />\n }\n lang={lang}\n {...attributes}\n />\n </fieldset>\n )\n}\n\nexport default DatePickerInput\n\nfunction setCursorPosition(\n target: HTMLInputElement,\n position = 0,\n options?: { withoutDelay?: boolean }\n) {\n target.focus()\n\n const select = () => {\n target.setSelectionRange(position, position)\n }\n\n // Delay for correct iOS Safari appearance\n if (!options?.withoutDelay && process.env.NODE_ENV !== 'test') {\n setTimeout(select, 0)\n } else {\n select()\n }\n}\n\nfunction InputElement({ className, value, ...props }: TextMaskProps) {\n return (\n <TextMask\n guide={true}\n inputMode=\"numeric\"\n showMask={true}\n keepCharPositions={false} // so we can overwrite next value, if it already exists\n autoComplete=\"off\"\n autoCapitalize=\"none\"\n spellCheck={false}\n autoCorrect=\"off\"\n className={classnames(\n className,\n /\\d+/.test(String(value)) && 'dnb-date-picker__input--highlight'\n )}\n value={value}\n {...props}\n />\n )\n}\n\nfunction syncDateRefs(\n dateRefs: React.MutableRefObject<Record<string, string>>,\n inputDates: DatePickerInputDates\n) {\n for (const date in dateRefs.current) {\n const dateRefValue = dateRefs.current[date]\n const inputDateValue = inputDates[`__${date}`]\n\n if (dateRefValue !== inputDateValue) {\n dateRefs.current[date] = inputDateValue\n }\n }\n}\n\nconst wait = (duration: number) =>\n new Promise((r) => setTimeout(r, duration))\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"DatePickerInput.js","names":["React","useCallback","useContext","useMemo","useRef","useState","isValid","parseISO","classnames","TextMask","Button","Input","SubmitButton","warn","validateDOMAttributes","toCapitalized","IS_ANDROID","IS_IOS","convertStringToDate","DatePickerContext","useTranslation","usePartialDates","useInputDates","defaultProps","maskOrder","maskPlaceholder","separatorRegExp","statusState","opened","DatePickerInput","externalProps","props","_objectSpread","isRange","id","title","submitAttributes","onFocus","onBlur","onChange","onSubmit","selectedDateTitle","showInput","inputElement","lang","disabled","skeleton","size","status","statusProps","attributes","_objectWithoutProperties","_excluded","focusState","setFocusState","partialDatesRef","setPartialDates","invalidDatesRef","invalidStartDate","invalidEndDate","isDateFullyFilledOutRef","updateDates","callOnChangeHandler","getReturnObject","startDate","endDate","onType","label","correctInvalidDate","inputDates","updateInputDates","translation","DatePicker","hasHadValidDate","modeDate","inputRefs","startDayRef","current","undefined","startMonthRef","startYearRef","endDayRef","endMonthRef","endYearRef","dateRefs","startDay","startMonth","startYear","endDay","endMonth","endYear","syncDateRefs","temporaryDates","refList","focusMode","maskList","separators","match","split","reduce","acc","cur","push","length","shift","pasteHandler","event","success","clipboardData","window","getData","preventDefault","possibleFormats","forEach","date","sep","replace","reverse","join","index","dateFormat","mode","error","callOnChangeAsInvalid","state","hoverDate","dates","callOnChange","_ref","callOnType","_ref2","getDates","partialStartDate","partialEndDate","parsedStartDate","parsedEndDate","isStartDateValid","isEndDateValid","_getReturnObject","is_valid","is_valid_start_date","is_valid_end_date","returnObject","_excluded2","typedDates","start_date","end_date","setDate","type","persist","value","target","fallback","year","getFullYear","month","getMonth","day","getDate","Date","parseFloat","String","isValidDate","test","dateString","dateSetters","set_startDay","set_startMonth","set_startYear","set_endDay","set_endMonth","set_endYear","onFocusHandler","isNaN","setCursorPosition","onBlurHandler","onKeyDownHandler","keyCode","key","selectionStart","selectionEnd","getAttribute","firstSelectionStart","firstSelectionEnd","wait","secondSelectionStart","refListArray","findIndex","_ref3","isLastChar","isFirstChar","isMovingForward","isExplicitForward","hasNextField","_refListArray","nextSibling","withoutDelay","name","slice","isMovingBackward","isPressingBackspace","_refListArray2","prevSibling","endPos","onInputHandler","currentTarget","nativeEvent","inputType","getPlaceholderChar","indexOf","generateDateList","element","map","i","placeholderChar","isRangeLabel","onInput","onKeyDown","onPaste","e","DateField","isValidElement","InputElement","inputSizeClassName","createElement","Fragment","_extends","className","mask","inputRef","hidden","htmlFor","renderInputElement","startDateList","endDateList","_span","ariaLabel","openPickerText","SubmitElement","innerRef","ref","input_state","input_element","status_state","submit_element","icon","variant","on_submit","on_click","position","arguments","options","focus","select","setSelectionRange","process","env","NODE_ENV","setTimeout","_ref4","_excluded3","guide","inputMode","showMask","keepCharPositions","autoComplete","autoCapitalize","spellCheck","autoCorrect","dateRefValue","inputDateValue","duration","Promise","r"],"sources":["../../../../src/components/date-picker/DatePickerInput.tsx"],"sourcesContent":["/**\n * Web DatePicker Component\n *\n */\n\nimport React, {\n MutableRefObject,\n useCallback,\n useContext,\n useMemo,\n useRef,\n useState,\n} from 'react'\n\n// date-fns\nimport isValid from 'date-fns/isValid'\nimport parseISO from 'date-fns/parseISO'\n\nimport classnames from 'classnames'\nimport TextMask, { TextMaskProps } from '../input-masked/TextMask'\nimport Button from '../button/Button'\nimport Input, { SubmitButton } from '../input/Input'\nimport type { InputInputElement, InputSize } from '../Input'\nimport {\n warn,\n validateDOMAttributes,\n toCapitalized,\n} from '../../shared/component-helper'\nimport { IS_ANDROID, IS_IOS } from '../../shared/helpers'\nimport { convertStringToDate } from './DatePickerCalc'\nimport DatePickerContext from './DatePickerContext'\n\nimport type {\n FormStatusProps,\n FormStatusState,\n FormStatusText,\n} from '../FormStatus'\nimport type { SkeletonShow } from '../Skeleton'\nimport { ReturnObject } from './DatePickerProvider'\nimport { DatePickerEventAttributes } from './DatePicker'\nimport { useTranslation } from '../../shared'\nimport usePartialDates from './hooks/usePartialDates'\nimport useInputDates, { DatePickerInputDates } from './hooks/useInputDates'\n\nexport type DatePickerInputProps = Omit<\n React.HTMLProps<HTMLInputElement>,\n | 'children'\n | 'ref'\n | 'value'\n | 'size'\n | 'onFocus'\n | 'onBlur'\n | 'onSubmit'\n | 'label'\n> & {\n selectedDateTitle?: string\n maskOrder?: string\n maskPlaceholder?: string\n separatorRegExp?: RegExp\n submitAttributes?: Record<string, unknown>\n isRange?: boolean\n /**\n * The sizes you can choose is `small` (1.5rem), `default` (2rem), `medium` (2.5rem) and `large` (3rem) are supported component sizes. Defaults to `default` / `null`.\n */\n size?: InputSize\n /**\n * Text with a status message. The style defaults to an error message. You can use `true` to only get the status color, without a message.\n */\n status?: FormStatusText\n /**\n * Defines the state of the status. Currently, there are two statuses `[error, info]`. Defaults to `error`.\n */\n statusState?: FormStatusState\n /**\n * Use an object to define additional FormStatus properties.\n */\n statusProps?: FormStatusProps\n /**\n * Gives you the possibility to use a plain/vanilla `<input />` HTML element by defining it as a string `input_element=\"input\"`, a React element, or a render function `input_element={(internalProps) => (<Return />)}`. Can also be used in circumstances where the `react-text-mask` not should be used, e.g. in testing environments. Defaults to custom masked input.\n */\n inputElement?: InputInputElement\n /**\n * If set to `true`, an overlaying skeleton with animation will be shown.\n */\n skeleton?: SkeletonShow\n /**\n * To open the date-picker by default. Defaults to `false`.\n */\n opened?: boolean\n showInput?: boolean\n onSubmit?: (event: React.MouseEvent<HTMLButtonElement>) => void\n onChange?: (\n event: ReturnObject<React.ChangeEvent<HTMLInputElement>>\n ) => void\n /**\n * Will be called once the input gets focus.\n */\n onFocus?: (\n event: ReturnObject<React.FocusEvent<HTMLInputElement>>\n ) => void\n /**\n * Will be called once the input lose focus.\n */\n onBlur?: (\n event: ReturnObject<React.FocusEvent<HTMLInputElement>>\n ) => void\n}\n\nexport type InvalidDates = {\n invalidDate?: string\n invalidStartDate?: string\n invalidEndDate?: string\n}\n\nconst defaultProps: DatePickerInputProps = {\n maskOrder: 'dd/mm/yyyy',\n maskPlaceholder: 'dd/mm/åååå',\n separatorRegExp: /[-/ ]/g,\n statusState: 'error',\n opened: false,\n}\n\nfunction DatePickerInput(externalProps: DatePickerInputProps) {\n const props = { ...defaultProps, ...externalProps }\n\n const {\n isRange,\n maskOrder,\n separatorRegExp,\n id,\n title,\n submitAttributes,\n maskPlaceholder, // eslint-disable-line\n onFocus,\n onBlur,\n onChange, // eslint-disable-line\n onSubmit, // eslint-disable-line\n selectedDateTitle, // eslint-disable-line\n showInput, // eslint-disable-line\n inputElement,\n lang,\n disabled,\n skeleton,\n opened,\n size,\n status,\n statusState,\n statusProps,\n\n ...attributes\n } = props\n const [focusState, setFocusState] = useState<string>('virgin')\n\n const { partialDatesRef, setPartialDates } = usePartialDates()\n\n const invalidDatesRef = useRef<InvalidDates>({\n invalidStartDate: null,\n invalidEndDate: null,\n })\n const isDateFullyFilledOutRef = useRef(false)\n\n const {\n updateDates,\n callOnChangeHandler,\n getReturnObject,\n startDate,\n endDate,\n props: { onType, label, correctInvalidDate },\n } = useContext(DatePickerContext)\n\n const { inputDates, updateInputDates } = useInputDates({\n startDate,\n endDate,\n })\n\n const translation = useTranslation().DatePicker\n\n const hasHadValidDate = isValid(startDate) || isValid(endDate)\n\n const modeDate = useMemo(\n () => ({\n startDate,\n endDate,\n }),\n [startDate, endDate]\n )\n\n const inputRefs = useRef<\n Record<string, MutableRefObject<HTMLInputElement>>\n >({\n startDayRef: { current: undefined },\n startMonthRef: { current: undefined },\n startYearRef: { current: undefined },\n endDayRef: { current: undefined },\n endMonthRef: { current: undefined },\n endYearRef: { current: undefined },\n })\n\n const dateRefs = useRef<DatePickerInputDates>({\n startDay: '',\n startMonth: '',\n startYear: '',\n endDay: '',\n endMonth: '',\n endYear: '',\n })\n\n // Keep dateRefs in sync with inputDates on re-render\n syncDateRefs(dateRefs, inputDates)\n\n const temporaryDates = useRef<Record<string, Date>>({\n startDate: undefined,\n endDate: undefined,\n })\n\n const refList = useRef<Array<MutableRefObject<HTMLInputElement>>>()\n\n const focusMode = useRef<string>()\n\n const maskList = useMemo(() => {\n const separators = maskOrder.match(separatorRegExp)\n\n return maskOrder\n .split(separatorRegExp)\n .reduce<Array<string>>((acc, cur) => {\n if (!cur) {\n return acc\n }\n\n acc.push(cur)\n\n if (separators.length > 0) {\n // makes sure that separators are added at the correct places and removed from array when added\n acc.push(separators.shift())\n }\n\n return acc\n }, [])\n }, [maskOrder, separatorRegExp])\n\n const pasteHandler = useCallback(\n async (event: React.ClipboardEvent<HTMLInputElement>) => {\n if (!focusMode.current) {\n return // Stop here\n }\n\n const success = (\n event.clipboardData ||\n (typeof window !== 'undefined' && window['clipboardData'])\n ).getData('text')\n\n if (!success) {\n return // Stop here\n }\n\n event.preventDefault()\n\n try {\n const separators = ['.', '/']\n const possibleFormats = ['yyyy-MM-dd']\n\n // TODO: Merge these loops\n possibleFormats.forEach((date) => {\n separators.forEach((sep) => {\n possibleFormats.push(date.replace(/-/g, sep))\n })\n })\n\n possibleFormats.forEach((date) => {\n possibleFormats.push(date.split('').reverse().join(''))\n })\n\n let date: Date\n let index = 0\n\n for (index; index < possibleFormats.length; ++index) {\n date = convertStringToDate(success, {\n dateFormat: possibleFormats[index],\n })\n\n if (date) {\n break\n }\n }\n\n const mode =\n focusMode.current === 'start' ? 'startDate' : 'endDate'\n\n if (date) {\n updateDates({\n [mode]: date,\n })\n }\n } catch (error: unknown) {\n warn(error)\n }\n },\n [updateDates]\n )\n\n const callOnChangeAsInvalid = useCallback(\n (state: {\n endDate?: Date\n starDate?: Date\n event: React.ChangeEvent<HTMLInputElement>\n }) => {\n updateDates(\n {\n hoverDate: null,\n },\n (dates) => {\n // Should fire if user has filled out an invalid date,\n // or if the date was valid. Like if the user has pressed backspace or removed the valid date.\n if (isDateFullyFilledOutRef.current || hasHadValidDate) {\n const { startDate, endDate, event } = {\n ...state,\n ...dates,\n }\n callOnChangeHandler({\n startDate,\n endDate,\n event,\n ...invalidDatesRef.current,\n })\n }\n }\n )\n },\n [updateDates, callOnChangeHandler, hasHadValidDate]\n )\n\n const callOnChange = useCallback(\n ({\n startDate,\n endDate,\n event,\n }: {\n startDate?: Date\n endDate?: Date\n event:\n | React.ChangeEvent<HTMLInputElement>\n | React.KeyboardEvent<HTMLInputElement>\n }) => {\n const state = {}\n if (typeof startDate !== 'undefined' && isValid(startDate)) {\n state['startDate'] = startDate\n }\n if (!isRange) {\n endDate = startDate\n }\n if (typeof endDate !== 'undefined' && isValid(endDate)) {\n state['endDate'] = endDate\n }\n\n updateDates(state, (dates) => {\n if (\n (typeof startDate !== 'undefined' && isValid(startDate)) ||\n (typeof endDate !== 'undefined' && isValid(endDate))\n ) {\n callOnChangeHandler({\n event,\n ...dates,\n ...invalidDatesRef.current,\n })\n }\n })\n },\n [updateDates, callOnChangeHandler, isRange]\n )\n\n const callOnType = useCallback(\n ({ event }: { event: React.ChangeEvent<HTMLInputElement> }) => {\n const getDates = () =>\n ['start', 'end'].reduce(\n (acc, mode) => {\n acc[`${mode}Date`] = [\n dateRefs.current[`${mode}Year`] ||\n inputDates[`${mode}Year`] ||\n 'yyyy',\n dateRefs.current[`${mode}Month`] ||\n inputDates[`${mode}Month`] ||\n 'mm',\n dateRefs.current[`${mode}Day`] ||\n inputDates[`${mode}Day`] ||\n 'dd',\n ].join('-')\n return acc\n },\n { startDate: undefined, endDate: undefined }\n )\n\n // Get the typed dates, so we can ...\n const { startDate, endDate } = getDates()\n\n // Get the partial dates, so we can know if something was typed or not in an optional date field\n setPartialDates({\n partialStartDate: startDate,\n // Only set endDate if in range mode\n ...(isRange && { partialEndDate: endDate }),\n })\n\n const parsedStartDate = parseISO(startDate)\n const parsedEndDate = parseISO(endDate)\n\n const isStartDateValid = isValid(parsedStartDate)\n const isEndDateValid = isValid(parsedEndDate)\n\n const {\n is_valid,\n is_valid_start_date,\n is_valid_end_date,\n ...returnObject\n } = getReturnObject({\n startDate: isStartDateValid ? parsedStartDate : null,\n endDate: isEndDateValid ? parsedEndDate : null,\n event,\n ...partialDatesRef.current,\n ...invalidDatesRef.current,\n })\n\n // Re-assigns dates to the typed date, instead of `null` from getReturnObject, if dates are invalid\n const typedDates = {\n ...(!isRange && is_valid === false && { date: startDate }),\n ...(isRange &&\n is_valid_start_date === false && { start_date: startDate }),\n ...(isRange &&\n is_valid_end_date === false && { end_date: endDate }),\n }\n\n onType?.({\n is_valid,\n is_valid_start_date,\n is_valid_end_date,\n ...returnObject,\n ...typedDates,\n })\n },\n [\n setPartialDates,\n isRange,\n getReturnObject,\n partialDatesRef,\n onType,\n inputDates,\n ]\n )\n\n const setDate = useCallback(\n (\n event: React.ChangeEvent<HTMLInputElement>,\n mode: 'start' | 'end',\n type: 'Day' | 'Month' | 'Year'\n ) => {\n event.persist() // since we have later a state update and afterwards the callback\n\n const value = (event.target as HTMLInputElement).value\n\n dateRefs.current[`${mode}${type}`] = value\n\n if (modeDate[`${mode}Date`]) {\n temporaryDates.current[`${mode}Date`] = modeDate[`${mode}Date`]\n }\n\n const fallback = temporaryDates.current[`${mode}Date`]\n\n // provide fallbacks to create a temp fallback\n const year =\n dateRefs.current[`${mode}Year`] ||\n (fallback && fallback.getFullYear())\n const month =\n dateRefs.current[`${mode}Month`] ||\n (fallback && fallback.getMonth() + 1)\n const day =\n dateRefs.current[`${mode}Day`] || (fallback && fallback.getDate())\n\n // calculate new date\n const date = new Date(\n parseFloat(String(year)),\n parseFloat(String(month)) - 1,\n parseFloat(String(day))\n )\n\n const isValidDate =\n !/[^0-9]/.test(String(day)) &&\n !/[^0-9]/.test(String(month)) &&\n !/[^0-9]/.test(String(year)) &&\n isValid(date) &&\n date.getDate() == parseFloat(String(day)) &&\n date.getMonth() + 1 == parseFloat(String(month)) &&\n date.getFullYear() == parseFloat(String(year))\n\n const dateString = `${year}-${month}-${day}`\n\n isDateFullyFilledOutRef.current =\n /^[0-9]{4}-[0-9]{2}-[0-9]{2}$/.test(dateString)\n\n // update the date\n if (isValidDate) {\n invalidDatesRef.current = {\n ...invalidDatesRef.current,\n ...(mode === 'start'\n ? { invalidStartDate: null }\n : { invalidEndDate: null }),\n }\n\n callOnChange({\n [`${mode}Date`]: date,\n event,\n })\n } else {\n updateDates({\n [`${mode}Date`]: null,\n })\n updateInputDates({ [`${mode}${type}`]: value })\n\n invalidDatesRef.current = {\n ...invalidDatesRef.current,\n ...(mode === 'start'\n ? { invalidStartDate: dateString }\n : { invalidEndDate: dateString }),\n }\n\n callOnChangeAsInvalid({\n [`${mode}Date`]: null,\n event,\n })\n }\n\n callOnType({ event })\n },\n [\n updateDates,\n callOnChange,\n callOnChangeAsInvalid,\n callOnType,\n modeDate,\n dateRefs,\n temporaryDates,\n updateInputDates,\n ]\n )\n\n const dateSetters = useMemo(\n () => ({\n set_startDay: (event: React.ChangeEvent<HTMLInputElement>) => {\n setDate(event, 'start', 'Day')\n },\n\n set_startMonth: (event: React.ChangeEvent<HTMLInputElement>) => {\n setDate(event, 'start', 'Month')\n },\n\n set_startYear: (event: React.ChangeEvent<HTMLInputElement>) => {\n setDate(event, 'start', 'Year')\n },\n\n set_endDay: (event: React.ChangeEvent<HTMLInputElement>) => {\n setDate(event, 'end', 'Day')\n },\n\n set_endMonth: (event: React.ChangeEvent<HTMLInputElement>) => {\n setDate(event, 'end', 'Month')\n },\n\n set_endYear: (event: React.ChangeEvent<HTMLInputElement>) => {\n setDate(event, 'end', 'Year')\n },\n }),\n [setDate]\n )\n\n const onFocusHandler = useCallback(\n (event: React.FocusEvent<HTMLInputElement>) => {\n setFocusState('focus')\n\n onFocus?.({\n ...event,\n ...getReturnObject({ event }),\n })\n\n if (isNaN(parseFloat(event.target.value))) {\n setCursorPosition(event.target)\n }\n },\n [getReturnObject, onFocus]\n )\n\n const onBlurHandler = useCallback(\n (event: React.FocusEvent<HTMLInputElement>) => {\n focusMode.current = null\n setFocusState('blur')\n\n onBlur?.({\n ...event,\n ...getReturnObject({ event, ...partialDatesRef.current }),\n })\n },\n [onBlur, getReturnObject, partialDatesRef]\n )\n\n const onKeyDownHandler = useCallback(\n async (event: React.KeyboardEvent<HTMLInputElement>) => {\n const keyCode = event.key\n const target = event.target as HTMLInputElement\n\n if (\n correctInvalidDate &&\n target.selectionStart !== target.selectionEnd\n ) {\n setCursorPosition(target)\n }\n\n // The rest is for value entry\n\n const size = parseFloat(target.getAttribute('size'))\n const firstSelectionStart = target.selectionStart\n const firstSelectionEnd = target.selectionEnd\n\n // To get the correct position afterwards.\n // Use 10ms in order to make it work on iOS Safari\n await wait(IS_IOS ? 10 : 1)\n\n const secondSelectionStart = target.selectionStart\n\n // Always false (since the old keycode function set number keys to undefined) but needed to not break tests\n const isValid = /[0-9]/g.test(keyCode)\n const refListArray = refList.current\n\n const index = refListArray.findIndex(\n ({ current }) => current === target\n )\n\n const isLastChar = secondSelectionStart === size\n const isFirstChar = firstSelectionStart === size\n\n const isMovingForward =\n keyCode !== 'ArrowLeft' &&\n keyCode !== 'Backspace' &&\n isValid &&\n isLastChar\n\n const isExplicitForward =\n (keyCode === 'ArrowRight' || keyCode === 'Enter') && isFirstChar\n\n const hasNextField = index < refListArray.length - 1\n\n if (hasNextField && (isMovingForward || isExplicitForward)) {\n // stop in case there is no next input element\n if (!refListArray[index + 1].current) {\n return // stop here\n }\n const nextSibling = refListArray[index + 1]?.current\n\n if (nextSibling) {\n setCursorPosition(nextSibling, 0, { withoutDelay: true })\n }\n\n // When the cursor is at the end of the input\n // and the user types a number, we want to set the value on the next input.\n if (\n parseFloat(keyCode) <= 9 &&\n firstSelectionStart === target.size\n ) {\n const name = toCapitalized(\n nextSibling\n .getAttribute('class')\n .match(/__input--(day|month|year)($|\\s)/)[1]\n )\n const mode = nextSibling\n .getAttribute('id')\n .match(/-(start|end)-(day|month|year)/)[1]\n\n dateSetters[`set_${mode}${name}`]({\n persist: () => null,\n ...event,\n target: {\n value: keyCode + nextSibling.value.slice(1),\n },\n })\n\n setCursorPosition(nextSibling, 1)\n }\n } else if (index > 0 && firstSelectionStart === firstSelectionEnd) {\n const isMovingBackward =\n keyCode === 'ArrowLeft' && firstSelectionStart === 0\n const isPressingBackspace =\n keyCode === 'Backspace' && firstSelectionStart <= 1\n\n if (isMovingBackward || isPressingBackspace) {\n const prevSibling = refListArray[index - 1]?.current\n if (prevSibling) {\n const endPos = prevSibling.value.length\n setCursorPosition(prevSibling, endPos, {\n withoutDelay: true,\n })\n }\n }\n }\n },\n [correctInvalidDate, dateSetters]\n )\n\n const onInputHandler = useCallback(\n (event) => {\n const target = event.currentTarget\n\n // Add support for \"backspace\" on Android virtual keyboard\n if (\n IS_ANDROID &&\n event.nativeEvent.inputType === 'deleteContentBackward' &&\n target.selectionStart === 0 &&\n target.selectionEnd === 0\n ) {\n onKeyDownHandler({\n ...event,\n key: 'Backspace',\n })\n }\n },\n [onKeyDownHandler]\n )\n\n const getPlaceholderChar = useCallback(\n (value: string) => {\n const index = maskOrder.indexOf(value)\n return maskPlaceholder[index]\n },\n [maskOrder, maskPlaceholder]\n )\n\n // TODO: Replace with MultiInputMask\n const generateDateList = useCallback(\n (\n element: Omit<React.HTMLProps<HTMLInputElement>, 'size'> &\n DatePickerEventAttributes,\n mode: 'start' | 'end'\n ) => {\n return maskList.map((value, i) => {\n const state = value.slice(0, 1)\n const placeholderChar = getPlaceholderChar(value)\n const { day, month, year } = translation\n const isRangeLabel = isRange ? `${translation[mode]} ` : ''\n\n if (!separatorRegExp.test(value)) {\n if (!inputElement) {\n element = {\n ...element,\n onInput: onInputHandler,\n onKeyDown: onKeyDownHandler,\n onPaste: pasteHandler,\n onFocus: (e) => {\n focusMode.current = mode\n onFocusHandler(e)\n },\n onBlur: onBlurHandler,\n placeholderChar,\n }\n }\n\n // this makes it possible to use a vanilla <input /> like: input_element=\"input\"\n const DateField =\n inputElement && React.isValidElement(inputElement)\n ? inputElement.type\n : InputElement\n\n const inputSizeClassName =\n size && `dnb-date-picker__input--${size}`\n\n switch (state) {\n case 'd':\n refList.current.push(inputRefs.current[`${mode}DayRef`])\n\n return (\n <React.Fragment key={'dd' + i}>\n <DateField\n {...element}\n id={`${id}-${mode}-day`}\n key={'di' + i}\n className={classnames(\n element.className,\n 'dnb-date-picker__input',\n 'dnb-date-picker__input--day',\n inputSizeClassName\n )}\n size={2}\n mask={[/[0-9]/, /[0-9]/]}\n inputRef={inputRefs.current[`${mode}DayRef`]}\n onChange={dateSetters[`set_${mode}Day`]}\n value={inputDates[`${mode}Day`] || ''}\n aria-labelledby={`${id}-${mode}-day-label`}\n />\n <label\n key={'dl' + i}\n hidden\n id={`${id}-${mode}-day-label`}\n htmlFor={`${id}-${mode}-day`}\n >\n {isRangeLabel + day}\n </label>\n </React.Fragment>\n )\n case 'm':\n refList.current.push(inputRefs.current[`${mode}MonthRef`])\n\n return (\n <React.Fragment key={'mm' + i}>\n <DateField\n {...element}\n id={`${id}-${mode}-month`}\n key={'mi' + i}\n className={classnames(\n element.className,\n 'dnb-date-picker__input',\n 'dnb-date-picker__input--month',\n inputSizeClassName\n )}\n size={2}\n mask={[/[0-9]/, /[0-9]/]}\n inputRef={inputRefs.current[`${mode}MonthRef`]}\n onChange={dateSetters[`set_${mode}Month`]}\n value={inputDates[`${mode}Month`] || ''}\n aria-labelledby={`${id}-${mode}-month-label`}\n />\n <label\n key={'ml' + i}\n hidden\n id={`${id}-${mode}-month-label`}\n htmlFor={`${id}-${mode}-month`}\n >\n {isRangeLabel + month}\n </label>\n </React.Fragment>\n )\n case 'y':\n refList.current.push(inputRefs.current[`${mode}YearRef`])\n\n return (\n <React.Fragment key={'yy' + i}>\n <DateField\n {...element}\n id={`${id}-${mode}-year`}\n key={'yi' + i}\n className={classnames(\n element.className,\n 'dnb-date-picker__input',\n 'dnb-date-picker__input--year',\n inputSizeClassName\n )}\n size={4}\n mask={[/[0-9]/, /[0-9]/, /[0-9]/, /[0-9]/]}\n inputRef={inputRefs.current[`${mode}YearRef`]}\n onChange={dateSetters[`set_${mode}Year`]}\n value={inputDates[`${mode}Year`] || ''}\n aria-labelledby={`${id}-${mode}-year-label`}\n />\n <label\n key={'yl' + i}\n hidden\n id={`${id}-${mode}-year-label`}\n htmlFor={`${id}-${mode}-year`}\n >\n {isRangeLabel + year}\n </label>\n </React.Fragment>\n )\n }\n }\n return (\n <span\n key={'s' + i}\n className=\"dnb-date-picker--separator\"\n aria-hidden\n >\n {placeholderChar}\n </span>\n )\n })\n },\n [\n maskList,\n getPlaceholderChar,\n translation,\n isRange,\n separatorRegExp,\n inputElement,\n size,\n onInputHandler,\n onKeyDownHandler,\n pasteHandler,\n onBlurHandler,\n onFocusHandler,\n id,\n dateSetters,\n inputDates,\n ]\n )\n\n const renderInputElement = useCallback(\n (\n element: React.HTMLProps<HTMLInputElement> &\n DatePickerEventAttributes\n ) => {\n refList.current = []\n const startDateList = generateDateList(element, 'start')\n const endDateList = generateDateList(element, 'end')\n\n return (\n <span\n id={`${id}-input`}\n className=\"dnb-date-picker__input__wrapper\"\n >\n {startDateList}\n {isRange && (\n <span className=\"dnb-date-picker--separator\" aria-hidden>\n {' – '}\n </span>\n )}\n {isRange && endDateList}\n </span>\n )\n },\n [id, isRange, generateDateList]\n )\n\n const ariaLabel = useMemo(\n () =>\n selectedDateTitle\n ? `${selectedDateTitle}, ${translation.openPickerText}`\n : translation.openPickerText,\n [selectedDateTitle, translation]\n )\n\n validateDOMAttributes(props, attributes)\n validateDOMAttributes(null, submitAttributes)\n\n const SubmitElement: React.ElementType = useMemo(\n () => (showInput ? SubmitButton : Button),\n [showInput]\n )\n\n if (!showInput) {\n // Use Button inner ref\n submitAttributes.innerRef = submitAttributes.ref\n submitAttributes.ref = null\n }\n\n return (\n <fieldset className=\"dnb-date-picker__fieldset\" lang={lang}>\n {label && <legend className=\"dnb-sr-only\">{label}</legend>}\n <Input\n id={`${id}__input`}\n input_state={disabled ? 'disabled' : focusState}\n input_element={\n inputElement && typeof inputElement !== 'string'\n ? typeof inputElement === 'function'\n ? inputElement(props)\n : inputElement\n : renderInputElement\n }\n disabled={disabled || skeleton}\n skeleton={skeleton}\n size={size}\n status={!opened ? status : null}\n status_state={statusState}\n {...statusProps}\n submit_element={\n <SubmitElement\n id={id}\n disabled={disabled}\n skeleton={skeleton}\n className={classnames(\n showInput && 'dnb-button--input-button',\n opened ? 'dnb-button--active' : null\n )}\n aria-label={ariaLabel}\n title={title}\n size={size}\n status={status}\n status_state={statusState}\n type=\"button\"\n icon=\"calendar\"\n variant=\"secondary\"\n on_submit={onSubmit}\n on_click={onSubmit}\n {...submitAttributes}\n {...statusProps}\n />\n }\n lang={lang}\n {...attributes}\n />\n </fieldset>\n )\n}\n\nexport default DatePickerInput\n\nfunction setCursorPosition(\n target: HTMLInputElement,\n position = 0,\n options?: { withoutDelay?: boolean }\n) {\n target.focus()\n\n const select = () => {\n target.setSelectionRange(position, position)\n }\n\n // Delay for correct iOS Safari appearance\n if (!options?.withoutDelay && process.env.NODE_ENV !== 'test') {\n setTimeout(select, 0)\n } else {\n select()\n }\n}\n\nfunction InputElement({ className, value, ...props }: TextMaskProps) {\n return (\n <TextMask\n guide={true}\n inputMode=\"numeric\"\n showMask={true}\n keepCharPositions={false} // so we can overwrite next value, if it already exists\n autoComplete=\"off\"\n autoCapitalize=\"none\"\n spellCheck={false}\n autoCorrect=\"off\"\n className={classnames(\n className,\n /\\d+/.test(String(value)) && 'dnb-date-picker__input--highlight'\n )}\n value={value}\n {...props}\n />\n )\n}\n\nfunction syncDateRefs(\n dateRefs: React.MutableRefObject<DatePickerInputDates>,\n inputDates: DatePickerInputDates\n) {\n for (const date in dateRefs.current) {\n const dateRefValue = dateRefs.current[date]\n const inputDateValue = inputDates[date]\n\n if (dateRefValue !== inputDateValue) {\n dateRefs.current[date] = inputDateValue\n }\n }\n}\n\nconst wait = (duration: number) =>\n new Promise((r) => setTimeout(r, duration))\n"],"mappings":"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","ignoreList":[]}
@@ -14,14 +14,6 @@ type UseDatesOptions = {
14
14
  isRange: boolean;
15
15
  shouldCorrectDate: boolean;
16
16
  };
17
- export type DatePickerInputDates = {
18
- __startDay?: string;
19
- __startMonth?: string;
20
- __startYear?: string;
21
- __endDay?: string;
22
- __endMonth?: string;
23
- __endYear?: string;
24
- };
25
17
  export type DatePickerDates = {
26
18
  date?: DateType;
27
19
  startDate?: Date;
@@ -31,11 +23,10 @@ export type DatePickerDates = {
31
23
  startMonth?: Date;
32
24
  endMonth?: Date;
33
25
  hoverDate?: Date;
34
- } & DatePickerInputDates;
26
+ };
35
27
  export default function useDates(dateProps: DatePickerDateProps, { dateFormat, isRange, shouldCorrectDate, }: UseDatesOptions): {
36
28
  readonly dates: DatePickerDates;
37
29
  readonly updateDates: (newDates: DatePickerDates, callback?: (dates: DatePickerDates) => void) => void;
38
30
  readonly previousDateProps: DatePickerDateProps;
39
31
  };
40
- export declare function pad(date: string, size: number): string;
41
32
  export {};
@@ -4,12 +4,9 @@ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
4
4
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
5
5
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
6
6
  import "core-js/modules/web.dom-collections.iterator.js";
7
- import React, { useCallback, useMemo, useState } from 'react';
7
+ import { useCallback, useMemo, useState } from 'react';
8
8
  import { convertStringToDate, isDisabled } from '../DatePickerCalc';
9
- import isValid from 'date-fns/isValid';
10
- import format from 'date-fns/format';
11
9
  import { addMonths, isSameDay } from 'date-fns';
12
- const useLayoutEffect = typeof window === 'undefined' ? React.useEffect : React.useLayoutEffect;
13
10
  export default function useDates(dateProps, _ref) {
14
11
  let {
15
12
  dateFormat,
@@ -65,30 +62,12 @@ export default function useDates(dateProps, _ref) {
65
62
  });
66
63
  callback === null || callback === void 0 ? void 0 : callback(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, dates), newDates), months), correctedDates));
67
64
  }, [dates, shouldCorrectDate, isRange]);
68
- useLayoutEffect(() => {
69
- const startDates = updateInputDates('start', dates.startDate);
70
- const endDates = updateInputDates('end', dates.endDate);
71
- setDates(currentDates => _objectSpread(_objectSpread(_objectSpread({}, currentDates), startDates), endDates));
72
- }, [dates.startDate, dates.endDate]);
73
65
  return {
74
66
  dates,
75
67
  updateDates,
76
68
  previousDateProps
77
69
  };
78
70
  }
79
- function updateInputDates(type, date) {
80
- const updatedDates = {};
81
- if (isValid(date)) {
82
- updatedDates[`__${type}Day`] = pad(format(date, 'dd'), 2);
83
- updatedDates[`__${type}Month`] = pad(format(date, 'MM'), 2);
84
- updatedDates[`__${type}Year`] = format(date, 'yyyy');
85
- } else if (date === undefined) {
86
- updatedDates[`__${type}Day`] = null;
87
- updatedDates[`__${type}Month`] = null;
88
- updatedDates[`__${type}Year`] = null;
89
- }
90
- return updatedDates;
91
- }
92
71
  function mapDates(dateProps, _ref2) {
93
72
  var _ref3, _convertStringToDate, _convertStringToDate2;
94
73
  let {
@@ -129,16 +108,7 @@ function mapDates(dateProps, _ref2) {
129
108
  minDate,
130
109
  maxDate
131
110
  }, correctedDates);
132
- const hasValidStartDate = isValid(dates.startDate);
133
- const hasValidEndDate = isValid(dates.endDate);
134
- return _objectSpread(_objectSpread({}, dates), {}, {
135
- __startDay: hasValidStartDate ? pad(format(dates.startDate, 'dd'), 2) : null,
136
- __startMonth: hasValidStartDate ? pad(format(dates.startDate, 'MM'), 2) : null,
137
- __startYear: hasValidStartDate ? format(dates.startDate, 'yyyy') : null,
138
- __endDay: hasValidEndDate ? pad(format(dates.endDate, 'dd'), 2) : null,
139
- __endMonth: hasValidEndDate ? pad(format(dates.endDate, 'MM'), 2) : null,
140
- __endYear: hasValidEndDate ? format(dates.endDate, 'yyyy') : null
141
- });
111
+ return _objectSpread({}, dates);
142
112
  }
143
113
  function deriveDatesFromProps(_ref4) {
144
114
  let {
@@ -236,8 +206,4 @@ function getStartDate(dateProps, previousDateProps) {
236
206
  }
237
207
  return undefined;
238
208
  }
239
- export function pad(date, size) {
240
- const dateWithPadding = '000000000' + date;
241
- return dateWithPadding.substring(dateWithPadding.length - size);
242
- }
243
209
  //# sourceMappingURL=useDates.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useDates.js","names":["React","useCallback","useMemo","useState","convertStringToDate","isDisabled","isValid","format","addMonths","isSameDay","useLayoutEffect","window","useEffect","useDates","dateProps","_ref","dateFormat","isRange","shouldCorrectDate","previousDateProps","setPreviousDateProps","dates","setDates","_objectSpread","mapDates","hasDatePropChanges","Object","keys","some","date","dateProp","previousDate","convertedDateProp","convertedPreviousDate","Date","derivedDates","deriveDatesFromProps","currentDates","updateDates","newDates","callback","_newDates$startDate","_newDates$endDate","correctedDates","correctDates","startDate","endDate","minDate","maxDate","months","updateMonths","startDates","updateInputDates","endDates","type","updatedDates","pad","undefined","_ref2","_ref3","_convertStringToDate","_convertStringToDate2","getDate","startMonth","endMonth","hasValidStartDate","hasValidEndDate","__startDay","__startMonth","__startYear","__endDay","__endMonth","__endYear","_ref4","getStartDate","_ref5","_ref6","_ref7","_newDates$startMonth","_ref8","_newDates$endMonth","size","dateWithPadding","substring","length"],"sources":["../../../../../src/components/date-picker/hooks/useDates.ts"],"sourcesContent":["import React, { useCallback, useMemo, useState } from 'react'\nimport { convertStringToDate, isDisabled } from '../DatePickerCalc'\nimport isValid from 'date-fns/isValid'\nimport format from 'date-fns/format'\nimport { addMonths, isSameDay } from 'date-fns'\nimport { DateType } from '../DatePickerContext'\n\n// SSR warning fix: https://gist.github.com/gaearon/e7d97cdf38a2907924ea12e4ebdf3c85\nconst useLayoutEffect =\n typeof window === 'undefined' ? React.useEffect : React.useLayoutEffect\n\nexport type DatePickerDateProps = {\n date?: DateType\n startDate?: DateType\n endDate?: DateType\n startMonth?: DateType\n endMonth?: DateType\n minDate?: DateType\n maxDate?: DateType\n hoverDate?: DateType | null\n}\n\ntype UseDatesOptions = {\n dateFormat: string\n isRange: boolean\n shouldCorrectDate: boolean\n}\n// TODO: Move to DatePickerInput\nexport type DatePickerInputDates = {\n __startDay?: string\n __startMonth?: string\n __startYear?: string\n __endDay?: string\n __endMonth?: string\n __endYear?: string\n}\n\nexport type DatePickerDates = {\n date?: DateType\n startDate?: Date\n endDate?: Date\n minDate?: Date\n maxDate?: Date\n startMonth?: Date\n endMonth?: Date\n hoverDate?: Date\n} & DatePickerInputDates\n\nexport default function useDates(\n dateProps: DatePickerDateProps,\n {\n dateFormat,\n isRange = false,\n shouldCorrectDate = false,\n }: UseDatesOptions\n) {\n const [previousDateProps, setPreviousDateProps] = useState(dateProps)\n const [dates, setDates] = useState<DatePickerDates>({\n ...mapDates(dateProps, {\n dateFormat,\n isRange,\n shouldCorrectDate,\n }),\n })\n\n const hasDatePropChanges = useMemo(\n () =>\n Object.keys(dateProps).some((date) => {\n const dateProp = dateProps[date]\n const previousDate = previousDateProps[date]\n\n const convertedDateProp = convertStringToDate(dateProp, {\n dateFormat,\n })\n const convertedPreviousDate = convertStringToDate(previousDate, {\n dateFormat,\n })\n // Make sure that same dates does not trigger a change\n // i.e. 2021-01-01 and new Date('2021-01-01')\n if (\n convertedDateProp instanceof Date &&\n convertedPreviousDate instanceof Date\n ) {\n return !isSameDay(convertedDateProp, convertedPreviousDate)\n }\n\n return dateProp !== previousDate\n }),\n [dateProps, previousDateProps, dateFormat]\n )\n\n // Update dates on prop change\n if (hasDatePropChanges) {\n const derivedDates = deriveDatesFromProps({\n dates,\n dateProps,\n previousDateProps,\n dateFormat,\n isRange,\n })\n\n setDates((currentDates) => ({ ...currentDates, ...derivedDates }))\n setPreviousDateProps(dateProps)\n }\n\n const updateDates = useCallback(\n (\n newDates: DatePickerDates,\n callback?: (dates: DatePickerDates) => void\n ) => {\n // Correct dates based on min and max date\n const correctedDates = shouldCorrectDate\n ? correctDates({\n startDate: newDates.startDate ?? dates.startDate,\n endDate: newDates.endDate ?? dates.endDate,\n minDate: dates.minDate,\n maxDate: dates.maxDate,\n isRange,\n })\n : {}\n\n // Update months based on month or start/end date changes\n const months = updateMonths({\n newDates,\n currentDates: dates,\n })\n\n setDates((currentDates) => {\n return {\n ...currentDates,\n ...newDates,\n ...months,\n ...correctedDates,\n }\n })\n\n callback?.({\n ...dates,\n ...newDates,\n ...months,\n ...correctedDates,\n })\n },\n [dates, shouldCorrectDate, isRange]\n )\n\n // Updated input dates based on start and end dates, move to DatePickerInput\n // TODO: Move to DatePickerInput\n useLayoutEffect(() => {\n const startDates = updateInputDates('start', dates.startDate)\n const endDates = updateInputDates('end', dates.endDate)\n\n setDates((currentDates) => ({\n ...currentDates,\n ...startDates,\n ...endDates,\n }))\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [dates.startDate, dates.endDate])\n\n return {\n dates,\n updateDates,\n previousDateProps,\n } as const\n}\n\n// TODO: Move to DatePickerInput\nfunction updateInputDates(type: 'start' | 'end', date: Date | undefined) {\n const updatedDates = {}\n\n if (isValid(date)) {\n updatedDates[`__${type}Day`] = pad(format(date, 'dd'), 2)\n updatedDates[`__${type}Month`] = pad(format(date, 'MM'), 2)\n updatedDates[`__${type}Year`] = format(date, 'yyyy')\n } else if (date === undefined) {\n updatedDates[`__${type}Day`] = null\n updatedDates[`__${type}Month`] = null\n updatedDates[`__${type}Year`] = null\n }\n\n return updatedDates\n}\n\nfunction mapDates(\n dateProps: DatePickerDateProps,\n {\n dateFormat,\n isRange,\n shouldCorrectDate,\n }: Omit<UseDatesOptions, 'isLinked'>\n) {\n const date = dateProps.date\n\n const startDate =\n typeof dateProps?.startDate !== 'undefined'\n ? getDate(dateProps.startDate, dateFormat)\n : typeof date !== 'undefined'\n ? getDate(date, dateFormat)\n : undefined\n\n const endDate = !isRange\n ? startDate\n : convertStringToDate(dateProps?.endDate, {\n dateFormat,\n }) || undefined\n\n // Ensure that the calendar view displays the correct start and end months, and to prevent date flickering bug\n const startMonth =\n convertStringToDate(dateProps.startMonth, {\n dateFormat,\n }) ??\n startDate ??\n new Date()\n\n const endMonth =\n convertStringToDate(dateProps.endMonth, {\n dateFormat: dateFormat,\n }) ?? (isRange ? endDate ?? addMonths(startMonth, 1) : startMonth)\n\n const minDate = convertStringToDate(dateProps.minDate, {\n dateFormat,\n })\n\n const maxDate = convertStringToDate(dateProps.maxDate, {\n dateFormat,\n })\n\n const correctedDates = shouldCorrectDate\n ? correctDates({ startDate, endDate, minDate, maxDate, isRange })\n : {}\n\n const dates = {\n date,\n startDate,\n endDate,\n startMonth,\n endMonth,\n minDate,\n maxDate,\n ...correctedDates,\n }\n\n const hasValidStartDate = isValid(dates.startDate)\n const hasValidEndDate = isValid(dates.endDate)\n\n return {\n ...dates,\n __startDay: hasValidStartDate\n ? pad(format(dates.startDate, 'dd'), 2)\n : null,\n __startMonth: hasValidStartDate\n ? pad(format(dates.startDate, 'MM'), 2)\n : null,\n __startYear: hasValidStartDate\n ? format(dates.startDate, 'yyyy')\n : null,\n __endDay: hasValidEndDate ? pad(format(dates.endDate, 'dd'), 2) : null,\n __endMonth: hasValidEndDate\n ? pad(format(dates.endDate, 'MM'), 2)\n : null,\n __endYear: hasValidEndDate ? format(dates.endDate, 'yyyy') : null,\n }\n}\n\nfunction deriveDatesFromProps({\n dates,\n dateProps,\n previousDateProps,\n dateFormat,\n isRange,\n}: {\n dates: DatePickerDates\n dateProps: DatePickerDateProps\n previousDateProps: DatePickerDateProps\n dateFormat: UseDatesOptions['dateFormat']\n isRange: UseDatesOptions['isRange']\n}) {\n const derivedDates: DatePickerDates = {}\n\n const startDate = getStartDate(dateProps, previousDateProps)\n\n // Handle updates related to date and startDate changes when not in range mode\n if (typeof startDate !== 'undefined' && startDate !== dates.startDate) {\n derivedDates.startDate =\n convertStringToDate(startDate, {\n dateFormat,\n }) || undefined\n\n // Set endDate and startMonth to startDate if not in range mode\n if (!isRange) {\n derivedDates.startMonth =\n convertStringToDate(startDate, {\n dateFormat,\n }) || undefined\n\n derivedDates.endDate = derivedDates.startDate\n }\n }\n\n // update endDate based on endDate prop if in range mode\n if (\n isRange &&\n typeof dateProps.endDate !== 'undefined' &&\n dateProps.endDate !== dates.endDate\n ) {\n derivedDates.endDate =\n convertStringToDate(dateProps.endDate, {\n dateFormat,\n }) || undefined\n }\n\n // Handle startMonth/endMonth\n if (\n typeof dateProps.startMonth !== 'undefined' &&\n dateProps.startMonth !== previousDateProps.startMonth\n ) {\n derivedDates.startMonth = convertStringToDate(dateProps.startMonth, {\n dateFormat,\n })\n }\n if (\n typeof dateProps.endMonth !== 'undefined' &&\n dateProps.endMonth !== previousDateProps.endMonth\n ) {\n derivedDates.endMonth = convertStringToDate(dateProps.endMonth, {\n dateFormat,\n })\n }\n\n // Handle minDate/maxDate\n if (\n typeof dateProps.minDate !== 'undefined' &&\n dateProps.minDate !== previousDateProps.minDate\n ) {\n derivedDates.minDate = convertStringToDate(dateProps.minDate, {\n dateFormat,\n })\n }\n if (\n typeof dateProps.maxDate !== 'undefined' &&\n dateProps.maxDate !== previousDateProps.maxDate\n ) {\n derivedDates.maxDate = convertStringToDate(dateProps.maxDate, {\n dateFormat,\n })\n }\n\n return derivedDates\n}\n\nfunction correctDates({\n startDate,\n endDate,\n minDate,\n maxDate,\n isRange,\n}: {\n startDate: Date\n endDate: Date\n minDate: Date\n maxDate: Date\n isRange: boolean\n}) {\n const correctedDates = {}\n\n if (isDisabled(startDate, minDate, maxDate)) {\n correctedDates['startDate'] = minDate\n }\n if (isDisabled(endDate, minDate, maxDate)) {\n // state.endDate is only used by the input if range is set to true.\n // this is done to make maxDate correction work if the input is not a range and only maxDate is defined.\n if (!isRange && !minDate) {\n correctedDates['startDate'] = maxDate\n } else {\n correctedDates['endDate'] = maxDate\n }\n }\n\n return correctedDates\n}\n\nfunction updateMonths({\n newDates,\n currentDates,\n}: {\n newDates: DatePickerDates\n currentDates: DatePickerDates\n}) {\n const startMonth =\n newDates.startMonth ?? newDates.startDate ?? currentDates.startMonth\n const endMonth =\n newDates.endMonth ?? newDates.endDate ?? currentDates.endMonth\n\n return {\n startMonth,\n endMonth,\n }\n}\n\nfunction getDate(date: DateType, dateFormat: string) {\n return date instanceof Date\n ? date\n : convertStringToDate(date ?? '', {\n dateFormat,\n })\n}\n\nfunction getStartDate(\n dateProps: DatePickerDateProps,\n previousDateProps: DatePickerDateProps\n) {\n // prioritize startDate over date if provided\n if (\n typeof dateProps.startDate !== 'undefined' &&\n dateProps.startDate !== previousDateProps.startDate\n ) {\n return dateProps.startDate\n }\n\n if (\n typeof dateProps.date !== 'undefined' &&\n dateProps.date !== previousDateProps.date\n ) {\n return dateProps.date\n }\n\n return undefined\n}\n\nexport function pad(date: string, size: number) {\n const dateWithPadding = '000000000' + date\n\n return dateWithPadding.substring(dateWithPadding.length - size)\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"useDates.js","names":["useCallback","useMemo","useState","convertStringToDate","isDisabled","addMonths","isSameDay","useDates","dateProps","_ref","dateFormat","isRange","shouldCorrectDate","previousDateProps","setPreviousDateProps","dates","setDates","_objectSpread","mapDates","hasDatePropChanges","Object","keys","some","date","dateProp","previousDate","convertedDateProp","convertedPreviousDate","Date","derivedDates","deriveDatesFromProps","currentDates","updateDates","newDates","callback","_newDates$startDate","_newDates$endDate","correctedDates","correctDates","startDate","endDate","minDate","maxDate","months","updateMonths","_ref2","_ref3","_convertStringToDate","_convertStringToDate2","getDate","undefined","startMonth","endMonth","_ref4","getStartDate","_ref5","_ref6","_ref7","_newDates$startMonth","_ref8","_newDates$endMonth"],"sources":["../../../../../src/components/date-picker/hooks/useDates.ts"],"sourcesContent":["import { useCallback, useMemo, useState } from 'react'\nimport { convertStringToDate, isDisabled } from '../DatePickerCalc'\nimport { addMonths, isSameDay } from 'date-fns'\nimport { DateType } from '../DatePickerContext'\n\nexport type DatePickerDateProps = {\n date?: DateType\n startDate?: DateType\n endDate?: DateType\n startMonth?: DateType\n endMonth?: DateType\n minDate?: DateType\n maxDate?: DateType\n hoverDate?: DateType | null\n}\n\ntype UseDatesOptions = {\n dateFormat: string\n isRange: boolean\n shouldCorrectDate: boolean\n}\n\nexport type DatePickerDates = {\n date?: DateType\n startDate?: Date\n endDate?: Date\n minDate?: Date\n maxDate?: Date\n startMonth?: Date\n endMonth?: Date\n hoverDate?: Date\n}\n\nexport default function useDates(\n dateProps: DatePickerDateProps,\n {\n dateFormat,\n isRange = false,\n shouldCorrectDate = false,\n }: UseDatesOptions\n) {\n const [previousDateProps, setPreviousDateProps] = useState(dateProps)\n const [dates, setDates] = useState<DatePickerDates>({\n ...mapDates(dateProps, {\n dateFormat,\n isRange,\n shouldCorrectDate,\n }),\n })\n\n const hasDatePropChanges = useMemo(\n () =>\n Object.keys(dateProps).some((date) => {\n const dateProp = dateProps[date]\n const previousDate = previousDateProps[date]\n\n const convertedDateProp = convertStringToDate(dateProp, {\n dateFormat,\n })\n const convertedPreviousDate = convertStringToDate(previousDate, {\n dateFormat,\n })\n // Make sure that same dates does not trigger a change\n // i.e. 2021-01-01 and new Date('2021-01-01')\n if (\n convertedDateProp instanceof Date &&\n convertedPreviousDate instanceof Date\n ) {\n return !isSameDay(convertedDateProp, convertedPreviousDate)\n }\n\n return dateProp !== previousDate\n }),\n [dateProps, previousDateProps, dateFormat]\n )\n\n // Update dates on prop change\n if (hasDatePropChanges) {\n const derivedDates = deriveDatesFromProps({\n dates,\n dateProps,\n previousDateProps,\n dateFormat,\n isRange,\n })\n\n setDates((currentDates) => ({ ...currentDates, ...derivedDates }))\n setPreviousDateProps(dateProps)\n }\n\n const updateDates = useCallback(\n (\n newDates: DatePickerDates,\n callback?: (dates: DatePickerDates) => void\n ) => {\n // Correct dates based on min and max date\n const correctedDates = shouldCorrectDate\n ? correctDates({\n startDate: newDates.startDate ?? dates.startDate,\n endDate: newDates.endDate ?? dates.endDate,\n minDate: dates.minDate,\n maxDate: dates.maxDate,\n isRange,\n })\n : {}\n\n // Update months based on month or start/end date changes\n const months = updateMonths({\n newDates,\n currentDates: dates,\n })\n\n setDates((currentDates) => {\n return {\n ...currentDates,\n ...newDates,\n ...months,\n ...correctedDates,\n }\n })\n\n callback?.({\n ...dates,\n ...newDates,\n ...months,\n ...correctedDates,\n })\n },\n [dates, shouldCorrectDate, isRange]\n )\n\n return {\n dates,\n updateDates,\n previousDateProps,\n } as const\n}\n\nfunction mapDates(\n dateProps: DatePickerDateProps,\n {\n dateFormat,\n isRange,\n shouldCorrectDate,\n }: Omit<UseDatesOptions, 'isLinked'>\n) {\n const date = dateProps.date\n\n const startDate =\n typeof dateProps?.startDate !== 'undefined'\n ? getDate(dateProps.startDate, dateFormat)\n : typeof date !== 'undefined'\n ? getDate(date, dateFormat)\n : undefined\n\n const endDate = !isRange\n ? startDate\n : convertStringToDate(dateProps?.endDate, {\n dateFormat,\n }) || undefined\n\n // Ensure that the calendar view displays the correct start and end months, and to prevent date flickering bug\n const startMonth =\n convertStringToDate(dateProps.startMonth, {\n dateFormat,\n }) ??\n startDate ??\n new Date()\n\n const endMonth =\n convertStringToDate(dateProps.endMonth, {\n dateFormat: dateFormat,\n }) ?? (isRange ? endDate ?? addMonths(startMonth, 1) : startMonth)\n\n const minDate = convertStringToDate(dateProps.minDate, {\n dateFormat,\n })\n\n const maxDate = convertStringToDate(dateProps.maxDate, {\n dateFormat,\n })\n\n const correctedDates = shouldCorrectDate\n ? correctDates({ startDate, endDate, minDate, maxDate, isRange })\n : {}\n\n const dates = {\n date,\n startDate,\n endDate,\n startMonth,\n endMonth,\n minDate,\n maxDate,\n ...correctedDates,\n }\n\n return {\n ...dates,\n }\n}\n\nfunction deriveDatesFromProps({\n dates,\n dateProps,\n previousDateProps,\n dateFormat,\n isRange,\n}: {\n dates: DatePickerDates\n dateProps: DatePickerDateProps\n previousDateProps: DatePickerDateProps\n dateFormat: UseDatesOptions['dateFormat']\n isRange: UseDatesOptions['isRange']\n}) {\n const derivedDates: DatePickerDates = {}\n\n const startDate = getStartDate(dateProps, previousDateProps)\n\n // Handle updates related to date and startDate changes when not in range mode\n if (typeof startDate !== 'undefined' && startDate !== dates.startDate) {\n derivedDates.startDate =\n convertStringToDate(startDate, {\n dateFormat,\n }) || undefined\n\n // Set endDate and startMonth to startDate if not in range mode\n if (!isRange) {\n derivedDates.startMonth =\n convertStringToDate(startDate, {\n dateFormat,\n }) || undefined\n\n derivedDates.endDate = derivedDates.startDate\n }\n }\n\n // update endDate based on endDate prop if in range mode\n if (\n isRange &&\n typeof dateProps.endDate !== 'undefined' &&\n dateProps.endDate !== dates.endDate\n ) {\n derivedDates.endDate =\n convertStringToDate(dateProps.endDate, {\n dateFormat,\n }) || undefined\n }\n\n // Handle startMonth/endMonth\n if (\n typeof dateProps.startMonth !== 'undefined' &&\n dateProps.startMonth !== previousDateProps.startMonth\n ) {\n derivedDates.startMonth = convertStringToDate(dateProps.startMonth, {\n dateFormat,\n })\n }\n if (\n typeof dateProps.endMonth !== 'undefined' &&\n dateProps.endMonth !== previousDateProps.endMonth\n ) {\n derivedDates.endMonth = convertStringToDate(dateProps.endMonth, {\n dateFormat,\n })\n }\n\n // Handle minDate/maxDate\n if (\n typeof dateProps.minDate !== 'undefined' &&\n dateProps.minDate !== previousDateProps.minDate\n ) {\n derivedDates.minDate = convertStringToDate(dateProps.minDate, {\n dateFormat,\n })\n }\n if (\n typeof dateProps.maxDate !== 'undefined' &&\n dateProps.maxDate !== previousDateProps.maxDate\n ) {\n derivedDates.maxDate = convertStringToDate(dateProps.maxDate, {\n dateFormat,\n })\n }\n\n return derivedDates\n}\n\nfunction correctDates({\n startDate,\n endDate,\n minDate,\n maxDate,\n isRange,\n}: {\n startDate: Date\n endDate: Date\n minDate: Date\n maxDate: Date\n isRange: boolean\n}) {\n const correctedDates = {}\n\n if (isDisabled(startDate, minDate, maxDate)) {\n correctedDates['startDate'] = minDate\n }\n if (isDisabled(endDate, minDate, maxDate)) {\n // state.endDate is only used by the input if range is set to true.\n // this is done to make maxDate correction work if the input is not a range and only maxDate is defined.\n if (!isRange && !minDate) {\n correctedDates['startDate'] = maxDate\n } else {\n correctedDates['endDate'] = maxDate\n }\n }\n\n return correctedDates\n}\n\nfunction updateMonths({\n newDates,\n currentDates,\n}: {\n newDates: DatePickerDates\n currentDates: DatePickerDates\n}) {\n const startMonth =\n newDates.startMonth ?? newDates.startDate ?? currentDates.startMonth\n const endMonth =\n newDates.endMonth ?? newDates.endDate ?? currentDates.endMonth\n\n return {\n startMonth,\n endMonth,\n }\n}\n\nfunction getDate(date: DateType, dateFormat: string) {\n return date instanceof Date\n ? date\n : convertStringToDate(date ?? '', {\n dateFormat,\n })\n}\n\nfunction getStartDate(\n dateProps: DatePickerDateProps,\n previousDateProps: DatePickerDateProps\n) {\n // prioritize startDate over date if provided\n if (\n typeof dateProps.startDate !== 'undefined' &&\n dateProps.startDate !== previousDateProps.startDate\n ) {\n return dateProps.startDate\n }\n\n if (\n typeof dateProps.date !== 'undefined' &&\n dateProps.date !== previousDateProps.date\n ) {\n return dateProps.date\n }\n\n return undefined\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,14 @@
1
+ import { DatePickerDates } from './useDates';
2
+ export type DatePickerInputDates = {
3
+ startDay?: string;
4
+ startMonth?: string;
5
+ startYear?: string;
6
+ endDay?: string;
7
+ endMonth?: string;
8
+ endYear?: string;
9
+ };
10
+ export default function useInputDates({ startDate, endDate, }: Pick<DatePickerDates, 'startDate' | 'endDate'>): {
11
+ inputDates: DatePickerInputDates;
12
+ updateInputDates: (dates: DatePickerInputDates) => void;
13
+ };
14
+ export declare function pad(date: string, size: number): string;
@@ -0,0 +1,72 @@
1
+ "use client";
2
+
3
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
4
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
5
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
6
+ import "core-js/modules/web.dom-collections.iterator.js";
7
+ import { format, isValid } from 'date-fns';
8
+ import { useCallback, useState } from 'react';
9
+ export default function useInputDates(_ref) {
10
+ let {
11
+ startDate,
12
+ endDate
13
+ } = _ref;
14
+ const [previousDates, setPreviousDates] = useState({
15
+ startDate,
16
+ endDate
17
+ });
18
+ const [inputDates, setInputDates] = useState({
19
+ startDay: formatInputDate('day', startDate),
20
+ startMonth: formatInputDate('month', startDate),
21
+ startYear: formatInputDate('year', startDate),
22
+ endDay: formatInputDate('day', endDate),
23
+ endMonth: formatInputDate('month', endDate),
24
+ endYear: formatInputDate('year', endDate)
25
+ });
26
+ const hasStartDateChange = startDate !== previousDates.startDate;
27
+ const hasEndDateChange = endDate !== previousDates.endDate;
28
+ if (hasStartDateChange || hasEndDateChange) {
29
+ setInputDates(currentInputDates => _objectSpread(_objectSpread(_objectSpread({}, currentInputDates), hasStartDateChange && getInputDates('start', startDate)), hasEndDateChange && getInputDates('end', endDate)));
30
+ setPreviousDates({
31
+ startDate,
32
+ endDate
33
+ });
34
+ }
35
+ const updateInputDates = useCallback(dates => {
36
+ setInputDates(current => _objectSpread(_objectSpread({}, current), dates));
37
+ }, []);
38
+ return {
39
+ inputDates,
40
+ updateInputDates
41
+ };
42
+ }
43
+ const inputDateFormatter = {
44
+ day: date => pad(format(date, 'dd'), 2),
45
+ month: date => pad(format(date, 'MM'), 2),
46
+ year: date => format(date, 'yyyy')
47
+ };
48
+ function formatInputDate(type, date) {
49
+ return isValid(date) ? inputDateFormatter[type](date) : null;
50
+ }
51
+ function getInputDates(type, date) {
52
+ if (isValid(date)) {
53
+ return {
54
+ [`${type}Day`]: formatInputDate('day', date),
55
+ [`${type}Month`]: formatInputDate('month', date),
56
+ [`${type}Year`]: formatInputDate('year', date)
57
+ };
58
+ }
59
+ if (date === undefined) {
60
+ return {
61
+ [`${type}Day`]: null,
62
+ [`${type}Month`]: null,
63
+ [`${type}Year`]: null
64
+ };
65
+ }
66
+ return {};
67
+ }
68
+ export function pad(date, size) {
69
+ const dateWithPadding = '000000000' + date;
70
+ return dateWithPadding.substring(dateWithPadding.length - size);
71
+ }
72
+ //# sourceMappingURL=useInputDates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useInputDates.js","names":["format","isValid","useCallback","useState","useInputDates","_ref","startDate","endDate","previousDates","setPreviousDates","inputDates","setInputDates","startDay","formatInputDate","startMonth","startYear","endDay","endMonth","endYear","hasStartDateChange","hasEndDateChange","currentInputDates","_objectSpread","getInputDates","updateInputDates","dates","current","inputDateFormatter","day","date","pad","month","year","type","undefined","size","dateWithPadding","substring","length"],"sources":["../../../../../src/components/date-picker/hooks/useInputDates.ts"],"sourcesContent":["import { format, isValid } from 'date-fns'\nimport { DatePickerDates } from './useDates'\nimport { useCallback, useState } from 'react'\n\nexport type DatePickerInputDates = {\n startDay?: string\n startMonth?: string\n startYear?: string\n endDay?: string\n endMonth?: string\n endYear?: string\n}\n\nexport default function useInputDates({\n startDate,\n endDate,\n}: Pick<DatePickerDates, 'startDate' | 'endDate'>) {\n const [previousDates, setPreviousDates] = useState<\n Pick<DatePickerDates, 'startDate' | 'endDate'>\n >({ startDate, endDate })\n\n const [inputDates, setInputDates] = useState<DatePickerInputDates>({\n startDay: formatInputDate('day', startDate),\n startMonth: formatInputDate('month', startDate),\n startYear: formatInputDate('year', startDate),\n endDay: formatInputDate('day', endDate),\n endMonth: formatInputDate('month', endDate),\n endYear: formatInputDate('year', endDate),\n })\n\n const hasStartDateChange = startDate !== previousDates.startDate\n const hasEndDateChange = endDate !== previousDates.endDate\n\n // Update input dates if startDate or endDate changes\n if (hasStartDateChange || hasEndDateChange) {\n setInputDates((currentInputDates) => ({\n ...currentInputDates,\n ...(hasStartDateChange && getInputDates('start', startDate)),\n ...(hasEndDateChange && getInputDates('end', endDate)),\n }))\n\n setPreviousDates({ startDate, endDate })\n }\n\n const updateInputDates = useCallback((dates: DatePickerInputDates) => {\n setInputDates((current) => ({ ...current, ...dates }))\n }, [])\n\n return {\n inputDates,\n updateInputDates,\n }\n}\n\nconst inputDateFormatter = {\n day: (date: Date) => pad(format(date, 'dd'), 2),\n month: (date: Date) => pad(format(date, 'MM'), 2),\n year: (date: Date) => format(date, 'yyyy'),\n}\n\nfunction formatInputDate(type: 'day' | 'month' | 'year', date: Date) {\n return isValid(date) ? inputDateFormatter[type](date) : null\n}\n\nfunction getInputDates(type: 'start' | 'end', date: Date | undefined) {\n if (isValid(date)) {\n return {\n [`${type}Day`]: formatInputDate('day', date),\n [`${type}Month`]: formatInputDate('month', date),\n [`${type}Year`]: formatInputDate('year', date),\n }\n }\n\n if (date === undefined) {\n return {\n [`${type}Day`]: null,\n [`${type}Month`]: null,\n [`${type}Year`]: null,\n }\n }\n\n return {}\n}\n\nexport function pad(date: string, size: number) {\n const dateWithPadding = '000000000' + date\n\n return dateWithPadding.substring(dateWithPadding.length - size)\n}\n"],"mappings":"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","ignoreList":[]}
@@ -41,9 +41,9 @@ export default function adjustCaretPosition(_ref) {
41
41
  targetChar = intersection[intersection.length - 1];
42
42
  const previousLeftMaskChars = previousPlaceholder.substr(0, intersection.length).split(emptyString).filter(char => char !== placeholderChar).length;
43
43
  const leftMaskChars = placeholder.substr(0, intersection.length).split(emptyString).filter(char => char !== placeholderChar).length;
44
- const masklengthChanged = leftMaskChars !== previousLeftMaskChars;
44
+ const maskLengthChanged = leftMaskChars !== previousLeftMaskChars;
45
45
  const targetIsMaskMovingLeft = previousPlaceholder[intersection.length - 1] !== undefined && placeholder[intersection.length - 2] !== undefined && previousPlaceholder[intersection.length - 1] !== placeholderChar && previousPlaceholder[intersection.length - 1] !== placeholder[intersection.length - 1] && previousPlaceholder[intersection.length - 1] === placeholder[intersection.length - 2];
46
- if (!isAddition && (masklengthChanged || targetIsMaskMovingLeft) && previousLeftMaskChars > 0 && placeholder.indexOf(targetChar) > -1 && rawValue[currentCaretPosition] !== undefined) {
46
+ if (!isAddition && (maskLengthChanged || targetIsMaskMovingLeft) && previousLeftMaskChars > 0 && placeholder.indexOf(targetChar) > -1 && rawValue[currentCaretPosition] !== undefined) {
47
47
  trackRightCharacter = true;
48
48
  targetChar = rawValue[currentCaretPosition];
49
49
  }