linear-react-components-ui 2.1.0-beta.3 → 2.1.0-beta.5
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 +370 -277
- package/lib/inputs2/date/datefield/base.js.map +1 -1
- package/lib/inputs2/date/dateperiodfield/base.js +483 -492
- 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 +22 -3
- package/lib/inputs2/date/helpers.js +123 -2
- 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 +1 -1
- package/lib/inputs2/date/hooks/useDateMask.js +77 -149
- 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, onChange,\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 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 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 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 // Digitar atravessa datas completas intermediárias (12/10 -> 12/11 -> 12/12), e uma\n // delas pode ultrapassar o outro extremo. Reordenar aí trocaria os dois campos\n // debaixo do cursor, então a ordenação espera o fim da edição — ver\n // handleReorderPeriodOnBlur.\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) 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 // 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 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 handleReorderPeriodOnBlur();\n };\n\n // Contrapartida de resolveDateRange: a inversão que a digitação pode deixar para trás é\n // desfeita aqui, uma vez só, quando a edição termina.\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 // 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 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 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","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","_","isEmpty","hasLabel","hasHintMessages","hint","length","hasValidationErrors","t23","value","objectValue","isValidInitialValue","isValidFinalValue","verifyPeriodSelectedIsValid","emitPeriodChange","target","toISOString","t24","_temp","handleOnClickClearSelectedPeriod","params","date_1","rawDate","clone","resolveDateRange","initialDate","finalDate","inicial_0","isAfter","final_0","bb209","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","period","localOnChange","initialDate_0","finalDate_0","valueToUpdate","updatedState_1","initialDate_1","finalDate_1","getPredefinedPeriodRange","clampDateToBounds","handleChangeUpdateDateStateWithPredefinedPeriod","handleOnBlurMaskInput","event","inputType_0","onBlur","relatedTarget","id","moment","size","date_2","isValid","date_3","handleReorderPeriodOnBlur","inicial_5","final_5","t26","event_0","inputType_1","onFocus","handleOnFocusMaskInput","getDayState","handleOnKeyDownMaskInput","handleSelectDay","event_1","inputType_2","onKeyDown","key","shiftKey","altKey","Keys","enter","preventDefault","toString","t27","day","inicial_6","final_6","isSelected","isSame","isInRange","isBefore","isDisabled","isDayOutOfBounds","t28","focusedInputId","document","activeElement","resolveInputTypeFromFocus","daySelected","targetInputType","inputType_3","isUndefined","dayWithTime","hour","minute","activeSelectedDate","second","handleSelectTime","objectValue_0","initialDate_2","parseDateValue","finalDate_2","t29","t30","useEffect","t31","t32","t33","t34","isReadOnly","initialInputId","finalInputId","hasValidPeriodSelected","contextValues","t35","required","BaseDate.Label","t36","omit","t37","initialRef","t38","mergeRefs","t39","event_2","t40","event_3","t41","event_4","t42","t43","_temp2","t44","BaseDate","t45","t46","finalRef","t47","t48","t49","event_6","t50","event_7","t51","event_8","t52","Input","t53","t54","createPortal","body","t55","t56","map","_temp3","t57","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":"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"}
|
|
@@ -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,12 +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
|
|
17
|
+
export interface MaskSegment {
|
|
18
18
|
start: number;
|
|
19
19
|
end: number;
|
|
20
|
-
|
|
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;
|
|
21
26
|
export declare const parseBoundary: (value?: string) => Moment | undefined;
|
|
22
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;
|
|
23
42
|
export declare const isDayOutOfBounds: (day: Moment, min?: Moment, max?: Moment) => boolean;
|
|
24
43
|
export declare const getPredefinedPeriodRange: (period: PeriodOptions["id"]) => {
|
|
25
44
|
initialDate: moment.Moment;
|
|
@@ -29,12 +29,84 @@ const getMaskSegments = memoize((format) => {
|
|
|
29
29
|
while (end < format.length && format[end] === format[start]) end++;
|
|
30
30
|
if (/[a-z]/i.test(format[start])) segments.push({
|
|
31
31
|
start,
|
|
32
|
-
end
|
|
32
|
+
end,
|
|
33
|
+
key: format[start]
|
|
33
34
|
});
|
|
34
35
|
start = end;
|
|
35
36
|
}
|
|
36
37
|
return segments;
|
|
37
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
|
+
};
|
|
38
110
|
const parseBoundary = (value) => {
|
|
39
111
|
if (!value) return void 0;
|
|
40
112
|
const boundary = hooks(value, ACCEPTED_BOUNDARY_FORMATS, true);
|
|
@@ -45,6 +117,50 @@ const clampDateToBounds = (date, min, max) => {
|
|
|
45
117
|
if (max && date.isAfter(max)) return max.clone();
|
|
46
118
|
return date;
|
|
47
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
|
+
};
|
|
48
164
|
const isDayOutOfBounds = (day, min, max) => {
|
|
49
165
|
if (min && day.isBefore(min, "day")) return true;
|
|
50
166
|
return Boolean(max && day.isAfter(max, "day"));
|
|
@@ -115,14 +231,19 @@ export {
|
|
|
115
231
|
TOKEN_ISO_FORMAT,
|
|
116
232
|
TOKEN_PTBR_DATETIME_FORMAT,
|
|
117
233
|
TOKEN_PTBR_FORMAT,
|
|
234
|
+
canSegmentAcceptDigits,
|
|
118
235
|
clampDateToBounds,
|
|
236
|
+
completePartialDateTime,
|
|
237
|
+
formatPartialDateTime,
|
|
119
238
|
generateCalendarWeeks,
|
|
120
239
|
getDateFormats,
|
|
121
240
|
getMaskSegments,
|
|
122
241
|
getPredefinedPeriodRange,
|
|
242
|
+
getTimeSelection,
|
|
123
243
|
isDayOutOfBounds,
|
|
124
244
|
options,
|
|
125
245
|
parseBoundary,
|
|
126
|
-
parseDateValue
|
|
246
|
+
parseDateValue,
|
|
247
|
+
resolveAssumedTime
|
|
127
248
|
};
|
|
128
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.\n// Os limites de cada segmento saem do próprio formato — 'DD/MM/YYYY HH:mm' vira\n// [0,2] [3,5] [6,10] [11,13] [14,16] — para que as duas variantes derivem de uma fonte só.\nexport const getMaskSegments = memoize((format: string): { start: number; end: number }[] => {\n const segments: { start: number; end: number }[] = [];\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 });\n start = end;\n }\n return segments;\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};\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","getMaskSegments","memoize","format","segments","start","length","end","test","push","parseBoundary","undefined","boundary","isValid","clampDateToBounds","date","min","max","isBefore","clone","isAfter","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
|
+
{"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":"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"}
|