@hh.ru/magritte-ui-input 7.0.1 → 7.0.2
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.js +1 -1
- package/BaseInput.js.map +1 -1
- package/DateTimeInput.js +1 -1
- package/DateTimeInput.js.map +1 -1
- package/PasswordInput.js.map +1 -1
- package/UncontrolledDateTimeInput.js +1 -1
- package/index.css +316 -316
- package/{index.esm-DNp-bcrK.js → index.esm-CAqzTvlV.js} +1 -1
- package/{index.esm-DNp-bcrK.js.map → index.esm-CAqzTvlV.js.map} +1 -1
- package/index.js +1 -1
- package/maskito-exports.js +1 -1
- package/numberFormatter.js.map +1 -1
- package/package.json +10 -10
- package/useDateTimeMask.js +1 -1
- package/useDateTimeMask.js.map +1 -1
- package/useInputAriaProps.js.map +1 -1
- package/useUncontrolledInput.d.ts +1 -1
package/index.js
CHANGED
|
@@ -28,6 +28,6 @@ import './useFocus.js';
|
|
|
28
28
|
import '@hh.ru/magritte-ui-typography';
|
|
29
29
|
import '@hh.ru/magritte-common-number-formatter';
|
|
30
30
|
import './useDateTimeMask.js';
|
|
31
|
-
import './index.esm-
|
|
31
|
+
import './index.esm-CAqzTvlV.js';
|
|
32
32
|
import './useUncontrolledInput.js';
|
|
33
33
|
//# sourceMappingURL=index.js.map
|
package/maskito-exports.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import './index.css';
|
|
2
|
-
export { M as MASKITO_DEFAULT_OPTIONS, m as maskitoDateOptionsGenerator, a as maskitoDateTimeOptionsGenerator, b as maskitoTimeOptionsGenerator, u as useMaskito } from './index.esm-
|
|
2
|
+
export { M as MASKITO_DEFAULT_OPTIONS, m as maskitoDateOptionsGenerator, a as maskitoDateTimeOptionsGenerator, b as maskitoTimeOptionsGenerator, u as useMaskito } from './index.esm-CAqzTvlV.js';
|
|
3
3
|
import 'react';
|
|
4
4
|
//# sourceMappingURL=maskito-exports.js.map
|
package/numberFormatter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"numberFormatter.js","sources":["../src/numberFormatter.ts"],"sourcesContent":["import { format, type FormatParams, defaults } from '@hh.ru/magritte-common-number-formatter';\nimport { InputFormatter } from '@hh.ru/magritte-ui-input/types';\n\nconst calculateDelimiters = (rawText: string, formatted: string, groupSeparator: string): number =>\n formatted.split(groupSeparator).length - rawText.trim().split(groupSeparator).length;\n\nexport const numberFormatterFactory: (params?: FormatParams) => InputFormatter = (passedParams = {}) => {\n const filteredParams = (Object.keys(passedParams) as Array<keyof typeof passedParams>).reduce<FormatParams>(\n (acc, key) =>\n passedParams[key] === undefined\n ? acc\n : {\n ...acc,\n [key]: passedParams[key],\n },\n {}\n );\n const params = { ...defaults, ...filteredParams };\n const ouputFormatParams = {\n groupSeparator: '',\n decimalMark: ['.', ...params.decimalMark],\n allowNegative: params.allowNegative,\n decimalLength: params.decimalLength,\n };\n const decimalDelimitersRegExp = new RegExp(`[${params.decimalMark?.join('')}]`, 'g');\n\n return (prevValue: string, value: string, caretPosition: number) => {\n const decimalDelimitersCount = value.match(decimalDelimitersRegExp)?.length || 0;\n if (decimalDelimitersCount > 1) {\n const lastChar = prevValue.charAt(value.length - 1);\n const formattedValue = format(prevValue, params) + (params.decimalMark.includes(lastChar) ? lastChar : '');\n const decimalDelimitersPosition = formattedValue.search(decimalDelimitersRegExp);\n return {\n formattedValue,\n outputValue:\n format(prevValue, ouputFormatParams) + (params.decimalMark.includes(lastChar) ? lastChar : ''),\n caretPosition: decimalDelimitersPosition + 1,\n };\n }\n const lastChar = value.charAt(value.length - 1);\n const prevLastChar = prevValue.charAt(prevValue.length - 1);\n const formattedValue = format(value, params) + (params.decimalMark.includes(lastChar) ? lastChar : '');\n const formattedPrevValue =\n format(prevValue, params) + (params.decimalMark.includes(prevLastChar) ? prevLastChar : '');\n const outputValue = format(value, ouputFormatParams) + (params.decimalMark.includes(lastChar) ? lastChar : '');\n // разница вы количестве разделителей разрядов между предыдушим и текущим значениями\n const delimitersDelta = calculateDelimiters(formattedPrevValue, formattedValue, params.groupSeparator);\n const prevValueFirstDelimiterPosition = formattedPrevValue.indexOf(params.groupSeparator) + 1;\n // если каретка находится левее первого символа разделителя разрядов, то не применяем сдвиг с учетом\n // разницы в количестве разделителей, т.к. сдвигаются только символы справа от первого разделителя\n const caret = caretPosition < prevValueFirstDelimiterPosition ? caretPosition : caretPosition + delimitersDelta;\n\n return {\n formattedValue,\n outputValue,\n caretPosition: formattedPrevValue === formattedValue ? Math.max(caret - 1, 0) : caret,\n };\n };\n};\n"],"names":[],"mappings":";;AAGA,MAAM,mBAAmB,GAAG,CAAC,OAAe,EAAE,SAAiB,EAAE,cAAsB,KACnF,SAAS,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC;MAE5E,sBAAsB,GAA8C,CAAC,YAAY,GAAG,EAAE,KAAI;IACnG,MAAM,cAAc,GAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAsC,CAAC,MAAM,CACzF,CAAC,GAAG,EAAE,GAAG,KACL,YAAY,CAAC,GAAG,CAAC,KAAK,SAAS;AAC3B,UAAE,GAAG;AACL,UAAE;AACI,YAAA,GAAG,GAAG;AACN,YAAA,CAAC,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC;SAC3B,EACX,EAAE,CACL,CAAC;IACF,MAAM,MAAM,GAAG,EAAE,GAAG,QAAQ,EAAE,GAAG,cAAc,EAAE,CAAC;AAClD,IAAA,MAAM,iBAAiB,GAAG;AACtB,QAAA,cAAc,EAAE,EAAE;QAClB,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC;QACzC,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,aAAa,EAAE,MAAM,CAAC,aAAa;KACtC,CAAC;AACF,IAAA,MAAM,uBAAuB,GAAG,IAAI,MAAM,CAAC,CAAA,CAAA,EAAI,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAErF,IAAA,OAAO,CAAC,SAAiB,EAAE,KAAa,EAAE,aAAqB,KAAI;AAC/D,QAAA,MAAM,sBAAsB,GAAG,KAAK,CAAC,KAAK,CAAC,uBAAuB,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"numberFormatter.js","sources":["../src/numberFormatter.ts"],"sourcesContent":["import { format, type FormatParams, defaults } from '@hh.ru/magritte-common-number-formatter';\nimport { InputFormatter } from '@hh.ru/magritte-ui-input/types';\n\nconst calculateDelimiters = (rawText: string, formatted: string, groupSeparator: string): number =>\n formatted.split(groupSeparator).length - rawText.trim().split(groupSeparator).length;\n\nexport const numberFormatterFactory: (params?: FormatParams) => InputFormatter = (passedParams = {}) => {\n const filteredParams = (Object.keys(passedParams) as Array<keyof typeof passedParams>).reduce<FormatParams>(\n (acc, key) =>\n passedParams[key] === undefined\n ? acc\n : {\n ...acc,\n [key]: passedParams[key],\n },\n {}\n );\n const params = { ...defaults, ...filteredParams };\n const ouputFormatParams = {\n groupSeparator: '',\n decimalMark: ['.', ...params.decimalMark],\n allowNegative: params.allowNegative,\n decimalLength: params.decimalLength,\n };\n const decimalDelimitersRegExp = new RegExp(`[${params.decimalMark?.join('')}]`, 'g');\n\n return (prevValue: string, value: string, caretPosition: number) => {\n const decimalDelimitersCount = value.match(decimalDelimitersRegExp)?.length || 0;\n if (decimalDelimitersCount > 1) {\n const lastChar = prevValue.charAt(value.length - 1);\n const formattedValue = format(prevValue, params) + (params.decimalMark.includes(lastChar) ? lastChar : '');\n const decimalDelimitersPosition = formattedValue.search(decimalDelimitersRegExp);\n return {\n formattedValue,\n outputValue:\n format(prevValue, ouputFormatParams) + (params.decimalMark.includes(lastChar) ? lastChar : ''),\n caretPosition: decimalDelimitersPosition + 1,\n };\n }\n const lastChar = value.charAt(value.length - 1);\n const prevLastChar = prevValue.charAt(prevValue.length - 1);\n const formattedValue = format(value, params) + (params.decimalMark.includes(lastChar) ? lastChar : '');\n const formattedPrevValue =\n format(prevValue, params) + (params.decimalMark.includes(prevLastChar) ? prevLastChar : '');\n const outputValue = format(value, ouputFormatParams) + (params.decimalMark.includes(lastChar) ? lastChar : '');\n // разница вы количестве разделителей разрядов между предыдушим и текущим значениями\n const delimitersDelta = calculateDelimiters(formattedPrevValue, formattedValue, params.groupSeparator);\n const prevValueFirstDelimiterPosition = formattedPrevValue.indexOf(params.groupSeparator) + 1;\n // если каретка находится левее первого символа разделителя разрядов, то не применяем сдвиг с учетом\n // разницы в количестве разделителей, т.к. сдвигаются только символы справа от первого разделителя\n const caret = caretPosition < prevValueFirstDelimiterPosition ? caretPosition : caretPosition + delimitersDelta;\n\n return {\n formattedValue,\n outputValue,\n caretPosition: formattedPrevValue === formattedValue ? Math.max(caret - 1, 0) : caret,\n };\n };\n};\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hh.ru/magritte-ui-input",
|
|
3
|
-
"version": "7.0.
|
|
3
|
+
"version": "7.0.2",
|
|
4
4
|
"main": "index.js",
|
|
5
5
|
"types": "index.d.ts",
|
|
6
6
|
"sideEffects": [
|
|
@@ -24,20 +24,20 @@
|
|
|
24
24
|
"react": ">=18.2.0"
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@hh.ru/magritte-common-focus-visible": "0.1.
|
|
27
|
+
"@hh.ru/magritte-common-focus-visible": "0.1.6",
|
|
28
28
|
"@hh.ru/magritte-common-mouse": "1.1.12",
|
|
29
29
|
"@hh.ru/magritte-common-number-formatter": "1.0.5",
|
|
30
30
|
"@hh.ru/magritte-common-text-selection": "0.1.5",
|
|
31
31
|
"@hh.ru/magritte-common-use-disabled": "1.0.9",
|
|
32
32
|
"@hh.ru/magritte-common-use-multiple-refs": "1.1.4",
|
|
33
|
-
"@hh.ru/magritte-design-tokens": "19.1.
|
|
34
|
-
"@hh.ru/magritte-ui-action": "4.4.
|
|
35
|
-
"@hh.ru/magritte-ui-breakpoint": "4.0.
|
|
36
|
-
"@hh.ru/magritte-ui-form-helper": "1.0.
|
|
37
|
-
"@hh.ru/magritte-ui-icon": "7.9.
|
|
33
|
+
"@hh.ru/magritte-design-tokens": "19.1.2",
|
|
34
|
+
"@hh.ru/magritte-ui-action": "4.4.12",
|
|
35
|
+
"@hh.ru/magritte-ui-breakpoint": "4.0.4",
|
|
36
|
+
"@hh.ru/magritte-ui-form-helper": "1.0.12",
|
|
37
|
+
"@hh.ru/magritte-ui-icon": "7.9.2",
|
|
38
38
|
"@hh.ru/magritte-ui-mock-component": "1.0.11",
|
|
39
|
-
"@hh.ru/magritte-ui-theme-provider": "1.1.
|
|
40
|
-
"@hh.ru/magritte-ui-typography": "3.0.
|
|
39
|
+
"@hh.ru/magritte-ui-theme-provider": "1.1.31",
|
|
40
|
+
"@hh.ru/magritte-ui-typography": "3.0.18"
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|
|
43
43
|
"@maskito/core": "2.4.0",
|
|
@@ -47,5 +47,5 @@
|
|
|
47
47
|
"publishConfig": {
|
|
48
48
|
"access": "public"
|
|
49
49
|
},
|
|
50
|
-
"gitHead": "
|
|
50
|
+
"gitHead": "1ac30fb3b6ed8df5e0683e4551925b6ab8bf08d9"
|
|
51
51
|
}
|
package/useDateTimeMask.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import './index.css';
|
|
2
2
|
import { useMemo } from 'react';
|
|
3
|
-
import { M as MASKITO_DEFAULT_OPTIONS, a as maskitoDateTimeOptionsGenerator, m as maskitoDateOptionsGenerator, b as maskitoTimeOptionsGenerator, u as useMaskito } from './index.esm-
|
|
3
|
+
import { M as MASKITO_DEFAULT_OPTIONS, a as maskitoDateTimeOptionsGenerator, m as maskitoDateOptionsGenerator, b as maskitoTimeOptionsGenerator, u as useMaskito } from './index.esm-CAqzTvlV.js';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* Округление времени (в формате 00:00) до ближайшего заданного шага
|
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 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): 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 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 = 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]);\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 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): 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 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 = 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]);\n\n return useMaskito({ options });\n};\n"],"names":[],"mappings":"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"}
|
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'] = `input-description-${descriptionId}`;\n }\n return ariaProps;\n};\n"],"names":[],"mappings":"AAca,MAAA,iBAAiB,GAAG,CAAC,EAC9B,OAAO,EACP,cAAc,EACd,cAAc,EACd,aAAa,EACb,OAAO,GACU,KAAe;IAChC,MAAM,SAAS,GAAc,EAAE,CAAC;IAChC,OAAO,KAAK,SAAS,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;
|
|
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'] = `input-description-${descriptionId}`;\n }\n return ariaProps;\n};\n"],"names":[],"mappings":"AAca,MAAA,iBAAiB,GAAG,CAAC,EAC9B,OAAO,EACP,cAAc,EACd,cAAc,EACd,aAAa,EACb,OAAO,GACU,KAAe;IAChC,MAAM,SAAS,GAAc,EAAE,CAAC;IAChC,OAAO,KAAK,SAAS,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;IACnD,IAAI,cAAc,EAAE;AAChB,QAAA,SAAS,CAAC,iBAAiB,CAAC,GAAG,CAAe,YAAA,EAAA,OAAO,EAAE,CAAC;KAC3D;IACD,IAAI,cAAc,EAAE;AAChB,QAAA,SAAS,CAAC,kBAAkB,CAAC,GAAG,CAAqB,kBAAA,EAAA,aAAa,EAAE,CAAC;KACxE;AACD,IAAA,OAAO,SAAS,CAAC;AACrB;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const useUncontrolledInput: (initialValue?: string, changeHandler?: (
|
|
1
|
+
export declare const useUncontrolledInput: (initialValue?: string, changeHandler?: (value: string) => void) => [string, (value: string) => void];
|