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.
@@ -1 +1 @@
1
- {"version":3,"file":"useDateCalendarState.js","sources":["../../../../src/lib/inputs2/date/hooks/useDateCalendarState.ts"],"sourcesContent":["import React from 'react';\nimport moment, { type Moment } from 'moment';\nimport { Keys, type DateSharedContextProps } from '../types';\nimport { NAVIGATION_KEYS, TOKEN_ISO_FORMAT } from '../helpers';\n\ninterface UseDateCalendarStateParams {\n inputRef?: React.RefObject<HTMLInputElement | null>;\n min?: Moment;\n max?: Moment;\n onPressEnter?: (activeDescendant: string) => void;\n}\n\ninterface UseDateCalendarStateReturn extends DateSharedContextProps {\n handleKeyDownNavigation: (event: React.KeyboardEvent<HTMLInputElement>) => void;\n}\n\nexport const useDateCalendarState = (\n params: UseDateCalendarStateParams = {},\n): UseDateCalendarStateReturn => {\n const { inputRef, min, max, onPressEnter } = params;\n const [calendarBoxOpen, setCalendarBoxOpen] = React.useState(false);\n const [activeDescendant, setActiveDescendant] = React.useState<string>(\n moment().format(TOKEN_ISO_FORMAT),\n );\n const [calendarDisplayDate, setCalendarDisplayDate] = React.useState<Moment>(moment());\n const calendarRef = React.useRef<HTMLDivElement | null>(null);\n const dateContainerRef = React.useRef<HTMLDivElement | null>(null);\n\n const handleSetCalendarBoxOpen = React.useCallback(\n (value: boolean) => setCalendarBoxOpen(value), [],\n );\n const handleChangeActiveDescendant = React.useCallback(\n (value: string) => setActiveDescendant(value), [],\n );\n const handleChangeCalendarDisplayDate = React.useCallback(\n (value: Moment) => setCalendarDisplayDate(value), [],\n );\n const handleNextMonth = React.useCallback(() => setCalendarDisplayDate(prevDisplayDate =>\n prevDisplayDate.clone().add(1, 'month')), []);\n const handlePreviousMonth = React.useCallback(() => setCalendarDisplayDate(prevDisplayDate =>\n prevDisplayDate.clone().subtract(1, 'month')), []);\n\n // Abrir pelo botão devolve o foco ao input: é ele que escuta as setas, e o calendário\n // fecha no blur — sem esse foco o calendário abriria sem ninguém para navegá-lo.\n const handleToggleCalendarBox = React.useCallback(() => {\n setCalendarBoxOpen((prevState) => {\n if (inputRef?.current !== document.activeElement) {\n inputRef?.current?.focus?.();\n }\n return !prevState;\n });\n }, [inputRef]);\n\n // Prender o cursor na borda em vez de rejeitar o movimento. Rejeitar deixaria quem\n // paginou para um mês inteiramente fora do intervalo sem nenhuma seta que ande, já que\n // o mesmo estado guarda o mês exibido e o cursor.\n const clampToBounds = (day: Moment) => {\n if (min && day.isBefore(min, 'day')) return min.clone().startOf('day');\n if (max && day.isAfter(max, 'day')) return max.clone().startOf('day');\n return day;\n };\n\n const handleNavigateWithDays = (offset: number) => {\n setCalendarDisplayDate((prevDisplayDate) => {\n const daySelected = clampToBounds(prevDisplayDate.clone().add(offset, 'day'));\n setActiveDescendant(daySelected.format(TOKEN_ISO_FORMAT));\n return daySelected;\n });\n };\n\n const handleNavigateWithWeeks = (when: 'start' | 'end') => {\n setCalendarDisplayDate((prevDisplayDate) => {\n let daySelected = prevDisplayDate;\n if (when === 'end') daySelected = prevDisplayDate.clone().endOf('week');\n if (when === 'start') daySelected = prevDisplayDate.clone().startOf('week');\n daySelected = clampToBounds(daySelected);\n setActiveDescendant(daySelected.format(TOKEN_ISO_FORMAT));\n return daySelected;\n });\n };\n\n const handleKeyDownNavigation = (event: React.KeyboardEvent<HTMLInputElement>) => {\n const isNavigationKey = Boolean(event.key) && !event.shiftKey && !event.altKey &&\n NAVIGATION_KEYS.includes(event.key);\n if (!calendarBoxOpen || !isNavigationKey) return;\n event.preventDefault();\n switch (event.key) {\n case Keys.arrowLeft: handleNavigateWithDays(-1);\n break;\n case Keys.arrowRight: handleNavigateWithDays(1);\n break;\n case Keys.arrowUp: handleNavigateWithDays(-7);\n break;\n case Keys.arrowDown: handleNavigateWithDays(7);\n break;\n case Keys.pageUp: handleNextMonth();\n break;\n case Keys.pageDown: handlePreviousMonth();\n break;\n case Keys.home: handleNavigateWithWeeks('start');\n break;\n case Keys.end: handleNavigateWithWeeks('end');\n break;\n case Keys.escape: setCalendarBoxOpen(false);\n break;\n case Keys.enter: onPressEnter?.(activeDescendant);\n break;\n default:\n break;\n }\n };\n\n return {\n calendarBoxOpen,\n activeDescendant,\n calendarDisplayDate,\n calendarRef,\n dateContainerRef,\n handleNextMonth,\n handlePreviousMonth,\n handleToggleCalendarBox,\n handleSetCalendarBoxOpen,\n handleChangeActiveDescendant,\n handleChangeCalendarDisplayDate,\n handleKeyDownNavigation,\n };\n};\n"],"names":["useDateCalendarState","t0","$","_c","t1","undefined","params","inputRef","min","max","onPressEnter","calendarBoxOpen","setCalendarBoxOpen","React","useState","t2","Symbol","for","moment","format","TOKEN_ISO_FORMAT","activeDescendant","setActiveDescendant","t3","calendarDisplayDate","setCalendarDisplayDate","calendarRef","useRef","dateContainerRef","t4","value","handleSetCalendarBoxOpen","t5","value_0","handleChangeActiveDescendant","t6","value_1","handleChangeCalendarDisplayDate","t7","_temp","handleNextMonth","t8","_temp2","handlePreviousMonth","t9","prevState","current","document","activeElement","focus","handleToggleCalendarBox","t10","day","isBefore","clone","startOf","isAfter","clampToBounds","t11","offset","prevDisplayDate_1","daySelected","prevDisplayDate","add","handleNavigateWithDays","t12","when","prevDisplayDate_2","daySelected_0","endOf","handleNavigateWithWeeks","t13","event","isNavigationKey","Boolean","key","shiftKey","altKey","NAVIGATION_KEYS","includes","preventDefault","bb84","Keys","arrowLeft","arrowRight","arrowUp","arrowDown","pageUp","pageDown","home","end","escape","enter","handleKeyDownNavigation","t14","prevDisplayDate_0","subtract"],"mappings":"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"}
1
+ {"version":3,"file":"useDateCalendarState.js","sources":["../../../../src/lib/inputs2/date/hooks/useDateCalendarState.ts"],"sourcesContent":["import React from 'react';\nimport moment, { type Moment } from 'moment';\nimport { Keys, type DateSharedContextProps } from '../types';\nimport { NAVIGATION_KEYS, TOKEN_ISO_FORMAT } from '../helpers';\n\ninterface UseDateCalendarStateParams {\n inputRef?: React.RefObject<HTMLInputElement | null>;\n min?: Moment;\n max?: Moment;\n onPressEnter?: (activeDescendant: string) => void;\n}\n\ninterface UseDateCalendarStateReturn extends DateSharedContextProps {\n handleKeyDownNavigation: (event: React.KeyboardEvent<HTMLInputElement>) => void;\n}\n\nexport const useDateCalendarState = (\n params: UseDateCalendarStateParams = {},\n): UseDateCalendarStateReturn => {\n const { inputRef, min, max, onPressEnter } = params;\n const [calendarBoxOpen, setCalendarBoxOpen] = React.useState(false);\n const [activeDescendant, setActiveDescendant] = React.useState<string>(\n moment().format(TOKEN_ISO_FORMAT),\n );\n const [calendarDisplayDate, setCalendarDisplayDate] = React.useState<Moment>(moment());\n const calendarRef = React.useRef<HTMLDivElement | null>(null);\n const dateContainerRef = React.useRef<HTMLDivElement | null>(null);\n\n const handleSetCalendarBoxOpen = React.useCallback(\n (value: boolean) => setCalendarBoxOpen(value), [],\n );\n const handleChangeActiveDescendant = React.useCallback(\n (value: string) => setActiveDescendant(value), [],\n );\n const handleChangeCalendarDisplayDate = React.useCallback(\n (value: Moment) => setCalendarDisplayDate(value), [],\n );\n const handleNextMonth = React.useCallback(() => setCalendarDisplayDate(prevDisplayDate =>\n prevDisplayDate.clone().add(1, 'month')), []);\n const handlePreviousMonth = React.useCallback(() => setCalendarDisplayDate(prevDisplayDate =>\n prevDisplayDate.clone().subtract(1, 'month')), []);\n\n const handleToggleCalendarBox = React.useCallback(() => {\n setCalendarBoxOpen((prevState) => {\n if (inputRef?.current !== document.activeElement) {\n inputRef?.current?.focus?.();\n }\n return !prevState;\n });\n }, [inputRef]);\n\n const clampToBounds = (day: Moment) => {\n if (min && day.isBefore(min, 'day')) return min.clone().startOf('day');\n if (max && day.isAfter(max, 'day')) return max.clone().startOf('day');\n return day;\n };\n\n const handleNavigateWithDays = (offset: number) => {\n setCalendarDisplayDate((prevDisplayDate) => {\n const daySelected = clampToBounds(prevDisplayDate.clone().add(offset, 'day'));\n setActiveDescendant(daySelected.format(TOKEN_ISO_FORMAT));\n return daySelected;\n });\n };\n\n const handleNavigateWithWeeks = (when: 'start' | 'end') => {\n setCalendarDisplayDate((prevDisplayDate) => {\n let daySelected = prevDisplayDate;\n if (when === 'end') daySelected = prevDisplayDate.clone().endOf('week');\n if (when === 'start') daySelected = prevDisplayDate.clone().startOf('week');\n daySelected = clampToBounds(daySelected);\n setActiveDescendant(daySelected.format(TOKEN_ISO_FORMAT));\n return daySelected;\n });\n };\n\n const handleKeyDownNavigation = (event: React.KeyboardEvent<HTMLInputElement>) => {\n const isNavigationKey = Boolean(event.key) && !event.shiftKey && !event.altKey &&\n NAVIGATION_KEYS.includes(event.key);\n if (!calendarBoxOpen || !isNavigationKey) return;\n event.preventDefault();\n switch (event.key) {\n case Keys.arrowLeft: handleNavigateWithDays(-1);\n break;\n case Keys.arrowRight: handleNavigateWithDays(1);\n break;\n case Keys.arrowUp: handleNavigateWithDays(-7);\n break;\n case Keys.arrowDown: handleNavigateWithDays(7);\n break;\n case Keys.pageUp: handleNextMonth();\n break;\n case Keys.pageDown: handlePreviousMonth();\n break;\n case Keys.home: handleNavigateWithWeeks('start');\n break;\n case Keys.end: handleNavigateWithWeeks('end');\n break;\n case Keys.escape: setCalendarBoxOpen(false);\n break;\n case Keys.enter: onPressEnter?.(activeDescendant);\n break;\n default:\n break;\n }\n };\n\n return {\n calendarBoxOpen,\n activeDescendant,\n calendarDisplayDate,\n calendarRef,\n dateContainerRef,\n handleNextMonth,\n handlePreviousMonth,\n handleToggleCalendarBox,\n handleSetCalendarBoxOpen,\n handleChangeActiveDescendant,\n handleChangeCalendarDisplayDate,\n handleKeyDownNavigation,\n };\n};\n"],"names":["useDateCalendarState","t0","$","_c","t1","undefined","params","inputRef","min","max","onPressEnter","calendarBoxOpen","setCalendarBoxOpen","React","useState","t2","Symbol","for","moment","format","TOKEN_ISO_FORMAT","activeDescendant","setActiveDescendant","t3","calendarDisplayDate","setCalendarDisplayDate","calendarRef","useRef","dateContainerRef","t4","value","handleSetCalendarBoxOpen","t5","value_0","handleChangeActiveDescendant","t6","value_1","handleChangeCalendarDisplayDate","t7","_temp","handleNextMonth","t8","_temp2","handlePreviousMonth","t9","prevState","current","document","activeElement","focus","handleToggleCalendarBox","t10","day","isBefore","clone","startOf","isAfter","clampToBounds","t11","offset","prevDisplayDate_1","daySelected","prevDisplayDate","add","handleNavigateWithDays","t12","when","prevDisplayDate_2","daySelected_0","endOf","handleNavigateWithWeeks","t13","event","isNavigationKey","Boolean","key","shiftKey","altKey","NAVIGATION_KEYS","includes","preventDefault","bb84","Keys","arrowLeft","arrowRight","arrowUp","arrowDown","pageUp","pageDown","home","end","escape","enter","handleKeyDownNavigation","t14","prevDisplayDate_0","subtract"],"mappings":"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"}
@@ -14,7 +14,7 @@ interface UseDateMaskParams {
14
14
  export declare const useDateMask: (params: UseDateMaskParams) => {
15
15
  maskedValue: string;
16
16
  unmaskedValue: string;
17
- setMaskValue: React.Dispatch<string>;
17
+ setMaskValue: (nextValue: string) => void;
18
18
  handleOnPaste: (event: React.ClipboardEvent<HTMLInputElement>) => void;
19
19
  handleOnBeforeInput: (event: React.InputEvent<HTMLInputElement>) => void;
20
20
  handleOnKeyDownCapture: (event: React.KeyboardEvent<HTMLInputElement>) => void;
@@ -1,7 +1,8 @@
1
- import { c as compilerRuntimeExports } from "../../../_virtual/compiler-runtime.js";
1
+ import React from "react";
2
+ import _ from "../../../_virtual/lodash.js";
2
3
  import hooks from "../../../node_modules/moment/dist/moment.js";
3
4
  import { useIMask, IMask } from "react-imask";
4
- import { getDateFormats, getMaskSegments } from "../helpers.js";
5
+ import { getMaskSegments, canSegmentAcceptDigits, getDateFormats } from "../helpers.js";
5
6
  const buildMaskOptions = (variant) => {
6
7
  const {
7
8
  ptbrFormat
@@ -12,7 +13,6 @@ const buildMaskOptions = (variant) => {
12
13
  lazy: false,
13
14
  placeholderChar: "_",
14
15
  overwrite: true,
15
- autofix: "pad",
16
16
  blocks: {
17
17
  d: {
18
18
  mask: IMask.MaskedRange,
@@ -38,13 +38,15 @@ const buildMaskOptions = (variant) => {
38
38
  mask: IMask.MaskedRange,
39
39
  from: 0,
40
40
  to: 23,
41
- maxLength: 2
41
+ maxLength: 2,
42
+ autofix: "pad"
42
43
  },
43
44
  M: {
44
45
  mask: IMask.MaskedRange,
45
46
  from: 0,
46
47
  to: 59,
47
- maxLength: 2
48
+ maxLength: 2,
49
+ autofix: "pad"
48
50
  }
49
51
  },
50
52
  format: (date) => hooks(date).format(ptbrFormat),
@@ -52,162 +54,88 @@ const buildMaskOptions = (variant) => {
52
54
  };
53
55
  };
54
56
  const useDateMask = (params) => {
55
- const $ = compilerRuntimeExports.c(29);
56
57
  const {
57
58
  inputRef,
58
- variant: t0,
59
+ variant = "date",
59
60
  defaultValue,
60
- undigitable: t1,
61
- readOnly: t2,
61
+ undigitable = false,
62
+ readOnly = false,
62
63
  onCommit,
63
64
  onPaste,
64
65
  onBeforeInput
65
66
  } = params;
66
- const variant = t0 === void 0 ? "date" : t0;
67
- const undigitable = t1 === void 0 ? false : t1;
68
- const readOnly = t2 === void 0 ? false : t2;
69
- let t3;
70
- if ($[0] !== variant) {
71
- t3 = getDateFormats(variant);
72
- $[0] = variant;
73
- $[1] = t3;
74
- } else {
75
- t3 = $[1];
76
- }
77
67
  const {
78
68
  ptbrFormat
79
- } = t3;
80
- let t4;
81
- if ($[2] !== variant) {
82
- t4 = buildMaskOptions(variant);
83
- $[2] = variant;
84
- $[3] = t4;
85
- } else {
86
- t4 = $[3];
87
- }
88
- const maskOptions = t4;
89
- let t5;
90
- if ($[4] !== onCommit || $[5] !== ptbrFormat) {
91
- t5 = (acceptedValue, mask) => {
92
- if (!mask?.masked?.isComplete) {
93
- return;
94
- }
95
- const date = hooks(acceptedValue, ptbrFormat);
96
- if (date.isValid()) {
97
- onCommit(date);
98
- }
99
- };
100
- $[4] = onCommit;
101
- $[5] = ptbrFormat;
102
- $[6] = t5;
103
- } else {
104
- t5 = $[6];
105
- }
106
- let t6;
107
- if ($[7] !== defaultValue || $[8] !== inputRef || $[9] !== t5) {
108
- t6 = {
109
- ref: inputRef,
110
- defaultValue,
111
- onAccept: t5
112
- };
113
- $[7] = defaultValue;
114
- $[8] = inputRef;
115
- $[9] = t5;
116
- $[10] = t6;
117
- } else {
118
- t6 = $[10];
119
- }
69
+ } = getDateFormats(variant);
70
+ const maskOptions = React.useMemo(() => buildMaskOptions(variant), [variant]);
71
+ const onCommitRef = React.useRef(onCommit);
72
+ onCommitRef.current = onCommit;
73
+ const programmaticValueRef = React.useRef(null);
74
+ const handleAccept = (acceptedValue, mask) => {
75
+ if (acceptedValue === programmaticValueRef.current) {
76
+ programmaticValueRef.current = null;
77
+ return;
78
+ }
79
+ if (!mask?.masked?.isComplete) return;
80
+ const date = hooks(acceptedValue, ptbrFormat);
81
+ if (date.isValid()) {
82
+ onCommitRef.current(date);
83
+ }
84
+ };
120
85
  const {
121
86
  value,
122
- unmaskedValue,
123
87
  setValue
124
- } = useIMask(maskOptions, t6);
125
- let t7;
126
- if ($[11] !== inputRef || $[12] !== ptbrFormat || $[13] !== readOnly || $[14] !== undigitable) {
127
- t7 = (event) => {
128
- if (undigitable || readOnly) {
129
- return;
130
- }
131
- if (event.ctrlKey || event.metaKey || event.altKey) {
132
- return;
133
- }
134
- if (event.key.length !== 1 || !/\d/.test(event.key)) {
135
- return;
136
- }
137
- const input = inputRef.current;
138
- const start = input?.selectionStart;
139
- const end = input?.selectionEnd;
140
- if (!input || start == null || end == null || start === end) {
141
- return;
142
- }
143
- const segment = getMaskSegments(ptbrFormat).find((item) => start >= item.start && end <= item.end);
144
- if (!segment) {
145
- return;
146
- }
147
- input.setSelectionRange(segment.start, segment.end);
148
- };
149
- $[11] = inputRef;
150
- $[12] = ptbrFormat;
151
- $[13] = readOnly;
152
- $[14] = undigitable;
153
- $[15] = t7;
154
- } else {
155
- t7 = $[15];
156
- }
157
- const handleOnKeyDownCapture = t7;
158
- let t8;
159
- if ($[16] !== onPaste || $[17] !== undigitable) {
160
- t8 = (event_0) => {
161
- if (undigitable) {
162
- event_0.preventDefault();
163
- } else {
164
- onPaste?.(event_0);
165
- }
166
- };
167
- $[16] = onPaste;
168
- $[17] = undigitable;
169
- $[18] = t8;
170
- } else {
171
- t8 = $[18];
172
- }
173
- const handleOnPaste = t8;
174
- let t9;
175
- if ($[19] !== onBeforeInput || $[20] !== undigitable) {
176
- t9 = (event_1) => {
177
- if (undigitable) {
178
- event_1.preventDefault();
179
- } else {
180
- onBeforeInput?.(event_1);
181
- }
182
- };
183
- $[19] = onBeforeInput;
184
- $[20] = undigitable;
185
- $[21] = t9;
186
- } else {
187
- t9 = $[21];
188
- }
189
- const handleOnBeforeInput = t9;
190
- let t10;
191
- if ($[22] !== handleOnBeforeInput || $[23] !== handleOnKeyDownCapture || $[24] !== handleOnPaste || $[25] !== setValue || $[26] !== unmaskedValue || $[27] !== value) {
192
- t10 = {
193
- maskedValue: value,
194
- unmaskedValue,
195
- setMaskValue: setValue,
196
- handleOnPaste,
197
- handleOnBeforeInput,
198
- handleOnKeyDownCapture
199
- };
200
- $[22] = handleOnBeforeInput;
201
- $[23] = handleOnKeyDownCapture;
202
- $[24] = handleOnPaste;
203
- $[25] = setValue;
204
- $[26] = unmaskedValue;
205
- $[27] = value;
206
- $[28] = t10;
207
- } else {
208
- t10 = $[28];
209
- }
210
- return t10;
88
+ } = useIMask(maskOptions, {
89
+ ref: inputRef,
90
+ defaultValue,
91
+ onAccept: handleAccept
92
+ });
93
+ const unmaskedValue = _.toString(value).replace(/\D/g, "");
94
+ const setMaskValue = (nextValue) => {
95
+ programmaticValueRef.current = nextValue;
96
+ setValue(nextValue);
97
+ };
98
+ const handleOnKeyDownCapture = (event) => {
99
+ if (undigitable || readOnly) return;
100
+ if (event.ctrlKey || event.metaKey || event.altKey) return;
101
+ if (event.key.length !== 1 || !/\d/.test(event.key)) return;
102
+ const input = inputRef.current;
103
+ const start = input?.selectionStart;
104
+ const end = input?.selectionEnd;
105
+ if (!input || start == null || end == null) return;
106
+ const segment = getMaskSegments(ptbrFormat).find((item) => start < item.end);
107
+ if (!segment || end > segment.end) return;
108
+ const hasSelection = end > start;
109
+ const caret = hasSelection ? segment.start : Math.max(start, segment.start);
110
+ const typed = hasSelection ? event.key : input.value.slice(segment.start, caret).replace(/\D/g, "") + event.key;
111
+ if (!canSegmentAcceptDigits(typed, segment.key)) {
112
+ event.preventDefault();
113
+ return;
114
+ }
115
+ input.setSelectionRange(caret, segment.end);
116
+ };
117
+ const handleOnPaste = (event_0) => {
118
+ if (undigitable) {
119
+ event_0.preventDefault();
120
+ } else {
121
+ onPaste?.(event_0);
122
+ }
123
+ };
124
+ const handleOnBeforeInput = (event_1) => {
125
+ if (undigitable) {
126
+ event_1.preventDefault();
127
+ } else {
128
+ onBeforeInput?.(event_1);
129
+ }
130
+ };
131
+ return {
132
+ maskedValue: value,
133
+ unmaskedValue,
134
+ setMaskValue,
135
+ handleOnPaste,
136
+ handleOnBeforeInput,
137
+ handleOnKeyDownCapture
138
+ };
211
139
  };
212
140
  export {
213
141
  useDateMask
@@ -1 +1 @@
1
- {"version":3,"file":"useDateMask.js","sources":["../../../../src/lib/inputs2/date/hooks/useDateMask.ts"],"sourcesContent":["import React from 'react';\nimport moment, { type Moment } from 'moment';\nimport { useIMask, IMask } from 'react-imask';\nimport type { DateVariant } from '../types';\nimport { getDateFormats, getMaskSegments } from '../helpers';\n\ninterface UseDateMaskParams {\n inputRef: React.RefObject<HTMLInputElement | null>;\n variant?: DateVariant;\n defaultValue?: string;\n undigitable?: boolean;\n readOnly?: boolean;\n onCommit: (date: Moment) => void;\n onPaste?: (event: React.ClipboardEvent<HTMLInputElement>) => void;\n onBeforeInput?: (event: React.InputEvent<HTMLInputElement>) => void;\n}\n\n// Cada segmento é um bloco próprio: é isso que impede os dígitos de deslizarem para a\n// esquerda ao digitar por cima de uma seleção. O `pad` completa `3` como `03`.\nconst buildMaskOptions = (variant: DateVariant) => {\n const { ptbrFormat } = getDateFormats(variant);\n return {\n mask: Date,\n pattern: variant === 'datetime' ? '`d/`m/`Y `H:`M' : '`d/`m/`Y',\n lazy: false,\n placeholderChar: '_',\n overwrite: true,\n autofix: 'pad',\n blocks: {\n d: { mask: IMask.MaskedRange, from: 1, to: 31, maxLength: 2, autofix: 'pad' },\n m: { mask: IMask.MaskedRange, from: 1, to: 12, maxLength: 2, autofix: 'pad' },\n Y: { mask: IMask.MaskedRange, from: 1900, to: 2099, maxLength: 4 },\n H: { mask: IMask.MaskedRange, from: 0, to: 23, maxLength: 2 },\n M: { mask: IMask.MaskedRange, from: 0, to: 59, maxLength: 2 },\n },\n format: (date: Date) => moment(date).format(ptbrFormat),\n parse: (value: string) => moment(value, ptbrFormat).toDate(),\n } as any;\n};\n\nexport const useDateMask = (params: UseDateMaskParams) => {\n const {\n inputRef, variant = 'date', defaultValue, undigitable = false, readOnly = false,\n onCommit, onPaste, onBeforeInput,\n } = params;\n const { ptbrFormat } = getDateFormats(variant);\n const maskOptions = React.useMemo(() => buildMaskOptions(variant), [variant]);\n\n const { value, unmaskedValue, setValue } = useIMask(maskOptions, {\n ref: inputRef,\n defaultValue,\n onAccept: (acceptedValue: string, mask: any) => {\n // onAccept dispara a cada tecla, então sem esse guard o onChange sairia\n // com datas pela metade enquanto a pessoa ainda está digitando.\n if (!mask?.masked?.isComplete) return;\n const date = moment(acceptedValue, ptbrFormat);\n if (date.isValid()) { onCommit(date); }\n },\n });\n\n // Selecionar um dígito e digitar por cima é o gesto de \"reescrever este segmento\". Sem\n // normalizar a seleção, o dígito que não cabe transborda para o segmento seguinte e o\n // sobrescreve calado — digitar `13` sobre o mês de 12/10/2026 levava o ano para 1926.\n // Precisa ser na captura: o iMask escuta keydown no próprio input e fotografa a seleção\n // ali, então um handler de bolha chegaria tarde.\n const handleOnKeyDownCapture = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (undigitable || readOnly) return;\n if (event.ctrlKey || event.metaKey || event.altKey) return;\n if (event.key.length !== 1 || !/\\d/.test(event.key)) return;\n const input = inputRef.current;\n const start = input?.selectionStart;\n const end = input?.selectionEnd;\n if (!input || start == null || end == null || start === end) return;\n const segment = getMaskSegments(ptbrFormat)\n .find(item => start >= item.start && end <= item.end);\n if (!segment) return;\n input.setSelectionRange(segment.start, segment.end);\n };\n\n const handleOnPaste = (event: React.ClipboardEvent<HTMLInputElement>) => {\n if (undigitable) {\n event.preventDefault();\n } else {\n onPaste?.(event);\n }\n };\n\n const handleOnBeforeInput = (event: React.InputEvent<HTMLInputElement>) => {\n if (undigitable) {\n event.preventDefault();\n } else {\n onBeforeInput?.(event);\n }\n };\n\n return {\n maskedValue: value,\n unmaskedValue,\n setMaskValue: setValue,\n handleOnPaste,\n handleOnBeforeInput,\n handleOnKeyDownCapture,\n };\n};\n"],"names":["buildMaskOptions","variant","ptbrFormat","getDateFormats","mask","Date","pattern","lazy","placeholderChar","overwrite","autofix","blocks","d","IMask","MaskedRange","from","to","maxLength","m","Y","H","M","format","date","moment","parse","value","toDate","useDateMask","params","$","_c","inputRef","t0","defaultValue","undigitable","t1","readOnly","t2","onCommit","onPaste","onBeforeInput","undefined","t3","t4","maskOptions","t5","acceptedValue","masked","isComplete","isValid","t6","ref","onAccept","unmaskedValue","setValue","useIMask","t7","event","ctrlKey","metaKey","altKey","key","length","test","input","current","start","selectionStart","end","selectionEnd","segment","getMaskSegments","find","item","setSelectionRange","handleOnKeyDownCapture","t8","event_0","preventDefault","handleOnPaste","t9","event_1","handleOnBeforeInput","t10","maskedValue","setMaskValue"],"mappings":"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"}
1
+ {"version":3,"file":"useDateMask.js","sources":["../../../../src/lib/inputs2/date/hooks/useDateMask.ts"],"sourcesContent":["import React from 'react';\nimport _ from 'lodash';\nimport moment, { type Moment } from 'moment';\nimport { useIMask, IMask } from 'react-imask';\nimport type { DateVariant } from '../types';\nimport { canSegmentAcceptDigits, getDateFormats, getMaskSegments } from '../helpers';\n\ninterface UseDateMaskParams {\n inputRef: React.RefObject<HTMLInputElement | null>;\n variant?: DateVariant;\n defaultValue?: string;\n undigitable?: boolean;\n readOnly?: boolean;\n onCommit: (date: Moment) => void;\n onPaste?: (event: React.ClipboardEvent<HTMLInputElement>) => void;\n onBeforeInput?: (event: React.InputEvent<HTMLInputElement>) => void;\n}\n\nconst buildMaskOptions = (variant: DateVariant) => {\n const { ptbrFormat } = getDateFormats(variant);\n return {\n mask: Date,\n pattern: variant === 'datetime' ? '`d/`m/`Y `H:`M' : '`d/`m/`Y',\n lazy: false,\n placeholderChar: '_',\n overwrite: true,\n blocks: {\n d: { mask: IMask.MaskedRange, from: 1, to: 31, maxLength: 2, autofix: 'pad' },\n m: { mask: IMask.MaskedRange, from: 1, to: 12, maxLength: 2, autofix: 'pad' },\n Y: { mask: IMask.MaskedRange, from: 1900, to: 2099, maxLength: 4 },\n H: { mask: IMask.MaskedRange, from: 0, to: 23, maxLength: 2, autofix: 'pad' },\n M: { mask: IMask.MaskedRange, from: 0, to: 59, maxLength: 2, autofix: 'pad' },\n },\n format: (date: Date) => moment(date).format(ptbrFormat),\n parse: (value: string) => moment(value, ptbrFormat).toDate(),\n } as any;\n};\n\nexport const useDateMask = (params: UseDateMaskParams) => {\n const {\n inputRef, variant = 'date', defaultValue, undigitable = false, readOnly = false,\n onCommit, onPaste, onBeforeInput,\n } = params;\n const { ptbrFormat } = getDateFormats(variant);\n const maskOptions = React.useMemo(() => buildMaskOptions(variant), [variant]);\n\n const onCommitRef = React.useRef(onCommit);\n onCommitRef.current = onCommit;\n const programmaticValueRef = React.useRef<string | null>(null);\n\n const handleAccept = (acceptedValue: string, mask: any) => {\n if (acceptedValue === programmaticValueRef.current) {\n programmaticValueRef.current = null;\n return;\n }\n if (!mask?.masked?.isComplete) return;\n const date = moment(acceptedValue, ptbrFormat);\n if (date.isValid()) { onCommitRef.current(date); }\n };\n\n const { value, setValue } = useIMask(maskOptions, {\n ref: inputRef,\n defaultValue,\n onAccept: handleAccept,\n });\n\n const unmaskedValue = _.toString(value).replace(/\\D/g, '');\n\n const setMaskValue = (nextValue: string) => {\n programmaticValueRef.current = nextValue;\n setValue(nextValue);\n };\n\n const handleOnKeyDownCapture = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (undigitable || readOnly) return;\n if (event.ctrlKey || event.metaKey || event.altKey) return;\n if (event.key.length !== 1 || !/\\d/.test(event.key)) return;\n const input = inputRef.current;\n const start = input?.selectionStart;\n const end = input?.selectionEnd;\n if (!input || start == null || end == null) return;\n const segment = getMaskSegments(ptbrFormat).find(item => start < item.end);\n if (!segment || end > segment.end) return;\n const hasSelection = end > start;\n const caret = hasSelection ? segment.start : Math.max(start, segment.start);\n const typed = hasSelection\n ? event.key\n : input.value.slice(segment.start, caret).replace(/\\D/g, '') + event.key;\n if (!canSegmentAcceptDigits(typed, segment.key)) {\n event.preventDefault();\n return;\n }\n input.setSelectionRange(caret, segment.end);\n };\n\n const handleOnPaste = (event: React.ClipboardEvent<HTMLInputElement>) => {\n if (undigitable) {\n event.preventDefault();\n } else {\n onPaste?.(event);\n }\n };\n\n const handleOnBeforeInput = (event: React.InputEvent<HTMLInputElement>) => {\n if (undigitable) {\n event.preventDefault();\n } else {\n onBeforeInput?.(event);\n }\n };\n\n return {\n maskedValue: value,\n unmaskedValue,\n setMaskValue,\n handleOnPaste,\n handleOnBeforeInput,\n handleOnKeyDownCapture,\n };\n};\n"],"names":["buildMaskOptions","variant","ptbrFormat","getDateFormats","mask","Date","pattern","lazy","placeholderChar","overwrite","blocks","d","IMask","MaskedRange","from","to","maxLength","autofix","m","Y","H","M","format","date","moment","parse","value","toDate","useDateMask","params","inputRef","defaultValue","undigitable","readOnly","onCommit","onPaste","onBeforeInput","maskOptions","React","useMemo","onCommitRef","useRef","current","programmaticValueRef","handleAccept","acceptedValue","masked","isComplete","isValid","setValue","useIMask","ref","onAccept","unmaskedValue","_","toString","replace","setMaskValue","nextValue","handleOnKeyDownCapture","event","ctrlKey","metaKey","altKey","key","length","test","input","start","selectionStart","end","selectionEnd","segment","getMaskSegments","find","item","hasSelection","caret","Math","max","typed","slice","canSegmentAcceptDigits","preventDefault","setSelectionRange","handleOnPaste","handleOnBeforeInput","maskedValue"],"mappings":"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"}
@@ -1,8 +1,10 @@
1
1
  import { Moment } from 'moment';
2
2
  interface TimeSelectorProps {
3
- /** null desabilita o seletor inteiro */
4
3
  value: Moment | null;
5
- onSelectTime: (hour: number, minute: number) => void;
4
+ selectedHour: number | null;
5
+ selectedMinute: number | null;
6
+ onSelectHour: (hour: number) => void;
7
+ onSelectMinute: (minute: number) => void;
6
8
  min?: Moment;
7
9
  max?: Moment;
8
10
  testIdPrefix: string;