linear-react-components-ui 2.1.0-beta.2 → 2.1.0-beta.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/assets/styles/datepicker2.css +8 -11
- package/lib/inputs2/date/calendarbox.js.map +1 -1
- package/lib/inputs2/date/datefield/base.js +435 -334
- package/lib/inputs2/date/datefield/base.js.map +1 -1
- package/lib/inputs2/date/dateperiodfield/base.js +544 -528
- package/lib/inputs2/date/dateperiodfield/base.js.map +1 -1
- package/lib/inputs2/date/dateperiodfield/triggers.js.map +1 -1
- package/lib/inputs2/date/dateperiodfield/types.d.ts +6 -0
- package/lib/inputs2/date/helpers.d.ts +24 -1
- package/lib/inputs2/date/helpers.js +137 -1
- package/lib/inputs2/date/helpers.js.map +1 -1
- package/lib/inputs2/date/hooks/useCalendarPosition.js.map +1 -1
- package/lib/inputs2/date/hooks/useDateCalendarState.js.map +1 -1
- package/lib/inputs2/date/hooks/useDateMask.d.ts +3 -1
- package/lib/inputs2/date/hooks/useDateMask.js +75 -111
- package/lib/inputs2/date/hooks/useDateMask.js.map +1 -1
- package/lib/inputs2/date/timeselector.d.ts +4 -2
- package/lib/inputs2/date/timeselector.js +115 -117
- package/lib/inputs2/date/timeselector.js.map +1 -1
- package/lib/inputs2/date/types.d.ts +6 -0
- package/lib/inputs2/date/types.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.js","sources":["../../../../src/lib/inputs2/date/dateperiodfield/base.tsx"],"sourcesContent":["import React from 'react';\nimport _ from 'lodash';\nimport { createPortal } from 'react-dom';\nimport moment, { type Moment } from 'moment';\nimport Hint from '../../../hint';\nimport Icon from '../../../icons';\nimport { Tooltip } from '../../../tooltip';\nimport { mergeRefs } from '../../../form2/helpers';\nimport { Keys } from '../types';\nimport * as BaseDate from '../base';\nimport { useDateMask } from '../hooks/useDateMask';\nimport { useDateCalendarState } from '../hooks/useDateCalendarState';\nimport { TimeSelector } from '../timeselector';\nimport {\n clampDateToBounds, getDateFormats, getPredefinedPeriodRange, isDayOutOfBounds, parseBoundary,\n parseDateValue, TOKEN_ISO_FORMAT,\n} from '../helpers';\nimport { CalendarBox } from '../calendarbox';\nimport { Triggers } from './triggers';\nimport { DatePeriodFieldContext } from './context';\nimport type { DatePeriodFieldBaseProps, DatePeriodTypes, InputType, SelectedDateType, UpdateDateStateParams } from './types';\n\nexport const InputBase = \n React.forwardRef<HTMLInputElement, DatePeriodFieldBaseProps>((props, __) => {\n const {\n label, errors, initialName = 'inicial', finalName = 'final', customClass = '', customClassLabel = '',\n customClassWrapper = '', customClassInputContainer = '', labelUppercase = false, undigitable = false,\n skeletonize = false, hintPosition = 'below', themePopover = 'light', popoverAlign = 'left',\n showCalendarButton = true, textAlign = 'left', openCalendarOnFocus = true,\n showPredefinedPeriodsButton = true, showClearDateButton = true, returnValueType = 'default',\n variant = 'date', placeholder, shouldCloseOnSelect, min, max,\n tooltip, tooltipPosition, tooltipWidth, disabled, readOnly, ...rest\n } = props;\n const isDateTime = variant === 'datetime';\n const { isoFormat, ptbrFormat, digits } = getDateFormats(variant);\n // Em datetime o calendário precisa continuar aberto depois do clique no dia, senão o\n // seletor de hora ficaria inalcançável pelo mouse.\n const shouldCloseCalendarOnSelect = shouldCloseOnSelect ?? !isDateTime;\n const inputPlaceholder = placeholder ?? ptbrFormat;\n const minDate = parseBoundary(min);\n const maxDate = parseBoundary(max);\n const hasBounds = Boolean(minDate || maxDate);\n const [selectedDate, setSelectedDate] = React.useState<SelectedDateType>({\n inicial: null, final: null,\n });\n const [activeInputType, setActiveInputType] = React.useState<InputType>('initial');\n const inputRootRef = React.useRef<HTMLDivElement | null>(null);\n const finalInputRef = React.useRef<HTMLInputElement | null>(null);\n const initialInputRef = React.useRef<HTMLInputElement | null>(null);\n\n const calendarState = useDateCalendarState({\n inputRef: initialInputRef, min: minDate, max: maxDate,\n });\n const {\n calendarBoxOpen, activeDescendant, calendarDisplayDate, calendarRef, dateContainerRef,\n handleNextMonth, handlePreviousMonth, handleSetCalendarBoxOpen,\n handleChangeActiveDescendant, handleChangeCalendarDisplayDate, handleKeyDownNavigation,\n } = calendarState;\n\n const initialInputName = React.useMemo(() => String(props.name).concat('.').concat(initialName), [props.name, initialName]);\n const finalInputName = React.useMemo(() => String(props.name).concat('.').concat(finalName), [props.name, finalName]);\n\n const {\n maskedValue: initialMaskedValue,\n setMaskValue: setInitialMaskValue,\n unmaskedValue: initialUnmaskedValue,\n handleOnPaste,\n handleOnBeforeInput,\n } = useDateMask({\n inputRef: initialInputRef,\n variant,\n defaultValue: selectedDate.inicial?.format(ptbrFormat),\n undigitable,\n onCommit: date => handleChangeUpdateDateState({ date, inputType: 'initial', typing: true }),\n onPaste: props.onPaste,\n onBeforeInput: props.onBeforeInput,\n });\n\n const {\n maskedValue: finalMaskedValue,\n setMaskValue: setFinalMaskValue,\n unmaskedValue: finalUnmaskedValue,\n } = useDateMask({\n inputRef: finalInputRef,\n variant,\n defaultValue: selectedDate.final?.format(ptbrFormat),\n undigitable,\n onCommit: date => handleChangeUpdateDateState({ date, inputType: 'final', typing: true }),\n onPaste: props.onPaste,\n onBeforeInput: props.onBeforeInput,\n });\n\n const hasLabel = !_.isEmpty(props?.label);\n const hasHintMessages = Boolean(props.hint?.length);\n const hasValidationErrors = Boolean(errors?.length);\n\n const verifyPeriodSelectedIsValid = () => {\n const objectValue = props?.value as Partial<{ [x: string]: string | undefined }>;\n const isValidInitialValue = !_.isEmpty(objectValue[initialName]);\n const isValidFinalValue = !_.isEmpty(objectValue[finalName]);\n return isValidInitialValue && isValidFinalValue;\n };\n const handleOnClickClearSelectedPeriod = () => {\n props.onChange?.({\n target: {\n name: props.name,\n value: { [initialName]: '', [finalName]: '' } as any,\n },\n } as React.ChangeEvent<HTMLInputElement>);\n setSelectedDate(() => ({ inicial: null, final: null }));\n setInitialMaskValue('');\n setFinalMaskValue('');\n handleSetCalendarBoxOpen(false);\n };\n\n const handleChangeUpdateDateState = (params: UpdateDateStateParams) => {\n const { date, inputType, typing } = params;\n const rawDate = date.clone();\n const verifyDateRangeOrder = (initialDate: Moment | null, finalDate: Moment | null) => {\n const inicial = initialDate?.isAfter(finalDate) ? finalDate : initialDate;\n const final = initialDate?.isAfter(finalDate) ? initialDate : finalDate;\n return { inicial, final };\n };\n switch (inputType) {\n case 'initial': {\n setSelectedDate((prevSelectedDate) => {\n const { inicial, final } = verifyDateRangeOrder(rawDate, prevSelectedDate.final);\n const updatedState: SelectedDateType = { inicial, final };\n return updatedState;\n });\n const { inicial, final } = verifyDateRangeOrder(rawDate, selectedDate.final);\n props.onChange?.({\n target: {\n name: props.name,\n value: {\n [initialName]: returnValueType === 'default' ? inicial?.format(isoFormat) : inicial?.toISOString(),\n [finalName]: returnValueType === 'default' ? final?.format(isoFormat) : final?.toISOString(),\n } as any,\n },\n } as React.ChangeEvent<HTMLInputElement>);\n requestAnimationFrame(() => {\n if (!typing) finalInputRef.current?.focus?.();\n });\n break;\n }\n case 'final': {\n setSelectedDate((prevSelectedDate) => {\n const { inicial, final } = verifyDateRangeOrder(prevSelectedDate.inicial, rawDate);\n const updatedState: SelectedDateType = { inicial, final };\n return updatedState;\n });\n const { inicial, final } = verifyDateRangeOrder(selectedDate.inicial, rawDate);\n props.onChange?.({\n target: {\n name: props.name,\n value: {\n [initialName]: returnValueType === 'default' ? inicial?.format(isoFormat) : inicial?.toISOString(),\n [finalName]: returnValueType === 'default' ? final?.format(isoFormat) : final?.toISOString(),\n } as any,\n },\n } as React.ChangeEvent<HTMLInputElement>);\n if (shouldCloseCalendarOnSelect) handleSetCalendarBoxOpen(false);\n break;\n }\n default:\n break;\n }\n // O cursor do calendário acompanha o que foi gravado, senão a moldura ficaria presa\n // no dia anterior depois de uma escolha que não veio das setas.\n handleChangeActiveDescendant(rawDate.format(TOKEN_ISO_FORMAT));\n handleChangeCalendarDisplayDate(rawDate.clone());\n };\n\n const handleChangeUpdateDateStateWithPredefinedPeriod = (period: DatePeriodTypes) => {\n // Um preset é sempre o dia inteiro. Sem normalizar, \"Hoje\" usaria a hora corrente\n // nos dois extremos e em datetime viraria um período de duração zero.\n const localOnChange = (initialDate: Moment, finalDate: Moment) => {\n const valueToUpdate = {\n [initialName]: returnValueType === 'default' ? initialDate.format(isoFormat) : initialDate.toISOString(),\n [finalName]: returnValueType === 'default' ? finalDate.format(isoFormat) : finalDate.toISOString(),\n };\n setSelectedDate(() => {\n const updatedState: SelectedDateType = {\n inicial: initialDate.clone(),\n final: finalDate.clone(),\n };\n return updatedState;\n });\n props.onChange?.({\n target: {\n name: props.name,\n value: valueToUpdate as any,\n },\n } as React.ChangeEvent<HTMLInputElement>);\n };\n\n const { initialDate, finalDate } = getPredefinedPeriodRange(period);\n localOnChange(\n clampDateToBounds(initialDate, minDate, maxDate),\n clampDateToBounds(finalDate, minDate, maxDate),\n );\n finalInputRef?.current?.focus?.();\n if (shouldCloseCalendarOnSelect) handleSetCalendarBoxOpen(false);\n };\n\n const handleOnBlurMaskInput = (\n event: React.FocusEvent<HTMLInputElement>, inputType: InputType,\n ) => {\n props?.onBlur?.(event);\n if (inputType === 'initial') {\n if (event.relatedTarget?.id !== finalInputName) handleSetCalendarBoxOpen(false);\n if (calendarBoxOpen) {\n handleChangeActiveDescendant((selectedDate.inicial ?? moment()).format(TOKEN_ISO_FORMAT));\n handleChangeCalendarDisplayDate(selectedDate.inicial ?? moment());\n }\n if (_.size(initialUnmaskedValue) !== digits) {\n const date = moment(selectedDate.inicial, TOKEN_ISO_FORMAT);\n if (date.isValid()) { setInitialMaskValue(date.format(ptbrFormat)); }\n }\n }\n if (inputType === 'final') {\n if (event.relatedTarget?.id !== initialInputName) handleSetCalendarBoxOpen(false);\n if (calendarBoxOpen) {\n handleChangeActiveDescendant((selectedDate.final ?? moment()).format(TOKEN_ISO_FORMAT));\n handleChangeCalendarDisplayDate(selectedDate.final ?? moment());\n }\n if (_.size(finalUnmaskedValue) !== digits) {\n const date = moment(selectedDate.final, TOKEN_ISO_FORMAT);\n if (date.isValid()) { setFinalMaskValue(date.format(ptbrFormat)); }\n }\n }\n };\n\n const handleOnFocusMaskInput = (\n event: React.FocusEvent<HTMLInputElement>, inputType: InputType,\n ) => {\n props?.onFocus?.(event);\n if (!readOnly && !calendarBoxOpen && openCalendarOnFocus) {\n handleSetCalendarBoxOpen(true);\n }\n setActiveInputType(inputType);\n if (inputType === 'initial') {\n handleChangeActiveDescendant((selectedDate.inicial ?? moment()).format(TOKEN_ISO_FORMAT));\n handleChangeCalendarDisplayDate(selectedDate.inicial ?? moment());\n }\n if (inputType === 'final') {\n handleChangeActiveDescendant((selectedDate.final ?? moment()).format(TOKEN_ISO_FORMAT));\n handleChangeCalendarDisplayDate(selectedDate.final ?? moment());\n }\n };\n\n const handleOnKeyDownMaskInput = (\n event: React.KeyboardEvent<HTMLInputElement>, inputType: InputType,\n ) => {\n props?.onKeyDown?.(event);\n if (calendarBoxOpen && event.key && \n !event.shiftKey && !event.altKey && event.key === Keys.enter) {\n event.preventDefault();\n handleSelectDay(moment(_.toString(activeDescendant), TOKEN_ISO_FORMAT), inputType);\n }\n };\n\n const getDayState = (day: Moment) => {\n const { inicial, final } = selectedDate;\n return {\n isSelected: Boolean(\n (inicial && day.isSame(inicial, 'day')) || (final && day.isSame(final, 'day')),\n ),\n isInRange: Boolean(\n inicial && final && day.isAfter(inicial, 'day') && day.isBefore(final, 'day'),\n ),\n ...(hasBounds && { isDisabled: isDayOutOfBounds(day, minDate, maxDate) }),\n };\n };\n\n // O calendário é um só para os dois campos, então quem manda é o input com foco —\n // clicar num dia sem foco em nenhum deles não teria onde gravar a data.\n const resolveInputTypeFromFocus = (): InputType | undefined => {\n const focusedInputId = document.activeElement?.id;\n if (focusedInputId === initialInputName) return 'initial';\n if (focusedInputId === finalInputName) return 'final';\n return undefined;\n };\n\n // Trocar de dia carrega o horário já escolhido, e o horário é preso no intervalo para\n // que uma escolha no calendário nunca deixe o campo exibindo um valor fora dele.\n const handleSelectDay = (daySelected: Moment, targetInputType?: InputType) => {\n const inputType = targetInputType ?? resolveInputTypeFromFocus();\n if (_.isUndefined(inputType)) return;\n const current = inputType === 'initial' ? selectedDate.inicial : selectedDate.final;\n const dayWithTime = (isDateTime && current)\n ? daySelected.clone().hour(current.hour()).minute(current.minute())\n : daySelected;\n handleChangeUpdateDateState({\n date: clampDateToBounds(dayWithTime, minDate, maxDate), inputType,\n });\n };\n\n const activeSelectedDate = activeInputType === 'initial'\n ? selectedDate.inicial\n : selectedDate.final;\n\n const handleSelectTime = (hour: number, minute: number) => {\n if (!activeSelectedDate) return;\n handleChangeUpdateDateState({\n date: activeSelectedDate.clone().hour(hour).minute(minute).second(0),\n inputType: activeInputType,\n typing: true,\n });\n };\n\n React.useEffect(() => {\n if (props?.value) {\n const objectValue = props.value as Partial<{ [x: string]: string | undefined }>;\n const initialDate = parseDateValue(objectValue[initialName], variant);\n const finalDate = parseDateValue(objectValue[finalName], variant);\n setSelectedDate(() => ({\n inicial: initialDate.isValid() ? initialDate : null,\n final: finalDate.isValid() ? finalDate : null,\n }));\n setInitialMaskValue(initialDate.format(ptbrFormat));\n setFinalMaskValue(finalDate.format(ptbrFormat));\n }\n }, [props?.value]);\n\n const contextValues = ({\n ...calendarState,\n isReadOnly: Boolean(readOnly), isDisabled: Boolean(disabled), undigitable, skeletonize,\n selectedDate, minDate, maxDate,\n initialInputId: initialInputName, finalInputId: finalInputName,\n initialInputRef, finalInputRef, showCalendarButton, hasValidationErrors,\n openCalendarOnFocus, showPredefinedPeriodsButton, showClearDateButton,\n handleChangeUpdateDateState, handleOnClickClearSelectedPeriod,\n handleChangeUpdateDateStateWithPredefinedPeriod,\n hasValidPeriodSelected: verifyPeriodSelectedIsValid(),\n });\n\n return (\n <React.Fragment>\n <DatePeriodFieldContext.Provider value={contextValues}>\n <BaseDate.Root\n ref={inputRootRef}\n data-testid=\"test-date-period-field-root\"\n data-state-error={hasValidationErrors}\n customClassWrapper={customClassWrapper}>\n {hasLabel && (\n <BaseDate.Label\n data-testid=\"test-date-period-field-label\"\n label={label}\n inputId={initialInputName}\n hint={props?.hint}\n isDisabled={disabled}\n isReadOnly={readOnly}\n skeletonize={skeletonize}\n required={props?.required}\n hintPosition={hintPosition}\n themePopover={themePopover}\n popoverAlign={popoverAlign}\n labelUppercase={labelUppercase}\n hasHintMessages={hasHintMessages}\n customClassLabel={customClassLabel} />\n )}\n <BaseDate.Container\n ref={dateContainerRef}\n data-testid=\"test-date-period-field-container\"\n onKeyDown={handleKeyDownNavigation}\n skeletonize={skeletonize}\n customClassInputContainer={customClassInputContainer}>\n <BaseDate.Input\n {..._.omit(rest, ['initialRef', 'finalRef'])}\n ref={mergeRefs(initialInputRef, props?.initialRef)}\n id={initialInputName}\n name={initialInputName}\n value={initialMaskedValue}\n disabled={disabled}\n readOnly={readOnly}\n customClass={customClass}\n tabIndex={(!readOnly && !skeletonize) ? 0 : -1}\n placeholder={inputPlaceholder}\n aria-autocomplete=\"list\"\n aria-activedescendant={activeDescendant}\n aria-expanded={calendarBoxOpen}\n aria-controls={initialInputName}\n aria-labelledby={initialInputName}\n data-testid=\"test-date-period-field-initial-input\"\n data-state-is-period-input={true}\n data-state-error={hasValidationErrors}\n data-state-read-only={readOnly}\n data-state-text-align={textAlign}\n data-state-undigitable={undigitable}\n data-state-skeletonize={skeletonize}\n onPaste={handleOnPaste}\n onBeforeInput={handleOnBeforeInput}\n onBlur={event => handleOnBlurMaskInput(event, 'initial')}\n onFocus={event => handleOnFocusMaskInput(event, 'initial')}\n onKeyDown={event => handleOnKeyDownMaskInput(event, 'initial')} />\n <span\n className=\"separator\"\n data-state-disabled={disabled}\n data-state-read-only={readOnly}\n onMouseDown={(event) => { event.preventDefault(); }}>\n <Icon name=\"arrow_right\" size={10} />\n </span>\n <BaseDate.Input\n {..._.omit(rest, ['initialRef', 'finalRef'])}\n ref={mergeRefs(finalInputRef, props?.finalRef)}\n id={finalInputName}\n name={finalInputName}\n value={finalMaskedValue}\n readOnly={readOnly}\n disabled={disabled}\n customClass={customClass}\n tabIndex={(!readOnly && !skeletonize) ? 0 : -1}\n placeholder={inputPlaceholder}\n aria-autocomplete=\"list\"\n aria-activedescendant={activeDescendant}\n aria-expanded={calendarBoxOpen}\n aria-controls={finalInputName}\n aria-labelledby={finalInputName}\n data-testid=\"test-date-period-field-final-input\"\n data-state-is-period-input={true}\n data-state-error={hasValidationErrors}\n data-state-read-only={readOnly}\n data-state-text-align={textAlign}\n data-state-undigitable={undigitable}\n data-state-skeletonize={skeletonize}\n onPaste={handleOnPaste}\n onBeforeInput={handleOnBeforeInput}\n onBlur={event => handleOnBlurMaskInput(event, 'final')}\n onFocus={event => handleOnFocusMaskInput(event, 'final')}\n onKeyDown={event => handleOnKeyDownMaskInput(event, 'final')} />\n <Triggers />\n </BaseDate.Container>\n {calendarBoxOpen &&\n createPortal(\n <CalendarBox\n ref={calendarRef}\n testIdPrefix=\"test-date-period-field\"\n headerId={initialInputName}\n calendarBoxOpen={calendarBoxOpen}\n activeDescendant={activeDescendant}\n calendarDisplayDate={calendarDisplayDate}\n containerRef={dateContainerRef}\n onNextMonth={handleNextMonth}\n onPreviousMonth={handlePreviousMonth}\n getDayState={getDayState}\n onSelectDay={handleSelectDay}>\n {isDateTime && (\n <TimeSelector\n value={activeSelectedDate}\n onSelectTime={handleSelectTime}\n min={minDate}\n max={maxDate}\n testIdPrefix=\"test-date-period-field\" />\n )}\n </CalendarBox>,\n document.body,\n )\n }\n {hintPosition === 'below' && (\n <Hint\n customClass=\"hint\"\n description={props.hint}\n disabled={disabled}\n skeletonize={skeletonize}\n visible={hasHintMessages} />\n )}\n {hasValidationErrors && (\n <span\n data-testid=\"test-date-period-field-list-errors\"\n className=\"error\"\n data-state-skeletonize={skeletonize}\n aria-describedby={String(label).concat('-errors')}>\n {errors?.map((error, index) => (\n <React.Fragment key={`${index + 1}-${error}`}>\n {error}\n {' '}\n </React.Fragment>\n ))}\n </span>\n )}\n </BaseDate.Root>\n </DatePeriodFieldContext.Provider>\n <Tooltip\n targetRef={inputRootRef}\n text={tooltip}\n width={tooltipWidth}\n position={tooltipPosition} />\n </React.Fragment>\n );\n });\n\nInputBase.displayName = 'DatePeriodFieldInputBase';\n"],"names":["InputBase","React","forwardRef","props","__","$","_c","label","errors","initialName","t0","finalName","t1","customClass","t2","customClassLabel","t3","customClassWrapper","t4","customClassInputContainer","t5","labelUppercase","t6","undigitable","t7","skeletonize","t8","hintPosition","t9","themePopover","t10","popoverAlign","t11","showCalendarButton","t12","textAlign","t13","openCalendarOnFocus","t14","showPredefinedPeriodsButton","t15","showClearDateButton","t16","returnValueType","t17","variant","t18","placeholder","shouldCloseOnSelect","min","max","tooltip","tooltipPosition","tooltipWidth","disabled","readOnly","rest","undefined","isDateTime","isoFormat","ptbrFormat","digits","getDateFormats","shouldCloseCalendarOnSelect","inputPlaceholder","minDate","parseBoundary","maxDate","hasBounds","Boolean","t19","Symbol","for","inicial","final","selectedDate","setSelectedDate","useState","activeInputType","setActiveInputType","inputRootRef","useRef","finalInputRef","initialInputRef","calendarState","useDateCalendarState","inputRef","calendarBoxOpen","activeDescendant","calendarDisplayDate","calendarRef","dateContainerRef","handleNextMonth","handlePreviousMonth","handleSetCalendarBoxOpen","handleChangeActiveDescendant","handleChangeCalendarDisplayDate","handleKeyDownNavigation","t20","name","String","concat","initialInputName","t21","finalInputName","maskedValue","initialMaskedValue","setMaskValue","setInitialMaskValue","unmaskedValue","initialUnmaskedValue","handleOnPaste","handleOnBeforeInput","useDateMask","defaultValue","format","onCommit","date","handleChangeUpdateDateState","inputType","typing","onPaste","onBeforeInput","finalMaskedValue","setFinalMaskValue","finalUnmaskedValue","date_0","t22","_","isEmpty","hasLabel","hasHintMessages","hint","length","hasValidationErrors","t23","value","objectValue","isValidInitialValue","isValidFinalValue","verifyPeriodSelectedIsValid","t24","onChange","target","_temp","handleOnClickClearSelectedPeriod","params","date_1","rawDate","clone","verifyDateRangeOrder","_temp2","bb165","prevSelectedDate_0","inicial_2","final_2","prevSelectedDate","updatedState_0","updatedState","inicial_3","final_3","toISOString","requestAnimationFrame","current","focus","inicial_0","final_0","inicial_1","final_1","TOKEN_ISO_FORMAT","t25","period","localOnChange","initialDate_0","finalDate_0","valueToUpdate","initialDate","finalDate","updatedState_1","initialDate_1","finalDate_1","getPredefinedPeriodRange","clampDateToBounds","handleChangeUpdateDateStateWithPredefinedPeriod","t26","event","inputType_0","onBlur","relatedTarget","id","moment","size","date_2","isValid","date_3","handleOnBlurMaskInput","t27","event_0","inputType_1","onFocus","handleOnFocusMaskInput","getDayState","handleOnKeyDownMaskInput","handleSelectDay","event_1","inputType_2","onKeyDown","key","shiftKey","altKey","Keys","enter","preventDefault","toString","t28","day","inicial_4","final_4","isSelected","isSame","isInRange","isAfter","isBefore","isDisabled","isDayOutOfBounds","t29","focusedInputId","document","activeElement","resolveInputTypeFromFocus","daySelected","targetInputType","inputType_3","isUndefined","dayWithTime","hour","minute","activeSelectedDate","second","handleSelectTime","objectValue_0","initialDate_2","parseDateValue","finalDate_2","t30","t31","useEffect","t32","t33","t34","t35","isReadOnly","initialInputId","finalInputId","hasValidPeriodSelected","contextValues","t36","required","BaseDate.Label","t37","omit","t38","initialRef","t39","mergeRefs","t40","event_2","t41","event_3","t42","event_4","t43","t44","_temp3","t45","BaseDate","t46","t47","finalRef","t48","t49","t50","event_6","t51","event_7","t52","event_8","t53","Input","t54","t55","createPortal","body","t56","t57","map","_temp4","t58","BaseDate.Root","BaseDate.Container","BaseDate.Input","displayName","event_5","error","index"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"base.js","sources":["../../../../src/lib/inputs2/date/dateperiodfield/base.tsx"],"sourcesContent":["import React from 'react';\nimport _ from 'lodash';\nimport { createPortal } from 'react-dom';\nimport moment, { type Moment } from 'moment';\nimport Hint from '../../../hint';\nimport Icon from '../../../icons';\nimport { Tooltip } from '../../../tooltip';\nimport { mergeRefs } from '../../../form2/helpers';\nimport { Keys } from '../types';\nimport * as BaseDate from '../base';\nimport { useDateMask } from '../hooks/useDateMask';\nimport { useDateCalendarState } from '../hooks/useDateCalendarState';\nimport { TimeSelector } from '../timeselector';\nimport {\n clampDateToBounds, completePartialDateTime, formatPartialDateTime, getDateFormats,\n getPredefinedPeriodRange, getTimeSelection, isDayOutOfBounds, parseBoundary, parseDateValue,\n resolveAssumedTime, TOKEN_ISO_FORMAT,\n} from '../helpers';\nimport { CalendarBox } from '../calendarbox';\nimport { Triggers } from './triggers';\nimport { DatePeriodFieldContext } from './context';\nimport type {\n DatePeriodFieldBaseProps, DatePeriodTypes, InputType, SelectedDateType, UpdateDateStateParams,\n UpdateDraftStateParams,\n} from './types';\n\nexport const InputBase = \n React.forwardRef<HTMLInputElement, DatePeriodFieldBaseProps>((props, __) => {\n const {\n label, errors, initialName = 'inicial', finalName = 'final', customClass = '', customClassLabel = '',\n customClassWrapper = '', customClassInputContainer = '', labelUppercase = false, undigitable = false,\n skeletonize = false, hintPosition = 'below', themePopover = 'light', popoverAlign = 'left',\n showCalendarButton = true, textAlign = 'left', openCalendarOnFocus = true,\n showPredefinedPeriodsButton = true, showClearDateButton = true, returnValueType = 'default',\n variant = 'date', placeholder, shouldCloseOnSelect, min, max, onChange,\n tooltip, tooltipPosition, tooltipWidth, disabled, readOnly, ...rest\n } = props;\n const isDateTime = variant === 'datetime';\n const { isoFormat, ptbrFormat, digits } = getDateFormats(variant);\n const shouldCloseCalendarOnSelect = shouldCloseOnSelect ?? !isDateTime;\n const inputPlaceholder = placeholder ?? ptbrFormat;\n const minDate = parseBoundary(min);\n const maxDate = parseBoundary(max);\n const hasBounds = Boolean(minDate || maxDate);\n const [selectedDate, setSelectedDate] = React.useState<SelectedDateType>({\n inicial: null, final: null,\n });\n const [activeInputType, setActiveInputType] = React.useState<InputType>('initial');\n const inputRootRef = React.useRef<HTMLDivElement | null>(null);\n const finalInputRef = React.useRef<HTMLInputElement | null>(null);\n const initialInputRef = React.useRef<HTMLInputElement | null>(null);\n\n const calendarState = useDateCalendarState({\n inputRef: initialInputRef, min: minDate, max: maxDate,\n });\n const {\n calendarBoxOpen, activeDescendant, calendarDisplayDate, calendarRef, dateContainerRef,\n handleNextMonth, handlePreviousMonth, handleSetCalendarBoxOpen,\n handleChangeActiveDescendant, handleChangeCalendarDisplayDate, handleKeyDownNavigation,\n } = calendarState;\n\n const initialInputName = React.useMemo(() => String(props.name).concat('.').concat(initialName), [props.name, initialName]);\n const finalInputName = React.useMemo(() => String(props.name).concat('.').concat(finalName), [props.name, finalName]);\n\n const {\n maskedValue: initialMaskedValue,\n setMaskValue: setInitialMaskValue,\n unmaskedValue: initialUnmaskedValue,\n handleOnPaste,\n handleOnBeforeInput,\n handleOnKeyDownCapture: handleInitialKeyDownCapture,\n } = useDateMask({\n inputRef: initialInputRef,\n variant,\n defaultValue: selectedDate.inicial?.format(ptbrFormat),\n undigitable,\n readOnly,\n onCommit: date => handleChangeUpdateDateState({ date, inputType: 'initial', typing: true }),\n onPaste: props.onPaste,\n onBeforeInput: props.onBeforeInput,\n });\n\n const {\n maskedValue: finalMaskedValue,\n setMaskValue: setFinalMaskValue,\n unmaskedValue: finalUnmaskedValue,\n handleOnKeyDownCapture: handleFinalKeyDownCapture,\n } = useDateMask({\n inputRef: finalInputRef,\n variant,\n defaultValue: selectedDate.final?.format(ptbrFormat),\n undigitable,\n readOnly,\n onCommit: date => handleChangeUpdateDateState({ date, inputType: 'final', typing: true }),\n onPaste: props.onPaste,\n onBeforeInput: props.onBeforeInput,\n });\n\n const timeSelectionOf = (inputType: InputType) => getTimeSelection(\n inputType === 'initial' ? initialUnmaskedValue : finalUnmaskedValue, variant,\n );\n const activeTimeSelection = timeSelectionOf(activeInputType);\n\n const hasLabel = !_.isEmpty(props?.label);\n const hasHintMessages = Boolean(props.hint?.length);\n const hasValidationErrors = Boolean(errors?.length);\n\n const objectValue = props?.value as Partial<{ [x: string]: string | undefined }> | undefined;\n const receivedInitialValue = _.toString(objectValue?.[initialName]);\n const receivedFinalValue = _.toString(objectValue?.[finalName]);\n\n const verifyPeriodSelectedIsValid = () => (\n !_.isEmpty(receivedInitialValue) && !_.isEmpty(receivedFinalValue)\n );\n const emitPeriodChange = (inicial: Moment | null, final: Moment | null) => {\n onChange?.({\n target: {\n name: props.name,\n value: {\n [initialName]: returnValueType === 'default' ? inicial?.format(isoFormat) : inicial?.toISOString(),\n [finalName]: returnValueType === 'default' ? final?.format(isoFormat) : final?.toISOString(),\n } as any,\n },\n } as React.ChangeEvent<HTMLInputElement>);\n };\n\n const handleOnClickClearSelectedPeriod = () => {\n onChange?.({\n target: {\n name: props.name,\n value: { [initialName]: '', [finalName]: '' } as any,\n },\n } as React.ChangeEvent<HTMLInputElement>);\n setSelectedDate(() => ({ inicial: null, final: null }));\n setInitialMaskValue('');\n setFinalMaskValue('');\n handleSetCalendarBoxOpen(false);\n };\n\n const handleChangeUpdateDateState = (params: UpdateDateStateParams) => {\n const { date, inputType, typing } = params;\n const rawDate = date.clone();\n const resolveDateRange = (initialDate: Moment | null, finalDate: Moment | null) => {\n if (typing) return { inicial: initialDate, final: finalDate };\n const inicial = initialDate?.isAfter(finalDate) ? finalDate : initialDate;\n const final = initialDate?.isAfter(finalDate) ? initialDate : finalDate;\n return { inicial, final };\n };\n switch (inputType) {\n case 'initial': {\n setSelectedDate((prevSelectedDate) => {\n const { inicial, final } = resolveDateRange(rawDate, prevSelectedDate.final);\n const updatedState: SelectedDateType = { inicial, final };\n return updatedState;\n });\n const { inicial, final } = resolveDateRange(rawDate, selectedDate.final);\n emitPeriodChange(inicial, final);\n requestAnimationFrame(() => {\n if (!typing && !isDateTime) finalInputRef.current?.focus?.();\n });\n break;\n }\n case 'final': {\n setSelectedDate((prevSelectedDate) => {\n const { inicial, final } = resolveDateRange(prevSelectedDate.inicial, rawDate);\n const updatedState: SelectedDateType = { inicial, final };\n return updatedState;\n });\n const { inicial, final } = resolveDateRange(selectedDate.inicial, rawDate);\n emitPeriodChange(inicial, final);\n if (shouldCloseCalendarOnSelect) handleSetCalendarBoxOpen(false);\n break;\n }\n default:\n break;\n }\n handleChangeActiveDescendant(rawDate.format(TOKEN_ISO_FORMAT));\n handleChangeCalendarDisplayDate(rawDate.clone());\n };\n\n const handleUpdateDraftState = (params: UpdateDraftStateParams) => {\n const { date, inputType, hour, minute } = params;\n setSelectedDate(prevSelectedDate => (inputType === 'initial'\n ? { ...prevSelectedDate, inicial: date.clone() }\n : { ...prevSelectedDate, final: date.clone() }));\n const setMaskValue = inputType === 'initial' ? setInitialMaskValue : setFinalMaskValue;\n setMaskValue(formatPartialDateTime(date, hour, minute));\n handleChangeActiveDescendant(date.format(TOKEN_ISO_FORMAT));\n handleChangeCalendarDisplayDate(date.clone());\n };\n\n const handleChangeUpdateDateStateWithPredefinedPeriod = (period: DatePeriodTypes) => {\n const localOnChange = (initialDate: Moment, finalDate: Moment) => {\n const valueToUpdate = {\n [initialName]: returnValueType === 'default' ? initialDate.format(isoFormat) : initialDate.toISOString(),\n [finalName]: returnValueType === 'default' ? finalDate.format(isoFormat) : finalDate.toISOString(),\n };\n setSelectedDate(() => {\n const updatedState: SelectedDateType = {\n inicial: initialDate.clone(),\n final: finalDate.clone(),\n };\n return updatedState;\n });\n onChange?.({\n target: {\n name: props.name,\n value: valueToUpdate as any,\n },\n } as React.ChangeEvent<HTMLInputElement>);\n };\n\n const { initialDate, finalDate } = getPredefinedPeriodRange(period);\n localOnChange(\n clampDateToBounds(initialDate, minDate, maxDate),\n clampDateToBounds(finalDate, minDate, maxDate),\n );\n finalInputRef?.current?.focus?.();\n if (shouldCloseCalendarOnSelect) handleSetCalendarBoxOpen(false);\n };\n\n const handleCompleteDraftOnBlur = (inputType: InputType): boolean => {\n const unmaskedValue = inputType === 'initial' ? initialUnmaskedValue : finalUnmaskedValue;\n const completedDate = completePartialDateTime({\n unmaskedValue, variant, min: minDate, max: maxDate,\n });\n if (!completedDate) return false;\n const inicial = inputType === 'initial' ? completedDate : selectedDate.inicial;\n const final = inputType === 'final' ? completedDate : selectedDate.final;\n const isInverted = Boolean(inicial && final && inicial.isAfter(final));\n const ordered = isInverted\n ? { inicial: final, final: inicial }\n : { inicial, final };\n setSelectedDate(ordered);\n if (ordered.inicial) setInitialMaskValue(ordered.inicial.format(ptbrFormat));\n if (ordered.final) setFinalMaskValue(ordered.final.format(ptbrFormat));\n emitPeriodChange(ordered.inicial, ordered.final);\n return true;\n };\n\n const handleOnBlurMaskInput = (\n event: React.FocusEvent<HTMLInputElement>, inputType: InputType,\n ) => {\n props?.onBlur?.(event);\n const isInitialInput = inputType === 'initial';\n const siblingInputName = isInitialInput ? finalInputName : initialInputName;\n const currentSelectedDate = isInitialInput ? selectedDate.inicial : selectedDate.final;\n if (event.relatedTarget?.id !== siblingInputName) handleSetCalendarBoxOpen(false);\n if (calendarBoxOpen) {\n handleChangeActiveDescendant((currentSelectedDate ?? moment()).format(TOKEN_ISO_FORMAT));\n handleChangeCalendarDisplayDate(currentSelectedDate ?? moment());\n }\n if (handleCompleteDraftOnBlur(inputType)) return;\n const unmaskedValue = isInitialInput ? initialUnmaskedValue : finalUnmaskedValue;\n const setMaskValue = isInitialInput ? setInitialMaskValue : setFinalMaskValue;\n if (_.size(unmaskedValue) !== digits) {\n const date = moment(currentSelectedDate, TOKEN_ISO_FORMAT);\n if (date.isValid()) { setMaskValue(date.format(ptbrFormat)); }\n }\n handleReorderPeriodOnBlur();\n };\n\n const handleReorderPeriodOnBlur = () => {\n const { inicial, final } = selectedDate;\n if (!inicial || !final || !inicial.isAfter(final)) return;\n setSelectedDate({ inicial: final, final: inicial });\n setInitialMaskValue(final.format(ptbrFormat));\n setFinalMaskValue(inicial.format(ptbrFormat));\n emitPeriodChange(final, inicial);\n };\n\n const handleOnFocusMaskInput = (\n event: React.FocusEvent<HTMLInputElement>, inputType: InputType,\n ) => {\n props?.onFocus?.(event);\n if (!readOnly && !calendarBoxOpen && openCalendarOnFocus) {\n handleSetCalendarBoxOpen(true);\n }\n setActiveInputType(inputType);\n if (inputType === 'initial') {\n handleChangeActiveDescendant((selectedDate.inicial ?? moment()).format(TOKEN_ISO_FORMAT));\n handleChangeCalendarDisplayDate(selectedDate.inicial ?? moment());\n }\n if (inputType === 'final') {\n handleChangeActiveDescendant((selectedDate.final ?? moment()).format(TOKEN_ISO_FORMAT));\n handleChangeCalendarDisplayDate(selectedDate.final ?? moment());\n }\n };\n\n const handleOnKeyDownMaskInput = (\n event: React.KeyboardEvent<HTMLInputElement>, inputType: InputType,\n ) => {\n props?.onKeyDown?.(event);\n if (calendarBoxOpen && event.key && \n !event.shiftKey && !event.altKey && event.key === Keys.enter) {\n event.preventDefault();\n handleSelectDay(moment(_.toString(activeDescendant), TOKEN_ISO_FORMAT), inputType);\n }\n };\n\n const getDayState = (day: Moment) => {\n const { inicial, final } = selectedDate;\n return {\n isSelected: Boolean(\n (inicial && day.isSame(inicial, 'day')) || (final && day.isSame(final, 'day')),\n ),\n isInRange: Boolean(\n inicial && final && day.isAfter(inicial, 'day') && day.isBefore(final, 'day'),\n ),\n ...(hasBounds && { isDisabled: isDayOutOfBounds(day, minDate, maxDate) }),\n };\n };\n\n const resolveInputTypeFromFocus = (): InputType | undefined => {\n const focusedInputId = document.activeElement?.id;\n if (focusedInputId === initialInputName) return 'initial';\n if (focusedInputId === finalInputName) return 'final';\n return undefined;\n };\n\n const handleSelectDay = (daySelected: Moment, targetInputType?: InputType) => {\n const inputType = targetInputType ?? resolveInputTypeFromFocus();\n if (_.isUndefined(inputType)) return;\n const { hour, minute, isComplete } = timeSelectionOf(inputType);\n if (isDateTime && !isComplete) {\n handleUpdateDraftState({\n date: daySelected.clone().hour(hour ?? 0).minute(minute ?? 0),\n inputType,\n hour,\n minute,\n });\n return;\n }\n const current = inputType === 'initial' ? selectedDate.inicial : selectedDate.final;\n const dayWithTime = (isDateTime && current)\n ? daySelected.clone().hour(current.hour()).minute(current.minute())\n : daySelected;\n handleChangeUpdateDateState({\n date: clampDateToBounds(dayWithTime, minDate, maxDate), inputType,\n });\n };\n\n const activeSelectedDate = activeInputType === 'initial'\n ? selectedDate.inicial\n : selectedDate.final;\n\n const handleSelectHour = (hour: number) => {\n if (!activeSelectedDate) return;\n const { minute } = activeTimeSelection;\n if (_.isNull(minute)) {\n handleUpdateDraftState({\n date: activeSelectedDate.clone().hour(hour),\n inputType: activeInputType,\n hour,\n minute: null,\n });\n return;\n }\n handleChangeUpdateDateState({\n date: activeSelectedDate.clone().hour(hour).minute(minute).second(0),\n inputType: activeInputType,\n typing: true,\n });\n };\n\n const handleSelectMinute = (minute: number) => {\n if (!activeSelectedDate) return;\n const { hour } = activeTimeSelection;\n handleChangeUpdateDateState({\n date: _.isNull(hour)\n ? resolveAssumedTime({\n date: activeSelectedDate, hour: null, minute, min: minDate, max: maxDate,\n })\n : activeSelectedDate.clone().hour(hour).minute(minute).second(0),\n inputType: activeInputType,\n typing: true,\n });\n };\n\n React.useEffect(() => {\n if (props?.value) {\n const initialDate = parseDateValue(receivedInitialValue, variant);\n const finalDate = parseDateValue(receivedFinalValue, variant);\n setSelectedDate(() => ({\n inicial: initialDate.isValid() ? initialDate : null,\n final: finalDate.isValid() ? finalDate : null,\n }));\n setInitialMaskValue(initialDate.format(ptbrFormat));\n setFinalMaskValue(finalDate.format(ptbrFormat));\n }\n }, [receivedInitialValue, receivedFinalValue]);\n\n const contextValues = ({\n ...calendarState,\n isReadOnly: Boolean(readOnly), isDisabled: Boolean(disabled), undigitable, skeletonize,\n selectedDate, minDate, maxDate,\n initialInputId: initialInputName, finalInputId: finalInputName,\n initialInputRef, finalInputRef, showCalendarButton, hasValidationErrors,\n openCalendarOnFocus, showPredefinedPeriodsButton, showClearDateButton,\n handleChangeUpdateDateState, handleOnClickClearSelectedPeriod,\n handleChangeUpdateDateStateWithPredefinedPeriod,\n hasValidPeriodSelected: verifyPeriodSelectedIsValid(),\n });\n\n return (\n <React.Fragment>\n <DatePeriodFieldContext.Provider value={contextValues}>\n <BaseDate.Root\n ref={inputRootRef}\n data-testid=\"test-date-period-field-root\"\n data-state-error={hasValidationErrors}\n customClassWrapper={customClassWrapper}>\n {hasLabel && (\n <BaseDate.Label\n data-testid=\"test-date-period-field-label\"\n label={label}\n inputId={initialInputName}\n hint={props?.hint}\n isDisabled={disabled}\n isReadOnly={readOnly}\n skeletonize={skeletonize}\n required={props?.required}\n hintPosition={hintPosition}\n themePopover={themePopover}\n popoverAlign={popoverAlign}\n labelUppercase={labelUppercase}\n hasHintMessages={hasHintMessages}\n customClassLabel={customClassLabel} />\n )}\n <BaseDate.Container\n ref={dateContainerRef}\n data-testid=\"test-date-period-field-container\"\n onKeyDown={handleKeyDownNavigation}\n skeletonize={skeletonize}\n customClassInputContainer={customClassInputContainer}>\n <BaseDate.Input\n {..._.omit(rest, ['initialRef', 'finalRef'])}\n ref={mergeRefs(initialInputRef, props?.initialRef)}\n id={initialInputName}\n name={initialInputName}\n value={initialMaskedValue}\n disabled={disabled}\n readOnly={readOnly}\n customClass={customClass}\n tabIndex={(!readOnly && !skeletonize) ? 0 : -1}\n placeholder={inputPlaceholder}\n aria-autocomplete=\"list\"\n aria-activedescendant={activeDescendant}\n aria-expanded={calendarBoxOpen}\n aria-controls={initialInputName}\n aria-labelledby={initialInputName}\n data-testid=\"test-date-period-field-initial-input\"\n data-state-is-period-input={true}\n data-state-error={hasValidationErrors}\n data-state-read-only={readOnly}\n data-state-text-align={textAlign}\n data-state-undigitable={undigitable}\n data-state-skeletonize={skeletonize}\n onPaste={handleOnPaste}\n onBeforeInput={handleOnBeforeInput}\n onBlur={event => handleOnBlurMaskInput(event, 'initial')}\n onFocus={event => handleOnFocusMaskInput(event, 'initial')}\n onKeyDown={event => handleOnKeyDownMaskInput(event, 'initial')}\n onKeyDownCapture={handleInitialKeyDownCapture} />\n <span\n className=\"separator\"\n data-state-disabled={disabled}\n data-state-read-only={readOnly}\n onMouseDown={(event) => { event.preventDefault(); }}>\n <Icon name=\"arrow_right\" size={10} />\n </span>\n <BaseDate.Input\n {..._.omit(rest, ['initialRef', 'finalRef'])}\n ref={mergeRefs(finalInputRef, props?.finalRef)}\n id={finalInputName}\n name={finalInputName}\n value={finalMaskedValue}\n readOnly={readOnly}\n disabled={disabled}\n customClass={customClass}\n tabIndex={(!readOnly && !skeletonize) ? 0 : -1}\n placeholder={inputPlaceholder}\n aria-autocomplete=\"list\"\n aria-activedescendant={activeDescendant}\n aria-expanded={calendarBoxOpen}\n aria-controls={finalInputName}\n aria-labelledby={finalInputName}\n data-testid=\"test-date-period-field-final-input\"\n data-state-is-period-input={true}\n data-state-error={hasValidationErrors}\n data-state-read-only={readOnly}\n data-state-text-align={textAlign}\n data-state-undigitable={undigitable}\n data-state-skeletonize={skeletonize}\n onPaste={handleOnPaste}\n onBeforeInput={handleOnBeforeInput}\n onBlur={event => handleOnBlurMaskInput(event, 'final')}\n onFocus={event => handleOnFocusMaskInput(event, 'final')}\n onKeyDown={event => handleOnKeyDownMaskInput(event, 'final')}\n onKeyDownCapture={handleFinalKeyDownCapture} />\n <Triggers />\n </BaseDate.Container>\n {calendarBoxOpen &&\n createPortal(\n <CalendarBox\n ref={calendarRef}\n testIdPrefix=\"test-date-period-field\"\n headerId={initialInputName}\n calendarBoxOpen={calendarBoxOpen}\n activeDescendant={activeDescendant}\n calendarDisplayDate={calendarDisplayDate}\n containerRef={dateContainerRef}\n onNextMonth={handleNextMonth}\n onPreviousMonth={handlePreviousMonth}\n getDayState={getDayState}\n onSelectDay={handleSelectDay}>\n {isDateTime && (\n <TimeSelector\n value={activeSelectedDate}\n selectedHour={activeTimeSelection.hour}\n selectedMinute={activeTimeSelection.minute}\n onSelectHour={handleSelectHour}\n onSelectMinute={handleSelectMinute}\n min={minDate}\n max={maxDate}\n testIdPrefix=\"test-date-period-field\" />\n )}\n </CalendarBox>,\n document.body,\n )\n }\n {hintPosition === 'below' && (\n <Hint\n customClass=\"hint\"\n description={props.hint}\n disabled={disabled}\n skeletonize={skeletonize}\n visible={hasHintMessages} />\n )}\n {hasValidationErrors && (\n <span\n data-testid=\"test-date-period-field-list-errors\"\n className=\"error\"\n data-state-skeletonize={skeletonize}\n aria-describedby={String(label).concat('-errors')}>\n {errors?.map((error, index) => (\n <React.Fragment key={`${index + 1}-${error}`}>\n {error}\n {' '}\n </React.Fragment>\n ))}\n </span>\n )}\n </BaseDate.Root>\n </DatePeriodFieldContext.Provider>\n <Tooltip\n targetRef={inputRootRef}\n text={tooltip}\n width={tooltipWidth}\n position={tooltipPosition} />\n </React.Fragment>\n );\n });\n\nInputBase.displayName = 'DatePeriodFieldInputBase';\n"],"names":["InputBase","React","forwardRef","props","__","$","_c","label","errors","initialName","t0","finalName","t1","customClass","t2","customClassLabel","t3","customClassWrapper","t4","customClassInputContainer","t5","labelUppercase","t6","undigitable","t7","skeletonize","t8","hintPosition","t9","themePopover","t10","popoverAlign","t11","showCalendarButton","t12","textAlign","t13","openCalendarOnFocus","t14","showPredefinedPeriodsButton","t15","showClearDateButton","t16","returnValueType","t17","variant","t18","placeholder","shouldCloseOnSelect","min","max","onChange","tooltip","tooltipPosition","tooltipWidth","disabled","readOnly","rest","undefined","isDateTime","isoFormat","ptbrFormat","digits","getDateFormats","shouldCloseCalendarOnSelect","inputPlaceholder","minDate","parseBoundary","maxDate","hasBounds","Boolean","t19","Symbol","for","inicial","final","selectedDate","setSelectedDate","useState","activeInputType","setActiveInputType","inputRootRef","useRef","finalInputRef","initialInputRef","calendarState","useDateCalendarState","inputRef","calendarBoxOpen","activeDescendant","calendarDisplayDate","calendarRef","dateContainerRef","handleNextMonth","handlePreviousMonth","handleSetCalendarBoxOpen","handleChangeActiveDescendant","handleChangeCalendarDisplayDate","handleKeyDownNavigation","t20","name","String","concat","initialInputName","t21","finalInputName","maskedValue","initialMaskedValue","setMaskValue","setInitialMaskValue","unmaskedValue","initialUnmaskedValue","handleOnPaste","handleOnBeforeInput","handleOnKeyDownCapture","handleInitialKeyDownCapture","useDateMask","defaultValue","format","onCommit","date","handleChangeUpdateDateState","inputType","typing","onPaste","onBeforeInput","finalMaskedValue","setFinalMaskValue","finalUnmaskedValue","handleFinalKeyDownCapture","date_0","t22","getTimeSelection","timeSelectionOf","activeTimeSelection","t23","_","isEmpty","hasLabel","hasHintMessages","hint","length","hasValidationErrors","objectValue","value","receivedInitialValue","toString","receivedFinalValue","verifyPeriodSelectedIsValid","emitPeriodChange","target","toISOString","t24","_temp","handleOnClickClearSelectedPeriod","params","date_1","inputType_0","rawDate","clone","resolveDateRange","initialDate","finalDate","inicial_0","isAfter","final_0","bb223","prevSelectedDate_0","inicial_3","final_3","prevSelectedDate","updatedState_0","updatedState","inicial_4","final_4","requestAnimationFrame","current","focus","inicial_1","final_1","inicial_2","final_2","TOKEN_ISO_FORMAT","t25","params_0","date_2","inputType_1","hour","minute","prevSelectedDate_1","formatPartialDateTime","handleUpdateDraftState","handleChangeUpdateDateStateWithPredefinedPeriod","period","localOnChange","initialDate_0","finalDate_0","valueToUpdate","updatedState_1","initialDate_1","finalDate_1","getPredefinedPeriodRange","clampDateToBounds","handleCompleteDraftOnBlur","inputType_2","completedDate","completePartialDateTime","inicial_5","final_5","isInverted","ordered","handleOnBlurMaskInput","event","inputType_3","onBlur","isInitialInput","siblingInputName","currentSelectedDate","relatedTarget","id","moment","unmaskedValue_0","setMaskValue_0","size","date_3","isValid","handleReorderPeriodOnBlur","inicial_6","final_6","t26","event_0","inputType_4","onFocus","handleOnFocusMaskInput","handleOnKeyDownMaskInput","event_1","inputType_5","onKeyDown","key","shiftKey","altKey","Keys","enter","preventDefault","handleSelectDay","getDayState","day","inicial_7","final_7","isSelected","isSame","isInRange","isBefore","isDisabled","isDayOutOfBounds","t27","focusedInputId","document","activeElement","resolveInputTypeFromFocus","daySelected","targetInputType","inputType_6","isUndefined","hour_0","minute_0","isComplete","dayWithTime","activeSelectedDate","handleSelectHour","hour_1","minute_1","isNull","second","handleSelectMinute","minute_2","hour_2","resolveAssumedTime","useEffect","initialDate_2","parseDateValue","finalDate_2","t28","t29","t31","t32","t30","isReadOnly","initialInputId","finalInputId","hasValidPeriodSelected","contextValues","t33","required","BaseDate.Label","t34","omit","t35","initialRef","t36","mergeRefs","t37","event_2","t38","event_3","t39","event_4","t40","t41","_temp2","t42","BaseDate","t43","t44","finalRef","t45","t46","t47","event_6","t48","event_7","t49","event_8","t50","Input","t51","t52","createPortal","body","t53","t54","map","_temp3","t55","BaseDate.Root","BaseDate.Container","BaseDate.Input","displayName","event_5","error","index"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"triggers.js","sources":["../../../../src/lib/inputs2/date/dateperiodfield/triggers.tsx"],"sourcesContent":["import moment from 'moment';\nimport { MouseEvent } from 'react';\nimport Button from '../../../buttons';\nimport * as BaseDate from '../base';\nimport List, { ListItem } from '../../../list';\nimport type { DatePeriodTypes } from './types';\nimport { useDatePeriodFieldContext } from './context';\nimport { getPredefinedPeriodRange, PERIOD_OPTIONS_LIST, TOKEN_ISO_FORMAT } from '../helpers';\n\nconst Triggers = () => {\n const {\n initialInputId, initialInputRef, finalInputRef, isReadOnly, isDisabled, selectedDate, \n calendarBoxOpen, showCalendarButton, skeletonize, showPredefinedPeriodsButton,\n showClearDateButton, hasValidPeriodSelected, handleSetCalendarBoxOpen, minDate, maxDate,\n handleChangeActiveDescendant, handleChangeCalendarDisplayDate, handleOnClickClearSelectedPeriod,\n handleChangeUpdateDateStateWithPredefinedPeriod,\n } = useDatePeriodFieldContext();\n const shouldHavePermitClickOnTrigger = !isReadOnly && !isDisabled;\n\n
|
|
1
|
+
{"version":3,"file":"triggers.js","sources":["../../../../src/lib/inputs2/date/dateperiodfield/triggers.tsx"],"sourcesContent":["import moment from 'moment';\nimport { MouseEvent } from 'react';\nimport Button from '../../../buttons';\nimport * as BaseDate from '../base';\nimport List, { ListItem } from '../../../list';\nimport type { DatePeriodTypes } from './types';\nimport { useDatePeriodFieldContext } from './context';\nimport { getPredefinedPeriodRange, PERIOD_OPTIONS_LIST, TOKEN_ISO_FORMAT } from '../helpers';\n\nconst Triggers = () => {\n const {\n initialInputId, initialInputRef, finalInputRef, isReadOnly, isDisabled, selectedDate, \n calendarBoxOpen, showCalendarButton, skeletonize, showPredefinedPeriodsButton,\n showClearDateButton, hasValidPeriodSelected, handleSetCalendarBoxOpen, minDate, maxDate,\n handleChangeActiveDescendant, handleChangeCalendarDisplayDate, handleOnClickClearSelectedPeriod,\n handleChangeUpdateDateStateWithPredefinedPeriod,\n } = useDatePeriodFieldContext();\n const shouldHavePermitClickOnTrigger = !isReadOnly && !isDisabled;\n\n const isPeriodOutOfBounds = (period: DatePeriodTypes) => {\n const { initialDate, finalDate } = getPredefinedPeriodRange(period);\n if (minDate && finalDate.isBefore(minDate)) return true;\n return Boolean(maxDate && initialDate.isAfter(maxDate));\n };\n\n const handleOnClickTriggerSelectPredefinedPeriods = (\n event: any, periodSelected?: DatePeriodTypes,\n ) => {\n const isBlocked = !shouldHavePermitClickOnTrigger ||\n (periodSelected && isPeriodOutOfBounds(periodSelected));\n if (isBlocked) {\n event?.preventDefault?.();\n } else if (periodSelected) {\n handleChangeUpdateDateStateWithPredefinedPeriod(periodSelected);\n }\n };\n\n const handleOnClickTriggerCalendar = (event: MouseEvent<HTMLButtonElement>) => {\n if (!shouldHavePermitClickOnTrigger) event.preventDefault();\n else {\n handleSetCalendarBoxOpen(!calendarBoxOpen);\n if (!calendarBoxOpen) {\n switch (document.activeElement?.id) {\n case initialInputRef.current?.id: {\n handleChangeActiveDescendant(\n (selectedDate.inicial ?? moment()).format(TOKEN_ISO_FORMAT),\n );\n handleChangeCalendarDisplayDate(selectedDate.inicial ?? moment());\n initialInputRef.current?.focus();\n break;\n }\n case finalInputRef.current?.id: {\n handleChangeActiveDescendant((selectedDate.final ?? moment()).format(TOKEN_ISO_FORMAT));\n handleChangeCalendarDisplayDate(selectedDate.final ?? moment());\n finalInputRef.current?.focus();\n break;\n }\n default: initialInputRef.current?.focus();\n break;\n }\n }\n }\n };\n\n return (\n <BaseDate.Triggers\n clearButtonTestId=\"test-date-period-field-trigger-clean-selected-period\"\n calendarButtonTestId=\"test-date-period-field-trigger-open-calendar\"\n isDisabled={isDisabled}\n isReadOnly={isReadOnly}\n skeletonize={skeletonize}\n inputFieldId={initialInputId}\n calendarBoxOpen={calendarBoxOpen}\n showClearButton={showClearDateButton}\n showCalendarButton={showCalendarButton}\n hasValidDateSelection={false}\n hasValidPeriodSelected={hasValidPeriodSelected}\n onClearSelectedDate={handleOnClickClearSelectedPeriod}\n onClickTriggerCalendar={handleOnClickTriggerCalendar}>\n <Button\n data-testid=\"test-date-period-field-trigger-select-predefined-periods\"\n className=\"select-predefined-periods\"\n dropdown\n transparent\n boxShadow={false}\n showIconDropdown={false}\n visible={showPredefinedPeriodsButton}\n type=\"button\"\n title=\"Selecionar Periodos Pré Definidos\"\n tabIndex={-1}\n disabled={isDisabled}\n aria-label=\"Selecionar Periodos Pré Definidos\"\n aria-controls={initialInputId}\n aria-readonly={isReadOnly}\n data-state-read-only={isReadOnly}\n data-state-visible={showPredefinedPeriodsButton}\n iconName=\"more1\"\n dropdownAlign=\"right\"\n onMouseDown={(event) => { event.preventDefault(); }}>\n <List condensed>\n {PERIOD_OPTIONS_LIST.map(period => (\n <ListItem\n key={period.id}\n itemId={period.id}\n text={period.label}\n disabled={isPeriodOutOfBounds(period.id)}\n onMouseDown={(event) => { event?.preventDefault?.(); }}\n onClick={(event) => {\n handleOnClickTriggerSelectPredefinedPeriods(event, period.id); \n }} />\n ))}\n </List>\n </Button>\n </BaseDate.Triggers>\n );\n};\n\nTriggers.displayName = 'DatePeriodFieldTriggers';\n\nexport { Triggers };\n"],"names":["Triggers","initialInputId","initialInputRef","finalInputRef","isReadOnly","isDisabled","selectedDate","calendarBoxOpen","showCalendarButton","skeletonize","showPredefinedPeriodsButton","showClearDateButton","hasValidPeriodSelected","handleSetCalendarBoxOpen","minDate","maxDate","handleChangeActiveDescendant","handleChangeCalendarDisplayDate","handleOnClickClearSelectedPeriod","handleChangeUpdateDateStateWithPredefinedPeriod","useDatePeriodFieldContext","shouldHavePermitClickOnTrigger","isPeriodOutOfBounds","period","initialDate","finalDate","getPredefinedPeriodRange","isBefore","Boolean","isAfter","handleOnClickTriggerSelectPredefinedPeriods","event","periodSelected","isBlocked","preventDefault","handleOnClickTriggerCalendar","document","activeElement","id","current","inicial","moment","format","TOKEN_ISO_FORMAT","focus","final","BaseDate.Triggers","PERIOD_OPTIONS_LIST","map","ListItem","label","displayName"],"mappings":";;;;;;;;;;AASA,MAAMA,WAAWA,MAAM;AACrB,QAAM;AAAA,IACJC;AAAAA,IAAgBC;AAAAA,IAAiBC;AAAAA,IAAeC;AAAAA,IAAYC;AAAAA,IAAYC;AAAAA,IACxEC;AAAAA,IAAiBC;AAAAA,IAAoBC;AAAAA,IAAaC;AAAAA,IAClDC;AAAAA,IAAqBC;AAAAA,IAAwBC;AAAAA,IAA0BC;AAAAA,IAASC;AAAAA,IAChFC;AAAAA,IAA8BC;AAAAA,IAAiCC;AAAAA,IAC/DC;AAAAA,EAAAA,IACEC,0BAAAA;AACJ,QAAMC,iCAAiC,CAACjB,cAAc,CAACC;AAEvD,QAAMiB,sBAAsBA,CAACC,WAA4B;AACvD,UAAM;AAAA,MAAEC;AAAAA,MAAaC;AAAAA,IAAAA,IAAcC,yBAAyBH,MAAM;AAClE,QAAIT,WAAWW,UAAUE,SAASb,OAAO,EAAG,QAAO;AACnD,WAAOc,QAAQb,WAAWS,YAAYK,QAAQd,OAAO,CAAC;AAAA,EACxD;AAEA,QAAMe,8CAA8CA,CAClDC,OAAYC,mBACT;AACH,UAAMC,YAAY,CAACZ,kCAChBW,kBAAkBV,oBAAoBU,cAAc;AACvD,QAAIC,WAAW;AACbF,aAAOG,iBAAAA;AAAAA,IACT,WAAWF,gBAAgB;AACzBb,sDAAgDa,cAAc;AAAA,IAChE;AAAA,EACF;AAEA,QAAMG,+BAA+BA,CAACJ,YAAyC;AAC7E,QAAI,CAACV,+BAAgCU,SAAMG,eAAAA;AAAAA,SACtC;AACHrB,+BAAyB,CAACN,eAAe;AACzC,UAAI,CAACA,iBAAiB;AACpB,gBAAQ6B,SAASC,eAAeC,IAAAA;AAAAA,UAC9B,KAAKpC,gBAAgBqC,SAASD,IAAI;AAChCtB,0CACGV,aAAakC,WAAWC,MAAAA,GAAUC,OAAOC,gBAAgB,CAC5D;AACA1B,4CAAgCX,aAAakC,WAAWC,OAAQ;AAChEvC,4BAAgBqC,SAASK,MAAAA;AACzB;AAAA,UACF;AAAA,UACA,KAAKzC,cAAcoC,SAASD,IAAI;AAC9BtB,0CAA8BV,aAAauC,SAASJ,MAAAA,GAAUC,OAAOC,gBAAgB,CAAC;AACtF1B,4CAAgCX,aAAauC,SAASJ,OAAQ;AAC9DtC,0BAAcoC,SAASK,MAAAA;AACvB;AAAA,UACF;AAAA,UACA;AAAS1C,4BAAgBqC,SAASK,MAAAA;AAChC;AAAA,QAAA;AAAA,MAEN;AAAA,IACF;AAAA,EACF;AAEA,SACE,oBAACE,YAAA,EACC,mBAAkB,wDAClB,sBAAqB,gDACrB,YACA,YACA,aACA,cAAc7C,gBACd,iBACA,iBAAiBU,qBACjB,oBACA,uBAAuB,OACvB,wBACA,qBAAqBO,kCACrB,wBAAwBiB,8BACxB,UAAA,oBAAC,QAAA,EACC,eAAY,4DACZ,WAAU,6BACV,UAAQ,MACR,aAAW,MACX,WAAW,OACX,kBAAkB,OAClB,SAASzB,6BACT,MAAK,UACL,OAAM,qCACN,UAAU,IACV,UAAUL,YACV,cAAW,qCACX,iBAAeJ,gBACf,iBAAeG,YACf,wBAAsBA,YACtB,sBAAoBM,6BACpB,UAAS,SACT,eAAc,SACd,aAAcqB,CAAAA,YAAU;AAAEA,YAAMG,eAAAA;AAAAA,EAAkB,GAClD,8BAAC,MAAA,EAAK,WAAS,MACZa,UAAAA,oBAAoBC,IAAIzB,CAAAA,aACvB,oBAAC0B,MAAA,EAEC,QAAQ1B,SAAOe,IACf,MAAMf,SAAO2B,OACb,UAAU5B,oBAAoBC,SAAOe,EAAE,GACvC,aAAcP,CAAAA,YAAU;AAAEA,aAAOG,iBAAAA;AAAAA,EAAoB,GACrD,SAAUH,CAAAA,YAAU;AAClBD,gDAA4CC,SAAOR,SAAOe,EAAE;AAAA,EAC9D,KAPKf,SAAOe,GAQf,EAAA,CACH,GACF,GACF;AAEJ;AAEAtC,SAASmD,cAAc;"}
|
|
@@ -21,6 +21,12 @@ export type UpdateDateStateParams = {
|
|
|
21
21
|
inputType: InputType;
|
|
22
22
|
typing?: boolean;
|
|
23
23
|
};
|
|
24
|
+
export type UpdateDraftStateParams = {
|
|
25
|
+
date: Moment;
|
|
26
|
+
inputType: InputType;
|
|
27
|
+
hour: number | null;
|
|
28
|
+
minute: number | null;
|
|
29
|
+
};
|
|
24
30
|
type InputHTMLProps = Omit<ComponentPropsWithoutRef<'input'>, 'type' | 'multiple' | 'value'>;
|
|
25
31
|
export interface DatePeriodFieldBaseProps extends InputHTMLProps, ITooltipCommonProps {
|
|
26
32
|
value?: any;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { default as _ } from 'lodash';
|
|
2
2
|
import { default as moment, Moment } from 'moment';
|
|
3
3
|
import { PeriodOptions } from './dateperiodfield/types';
|
|
4
|
-
import { DateVariant } from './types';
|
|
4
|
+
import { DateVariant, TimeSelection } from './types';
|
|
5
5
|
export declare const TOKEN_ISO_FORMAT = "YYYY-MM-DD";
|
|
6
6
|
export declare const TOKEN_PTBR_FORMAT = "DD/MM/YYYY";
|
|
7
7
|
export declare const TOKEN_ISO_DATETIME_FORMAT = "YYYY-MM-DDTHH:mm";
|
|
@@ -14,8 +14,31 @@ export declare const getDateFormats: (variant: DateVariant) => {
|
|
|
14
14
|
digits: number;
|
|
15
15
|
};
|
|
16
16
|
export declare const parseDateValue: (value: unknown, variant: DateVariant) => Moment;
|
|
17
|
+
export interface MaskSegment {
|
|
18
|
+
start: number;
|
|
19
|
+
end: number;
|
|
20
|
+
key: string;
|
|
21
|
+
}
|
|
22
|
+
export declare const getMaskSegments: ((format: string) => MaskSegment[]) & _.MemoizedFunction;
|
|
23
|
+
export declare const canSegmentAcceptDigits: (digits: string, key: string) => boolean;
|
|
24
|
+
export declare const getTimeSelection: (unmaskedValue: string, variant: DateVariant) => TimeSelection;
|
|
25
|
+
export declare const formatPartialDateTime: (date: Moment, hour: number | null, minute: number | null) => string;
|
|
17
26
|
export declare const parseBoundary: (value?: string) => Moment | undefined;
|
|
18
27
|
export declare const clampDateToBounds: (date: Moment, min?: Moment, max?: Moment) => Moment;
|
|
28
|
+
export interface AssumedTimeParams {
|
|
29
|
+
date: Moment;
|
|
30
|
+
hour: number | null;
|
|
31
|
+
minute: number | null;
|
|
32
|
+
min?: Moment;
|
|
33
|
+
max?: Moment;
|
|
34
|
+
}
|
|
35
|
+
export declare const resolveAssumedTime: (params: AssumedTimeParams) => Moment;
|
|
36
|
+
export declare const completePartialDateTime: (params: {
|
|
37
|
+
unmaskedValue: string;
|
|
38
|
+
variant: DateVariant;
|
|
39
|
+
min?: Moment;
|
|
40
|
+
max?: Moment;
|
|
41
|
+
}) => Moment | null;
|
|
19
42
|
export declare const isDayOutOfBounds: (day: Moment, min?: Moment, max?: Moment) => boolean;
|
|
20
43
|
export declare const getPredefinedPeriodRange: (period: PeriodOptions["id"]) => {
|
|
21
44
|
initialDate: moment.Moment;
|
|
@@ -21,6 +21,92 @@ const getDateFormats = (variant) => variant === "datetime" ? {
|
|
|
21
21
|
digits: 8
|
|
22
22
|
};
|
|
23
23
|
const parseDateValue = (value, variant) => variant === "datetime" ? hooks(_.toString(value), ACCEPTED_VALUE_FORMATS, true) : hooks(_.toString(value), TOKEN_ISO_FORMAT);
|
|
24
|
+
const getMaskSegments = memoize((format) => {
|
|
25
|
+
const segments = [];
|
|
26
|
+
let start = 0;
|
|
27
|
+
while (start < format.length) {
|
|
28
|
+
let end = start;
|
|
29
|
+
while (end < format.length && format[end] === format[start]) end++;
|
|
30
|
+
if (/[a-z]/i.test(format[start])) segments.push({
|
|
31
|
+
start,
|
|
32
|
+
end,
|
|
33
|
+
key: format[start]
|
|
34
|
+
});
|
|
35
|
+
start = end;
|
|
36
|
+
}
|
|
37
|
+
return segments;
|
|
38
|
+
});
|
|
39
|
+
const MASK_BLOCK_RANGES = {
|
|
40
|
+
D: {
|
|
41
|
+
from: 1,
|
|
42
|
+
to: 31,
|
|
43
|
+
length: 2,
|
|
44
|
+
pad: true
|
|
45
|
+
},
|
|
46
|
+
M: {
|
|
47
|
+
from: 1,
|
|
48
|
+
to: 12,
|
|
49
|
+
length: 2,
|
|
50
|
+
pad: true
|
|
51
|
+
},
|
|
52
|
+
Y: {
|
|
53
|
+
from: 1900,
|
|
54
|
+
to: 2099,
|
|
55
|
+
length: 4,
|
|
56
|
+
pad: false
|
|
57
|
+
},
|
|
58
|
+
H: {
|
|
59
|
+
from: 0,
|
|
60
|
+
to: 23,
|
|
61
|
+
length: 2,
|
|
62
|
+
pad: true
|
|
63
|
+
},
|
|
64
|
+
m: {
|
|
65
|
+
from: 0,
|
|
66
|
+
to: 59,
|
|
67
|
+
length: 2,
|
|
68
|
+
pad: true
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
const fitsBlockRange = (digits, block) => {
|
|
72
|
+
if (!digits) return true;
|
|
73
|
+
if (digits.length > block.length) return false;
|
|
74
|
+
const lowest = Number(digits.padEnd(block.length, "0"));
|
|
75
|
+
const highest = Number(digits.padEnd(block.length, "9"));
|
|
76
|
+
return highest >= block.from && lowest <= block.to;
|
|
77
|
+
};
|
|
78
|
+
const canSegmentAcceptDigits = (digits, key) => {
|
|
79
|
+
const block = MASK_BLOCK_RANGES[key];
|
|
80
|
+
if (!block) return true;
|
|
81
|
+
if (fitsBlockRange(digits, block)) return true;
|
|
82
|
+
const padDigit = String(block.from).padStart(block.length, "0")[0];
|
|
83
|
+
return block.pad && digits.length < block.length && fitsBlockRange(`${padDigit}${digits}`, block);
|
|
84
|
+
};
|
|
85
|
+
const getTimeSelection = (unmaskedValue, variant) => {
|
|
86
|
+
const digits = _.toString(unmaskedValue).replace(/\D/g, "");
|
|
87
|
+
const hasDate = _.size(digits) >= 8;
|
|
88
|
+
if (variant !== "datetime") return {
|
|
89
|
+
hour: null,
|
|
90
|
+
minute: null,
|
|
91
|
+
hasDate,
|
|
92
|
+
isComplete: hasDate
|
|
93
|
+
};
|
|
94
|
+
const hour = _.size(digits) >= 10 ? Number(digits.slice(8, 10)) : null;
|
|
95
|
+
const minute = _.size(digits) >= 12 ? Number(digits.slice(10, 12)) : null;
|
|
96
|
+
return {
|
|
97
|
+
hour,
|
|
98
|
+
minute,
|
|
99
|
+
hasDate,
|
|
100
|
+
isComplete: hasDate && !_.isNull(hour) && !_.isNull(minute)
|
|
101
|
+
};
|
|
102
|
+
};
|
|
103
|
+
const padTimeUnit = (unit) => _.padStart(String(unit), 2, "0");
|
|
104
|
+
const formatPartialDateTime = (date, hour, minute) => {
|
|
105
|
+
const datePart = date.format(TOKEN_PTBR_FORMAT);
|
|
106
|
+
if (_.isNull(hour)) return datePart;
|
|
107
|
+
if (_.isNull(minute)) return `${datePart} ${padTimeUnit(hour)}`;
|
|
108
|
+
return `${datePart} ${padTimeUnit(hour)}:${padTimeUnit(minute)}`;
|
|
109
|
+
};
|
|
24
110
|
const parseBoundary = (value) => {
|
|
25
111
|
if (!value) return void 0;
|
|
26
112
|
const boundary = hooks(value, ACCEPTED_BOUNDARY_FORMATS, true);
|
|
@@ -31,6 +117,50 @@ const clampDateToBounds = (date, min, max) => {
|
|
|
31
117
|
if (max && date.isAfter(max)) return max.clone();
|
|
32
118
|
return date;
|
|
33
119
|
};
|
|
120
|
+
const resolveAssumedTime = (params) => {
|
|
121
|
+
const {
|
|
122
|
+
date,
|
|
123
|
+
hour,
|
|
124
|
+
minute,
|
|
125
|
+
min,
|
|
126
|
+
max
|
|
127
|
+
} = params;
|
|
128
|
+
const assumedDate = date.clone().hour(hour ?? 0).minute(minute ?? 0).second(0);
|
|
129
|
+
const fitToBoundary = (boundary) => {
|
|
130
|
+
if (_.isNull(hour)) assumedDate.hour(boundary.hour());
|
|
131
|
+
if (_.isNull(minute) && assumedDate.hour() === boundary.hour()) {
|
|
132
|
+
assumedDate.minute(boundary.minute());
|
|
133
|
+
}
|
|
134
|
+
};
|
|
135
|
+
if (min && assumedDate.isSame(min, "day") && assumedDate.isBefore(min)) fitToBoundary(min);
|
|
136
|
+
if (max && assumedDate.isSame(max, "day") && assumedDate.isAfter(max)) fitToBoundary(max);
|
|
137
|
+
return assumedDate;
|
|
138
|
+
};
|
|
139
|
+
const completePartialDateTime = (params) => {
|
|
140
|
+
const {
|
|
141
|
+
unmaskedValue,
|
|
142
|
+
variant,
|
|
143
|
+
min,
|
|
144
|
+
max
|
|
145
|
+
} = params;
|
|
146
|
+
if (variant !== "datetime") return null;
|
|
147
|
+
const {
|
|
148
|
+
hasDate,
|
|
149
|
+
isComplete,
|
|
150
|
+
hour,
|
|
151
|
+
minute
|
|
152
|
+
} = getTimeSelection(unmaskedValue, variant);
|
|
153
|
+
if (!hasDate || isComplete) return null;
|
|
154
|
+
const date = hooks(_.toString(unmaskedValue).replace(/\D/g, "").slice(0, 8), "DDMMYYYY", true);
|
|
155
|
+
if (!date.isValid()) return null;
|
|
156
|
+
return resolveAssumedTime({
|
|
157
|
+
date,
|
|
158
|
+
hour,
|
|
159
|
+
minute,
|
|
160
|
+
min,
|
|
161
|
+
max
|
|
162
|
+
});
|
|
163
|
+
};
|
|
34
164
|
const isDayOutOfBounds = (day, min, max) => {
|
|
35
165
|
if (min && day.isBefore(min, "day")) return true;
|
|
36
166
|
return Boolean(max && day.isAfter(max, "day"));
|
|
@@ -101,13 +231,19 @@ export {
|
|
|
101
231
|
TOKEN_ISO_FORMAT,
|
|
102
232
|
TOKEN_PTBR_DATETIME_FORMAT,
|
|
103
233
|
TOKEN_PTBR_FORMAT,
|
|
234
|
+
canSegmentAcceptDigits,
|
|
104
235
|
clampDateToBounds,
|
|
236
|
+
completePartialDateTime,
|
|
237
|
+
formatPartialDateTime,
|
|
105
238
|
generateCalendarWeeks,
|
|
106
239
|
getDateFormats,
|
|
240
|
+
getMaskSegments,
|
|
107
241
|
getPredefinedPeriodRange,
|
|
242
|
+
getTimeSelection,
|
|
108
243
|
isDayOutOfBounds,
|
|
109
244
|
options,
|
|
110
245
|
parseBoundary,
|
|
111
|
-
parseDateValue
|
|
246
|
+
parseDateValue,
|
|
247
|
+
resolveAssumedTime
|
|
112
248
|
};
|
|
113
249
|
//# sourceMappingURL=helpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sources":["../../../src/lib/inputs2/date/helpers.ts"],"sourcesContent":["import _ from 'lodash';\nimport moment, { type Moment } from 'moment';\nimport memoize from 'lodash/memoize';\nimport { OPTIONS_ON_DENIED } from '../../permissionValidations';\nimport type { PeriodOptions } from './dateperiodfield/types';\nimport { Keys, type DateVariant } from './types';\n\n// Sem o import explícito o bundler não inclui o locale e o calendário cai em inglês.\nimport 'moment/dist/locale/pt-br';\n\nmoment.locale('pt-br');\n\nexport const TOKEN_ISO_FORMAT = 'YYYY-MM-DD';\nexport const TOKEN_PTBR_FORMAT = 'DD/MM/YYYY';\nexport const TOKEN_ISO_DATETIME_FORMAT = 'YYYY-MM-DDTHH:mm';\nexport const TOKEN_PTBR_DATETIME_FORMAT = 'DD/MM/YYYY HH:mm';\nexport const ACCEPTED_BOUNDARY_FORMATS = [TOKEN_ISO_FORMAT, TOKEN_ISO_DATETIME_FORMAT];\nexport const ACCEPTED_VALUE_FORMATS = [...ACCEPTED_BOUNDARY_FORMATS, moment.ISO_8601];\nexport const getDateFormats = (variant: DateVariant) => (variant === 'datetime'\n ? { isoFormat: TOKEN_ISO_DATETIME_FORMAT, ptbrFormat: TOKEN_PTBR_DATETIME_FORMAT, digits: 12 }\n : { isoFormat: TOKEN_ISO_FORMAT, ptbrFormat: TOKEN_PTBR_FORMAT, digits: 8 });\n// Em datetime um valor sem hora significa meia-noite, e a forma com fuso entra na lista\n// para que o que sai com returnValueType='iso' volte a ser lido.\nexport const parseDateValue = (value: unknown, variant: DateVariant): Moment => (\n variant === 'datetime'\n ? moment(_.toString(value), ACCEPTED_VALUE_FORMATS, true)\n : moment(_.toString(value), TOKEN_ISO_FORMAT)\n);\n// min/max são configuração de quem monta o campo, então não seguem o returnValueType. Um\n// limite mal escrito vira ausência de limite, nunca uma data que ninguém pediu.\nexport const parseBoundary = (value?: string): Moment | undefined => {\n if (!value) return undefined;\n const boundary = moment(value, ACCEPTED_BOUNDARY_FORMATS, true);\n return boundary.isValid() ? boundary : undefined;\n};\nexport const clampDateToBounds = (date: Moment, min?: Moment, max?: Moment): Moment => {\n if (min && date.isBefore(min)) return min.clone();\n if (max && date.isAfter(max)) return max.clone();\n return date;\n};\nexport const isDayOutOfBounds = (day: Moment, min?: Moment, max?: Moment): boolean => {\n if (min && day.isBefore(min, 'day')) return true;\n return Boolean(max && day.isAfter(max, 'day'));\n};\nexport const getPredefinedPeriodRange = (period: PeriodOptions['id']) => {\n const range = (start: Moment, end: Moment) => ({\n initialDate: start.startOf('day'), finalDate: end.endOf('day'),\n });\n switch (period) {\n case 'today': return range(moment(), moment());\n case 'week': return range(moment().startOf('week'), moment().endOf('week'));\n case 'lastweek': return range(\n moment().add(-1, 'week').startOf('week'), moment().add(-1, 'week').endOf('week'),\n );\n case 'last15': return range(moment().add(-14, 'd'), moment());\n case 'month': return range(moment().startOf('month'), moment().endOf('month'));\n case 'lastmonth':\n default: return range(\n moment().add(-1, 'month').startOf('month'), moment().add(-1, 'month').endOf('month'),\n );\n }\n};\nexport const options = [\n OPTIONS_ON_DENIED.disabled,\n OPTIONS_ON_DENIED.unvisible,\n OPTIONS_ON_DENIED.readOnly,\n OPTIONS_ON_DENIED.hideContent,\n];\nexport const NAVIGATION_KEYS: string[] = [\n Keys.arrowLeft, Keys.arrowRight, Keys.arrowUp, Keys.arrowDown,\n Keys.pageUp, Keys.pageDown, Keys.home, Keys.end, Keys.escape,\n Keys.enter,\n];\nexport const PERIOD_OPTIONS_LIST: PeriodOptions[] = [\n { id: 'today', label: 'Hoje' },\n { id: 'week', label: 'Semana Atual' },\n { id: 'lastweek', label: 'Última Semana' },\n { id: 'last15', label: 'Últimos 15 dias' },\n { id: 'month', label: 'Mês atual' },\n { id: 'lastmonth', label: 'Último Mês' },\n];\nexport const generateCalendarWeeks = memoize((monthSelected: Moment): Moment[][] => {\n const startOfCalendar = monthSelected.clone().startOf('month').startOf('week');\n const endOfCalendar = monthSelected.clone().endOf('month').endOf('week');\n const weeks: Moment[][] = [];\n const currentWeek = startOfCalendar.clone();\n while (currentWeek.isSameOrBefore(endOfCalendar, 'day')) {\n const week: Moment[] = [];\n for (let days = 0; days < 7; days++) {\n week.push(currentWeek.clone());\n currentWeek.add(1, 'day');\n }\n weeks.push(week);\n }\n return weeks;\n}, (monthSelected: Moment) => monthSelected.format('YYYY-MM'));\n"],"names":["moment","locale","TOKEN_ISO_FORMAT","TOKEN_PTBR_FORMAT","TOKEN_ISO_DATETIME_FORMAT","TOKEN_PTBR_DATETIME_FORMAT","ACCEPTED_BOUNDARY_FORMATS","ACCEPTED_VALUE_FORMATS","ISO_8601","getDateFormats","variant","isoFormat","ptbrFormat","digits","parseDateValue","value","_","toString","parseBoundary","undefined","boundary","isValid","clampDateToBounds","date","min","max","isBefore","clone","isAfter","isDayOutOfBounds","day","Boolean","getPredefinedPeriodRange","period","range","start","end","initialDate","startOf","finalDate","endOf","add","options","OPTIONS_ON_DENIED","disabled","unvisible","readOnly","hideContent","NAVIGATION_KEYS","Keys","arrowLeft","arrowRight","arrowUp","arrowDown","pageUp","pageDown","home","escape","enter","PERIOD_OPTIONS_LIST","id","label","generateCalendarWeeks","memoize","monthSelected","startOfCalendar","endOfCalendar","weeks","currentWeek","isSameOrBefore","week","days","push","format"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"helpers.js","sources":["../../../src/lib/inputs2/date/helpers.ts"],"sourcesContent":["import _ from 'lodash';\nimport moment, { type Moment } from 'moment';\nimport memoize from 'lodash/memoize';\nimport { OPTIONS_ON_DENIED } from '../../permissionValidations';\nimport type { PeriodOptions } from './dateperiodfield/types';\nimport { Keys, type DateVariant, type TimeSelection } from './types';\n\n// Sem o import explícito o bundler não inclui o locale e o calendário cai em inglês.\nimport 'moment/dist/locale/pt-br';\n\nmoment.locale('pt-br');\n\nexport const TOKEN_ISO_FORMAT = 'YYYY-MM-DD';\nexport const TOKEN_PTBR_FORMAT = 'DD/MM/YYYY';\nexport const TOKEN_ISO_DATETIME_FORMAT = 'YYYY-MM-DDTHH:mm';\nexport const TOKEN_PTBR_DATETIME_FORMAT = 'DD/MM/YYYY HH:mm';\nexport const ACCEPTED_BOUNDARY_FORMATS = [TOKEN_ISO_FORMAT, TOKEN_ISO_DATETIME_FORMAT];\nexport const ACCEPTED_VALUE_FORMATS = [...ACCEPTED_BOUNDARY_FORMATS, moment.ISO_8601];\n\nexport const getDateFormats = (variant: DateVariant) => (variant === 'datetime'\n ? { isoFormat: TOKEN_ISO_DATETIME_FORMAT, ptbrFormat: TOKEN_PTBR_DATETIME_FORMAT, digits: 12 }\n : { isoFormat: TOKEN_ISO_FORMAT, ptbrFormat: TOKEN_PTBR_FORMAT, digits: 8 });\nexport const parseDateValue = (value: unknown, variant: DateVariant): Moment => (\n variant === 'datetime'\n ? moment(_.toString(value), ACCEPTED_VALUE_FORMATS, true)\n : moment(_.toString(value), TOKEN_ISO_FORMAT)\n);\n\nexport interface MaskSegment { start: number; end: number; key: string }\nexport const getMaskSegments = memoize((format: string): MaskSegment[] => {\n const segments: MaskSegment[] = [];\n let start = 0;\n while (start < format.length) {\n let end = start;\n while (end < format.length && format[end] === format[start]) end++;\n if (/[a-z]/i.test(format[start])) segments.push({ start, end, key: format[start] });\n start = end;\n }\n return segments;\n});\n\ninterface MaskBlockRange { from: number; to: number; length: number; pad: boolean }\nconst MASK_BLOCK_RANGES: Record<string, MaskBlockRange> = {\n D: { from: 1, to: 31, length: 2, pad: true },\n M: { from: 1, to: 12, length: 2, pad: true },\n Y: { from: 1900, to: 2099, length: 4, pad: false },\n H: { from: 0, to: 23, length: 2, pad: true },\n m: { from: 0, to: 59, length: 2, pad: true },\n};\n\nconst fitsBlockRange = (digits: string, block: MaskBlockRange): boolean => {\n if (!digits) return true;\n if (digits.length > block.length) return false;\n const lowest = Number(digits.padEnd(block.length, '0'));\n const highest = Number(digits.padEnd(block.length, '9'));\n return highest >= block.from && lowest <= block.to;\n};\n\nexport const canSegmentAcceptDigits = (digits: string, key: string): boolean => {\n const block = MASK_BLOCK_RANGES[key];\n if (!block) return true;\n if (fitsBlockRange(digits, block)) return true;\n const padDigit = String(block.from).padStart(block.length, '0')[0];\n return block.pad && digits.length < block.length\n && fitsBlockRange(`${padDigit}${digits}`, block);\n};\n\nexport const getTimeSelection = (unmaskedValue: string, variant: DateVariant): TimeSelection => {\n const digits = _.toString(unmaskedValue).replace(/\\D/g, '');\n const hasDate = _.size(digits) >= 8;\n if (variant !== 'datetime') return { hour: null, minute: null, hasDate, isComplete: hasDate };\n const hour = _.size(digits) >= 10 ? Number(digits.slice(8, 10)) : null;\n const minute = _.size(digits) >= 12 ? Number(digits.slice(10, 12)) : null;\n return { hour, minute, hasDate, isComplete: hasDate && !_.isNull(hour) && !_.isNull(minute) };\n};\n\nconst padTimeUnit = (unit: number) => _.padStart(String(unit), 2, '0');\n\nexport const formatPartialDateTime = (\n date: Moment, hour: number | null, minute: number | null,\n): string => {\n const datePart = date.format(TOKEN_PTBR_FORMAT);\n if (_.isNull(hour)) return datePart;\n if (_.isNull(minute)) return `${datePart} ${padTimeUnit(hour)}`;\n return `${datePart} ${padTimeUnit(hour)}:${padTimeUnit(minute)}`;\n};\n\nexport const parseBoundary = (value?: string): Moment | undefined => {\n if (!value) return undefined;\n const boundary = moment(value, ACCEPTED_BOUNDARY_FORMATS, true);\n return boundary.isValid() ? boundary : undefined;\n};\n\nexport const clampDateToBounds = (date: Moment, min?: Moment, max?: Moment): Moment => {\n if (min && date.isBefore(min)) return min.clone();\n if (max && date.isAfter(max)) return max.clone();\n return date;\n};\n\n// O que a pessoa não escolheu vira zero — e só o que ela não escolheu é puxado para a borda de\n// `min`/`max`. O dia e as unidades que ela mesma definiu ficam como estão, mesmo fora do intervalo.\nexport interface AssumedTimeParams {\n date: Moment;\n hour: number | null;\n minute: number | null;\n min?: Moment;\n max?: Moment;\n}\n\nexport const resolveAssumedTime = (params: AssumedTimeParams): Moment => {\n const { date, hour, minute, min, max } = params;\n const assumedDate = date.clone().hour(hour ?? 0).minute(minute ?? 0).second(0);\n const fitToBoundary = (boundary: Moment) => {\n if (_.isNull(hour)) assumedDate.hour(boundary.hour());\n if (_.isNull(minute) && assumedDate.hour() === boundary.hour()) {\n assumedDate.minute(boundary.minute());\n }\n };\n if (min && assumedDate.isSame(min, 'day') && assumedDate.isBefore(min)) fitToBoundary(min);\n if (max && assumedDate.isSame(max, 'day') && assumedDate.isAfter(max)) fitToBoundary(max);\n return assumedDate;\n};\n\n// Sair do campo com a data fechada e a hora em aberto.\nexport const completePartialDateTime = (\n params: { unmaskedValue: string, variant: DateVariant, min?: Moment, max?: Moment },\n): Moment | null => {\n const { unmaskedValue, variant, min, max } = params;\n if (variant !== 'datetime') return null;\n const { hasDate, isComplete, hour, minute } = getTimeSelection(unmaskedValue, variant);\n if (!hasDate || isComplete) return null;\n const date = moment(_.toString(unmaskedValue).replace(/\\D/g, '').slice(0, 8), 'DDMMYYYY', true);\n if (!date.isValid()) return null;\n return resolveAssumedTime({ date, hour, minute, min, max });\n};\n\nexport const isDayOutOfBounds = (day: Moment, min?: Moment, max?: Moment): boolean => {\n if (min && day.isBefore(min, 'day')) return true;\n return Boolean(max && day.isAfter(max, 'day'));\n};\n\nexport const getPredefinedPeriodRange = (period: PeriodOptions['id']) => {\n const range = (start: Moment, end: Moment) => ({\n initialDate: start.startOf('day'), finalDate: end.endOf('day'),\n });\n switch (period) {\n case 'today': return range(moment(), moment());\n case 'week': return range(moment().startOf('week'), moment().endOf('week'));\n case 'lastweek': return range(\n moment().add(-1, 'week').startOf('week'), moment().add(-1, 'week').endOf('week'),\n );\n case 'last15': return range(moment().add(-14, 'd'), moment());\n case 'month': return range(moment().startOf('month'), moment().endOf('month'));\n case 'lastmonth':\n default: return range(\n moment().add(-1, 'month').startOf('month'), moment().add(-1, 'month').endOf('month'),\n );\n }\n};\n\nexport const options = [\n OPTIONS_ON_DENIED.disabled,\n OPTIONS_ON_DENIED.unvisible,\n OPTIONS_ON_DENIED.readOnly,\n OPTIONS_ON_DENIED.hideContent,\n];\nexport const NAVIGATION_KEYS: string[] = [\n Keys.arrowLeft, Keys.arrowRight, Keys.arrowUp, Keys.arrowDown,\n Keys.pageUp, Keys.pageDown, Keys.home, Keys.end, Keys.escape,\n Keys.enter,\n];\nexport const PERIOD_OPTIONS_LIST: PeriodOptions[] = [\n { id: 'today', label: 'Hoje' },\n { id: 'week', label: 'Semana Atual' },\n { id: 'lastweek', label: 'Última Semana' },\n { id: 'last15', label: 'Últimos 15 dias' },\n { id: 'month', label: 'Mês atual' },\n { id: 'lastmonth', label: 'Último Mês' },\n];\n\nexport const generateCalendarWeeks = memoize((monthSelected: Moment): Moment[][] => {\n const startOfCalendar = monthSelected.clone().startOf('month').startOf('week');\n const endOfCalendar = monthSelected.clone().endOf('month').endOf('week');\n const weeks: Moment[][] = [];\n const currentWeek = startOfCalendar.clone();\n while (currentWeek.isSameOrBefore(endOfCalendar, 'day')) {\n const week: Moment[] = [];\n for (let days = 0; days < 7; days++) {\n week.push(currentWeek.clone());\n currentWeek.add(1, 'day');\n }\n weeks.push(week);\n }\n return weeks;\n}, (monthSelected: Moment) => monthSelected.format('YYYY-MM'));\n"],"names":["moment","locale","TOKEN_ISO_FORMAT","TOKEN_PTBR_FORMAT","TOKEN_ISO_DATETIME_FORMAT","TOKEN_PTBR_DATETIME_FORMAT","ACCEPTED_BOUNDARY_FORMATS","ACCEPTED_VALUE_FORMATS","ISO_8601","getDateFormats","variant","isoFormat","ptbrFormat","digits","parseDateValue","value","_","toString","getMaskSegments","memoize","format","segments","start","length","end","test","push","key","MASK_BLOCK_RANGES","D","from","to","pad","M","Y","H","m","fitsBlockRange","block","lowest","Number","padEnd","highest","canSegmentAcceptDigits","padDigit","String","padStart","getTimeSelection","unmaskedValue","replace","hasDate","size","hour","minute","isComplete","slice","isNull","padTimeUnit","unit","formatPartialDateTime","date","datePart","parseBoundary","undefined","boundary","isValid","clampDateToBounds","min","max","isBefore","clone","isAfter","resolveAssumedTime","params","assumedDate","second","fitToBoundary","isSame","completePartialDateTime","isDayOutOfBounds","day","Boolean","getPredefinedPeriodRange","period","range","initialDate","startOf","finalDate","endOf","add","options","OPTIONS_ON_DENIED","disabled","unvisible","readOnly","hideContent","NAVIGATION_KEYS","Keys","arrowLeft","arrowRight","arrowUp","arrowDown","pageUp","pageDown","home","escape","enter","PERIOD_OPTIONS_LIST","id","label","generateCalendarWeeks","monthSelected","startOfCalendar","endOfCalendar","weeks","currentWeek","isSameOrBefore","week","days"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCalendarPosition.js","sources":["../../../../src/lib/inputs2/date/hooks/useCalendarPosition.ts"],"sourcesContent":["import { CSSProperties, RefObject, useLayoutEffect, useRef, useState } from 'react';\n\
|
|
1
|
+
{"version":3,"file":"useCalendarPosition.js","sources":["../../../../src/lib/inputs2/date/hooks/useCalendarPosition.ts"],"sourcesContent":["import { CSSProperties, RefObject, useLayoutEffect, useRef, useState } from 'react';\n\nconst getOuterHeight = (element: HTMLDivElement | null) => {\n if (!element) return 0;\n const { borderTopWidth, borderBottomWidth, marginTop, marginBottom } = getComputedStyle(element);\n const toNumber = (value: string) => parseFloat(value) || 0;\n return element.scrollHeight + toNumber(borderTopWidth) + toNumber(borderBottomWidth)\n + toNumber(marginTop) + toNumber(marginBottom);\n};\n\nexport const useCalendarPosition = (\n calendarBoxOpen: boolean,\n containerRef: RefObject<HTMLDivElement | null>,\n calendarBoxRef: RefObject<HTMLDivElement | null>,\n) => {\n const [calendarBoxStyles, setCalendarBoxStyles] = useState<CSSProperties>({\n top: 0,\n left: 0,\n position: 'absolute',\n });\n const shouldAlignRight = useRef(false);\n const shouldFlipAbove = useRef(false);\n\n useLayoutEffect(() => {\n const updatePosition = (shouldReviewAlignment: boolean) => {\n const anchor = containerRef.current?.getBoundingClientRect();\n if (!anchor) return;\n const measuredWidth = calendarBoxRef.current?.getBoundingClientRect().width ?? 0;\n const boxWidth = Math.max(anchor.width, measuredWidth);\n const boxHeight = getOuterHeight(calendarBoxRef.current);\n if (shouldReviewAlignment) {\n shouldAlignRight.current = anchor.left + boxWidth > window.innerWidth;\n shouldFlipAbove.current = anchor.bottom + boxHeight > window.innerHeight\n && anchor.top - boxHeight >= 0;\n }\n const alignedLeft = shouldAlignRight.current\n ? Math.max(0, anchor.right - boxWidth)\n : anchor.left;\n const alignedTop = shouldFlipAbove.current\n ? anchor.top - boxHeight\n : anchor.top + anchor.height;\n setCalendarBoxStyles({\n top: alignedTop + window.scrollY,\n left: alignedLeft + window.scrollX,\n width: anchor.width,\n position: 'absolute',\n });\n };\n\n const handleScroll = () => updatePosition(false);\n const handleResize = () => updatePosition(true);\n\n if (calendarBoxOpen) {\n updatePosition(true);\n window.addEventListener('resize', handleResize);\n window.addEventListener('scroll', handleScroll, true);\n }\n\n return () => {\n window.removeEventListener('resize', handleResize);\n window.removeEventListener('scroll', handleScroll, true);\n };\n }, [calendarBoxOpen, containerRef, calendarBoxRef]);\n\n return { calendarBoxStyles };\n};\n"],"names":["getOuterHeight","element","borderTopWidth","borderBottomWidth","marginTop","marginBottom","getComputedStyle","toNumber","value","parseFloat","scrollHeight","useCalendarPosition","calendarBoxOpen","containerRef","calendarBoxRef","$","_c","t0","Symbol","for","top","left","position","calendarBoxStyles","setCalendarBoxStyles","useState","shouldAlignRight","useRef","shouldFlipAbove","t1","t2","updatePosition","shouldReviewAlignment","anchor","current","getBoundingClientRect","measuredWidth","width","boxWidth","Math","max","boxHeight","window","innerWidth","bottom","innerHeight","alignedLeft","right","alignedTop","height","scrollY","scrollX","handleScroll","handleResize","addEventListener","removeEventListener","useLayoutEffect","t3"],"mappings":";;AAEA,MAAMA,iBAAiBA,CAACC,YAAmC;AACzD,MAAI,CAACA,QAAS,QAAO;AACrB,QAAM;AAAA,IAAEC;AAAAA,IAAgBC;AAAAA,IAAmBC;AAAAA,IAAWC;AAAAA,EAAAA,IAAiBC,iBAAiBL,OAAO;AAC/F,QAAMM,WAAWA,CAACC,UAAkBC,WAAWD,KAAK,KAAK;AACzD,SAAOP,QAAQS,eAAeH,SAASL,cAAc,IAAIK,SAASJ,iBAAiB,IAC/EI,SAASH,SAAS,IAAIG,SAASF,YAAY;AACjD;AAEO,MAAMM,sBAAsBA,CAAAC,iBAAAC,cAAAC,mBAAA;AAAA,QAAAC,IAAAC,uBAAAA,EAAA,CAAA;AAAA,MAAAC;AAAA,MAAAF,EAAA,CAAA,MAAAG,OAAAC,IAAA,2BAAA,GAAA;AAKyCF,SAAA;AAAA,MAAAG,KACnE;AAAA,MAACC,MACA;AAAA,MAACC,UACG;AAAA,IAAA;AACXP,WAAAE;AAAAA,EAAA,OAAA;AAAAA,SAAAF,EAAA,CAAA;AAAA,EAAA;AAJD,QAAA,CAAAQ,mBAAAC,oBAAA,IAAkDC,SAAwBR,EAIzE;AACD,QAAAS,mBAAyBC,OAAO,KAAK;AACrC,QAAAC,kBAAwBD,OAAO,KAAK;AAAE,MAAAE;AAAA,MAAAC;AAAA,MAAAf,EAAA,CAAA,MAAAH,mBAAAG,SAAAD,kBAAAC,EAAA,CAAA,MAAAF,cAAA;AAEtBgB,SAAAA,MAAA;AACd,YAAAE,iBAAuBC,CAAAA,0BAAA;AACrB,cAAAC,SAAepB,aAAYqB,SAA+BC,sBAAAA;AAC1D,YAAI,CAACF,QAAM;AAAA;AAAA,QAAA;AACX,cAAAG,gBAAsBtB,eAAcoB,SAA+BC,sBAAAA,EAAQE,SAArD;AACtB,cAAAC,WAAiBC,KAAIC,IAAKP,OAAMI,OAAQD,aAAa;AACrD,cAAAK,YAAkBzC,eAAec,eAAcoB,OAAQ;AACvD,YAAIF,uBAAqB;AACvBN,2BAAgBQ,UAAWD,OAAMZ,OAAQiB,WAAWI,OAAMC;AAC1Df,0BAAeM,UAAWD,OAAMW,SAAUH,YAAYC,OAAMG,eACvDZ,OAAMb,MAAOqB,aAAa;AAAA,QADR;AAGzB,cAAAK,cAAoBpB,iBAAgBQ,UAChCK,KAAIC,IAAK,GAAGP,OAAMc,QAAST,QACjB,IAAVL,OAAMZ;AACV,cAAA2B,aAAmBpB,gBAAeM,UAC9BD,OAAMb,MAAOqB,YACbR,OAAMb,MAAOa,OAAMgB;AACvBzB,6BAAqB;AAAA,UAAAJ,KACd4B,aAAaN,OAAMQ;AAAAA,UAAQ7B,MAC1ByB,cAAcJ,OAAMS;AAAAA,UAAQd,OAC3BJ,OAAMI;AAAAA,UAAMf,UACT;AAAA,QAAA,CACX;AAAA,MAAC;AAGJ,YAAA8B,eAAqBA,MAAMrB,eAAe,KAAK;AAC/C,YAAAsB,eAAqBA,MAAMtB,eAAe,IAAI;AAE9C,UAAInB,iBAAe;AACjBmB,uBAAe,IAAI;AACnBW,eAAMY,iBAAkB,UAAUD,YAAY;AAC9CX,eAAMY,iBAAkB,UAAUF,cAAc,IAAI;AAAA,MAAC;AACtD,aAEM,MAAA;AACLV,eAAMa,oBAAqB,UAAUF,YAAY;AACjDX,eAAMa,oBAAqB,UAAUH,cAAc,IAAI;AAAA,MAAC;AAAA,IACzD;AACAtB,UAAClB,iBAAiBC,cAAcC,cAAc;AAACC,WAAAH;AAAAG,WAAAD;AAAAC,WAAAF;AAAAE,WAAAc;AAAAd,WAAAe;AAAAA,EAAA,OAAA;AAAAD,SAAAd,EAAA,CAAA;AAAAe,SAAAf,EAAA,CAAA;AAAA,EAAA;AAvClDyC,kBAAgB3B,IAuCbC,EAA+C;AAAC,MAAA2B;AAAA,MAAA1C,SAAAQ,mBAAA;AAE5CkC,SAAA;AAAA,MAAAlC;AAAAA,IAAAA;AAAqBR,WAAAQ;AAAAR,WAAA0C;AAAAA,EAAA,OAAA;AAAAA,SAAA1C,EAAA,CAAA;AAAA,EAAA;AAAA,SAArB0C;AAAqB;"}
|