@hh.ru/magritte-ui-input 9.4.51 → 9.4.52
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/BaseInput.d.ts +2 -2
- package/BaseInput.js +235 -124
- package/BaseInput.js.map +1 -1
- package/DateTimeInput.d.ts +4 -4
- package/DateTimeInput.js +49 -43
- package/DateTimeInput.js.map +1 -1
- package/Input.d.ts +2 -2
- package/Input.js +2 -3
- package/Input.js.map +1 -1
- package/NumberInput.d.ts +2 -2
- package/NumberInput.js +22 -13
- package/NumberInput.js.map +1 -1
- package/PasswordInput.d.ts +2 -2
- package/PasswordInput.js +29 -16
- package/PasswordInput.js.map +1 -1
- package/SearchInput.d.ts +2 -2
- package/SearchInput.js +11 -2
- package/SearchInput.js.map +1 -1
- package/UncontrolledDateTimeInput.d.ts +4 -4
- package/UncontrolledDateTimeInput.js +4 -4
- package/UncontrolledDateTimeInput.js.map +1 -1
- package/UncontrolledInput.d.ts +2 -2
- package/UncontrolledInput.js +3 -3
- package/UncontrolledInput.js.map +1 -1
- package/UncontrolledNumberInput.d.ts +2 -2
- package/UncontrolledNumberInput.js +3 -3
- package/UncontrolledNumberInput.js.map +1 -1
- package/UncontrolledPasswordInput.d.ts +2 -2
- package/UncontrolledPasswordInput.js +3 -3
- package/UncontrolledPasswordInput.js.map +1 -1
- package/UncontrolledSearchInput.d.ts +2 -2
- package/UncontrolledSearchInput.js +3 -3
- package/UncontrolledSearchInput.js.map +1 -1
- package/index.css +266 -266
- package/index.d.ts +13 -13
- package/{index.esm-BVoBfbo-.js → index.esm-t97x9DTo.js} +1 -1
- package/{index.esm-BVoBfbo-.js.map → index.esm-t97x9DTo.js.map} +1 -1
- package/index.js +1 -1
- package/index.mock.d.ts +1 -1
- package/index.mock.js +55 -27
- package/index.mock.js.map +1 -1
- package/maskito-exports.js +1 -1
- package/numberFormatter.d.ts +1 -1
- package/numberFormatter.js +42 -42
- package/numberFormatter.js.map +1 -1
- package/package.json +7 -7
- package/useDateTimeMask.d.ts +1 -1
- package/useDateTimeMask.js +107 -133
- package/useDateTimeMask.js.map +1 -1
- package/useFocus.js +22 -13
- package/useFocus.js.map +1 -1
- package/useInputAriaProps.js +16 -10
- package/useInputAriaProps.js.map +1 -1
- package/useUncontrolledInput.js +9 -6
- package/useUncontrolledInput.js.map +1 -1
package/useDateTimeMask.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDateTimeMask.js","sources":["src/useDateTimeMask.ts"],"sourcesContent":["import { RefCallback, useMemo } from 'react';\n\nimport {\n MASKITO_DEFAULT_OPTIONS,\n MaskitoOptions,\n MaskitoPreprocessor,\n MaskitoPostprocessor,\n MaskitoDateMode,\n maskitoDateOptionsGenerator,\n maskitoDateRangeOptionsGenerator,\n maskitoDateTimeOptionsGenerator,\n maskitoTimeOptionsGenerator,\n useMaskito,\n} from '@hh.ru/magritte-ui-input/maskito-exports';\nimport { type TimeInputRounding, type DateInputMask } from '@hh.ru/magritte-ui-input/types';\n\n/**\n * Округление времени (в формате 00:00) до ближайшего заданного шага\n *\n * @param dateTime {String} Строка с постфиксом HH:MM, где H - часы, M - минуты\n * @param roundValue {Number} Шаг для округления\n * @returns {String}\n *\n * @example\n * roundTime('20.12.2023 15:19', 15); // '20.12.2023 15:15'\n * @example\n * roundTime('15:31', 60); // '16:00'\n */\nconst roundTime = (dateTime: string, roundValue: TimeInputRounding): string => {\n const regexp = /(\\d{2}):(\\d{2})$/;\n const match = dateTime.match(regexp);\n const time = match?.[0];\n\n if (time) {\n const [hours, minutes] = time.split(':').map(Number);\n const totalMinutes = hours * 60 + minutes;\n const roundedMinutes = Math.round(totalMinutes / roundValue) * roundValue;\n const roundedHours = Math.floor(roundedMinutes / 60) % 24;\n const formattedHours = String(roundedHours).padStart(2, '0');\n const formattedMinutes = String(roundedMinutes % 60).padStart(2, '0');\n return dateTime.replace(regexp, `${formattedHours}:${formattedMinutes}`);\n }\n\n return dateTime;\n};\n\n/** Постпроцессор для округления времени до заданного шага */\nconst roundTimePostprocessor =\n (enabled: boolean, rounding?: TimeInputRounding): MaskitoPostprocessor =>\n (state) =>\n enabled && rounding ? { ...state, value: roundTime(state.value, rounding) } : state;\n\n/** Препроцессор для автоматического добавления разделителей из маски */\nconst autoSeparatorsPreprocessor = (mask: Array<RegExp | string>): MaskitoPreprocessor => {\n let lastActionIsInsert = false;\n\n return (state, actionType) => {\n if (actionType === 'insert') {\n lastActionIsInsert = true;\n return state;\n }\n\n const canAddSeparator = actionType === 'validation' && lastActionIsInsert;\n lastActionIsInsert = false;\n\n if (canAddSeparator) {\n const { value, selection } = state.elementState;\n const [from, to] = selection;\n let newValue = '';\n const dateArray = value.split('');\n\n for (let i = 0; i < mask.length; i++) {\n if (i < dateArray.length) {\n newValue += dateArray[i];\n } else if (typeof mask[i] === 'string') {\n newValue += mask[i];\n } else {\n break;\n }\n }\n\n const addedCharacters = newValue.length - value.length;\n\n return {\n ...state,\n elementState: {\n value: newValue,\n selection: [from + addedCharacters, to + addedCharacters],\n },\n };\n }\n\n return state;\n };\n};\n\n/** Препроцессор для замены разделителей \"., :;/_\" на точку */\nconst replaceSeparatorsPreprocessor: MaskitoPreprocessor = (state, actionType) => {\n if (actionType === 'insert') {\n return {\n ...state,\n data: state.data\n .replace(/[^0-9., :;/_]/g, '')\n .replace(/[., :;/_]/g, '.')\n .replace(/([^0-9])\\1+/g, '$1'),\n };\n }\n return state;\n};\n\n/** Постпроцессор для преобразования 4 -> 04 при вводе с маской dd */\nconst formatDDMaskPostprocessor: MaskitoPostprocessor = (state) => {\n if (state.value.length === 1 && Number(state.value) > 3) {\n const [from, to] = state.selection;\n return {\n ...state,\n value: state.value.padStart(2, '0'),\n selection: [from + 1, to + 1],\n };\n }\n return state;\n};\n\nexport const useDateTimeMask = (\n dateMask?: DateInputMask,\n timeMask?: boolean,\n timeRounding?: TimeInputRounding,\n range?: boolean\n): RefCallback<HTMLElement> => {\n const options = useMemo<MaskitoOptions>(() => {\n // маска 'dd' - исключение, которого нету в maskito api:\n if (dateMask === 'dd') {\n return {\n mask: /^([0-9]|0\\d|1\\d|2[0-9]|3[01])$/,\n postprocessors: [formatDDMaskPostprocessor],\n };\n }\n\n const dateSeparator = '.';\n const dateMode = dateMask?.replace(/\\./g, '/') as MaskitoDateMode;\n const rangeSeparator = ' – ';\n const timeMode = 'HH:MM';\n let options: MaskitoOptions = { ...MASKITO_DEFAULT_OPTIONS };\n\n if (dateMask && timeMask) {\n options = maskitoDateTimeOptionsGenerator({\n dateMode,\n timeMode,\n dateSeparator,\n });\n } else if (dateMask) {\n options = range\n ? maskitoDateRangeOptionsGenerator({\n mode: dateMode,\n dateSeparator,\n rangeSeparator,\n })\n : maskitoDateOptionsGenerator({\n mode: dateMode,\n separator: dateSeparator,\n });\n } else if (timeMask) {\n options = maskitoTimeOptionsGenerator({\n mode: timeMode,\n });\n }\n\n return {\n ...options,\n preprocessors: [\n replaceSeparatorsPreprocessor,\n ...(options.preprocessors || []),\n autoSeparatorsPreprocessor(options.mask as Array<RegExp | string>),\n ],\n postprocessors: [\n ...(options.postprocessors || []),\n roundTimePostprocessor(Boolean(timeRounding && timeMode), timeRounding),\n ],\n };\n }, [dateMask, timeMask, timeRounding, range]);\n\n return useMaskito({ options });\n};\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useDateTimeMask.js","sources":["src/useDateTimeMask.ts"],"sourcesContent":["import { RefCallback, useMemo } from 'react';\n\nimport {\n MASKITO_DEFAULT_OPTIONS,\n MaskitoOptions,\n MaskitoPreprocessor,\n MaskitoPostprocessor,\n MaskitoDateMode,\n maskitoDateOptionsGenerator,\n maskitoDateRangeOptionsGenerator,\n maskitoDateTimeOptionsGenerator,\n maskitoTimeOptionsGenerator,\n useMaskito,\n} from '@hh.ru/magritte-ui-input/maskito-exports';\nimport { type TimeInputRounding, type DateInputMask } from '@hh.ru/magritte-ui-input/types';\n\n/**\n * Округление времени (в формате 00:00) до ближайшего заданного шага\n *\n * @param dateTime {String} Строка с постфиксом HH:MM, где H - часы, M - минуты\n * @param roundValue {Number} Шаг для округления\n * @returns {String}\n *\n * @example\n * roundTime('20.12.2023 15:19', 15); // '20.12.2023 15:15'\n * @example\n * roundTime('15:31', 60); // '16:00'\n */\nconst roundTime = (dateTime: string, roundValue: TimeInputRounding): string => {\n const regexp = /(\\d{2}):(\\d{2})$/;\n const match = dateTime.match(regexp);\n const time = match?.[0];\n\n if (time) {\n const [hours, minutes] = time.split(':').map(Number);\n const totalMinutes = hours * 60 + minutes;\n const roundedMinutes = Math.round(totalMinutes / roundValue) * roundValue;\n const roundedHours = Math.floor(roundedMinutes / 60) % 24;\n const formattedHours = String(roundedHours).padStart(2, '0');\n const formattedMinutes = String(roundedMinutes % 60).padStart(2, '0');\n return dateTime.replace(regexp, `${formattedHours}:${formattedMinutes}`);\n }\n\n return dateTime;\n};\n\n/** Постпроцессор для округления времени до заданного шага */\nconst roundTimePostprocessor =\n (enabled: boolean, rounding?: TimeInputRounding): MaskitoPostprocessor =>\n (state) =>\n enabled && rounding ? { ...state, value: roundTime(state.value, rounding) } : state;\n\n/** Препроцессор для автоматического добавления разделителей из маски */\nconst autoSeparatorsPreprocessor = (mask: Array<RegExp | string>): MaskitoPreprocessor => {\n let lastActionIsInsert = false;\n\n return (state, actionType) => {\n if (actionType === 'insert') {\n lastActionIsInsert = true;\n return state;\n }\n\n const canAddSeparator = actionType === 'validation' && lastActionIsInsert;\n lastActionIsInsert = false;\n\n if (canAddSeparator) {\n const { value, selection } = state.elementState;\n const [from, to] = selection;\n let newValue = '';\n const dateArray = value.split('');\n\n for (let i = 0; i < mask.length; i++) {\n if (i < dateArray.length) {\n newValue += dateArray[i];\n } else if (typeof mask[i] === 'string') {\n newValue += mask[i];\n } else {\n break;\n }\n }\n\n const addedCharacters = newValue.length - value.length;\n\n return {\n ...state,\n elementState: {\n value: newValue,\n selection: [from + addedCharacters, to + addedCharacters],\n },\n };\n }\n\n return state;\n };\n};\n\n/** Препроцессор для замены разделителей \"., :;/_\" на точку */\nconst replaceSeparatorsPreprocessor: MaskitoPreprocessor = (state, actionType) => {\n if (actionType === 'insert') {\n return {\n ...state,\n data: state.data\n .replace(/[^0-9., :;/_]/g, '')\n .replace(/[., :;/_]/g, '.')\n .replace(/([^0-9])\\1+/g, '$1'),\n };\n }\n return state;\n};\n\n/** Постпроцессор для преобразования 4 -> 04 при вводе с маской dd */\nconst formatDDMaskPostprocessor: MaskitoPostprocessor = (state) => {\n if (state.value.length === 1 && Number(state.value) > 3) {\n const [from, to] = state.selection;\n return {\n ...state,\n value: state.value.padStart(2, '0'),\n selection: [from + 1, to + 1],\n };\n }\n return state;\n};\n\nexport const useDateTimeMask = (\n dateMask?: DateInputMask,\n timeMask?: boolean,\n timeRounding?: TimeInputRounding,\n range?: boolean\n): RefCallback<HTMLElement> => {\n const options = useMemo<MaskitoOptions>(() => {\n // маска 'dd' - исключение, которого нету в maskito api:\n if (dateMask === 'dd') {\n return {\n mask: /^([0-9]|0\\d|1\\d|2[0-9]|3[01])$/,\n postprocessors: [formatDDMaskPostprocessor],\n };\n }\n\n const dateSeparator = '.';\n const dateMode = dateMask?.replace(/\\./g, '/') as MaskitoDateMode;\n const rangeSeparator = ' – ';\n const timeMode = 'HH:MM';\n let options: MaskitoOptions = { ...MASKITO_DEFAULT_OPTIONS };\n\n if (dateMask && timeMask) {\n options = maskitoDateTimeOptionsGenerator({\n dateMode,\n timeMode,\n dateSeparator,\n });\n } else if (dateMask) {\n options = range\n ? maskitoDateRangeOptionsGenerator({\n mode: dateMode,\n dateSeparator,\n rangeSeparator,\n })\n : maskitoDateOptionsGenerator({\n mode: dateMode,\n separator: dateSeparator,\n });\n } else if (timeMask) {\n options = maskitoTimeOptionsGenerator({\n mode: timeMode,\n });\n }\n\n return {\n ...options,\n preprocessors: [\n replaceSeparatorsPreprocessor,\n ...(options.preprocessors || []),\n autoSeparatorsPreprocessor(options.mask as Array<RegExp | string>),\n ],\n postprocessors: [\n ...(options.postprocessors || []),\n roundTimePostprocessor(Boolean(timeRounding && timeMode), timeRounding),\n ],\n };\n }, [dateMask, timeMask, timeRounding, range]);\n\n return useMaskito({ options });\n};\n"],"names":["options"],"mappings":"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"}
|
package/useFocus.js
CHANGED
|
@@ -2,19 +2,28 @@ import './index.css';
|
|
|
2
2
|
import { useState, useCallback } from 'react';
|
|
3
3
|
|
|
4
4
|
const useFocus = (onChange, onFocus, onBlur) => {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
},
|
|
17
|
-
|
|
5
|
+
const [isFocused, setFocused] = useState(false);
|
|
6
|
+
const changeHandler = useCallback(
|
|
7
|
+
(event) => {
|
|
8
|
+
onChange(event.target.value, event);
|
|
9
|
+
},
|
|
10
|
+
[onChange]
|
|
11
|
+
);
|
|
12
|
+
const focusHandler = useCallback(
|
|
13
|
+
(event) => {
|
|
14
|
+
setFocused(true);
|
|
15
|
+
onFocus?.(event);
|
|
16
|
+
},
|
|
17
|
+
[setFocused, onFocus]
|
|
18
|
+
);
|
|
19
|
+
const blurHandler = useCallback(
|
|
20
|
+
(event) => {
|
|
21
|
+
setFocused(false);
|
|
22
|
+
onBlur?.(event);
|
|
23
|
+
},
|
|
24
|
+
[setFocused, onBlur]
|
|
25
|
+
);
|
|
26
|
+
return { changeHandler, focusHandler, blurHandler, isFocused };
|
|
18
27
|
};
|
|
19
28
|
|
|
20
29
|
export { useFocus };
|
package/useFocus.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFocus.js","sources":["src/useFocus.ts"],"sourcesContent":["import { useCallback, useState, FocusEventHandler, ChangeEventHandler, type ChangeEvent } from 'react';\n\nexport const useFocus = <T extends HTMLInputElement | HTMLTextAreaElement = HTMLInputElement>(\n onChange: (value: string, event: ChangeEvent<T>) => void,\n onFocus: FocusEventHandler<T> | undefined,\n onBlur: FocusEventHandler<T> | undefined\n): {\n changeHandler: ChangeEventHandler<T>;\n focusHandler: FocusEventHandler<T>;\n blurHandler: FocusEventHandler<T>;\n isFocused: boolean;\n} => {\n const [isFocused, setFocused] = useState(false);\n\n const changeHandler = useCallback<ChangeEventHandler<T>>(\n (event) => {\n onChange(event.target.value, event);\n },\n [onChange]\n );\n\n const focusHandler = useCallback<FocusEventHandler<T>>(\n (event) => {\n setFocused(true);\n onFocus?.(event);\n },\n [setFocused, onFocus]\n );\n\n const blurHandler = useCallback<FocusEventHandler<T>>(\n (event) => {\n setFocused(false);\n onBlur?.(event);\n },\n [setFocused, onBlur]\n );\n\n return { changeHandler, focusHandler, blurHandler, isFocused };\n};\n"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"useFocus.js","sources":["src/useFocus.ts"],"sourcesContent":["import { useCallback, useState, FocusEventHandler, ChangeEventHandler, type ChangeEvent } from 'react';\n\nexport const useFocus = <T extends HTMLInputElement | HTMLTextAreaElement = HTMLInputElement>(\n onChange: (value: string, event: ChangeEvent<T>) => void,\n onFocus: FocusEventHandler<T> | undefined,\n onBlur: FocusEventHandler<T> | undefined\n): {\n changeHandler: ChangeEventHandler<T>;\n focusHandler: FocusEventHandler<T>;\n blurHandler: FocusEventHandler<T>;\n isFocused: boolean;\n} => {\n const [isFocused, setFocused] = useState(false);\n\n const changeHandler = useCallback<ChangeEventHandler<T>>(\n (event) => {\n onChange(event.target.value, event);\n },\n [onChange]\n );\n\n const focusHandler = useCallback<FocusEventHandler<T>>(\n (event) => {\n setFocused(true);\n onFocus?.(event);\n },\n [setFocused, onFocus]\n );\n\n const blurHandler = useCallback<FocusEventHandler<T>>(\n (event) => {\n setFocused(false);\n onBlur?.(event);\n },\n [setFocused, onBlur]\n );\n\n return { changeHandler, focusHandler, blurHandler, isFocused };\n};\n"],"names":[],"mappings":";;AAEO,MAAM,QAAW,GAAA,CACpB,QACA,EAAA,OAAA,EACA,MAMC,KAAA;AACD,EAAA,MAAM,CAAC,SAAA,EAAW,UAAU,CAAA,GAAI,SAAS,KAAK,CAAA,CAAA;AAE9C,EAAA,MAAM,aAAgB,GAAA,WAAA;AAAA,IAClB,CAAC,KAAU,KAAA;AACP,MAAS,QAAA,CAAA,KAAA,CAAM,MAAO,CAAA,KAAA,EAAO,KAAK,CAAA,CAAA;AAAA,KACtC;AAAA,IACA,CAAC,QAAQ,CAAA;AAAA,GACb,CAAA;AAEA,EAAA,MAAM,YAAe,GAAA,WAAA;AAAA,IACjB,CAAC,KAAU,KAAA;AACP,MAAA,UAAA,CAAW,IAAI,CAAA,CAAA;AACf,MAAA,OAAA,GAAU,KAAK,CAAA,CAAA;AAAA,KACnB;AAAA,IACA,CAAC,YAAY,OAAO,CAAA;AAAA,GACxB,CAAA;AAEA,EAAA,MAAM,WAAc,GAAA,WAAA;AAAA,IAChB,CAAC,KAAU,KAAA;AACP,MAAA,UAAA,CAAW,KAAK,CAAA,CAAA;AAChB,MAAA,MAAA,GAAS,KAAK,CAAA,CAAA;AAAA,KAClB;AAAA,IACA,CAAC,YAAY,MAAM,CAAA;AAAA,GACvB,CAAA;AAEA,EAAA,OAAO,EAAE,aAAA,EAAe,YAAc,EAAA,WAAA,EAAa,SAAU,EAAA,CAAA;AACjE;;;;"}
|
package/useInputAriaProps.js
CHANGED
|
@@ -1,14 +1,20 @@
|
|
|
1
1
|
import './index.css';
|
|
2
|
-
const useInputAriaProps = ({
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
2
|
+
const useInputAriaProps = ({
|
|
3
|
+
invalid,
|
|
4
|
+
hasPlaceholder,
|
|
5
|
+
hasDescription,
|
|
6
|
+
descriptionId,
|
|
7
|
+
labelId
|
|
8
|
+
}) => {
|
|
9
|
+
const ariaProps = {};
|
|
10
|
+
invalid && (ariaProps["aria-invalid"] = !!invalid);
|
|
11
|
+
if (hasPlaceholder) {
|
|
12
|
+
ariaProps["aria-labelledby"] = `input-label-${labelId}`;
|
|
13
|
+
}
|
|
14
|
+
if (hasDescription) {
|
|
15
|
+
ariaProps["aria-describedby"] = descriptionId;
|
|
16
|
+
}
|
|
17
|
+
return ariaProps;
|
|
12
18
|
};
|
|
13
19
|
|
|
14
20
|
export { useInputAriaProps };
|
package/useInputAriaProps.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useInputAriaProps.js","sources":["src/useInputAriaProps.ts"],"sourcesContent":["export interface InputAriaHookProps {\n invalid?: boolean;\n hasPlaceholder?: boolean;\n hasDescription?: boolean;\n descriptionId: string;\n labelId: string;\n}\n\ninterface AriaProps {\n 'aria-labelledby'?: string;\n 'aria-describedby'?: string;\n 'aria-invalid'?: boolean;\n}\n\nexport const useInputAriaProps = ({\n invalid,\n hasPlaceholder,\n hasDescription,\n descriptionId,\n labelId,\n}: InputAriaHookProps): AriaProps => {\n const ariaProps: AriaProps = {};\n invalid && (ariaProps['aria-invalid'] = !!invalid);\n if (hasPlaceholder) {\n ariaProps['aria-labelledby'] = `input-label-${labelId}`;\n }\n if (hasDescription) {\n ariaProps['aria-describedby'] = descriptionId;\n }\n return ariaProps;\n};\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useInputAriaProps.js","sources":["src/useInputAriaProps.ts"],"sourcesContent":["export interface InputAriaHookProps {\n invalid?: boolean;\n hasPlaceholder?: boolean;\n hasDescription?: boolean;\n descriptionId: string;\n labelId: string;\n}\n\ninterface AriaProps {\n 'aria-labelledby'?: string;\n 'aria-describedby'?: string;\n 'aria-invalid'?: boolean;\n}\n\nexport const useInputAriaProps = ({\n invalid,\n hasPlaceholder,\n hasDescription,\n descriptionId,\n labelId,\n}: InputAriaHookProps): AriaProps => {\n const ariaProps: AriaProps = {};\n invalid && (ariaProps['aria-invalid'] = !!invalid);\n if (hasPlaceholder) {\n ariaProps['aria-labelledby'] = `input-label-${labelId}`;\n }\n if (hasDescription) {\n ariaProps['aria-describedby'] = descriptionId;\n }\n return ariaProps;\n};\n"],"names":[],"mappings":"AAcO,MAAM,oBAAoB,CAAC;AAAA,EAC9B,OAAA;AAAA,EACA,cAAA;AAAA,EACA,cAAA;AAAA,EACA,aAAA;AAAA,EACA,OAAA;AACJ,CAAqC,KAAA;AACjC,EAAA,MAAM,YAAuB,EAAC,CAAA;AAC9B,EAAA,OAAA,KAAY,SAAU,CAAA,cAAc,CAAI,GAAA,CAAC,CAAC,OAAA,CAAA,CAAA;AAC1C,EAAA,IAAI,cAAgB,EAAA;AAChB,IAAU,SAAA,CAAA,iBAAiB,CAAI,GAAA,CAAA,YAAA,EAAe,OAAO,CAAA,CAAA,CAAA;AAAA,GACzD;AACA,EAAA,IAAI,cAAgB,EAAA;AAChB,IAAA,SAAA,CAAU,kBAAkB,CAAI,GAAA,aAAA,CAAA;AAAA,GACpC;AACA,EAAO,OAAA,SAAA,CAAA;AACX;;;;"}
|
package/useUncontrolledInput.js
CHANGED
|
@@ -2,12 +2,15 @@ import './index.css';
|
|
|
2
2
|
import { useState, useCallback } from 'react';
|
|
3
3
|
|
|
4
4
|
const useUncontrolledInput = (initialValue, changeHandler) => {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
5
|
+
const [value, setValue] = useState(initialValue || "");
|
|
6
|
+
const onChange = useCallback(
|
|
7
|
+
(newValue) => {
|
|
8
|
+
setValue(newValue);
|
|
9
|
+
changeHandler?.(newValue);
|
|
10
|
+
},
|
|
11
|
+
[changeHandler, setValue]
|
|
12
|
+
);
|
|
13
|
+
return [value, onChange];
|
|
11
14
|
};
|
|
12
15
|
|
|
13
16
|
export { useUncontrolledInput };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useUncontrolledInput.js","sources":["src/useUncontrolledInput.ts"],"sourcesContent":["import { useState, useCallback } from 'react';\n\nexport const useUncontrolledInput = (\n initialValue?: string,\n changeHandler?: (value: string) => void\n): [string, (value: string) => void] => {\n const [value, setValue] = useState(initialValue || '');\n\n const onChange = useCallback(\n (newValue: string) => {\n setValue(newValue);\n changeHandler?.(newValue);\n },\n [changeHandler, setValue]\n );\n\n return [value, onChange];\n};\n"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"useUncontrolledInput.js","sources":["src/useUncontrolledInput.ts"],"sourcesContent":["import { useState, useCallback } from 'react';\n\nexport const useUncontrolledInput = (\n initialValue?: string,\n changeHandler?: (value: string) => void\n): [string, (value: string) => void] => {\n const [value, setValue] = useState(initialValue || '');\n\n const onChange = useCallback(\n (newValue: string) => {\n setValue(newValue);\n changeHandler?.(newValue);\n },\n [changeHandler, setValue]\n );\n\n return [value, onChange];\n};\n"],"names":[],"mappings":";;AAEa,MAAA,oBAAA,GAAuB,CAChC,YAAA,EACA,aACoC,KAAA;AACpC,EAAA,MAAM,CAAC,KAAO,EAAA,QAAQ,CAAI,GAAA,QAAA,CAAS,gBAAgB,EAAE,CAAA,CAAA;AAErD,EAAA,MAAM,QAAW,GAAA,WAAA;AAAA,IACb,CAAC,QAAqB,KAAA;AAClB,MAAA,QAAA,CAAS,QAAQ,CAAA,CAAA;AACjB,MAAA,aAAA,GAAgB,QAAQ,CAAA,CAAA;AAAA,KAC5B;AAAA,IACA,CAAC,eAAe,QAAQ,CAAA;AAAA,GAC5B,CAAA;AAEA,EAAO,OAAA,CAAC,OAAO,QAAQ,CAAA,CAAA;AAC3B;;;;"}
|