@alfalab/core-components-number-input 3.0.1 → 3.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/Component.responsive.d.ts +1 -1
- package/Component.responsive.js.map +1 -1
- package/components/number-input/Component.d.ts +2 -2
- package/components/number-input/Component.js.map +1 -1
- package/components/steppers/Component.d.ts +2 -2
- package/components/steppers/Component.js.map +1 -1
- package/components/steppers/default.css +4 -4
- package/components/steppers/default.module.css.js +1 -1
- package/components/steppers/default.module.css.js.map +1 -1
- package/components/steppers/index.css +6 -6
- package/components/steppers/index.module.css.js +1 -1
- package/components/steppers/index.module.css.js.map +1 -1
- package/components/steppers/inverted.css +4 -4
- package/components/steppers/inverted.module.css.js +1 -1
- package/components/steppers/inverted.module.css.js.map +1 -1
- package/cssm/Component.responsive.d.ts +1 -1
- package/cssm/Component.responsive.js.map +1 -1
- package/cssm/components/number-input/Component.d.ts +2 -2
- package/cssm/components/number-input/Component.js.map +1 -1
- package/cssm/components/steppers/Component.d.ts +2 -2
- package/cssm/components/steppers/Component.js.map +1 -1
- package/cssm/desktop/Component.desktop.d.ts +1 -1
- package/cssm/desktop/Component.desktop.js.map +1 -1
- package/cssm/mobile/Component.mobile.d.ts +1 -1
- package/cssm/mobile/Component.mobile.js.map +1 -1
- package/cssm/utils.d.ts +1 -1
- package/cssm/utils.js.map +1 -1
- package/desktop/Component.desktop.d.ts +1 -1
- package/desktop/Component.desktop.js.map +1 -1
- package/esm/Component.responsive.d.ts +1 -1
- package/esm/Component.responsive.js.map +1 -1
- package/esm/components/number-input/Component.d.ts +2 -2
- package/esm/components/number-input/Component.js.map +1 -1
- package/esm/components/steppers/Component.d.ts +2 -2
- package/esm/components/steppers/Component.js.map +1 -1
- package/esm/components/steppers/default.css +4 -4
- package/esm/components/steppers/default.module.css.js +1 -1
- package/esm/components/steppers/default.module.css.js.map +1 -1
- package/esm/components/steppers/index.css +6 -6
- package/esm/components/steppers/index.module.css.js +1 -1
- package/esm/components/steppers/index.module.css.js.map +1 -1
- package/esm/components/steppers/inverted.css +4 -4
- package/esm/components/steppers/inverted.module.css.js +1 -1
- package/esm/components/steppers/inverted.module.css.js.map +1 -1
- package/esm/desktop/Component.desktop.d.ts +1 -1
- package/esm/desktop/Component.desktop.js.map +1 -1
- package/esm/mobile/Component.mobile.d.ts +1 -1
- package/esm/mobile/Component.mobile.js.map +1 -1
- package/esm/utils.d.ts +1 -1
- package/esm/utils.js.map +1 -1
- package/mobile/Component.mobile.d.ts +1 -1
- package/mobile/Component.mobile.js.map +1 -1
- package/modern/Component.responsive.d.ts +1 -1
- package/modern/Component.responsive.js.map +1 -1
- package/modern/components/number-input/Component.d.ts +2 -2
- package/modern/components/number-input/Component.js.map +1 -1
- package/modern/components/steppers/Component.d.ts +2 -2
- package/modern/components/steppers/Component.js.map +1 -1
- package/modern/components/steppers/default.css +4 -4
- package/modern/components/steppers/default.module.css.js +1 -1
- package/modern/components/steppers/default.module.css.js.map +1 -1
- package/modern/components/steppers/index.css +6 -6
- package/modern/components/steppers/index.module.css.js +1 -1
- package/modern/components/steppers/index.module.css.js.map +1 -1
- package/modern/components/steppers/inverted.css +4 -4
- package/modern/components/steppers/inverted.module.css.js +1 -1
- package/modern/components/steppers/inverted.module.css.js.map +1 -1
- package/modern/desktop/Component.desktop.d.ts +1 -1
- package/modern/desktop/Component.desktop.js.map +1 -1
- package/modern/mobile/Component.mobile.d.ts +1 -1
- package/modern/mobile/Component.mobile.js.map +1 -1
- package/modern/utils.d.ts +1 -1
- package/modern/utils.js.map +1 -1
- package/moderncssm/Component.responsive.d.ts +1 -1
- package/moderncssm/Component.responsive.js.map +1 -1
- package/moderncssm/components/number-input/Component.d.ts +2 -2
- package/moderncssm/components/number-input/Component.js.map +1 -1
- package/moderncssm/components/steppers/Component.d.ts +2 -2
- package/moderncssm/components/steppers/Component.js.map +1 -1
- package/moderncssm/components/steppers/default.module.css +2 -0
- package/moderncssm/components/steppers/index.module.css +2 -0
- package/moderncssm/components/steppers/inverted.module.css +2 -0
- package/moderncssm/desktop/Component.desktop.d.ts +1 -1
- package/moderncssm/desktop/Component.desktop.js.map +1 -1
- package/moderncssm/mobile/Component.mobile.d.ts +1 -1
- package/moderncssm/mobile/Component.mobile.js.map +1 -1
- package/moderncssm/utils.d.ts +1 -1
- package/moderncssm/utils.js.map +1 -1
- package/package.json +3 -3
- package/src/Component.responsive.tsx +1 -1
- package/src/components/number-input/Component.tsx +6 -6
- package/src/components/steppers/Component.tsx +2 -2
- package/src/components/steppers/default.module.css +1 -1
- package/src/components/steppers/index.module.css +1 -1
- package/src/components/steppers/inverted.module.css +1 -1
- package/src/desktop/Component.desktop.tsx +1 -1
- package/src/mobile/Component.mobile.tsx +1 -1
- package/src/utils.ts +4 -4
- package/utils.d.ts +1 -1
- package/utils.js.map +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { NumberInputProps } from './components/number-input';
|
|
2
|
+
import { type NumberInputProps } from './components/number-input';
|
|
3
3
|
export declare type NumberInputResponsiveProps = Omit<NumberInputProps, 'Input' | 'view'>;
|
|
4
4
|
export declare const NumberInputResponsive: React.ForwardRefExoticComponent<NumberInputResponsiveProps & React.RefAttributes<HTMLInputElement>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Component.responsive.js","sources":["src/Component.responsive.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\n\nimport { Input } from '@alfalab/core-components-input';\nimport { useIsDesktop } from '@alfalab/core-components-mq';\n\nimport { NumberInput, NumberInputProps } from './components/number-input';\n\nexport type NumberInputResponsiveProps = Omit<NumberInputProps, 'Input' | 'view'>;\n\nexport const NumberInputResponsive = forwardRef<HTMLInputElement, NumberInputResponsiveProps>(\n (\n {\n breakpoint,\n client,\n defaultMatchMediaValue = client === undefined ? undefined : client === 'desktop',\n ...restProps\n },\n ref,\n ) => {\n const isDesktop = useIsDesktop(breakpoint, defaultMatchMediaValue);\n\n return (\n <NumberInput\n {...restProps}\n Input={Input}\n ref={ref}\n view={isDesktop ? 'desktop' : 'mobile'}\n breakpoint={breakpoint}\n defaultMatchMediaValue={defaultMatchMediaValue}\n />\n );\n },\n);\n\nNumberInputResponsive.displayName = 'NumberInputResponsive';\n"],"names":["forwardRef","__rest","useIsDesktop","React","NumberInput","__assign","Input"],"mappings":";;;;;;;;;;;;;;IASa,qBAAqB,GAAGA,gBAAU,CAC3C,UACI,EAKC,EACD,GAAG,EAAA;AALC,IAAA,IAAA,UAAU,GAAA,EAAA,CAAA,UAAA,EACV,MAAM,GAAA,EAAA,CAAA,MAAA,EACN,EAAgF,GAAA,EAAA,CAAA,sBAAA,EAAhF,sBAAsB,GAAA,EAAA,KAAA,MAAA,GAAG,MAAM,KAAK,SAAS,GAAG,SAAS,GAAG,MAAM,KAAK,SAAS,GAAA,EAAA,EAC7E,SAAS,GAJhBC,YAAA,CAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,wBAAA,CAKC,CADe;IAIhB,IAAM,SAAS,GAAGC,6BAAY,CAAC,UAAU,EAAE,sBAAsB,CAAC;AAElE,IAAA,QACIC,sBAAA,CAAA,aAAA,CAACC,qBAAW,EAAAC,cAAA,CAAA,EAAA,EACJ,SAAS,EACb,EAAA,KAAK,EAAEC,yBAAK,EACZ,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,SAAS,GAAG,SAAS,GAAG,QAAQ,EACtC,UAAU,EAAE,UAAU,EACtB,sBAAsB,EAAE,sBAAsB,EAAA,CAAA,CAChD;AAEV,CAAC;AAGL,qBAAqB,CAAC,WAAW,GAAG,uBAAuB;;;;"}
|
|
1
|
+
{"version":3,"file":"Component.responsive.js","sources":["src/Component.responsive.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\n\nimport { Input } from '@alfalab/core-components-input';\nimport { useIsDesktop } from '@alfalab/core-components-mq';\n\nimport { NumberInput, type NumberInputProps } from './components/number-input';\n\nexport type NumberInputResponsiveProps = Omit<NumberInputProps, 'Input' | 'view'>;\n\nexport const NumberInputResponsive = forwardRef<HTMLInputElement, NumberInputResponsiveProps>(\n (\n {\n breakpoint,\n client,\n defaultMatchMediaValue = client === undefined ? undefined : client === 'desktop',\n ...restProps\n },\n ref,\n ) => {\n const isDesktop = useIsDesktop(breakpoint, defaultMatchMediaValue);\n\n return (\n <NumberInput\n {...restProps}\n Input={Input}\n ref={ref}\n view={isDesktop ? 'desktop' : 'mobile'}\n breakpoint={breakpoint}\n defaultMatchMediaValue={defaultMatchMediaValue}\n />\n );\n },\n);\n\nNumberInputResponsive.displayName = 'NumberInputResponsive';\n"],"names":["forwardRef","__rest","useIsDesktop","React","NumberInput","__assign","Input"],"mappings":";;;;;;;;;;;;;;IASa,qBAAqB,GAAGA,gBAAU,CAC3C,UACI,EAKC,EACD,GAAG,EAAA;AALC,IAAA,IAAA,UAAU,GAAA,EAAA,CAAA,UAAA,EACV,MAAM,GAAA,EAAA,CAAA,MAAA,EACN,EAAgF,GAAA,EAAA,CAAA,sBAAA,EAAhF,sBAAsB,GAAA,EAAA,KAAA,MAAA,GAAG,MAAM,KAAK,SAAS,GAAG,SAAS,GAAG,MAAM,KAAK,SAAS,GAAA,EAAA,EAC7E,SAAS,GAJhBC,YAAA,CAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,wBAAA,CAKC,CADe;IAIhB,IAAM,SAAS,GAAGC,6BAAY,CAAC,UAAU,EAAE,sBAAsB,CAAC;AAElE,IAAA,QACIC,sBAAA,CAAA,aAAA,CAACC,qBAAW,EAAAC,cAAA,CAAA,EAAA,EACJ,SAAS,EACb,EAAA,KAAK,EAAEC,yBAAK,EACZ,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,SAAS,GAAG,SAAS,GAAG,QAAQ,EACtC,UAAU,EAAE,UAAU,EACtB,sBAAsB,EAAE,sBAAsB,EAAA,CAAA,CAChD;AAEV,CAAC;AAGL,qBAAqB,CAAC,WAAW,GAAG,uBAAuB;;;;"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import React, { ChangeEvent, FC, Ref } from 'react';
|
|
2
|
-
import type
|
|
1
|
+
import React, { type ChangeEvent, type FC, type Ref } from 'react';
|
|
2
|
+
import { type InputProps } from '@alfalab/core-components-input';
|
|
3
3
|
export interface NumberInputProps extends Omit<InputProps, 'value' | 'onChange' | 'type' | 'defaultValue' | 'dataTestId'> {
|
|
4
4
|
/**
|
|
5
5
|
* Значение поля ввода
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Component.js","sources":["../../src/components/number-input/Component.tsx"],"sourcesContent":["import React, {\n ChangeEvent,\n FC,\n FocusEvent,\n forwardRef,\n Ref,\n useEffect,\n useMemo,\n useState,\n} from 'react';\nimport mergeRefs from 'react-merge-refs';\nimport { MaskitoOptions, maskitoTransform } from '@maskito/core';\nimport { useMaskito } from '@maskito/react';\n\nimport type { InputProps } from '@alfalab/core-components-input';\nimport { fnUtils, os } from '@alfalab/core-components-shared';\n\nimport {\n createMaskOptions,\n getMinMaxOrDefault,\n MAX_DIGITS,\n MINUS_SIGN,\n parseNumber,\n stringifyNumberWithoutExp,\n} from '../../utils';\nimport { Steppers } from '../steppers';\n\nexport interface NumberInputProps\n extends Omit<InputProps, 'value' | 'onChange' | 'type' | 'defaultValue' | 'dataTestId'> {\n /**\n * Значение поля ввода\n */\n value?: string | number | null;\n\n /**\n * Значение по-умолчанию\n */\n defaultValue?: string | number | null;\n\n /**\n * Разделитель ',' или '.'\n */\n separator?: '.' | ',';\n\n /**\n * Количество символов после разделителя\n * Если указан проп step, то всегда 0\n */\n fractionLength?: number;\n\n /**\n * Шаг инкремента/декремента. Используйте только целочисленные значения\n */\n step?: number;\n\n /**\n * Минимальное значение\n * @default Number.MIN_SAFE_INTEGER\n */\n min?: number;\n\n /**\n * Максимальное значение\n * @default Number.MAX_SAFE_INTEGER\n */\n max?: number;\n\n /**\n * Отображение компонента в мобильном или десктопном виде\n */\n view?: 'desktop' | 'mobile';\n\n /**\n * Компонент инпута\n */\n Input: FC<InputProps & { ref?: Ref<HTMLInputElement> }>;\n\n /**\n * Обработчик события изменения значения\n */\n onChange?: (e: ChangeEvent<HTMLInputElement> | null, payload: { value: number | null }) => void;\n\n /**\n * Идентификатор для систем автоматизированного тестирования.\n * Для кнопки инкремента используется модификатор -increment-button, декремента -decrement-button\n */\n dataTestId?: string;\n}\n\nexport const NumberInput = forwardRef<HTMLInputElement, NumberInputProps>(\n (\n {\n value: propValue,\n onChange,\n separator = ',',\n fractionLength = MAX_DIGITS,\n defaultValue,\n Input,\n min: minProp,\n max: maxProp,\n rightAddons,\n dataTestId,\n disabled,\n onBlur,\n onFocus,\n view,\n step: stepProp,\n size = 48,\n disableUserInput,\n clear: clearProp,\n colors = 'default',\n ...restProps\n },\n ref,\n ) => {\n const { min, max } = getMinMaxOrDefault({ minProp, maxProp });\n const withStepper = stepProp !== undefined;\n\n const maskOptions: MaskitoOptions = useMemo(\n () =>\n createMaskOptions({\n separator,\n fractionLength: withStepper ? 0 : fractionLength,\n min,\n max,\n }),\n [separator, fractionLength, min, max, withStepper],\n );\n\n const [focused, setFocused] = useState(false);\n const [value, setValue] = useState(() => {\n if (defaultValue == null) {\n return withStepper ? fnUtils.clamp(0, min, max).toString() : '';\n }\n\n return fnUtils\n .clamp(\n parseNumber(maskitoTransform(defaultValue.toString(), maskOptions)),\n min,\n max,\n )\n .toString();\n });\n\n const maskRef = useMaskito({ options: maskOptions });\n\n useEffect(() => {\n if (propValue !== undefined) {\n setValue((prev) => {\n const parsedNumber = parseNumber(propValue);\n\n if (parsedNumber !== parseNumber(prev)) {\n return maskitoTransform(\n stringifyNumberWithoutExp(parsedNumber),\n maskOptions,\n );\n }\n\n return prev;\n });\n }\n }, [maskOptions, propValue, separator]);\n\n const getMaxLength = (valueString: string) => {\n const hasSeparator = valueString?.includes(separator);\n const hasSigns = valueString?.startsWith(MINUS_SIGN);\n\n return MAX_DIGITS + (hasSeparator ? 1 : 0) + (hasSigns ? 1 : 0);\n };\n\n const getStep = () => Math.round(stepProp ?? 1);\n\n const changeValue = (\n event: ChangeEvent<HTMLInputElement> | null,\n newValue: number | null,\n ) => {\n const isNaNValue = Number.isNaN(newValue);\n const valueString = event?.target.value ?? newValue?.toString() ?? '';\n\n setValue(valueString);\n\n if (valueString === '' || !isNaNValue) {\n onChange?.(event, {\n value: isNaNValue ? null : newValue,\n });\n }\n };\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n const valueString = event.target.value;\n\n changeValue(event, parseNumber(valueString));\n };\n\n const handleIncrement = () => {\n const parsed = parseNumber(value);\n const nextValue = maskitoTransform(\n (Number.isNaN(parsed) ? min : parsed + getStep()).toString(),\n maskOptions,\n );\n\n changeValue(null, parseNumber(nextValue));\n };\n\n const handleDecrement = () => {\n const parsed = parseNumber(value);\n const nextValue = maskitoTransform(\n (Number.isNaN(parsed) ? max : parsed - getStep()).toString(),\n maskOptions,\n );\n\n changeValue(null, parseNumber(nextValue));\n };\n\n const handleFocus = (e: FocusEvent<HTMLInputElement>) => {\n onFocus?.(e);\n\n if (!disableUserInput) {\n setFocused(true);\n }\n };\n\n const handleBlur = (e: FocusEvent<HTMLInputElement>) => {\n onBlur?.(e);\n setFocused(false);\n };\n\n return (\n <Input\n maxLength={getMaxLength(value)}\n {...restProps}\n // В iOS в цифровой клавиатуре невозможно ввести минус.\n inputMode={min < 0 && os.isIOS() ? 'text' : 'decimal'}\n ref={mergeRefs([ref, maskRef])}\n value={value}\n onInput={handleChange}\n dataTestId={dataTestId}\n colors={colors}\n disabled={disabled}\n onFocus={handleFocus}\n onBlur={handleBlur}\n size={size}\n disableUserInput={disableUserInput}\n clear={clearProp && /\\d/.test(value)}\n rightAddons={\n withStepper ? (\n <React.Fragment>\n {rightAddons}\n <Steppers\n colors={colors}\n dataTestId={dataTestId}\n disabled={disabled}\n focused={focused}\n value={parseNumber(value)}\n min={min}\n max={max}\n onIncrement={handleIncrement}\n onDecrement={handleDecrement}\n size={size}\n />\n </React.Fragment>\n ) : (\n rightAddons\n )\n }\n />\n );\n },\n);\n"],"names":["forwardRef","MAX_DIGITS","__rest","getMinMaxOrDefault","useMemo","createMaskOptions","useState","fnUtils","parseNumber","maskitoTransform","useMaskito","useEffect","stringifyNumberWithoutExp","MINUS_SIGN","React","__assign","os","mergeRefs","Steppers"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Component.js","sources":["../../src/components/number-input/Component.tsx"],"sourcesContent":["import React, {\n type ChangeEvent,\n type FC,\n type FocusEvent,\n forwardRef,\n type Ref,\n useEffect,\n useMemo,\n useState,\n} from 'react';\nimport mergeRefs from 'react-merge-refs';\nimport { type MaskitoOptions, maskitoTransform } from '@maskito/core';\nimport { useMaskito } from '@maskito/react';\n\nimport { type InputProps } from '@alfalab/core-components-input';\nimport { fnUtils, os } from '@alfalab/core-components-shared';\n\nimport {\n createMaskOptions,\n getMinMaxOrDefault,\n MAX_DIGITS,\n MINUS_SIGN,\n parseNumber,\n stringifyNumberWithoutExp,\n} from '../../utils';\nimport { Steppers } from '../steppers';\n\nexport interface NumberInputProps\n extends Omit<InputProps, 'value' | 'onChange' | 'type' | 'defaultValue' | 'dataTestId'> {\n /**\n * Значение поля ввода\n */\n value?: string | number | null;\n\n /**\n * Значение по-умолчанию\n */\n defaultValue?: string | number | null;\n\n /**\n * Разделитель ',' или '.'\n */\n separator?: '.' | ',';\n\n /**\n * Количество символов после разделителя\n * Если указан проп step, то всегда 0\n */\n fractionLength?: number;\n\n /**\n * Шаг инкремента/декремента. Используйте только целочисленные значения\n */\n step?: number;\n\n /**\n * Минимальное значение\n * @default Number.MIN_SAFE_INTEGER\n */\n min?: number;\n\n /**\n * Максимальное значение\n * @default Number.MAX_SAFE_INTEGER\n */\n max?: number;\n\n /**\n * Отображение компонента в мобильном или десктопном виде\n */\n view?: 'desktop' | 'mobile';\n\n /**\n * Компонент инпута\n */\n Input: FC<InputProps & { ref?: Ref<HTMLInputElement> }>;\n\n /**\n * Обработчик события изменения значения\n */\n onChange?: (e: ChangeEvent<HTMLInputElement> | null, payload: { value: number | null }) => void;\n\n /**\n * Идентификатор для систем автоматизированного тестирования.\n * Для кнопки инкремента используется модификатор -increment-button, декремента -decrement-button\n */\n dataTestId?: string;\n}\n\nexport const NumberInput = forwardRef<HTMLInputElement, NumberInputProps>(\n (\n {\n value: propValue,\n onChange,\n separator = ',',\n fractionLength = MAX_DIGITS,\n defaultValue,\n Input,\n min: minProp,\n max: maxProp,\n rightAddons,\n dataTestId,\n disabled,\n onBlur,\n onFocus,\n view,\n step: stepProp,\n size = 48,\n disableUserInput,\n clear: clearProp,\n colors = 'default',\n ...restProps\n },\n ref,\n ) => {\n const { min, max } = getMinMaxOrDefault({ minProp, maxProp });\n const withStepper = stepProp !== undefined;\n\n const maskOptions: MaskitoOptions = useMemo(\n () =>\n createMaskOptions({\n separator,\n fractionLength: withStepper ? 0 : fractionLength,\n min,\n max,\n }),\n [separator, fractionLength, min, max, withStepper],\n );\n\n const [focused, setFocused] = useState(false);\n const [value, setValue] = useState(() => {\n if (defaultValue == null) {\n return withStepper ? fnUtils.clamp(0, min, max).toString() : '';\n }\n\n return fnUtils\n .clamp(\n parseNumber(maskitoTransform(defaultValue.toString(), maskOptions)),\n min,\n max,\n )\n .toString();\n });\n\n const maskRef = useMaskito({ options: maskOptions });\n\n useEffect(() => {\n if (propValue !== undefined) {\n setValue((prev) => {\n const parsedNumber = parseNumber(propValue);\n\n if (parsedNumber !== parseNumber(prev)) {\n return maskitoTransform(\n stringifyNumberWithoutExp(parsedNumber),\n maskOptions,\n );\n }\n\n return prev;\n });\n }\n }, [maskOptions, propValue, separator]);\n\n const getMaxLength = (valueString: string) => {\n const hasSeparator = valueString?.includes(separator);\n const hasSigns = valueString?.startsWith(MINUS_SIGN);\n\n return MAX_DIGITS + (hasSeparator ? 1 : 0) + (hasSigns ? 1 : 0);\n };\n\n const getStep = () => Math.round(stepProp ?? 1);\n\n const changeValue = (\n event: ChangeEvent<HTMLInputElement> | null,\n newValue: number | null,\n ) => {\n const isNaNValue = Number.isNaN(newValue);\n const valueString = event?.target.value ?? newValue?.toString() ?? '';\n\n setValue(valueString);\n\n if (valueString === '' || !isNaNValue) {\n onChange?.(event, {\n value: isNaNValue ? null : newValue,\n });\n }\n };\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n const valueString = event.target.value;\n\n changeValue(event, parseNumber(valueString));\n };\n\n const handleIncrement = () => {\n const parsed = parseNumber(value);\n const nextValue = maskitoTransform(\n (Number.isNaN(parsed) ? min : parsed + getStep()).toString(),\n maskOptions,\n );\n\n changeValue(null, parseNumber(nextValue));\n };\n\n const handleDecrement = () => {\n const parsed = parseNumber(value);\n const nextValue = maskitoTransform(\n (Number.isNaN(parsed) ? max : parsed - getStep()).toString(),\n maskOptions,\n );\n\n changeValue(null, parseNumber(nextValue));\n };\n\n const handleFocus = (e: FocusEvent<HTMLInputElement>) => {\n onFocus?.(e);\n\n if (!disableUserInput) {\n setFocused(true);\n }\n };\n\n const handleBlur = (e: FocusEvent<HTMLInputElement>) => {\n onBlur?.(e);\n setFocused(false);\n };\n\n return (\n <Input\n maxLength={getMaxLength(value)}\n {...restProps}\n // В iOS в цифровой клавиатуре невозможно ввести минус.\n inputMode={min < 0 && os.isIOS() ? 'text' : 'decimal'}\n ref={mergeRefs([ref, maskRef])}\n value={value}\n onInput={handleChange}\n dataTestId={dataTestId}\n colors={colors}\n disabled={disabled}\n onFocus={handleFocus}\n onBlur={handleBlur}\n size={size}\n disableUserInput={disableUserInput}\n clear={clearProp && /\\d/.test(value)}\n rightAddons={\n withStepper ? (\n <React.Fragment>\n {rightAddons}\n <Steppers\n colors={colors}\n dataTestId={dataTestId}\n disabled={disabled}\n focused={focused}\n value={parseNumber(value)}\n min={min}\n max={max}\n onIncrement={handleIncrement}\n onDecrement={handleDecrement}\n size={size}\n />\n </React.Fragment>\n ) : (\n rightAddons\n )\n }\n />\n );\n },\n);\n"],"names":["forwardRef","MAX_DIGITS","__rest","getMinMaxOrDefault","useMemo","createMaskOptions","useState","fnUtils","parseNumber","maskitoTransform","useMaskito","useEffect","stringifyNumberWithoutExp","MINUS_SIGN","React","__assign","os","mergeRefs","Steppers"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Component.js","sources":["../../src/components/steppers/Component.tsx"],"sourcesContent":["import React, { FC } from 'react';\nimport cn from 'classnames';\n\nimport { IconButton } from '@alfalab/core-components-icon-button';\nimport { InputProps } from '@alfalab/core-components-input';\nimport { getDataTestId } from '@alfalab/core-components-shared';\nimport { MinusMIcon } from '@alfalab/icons-glyph/MinusMIcon';\nimport { MinusSIcon } from '@alfalab/icons-glyph/MinusSIcon';\nimport { PlusMediumMIcon } from '@alfalab/icons-glyph/PlusMediumMIcon';\nimport { PlusSIcon } from '@alfalab/icons-glyph/PlusSIcon';\n\nimport defaultColors from './default.module.css';\nimport styles from './index.module.css';\nimport invertedColors from './inverted.module.css';\n\nexport type SteppersProps = {\n value: number;\n min: number;\n max: number;\n className?: string;\n disabled?: boolean;\n focused?: boolean;\n onIncrement: () => void;\n onDecrement: () => void;\n dataTestId?: string;\n colors: 'default' | 'inverted';\n size: InputProps['size'];\n};\n\nconst colorStyles = {\n default: defaultColors,\n inverted: invertedColors,\n};\n\nfunction preventDefault(e: React.MouseEvent<HTMLElement>) {\n e.preventDefault();\n}\n\nconst SIZE_TO_CLASSNAME_MAP = {\n s: 'size-48',\n m: 'size-56',\n l: 'size-64',\n xl: 'size-72',\n 40: 'size-40',\n 48: 'size-48',\n 56: 'size-56',\n 64: 'size-64',\n 72: 'size-72',\n};\n\nexport const Steppers: FC<SteppersProps> = ({\n className,\n onIncrement,\n onDecrement,\n value,\n min,\n max,\n disabled,\n focused,\n dataTestId,\n colors,\n size = 48,\n}) => {\n const decButtonDisabled = disabled || value <= min;\n const incButtonDisabled = disabled || value >= max;\n\n const MinusIconComponent = size === 40 ? MinusSIcon : MinusMIcon;\n const PlusIconComponent = size === 40 ? PlusSIcon : PlusMediumMIcon;\n\n return (\n <div\n className={cn(\n styles.component,\n colorStyles[colors].steppers,\n styles[SIZE_TO_CLASSNAME_MAP[size]],\n className,\n {\n [colorStyles[colors].steppersFocused]: focused,\n [colorStyles[colors].steppersDisabled]: disabled,\n },\n )}\n >\n <IconButton\n colors={colors}\n disabled={decButtonDisabled}\n className={styles.button}\n icon={<MinusIconComponent />}\n aria-label='уменьшить'\n onMouseDown={preventDefault}\n onClick={onDecrement}\n dataTestId={getDataTestId(dataTestId, 'decrement-button')}\n view='secondary'\n />\n <div className={cn(styles.separator, colorStyles[colors].separator)} />\n <IconButton\n colors={colors}\n disabled={incButtonDisabled}\n className={styles.button}\n icon={<PlusIconComponent />}\n aria-label='увеличить'\n onMouseDown={preventDefault}\n onClick={onIncrement}\n dataTestId={getDataTestId(dataTestId, 'increment-button')}\n view='secondary'\n />\n </div>\n );\n};\n\nSteppers.displayName = 'Steppers';\n"],"names":["defaultColors","invertedColors","MinusSIcon","MinusMIcon","PlusSIcon","PlusMediumMIcon","React","cn","styles","IconButton","getDataTestId"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Component.js","sources":["../../src/components/steppers/Component.tsx"],"sourcesContent":["import React, { type FC } from 'react';\nimport cn from 'classnames';\n\nimport { IconButton } from '@alfalab/core-components-icon-button';\nimport { type InputProps } from '@alfalab/core-components-input';\nimport { getDataTestId } from '@alfalab/core-components-shared';\nimport { MinusMIcon } from '@alfalab/icons-glyph/MinusMIcon';\nimport { MinusSIcon } from '@alfalab/icons-glyph/MinusSIcon';\nimport { PlusMediumMIcon } from '@alfalab/icons-glyph/PlusMediumMIcon';\nimport { PlusSIcon } from '@alfalab/icons-glyph/PlusSIcon';\n\nimport defaultColors from './default.module.css';\nimport styles from './index.module.css';\nimport invertedColors from './inverted.module.css';\n\nexport type SteppersProps = {\n value: number;\n min: number;\n max: number;\n className?: string;\n disabled?: boolean;\n focused?: boolean;\n onIncrement: () => void;\n onDecrement: () => void;\n dataTestId?: string;\n colors: 'default' | 'inverted';\n size: InputProps['size'];\n};\n\nconst colorStyles = {\n default: defaultColors,\n inverted: invertedColors,\n};\n\nfunction preventDefault(e: React.MouseEvent<HTMLElement>) {\n e.preventDefault();\n}\n\nconst SIZE_TO_CLASSNAME_MAP = {\n s: 'size-48',\n m: 'size-56',\n l: 'size-64',\n xl: 'size-72',\n 40: 'size-40',\n 48: 'size-48',\n 56: 'size-56',\n 64: 'size-64',\n 72: 'size-72',\n};\n\nexport const Steppers: FC<SteppersProps> = ({\n className,\n onIncrement,\n onDecrement,\n value,\n min,\n max,\n disabled,\n focused,\n dataTestId,\n colors,\n size = 48,\n}) => {\n const decButtonDisabled = disabled || value <= min;\n const incButtonDisabled = disabled || value >= max;\n\n const MinusIconComponent = size === 40 ? MinusSIcon : MinusMIcon;\n const PlusIconComponent = size === 40 ? PlusSIcon : PlusMediumMIcon;\n\n return (\n <div\n className={cn(\n styles.component,\n colorStyles[colors].steppers,\n styles[SIZE_TO_CLASSNAME_MAP[size]],\n className,\n {\n [colorStyles[colors].steppersFocused]: focused,\n [colorStyles[colors].steppersDisabled]: disabled,\n },\n )}\n >\n <IconButton\n colors={colors}\n disabled={decButtonDisabled}\n className={styles.button}\n icon={<MinusIconComponent />}\n aria-label='уменьшить'\n onMouseDown={preventDefault}\n onClick={onDecrement}\n dataTestId={getDataTestId(dataTestId, 'decrement-button')}\n view='secondary'\n />\n <div className={cn(styles.separator, colorStyles[colors].separator)} />\n <IconButton\n colors={colors}\n disabled={incButtonDisabled}\n className={styles.button}\n icon={<PlusIconComponent />}\n aria-label='увеличить'\n onMouseDown={preventDefault}\n onClick={onIncrement}\n dataTestId={getDataTestId(dataTestId, 'increment-button')}\n view='secondary'\n />\n </div>\n );\n};\n\nSteppers.displayName = 'Steppers';\n"],"names":["defaultColors","invertedColors","MinusSIcon","MinusMIcon","PlusSIcon","PlusMediumMIcon","React","cn","styles","IconButton","getDataTestId"],"mappings":"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"}
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
--color-light-neutral-translucent-0: #fff;
|
|
3
3
|
--color-light-neutral-translucent-200: rgba(30, 43, 68, 0.08);
|
|
4
4
|
--color-light-neutral-translucent-300: rgba(15, 25, 55, 0.1);
|
|
5
|
-
} .number-
|
|
5
|
+
} .number-input__separator_1qfwb {
|
|
6
6
|
background-color: var(--color-light-neutral-translucent-300);
|
|
7
|
-
} .number-
|
|
7
|
+
} .number-input__steppers_1qfwb {
|
|
8
8
|
background-color: var(--color-light-neutral-translucent-0);
|
|
9
|
-
} .number-
|
|
10
|
-
.number-
|
|
9
|
+
} .number-input__steppersFocused_1qfwb,
|
|
10
|
+
.number-input__steppersDisabled_1qfwb {
|
|
11
11
|
background-color: var(--color-light-neutral-translucent-200);
|
|
12
12
|
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
require('./default.css');
|
|
4
4
|
|
|
5
|
-
var defaultColors = {"separator":"number-
|
|
5
|
+
var defaultColors = {"separator":"number-input__separator_1qfwb","steppers":"number-input__steppers_1qfwb","steppersFocused":"number-input__steppersFocused_1qfwb","steppersDisabled":"number-input__steppersDisabled_1qfwb"};
|
|
6
6
|
|
|
7
7
|
module.exports = defaultColors;
|
|
8
8
|
//# sourceMappingURL=default.module.css.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default.module.css.js","sources":["../../src/components/steppers/default.module.css"],"sourcesContent":["@import '@alfalab/core-components-vars/src/index.css';\n\n.separator {\n background-color: var(--color-light-neutral-translucent-300);\n}\n\n.steppers {\n background-color: var(--color-light-neutral-translucent-0);\n}\n\n.steppersFocused,\n.steppersDisabled {\n background-color: var(--color-light-neutral-translucent-200);\n}\n"],"names":[],"mappings":";;;;AAEgB,oBAAe,CAAC,WAAW,CAAC,+BAA+B,CAAC,UAAU,CAAC,8BAA8B,CAAC,iBAAiB,CAAC,qCAAqC,CAAC,kBAAkB,CAAC,sCAAsC,CAAC;;;;"}
|
|
1
|
+
{"version":3,"file":"default.module.css.js","sources":["../../src/components/steppers/default.module.css"],"sourcesContent":["@import '@alfalab/core-components-vars/src/no-typography-index.css';\n\n.separator {\n background-color: var(--color-light-neutral-translucent-300);\n}\n\n.steppers {\n background-color: var(--color-light-neutral-translucent-0);\n}\n\n.steppersFocused,\n.steppersDisabled {\n background-color: var(--color-light-neutral-translucent-200);\n}\n"],"names":[],"mappings":";;;;AAEgB,oBAAe,CAAC,WAAW,CAAC,+BAA+B,CAAC,UAAU,CAAC,8BAA8B,CAAC,iBAAiB,CAAC,qCAAqC,CAAC,kBAAkB,CAAC,sCAAsC,CAAC;;;;"}
|
|
@@ -3,24 +3,24 @@
|
|
|
3
3
|
--gap-xs-neg: -8px;
|
|
4
4
|
--gap-4-neg: var(--gap-2xs-neg);
|
|
5
5
|
--gap-8-neg: var(--gap-xs-neg);
|
|
6
|
-
} .number-
|
|
6
|
+
} .number-input__component_vno9z {
|
|
7
7
|
display: flex;
|
|
8
8
|
flex-flow: row nowrap;
|
|
9
9
|
align-items: center;
|
|
10
10
|
border-radius: 5px;
|
|
11
11
|
transition: background-color 0.2s ease;
|
|
12
12
|
overflow: visible;
|
|
13
|
-
} .number-
|
|
13
|
+
} .number-input__separator_vno9z {
|
|
14
14
|
height: 18px;
|
|
15
15
|
width: 1px;
|
|
16
|
-
} .number-
|
|
16
|
+
} .number-input__button_vno9z {
|
|
17
17
|
width: 40px;
|
|
18
18
|
height: 40px;
|
|
19
|
-
} .number-input__size-
|
|
19
|
+
} .number-input__size-40_vno9z {
|
|
20
20
|
margin-right: var(--gap-8-neg);
|
|
21
21
|
height: 32px;
|
|
22
|
-
} .number-input__size-
|
|
22
|
+
} .number-input__size-48_vno9z {
|
|
23
23
|
margin-right: var(--gap-8-neg);
|
|
24
|
-
} .number-input__size-
|
|
24
|
+
} .number-input__size-56_vno9z {
|
|
25
25
|
margin-right: var(--gap-4-neg);
|
|
26
26
|
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
require('./index.css');
|
|
4
4
|
|
|
5
|
-
var styles = {"component":"number-
|
|
5
|
+
var styles = {"component":"number-input__component_vno9z","separator":"number-input__separator_vno9z","button":"number-input__button_vno9z","size-40":"number-input__size-40_vno9z","size-48":"number-input__size-48_vno9z","size-56":"number-input__size-56_vno9z"};
|
|
6
6
|
|
|
7
7
|
module.exports = styles;
|
|
8
8
|
//# sourceMappingURL=index.module.css.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.module.css.js","sources":["../../src/components/steppers/index.module.css"],"sourcesContent":["@import '@alfalab/core-components-vars/src/index.css';\n\n.component {\n display: flex;\n flex-flow: row nowrap;\n align-items: center;\n border-radius: 5px;\n transition: background-color 0.2s ease;\n overflow: visible;\n}\n\n.separator {\n height: 18px;\n width: 1px;\n}\n\n.button {\n width: 40px;\n height: 40px;\n}\n\n.size-40 {\n margin-right: var(--gap-8-neg);\n height: 32px;\n}\n\n.size-48 {\n margin-right: var(--gap-8-neg);\n}\n\n.size-56 {\n margin-right: var(--gap-4-neg);\n}\n"],"names":[],"mappings":";;;;AAEgB,aAAe,CAAC,WAAW,CAAC,+BAA+B,CAAC,WAAW,CAAC,+BAA+B,CAAC,QAAQ,CAAC,4BAA4B,CAAC,SAAS,CAAC,6BAA6B,CAAC,SAAS,CAAC,6BAA6B,CAAC,SAAS,CAAC,6BAA6B,CAAC;;;;"}
|
|
1
|
+
{"version":3,"file":"index.module.css.js","sources":["../../src/components/steppers/index.module.css"],"sourcesContent":["@import '@alfalab/core-components-vars/src/no-typography-index.css';\n\n.component {\n display: flex;\n flex-flow: row nowrap;\n align-items: center;\n border-radius: 5px;\n transition: background-color 0.2s ease;\n overflow: visible;\n}\n\n.separator {\n height: 18px;\n width: 1px;\n}\n\n.button {\n width: 40px;\n height: 40px;\n}\n\n.size-40 {\n margin-right: var(--gap-8-neg);\n height: 32px;\n}\n\n.size-48 {\n margin-right: var(--gap-8-neg);\n}\n\n.size-56 {\n margin-right: var(--gap-4-neg);\n}\n"],"names":[],"mappings":";;;;AAEgB,aAAe,CAAC,WAAW,CAAC,+BAA+B,CAAC,WAAW,CAAC,+BAA+B,CAAC,QAAQ,CAAC,4BAA4B,CAAC,SAAS,CAAC,6BAA6B,CAAC,SAAS,CAAC,6BAA6B,CAAC,SAAS,CAAC,6BAA6B,CAAC;;;;"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
:root {
|
|
2
2
|
--color-light-neutral-translucent-0-inverted: rgba(214, 214, 229, 0.07);
|
|
3
3
|
--color-light-neutral-translucent-300-inverted: rgba(222, 222, 238, 0.13);
|
|
4
|
-
} .number-
|
|
4
|
+
} .number-input__separator_1uoaj {
|
|
5
5
|
background-color: var(--color-light-neutral-translucent-300-inverted);
|
|
6
|
-
} .number-
|
|
6
|
+
} .number-input__steppers_1uoaj {
|
|
7
7
|
background-color: var(--color-light-neutral-translucent-0-inverted);
|
|
8
|
-
} .number-
|
|
9
|
-
.number-
|
|
8
|
+
} .number-input__steppersFocused_1uoaj,
|
|
9
|
+
.number-input__steppersDisabled_1uoaj {
|
|
10
10
|
background-color: var(--color-light-neutral-translucent-300-inverted);
|
|
11
11
|
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
require('./inverted.css');
|
|
4
4
|
|
|
5
|
-
var invertedColors = {"separator":"number-
|
|
5
|
+
var invertedColors = {"separator":"number-input__separator_1uoaj","steppers":"number-input__steppers_1uoaj","steppersFocused":"number-input__steppersFocused_1uoaj","steppersDisabled":"number-input__steppersDisabled_1uoaj"};
|
|
6
6
|
|
|
7
7
|
module.exports = invertedColors;
|
|
8
8
|
//# sourceMappingURL=inverted.module.css.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inverted.module.css.js","sources":["../../src/components/steppers/inverted.module.css"],"sourcesContent":["@import '@alfalab/core-components-vars/src/index.css';\n\n.separator {\n background-color: var(--color-light-neutral-translucent-300-inverted);\n}\n\n.steppers {\n background-color: var(--color-light-neutral-translucent-0-inverted);\n}\n\n.steppersFocused,\n.steppersDisabled {\n background-color: var(--color-light-neutral-translucent-300-inverted);\n}\n"],"names":[],"mappings":";;;;AAEgB,qBAAe,CAAC,WAAW,CAAC,+BAA+B,CAAC,UAAU,CAAC,8BAA8B,CAAC,iBAAiB,CAAC,qCAAqC,CAAC,kBAAkB,CAAC,sCAAsC,CAAC;;;;"}
|
|
1
|
+
{"version":3,"file":"inverted.module.css.js","sources":["../../src/components/steppers/inverted.module.css"],"sourcesContent":["@import '@alfalab/core-components-vars/src/no-typography-index.css';\n\n.separator {\n background-color: var(--color-light-neutral-translucent-300-inverted);\n}\n\n.steppers {\n background-color: var(--color-light-neutral-translucent-0-inverted);\n}\n\n.steppersFocused,\n.steppersDisabled {\n background-color: var(--color-light-neutral-translucent-300-inverted);\n}\n"],"names":[],"mappings":";;;;AAEgB,qBAAe,CAAC,WAAW,CAAC,+BAA+B,CAAC,UAAU,CAAC,8BAA8B,CAAC,iBAAiB,CAAC,qCAAqC,CAAC,kBAAkB,CAAC,sCAAsC,CAAC;;;;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { NumberInputProps } from './components/number-input';
|
|
2
|
+
import { type NumberInputProps } from './components/number-input';
|
|
3
3
|
export declare type NumberInputResponsiveProps = Omit<NumberInputProps, 'Input' | 'view'>;
|
|
4
4
|
export declare const NumberInputResponsive: React.ForwardRefExoticComponent<NumberInputResponsiveProps & React.RefAttributes<HTMLInputElement>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Component.responsive.js","sources":["../src/Component.responsive.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\n\nimport { Input } from '@alfalab/core-components-input';\nimport { useIsDesktop } from '@alfalab/core-components-mq';\n\nimport { NumberInput, NumberInputProps } from './components/number-input';\n\nexport type NumberInputResponsiveProps = Omit<NumberInputProps, 'Input' | 'view'>;\n\nexport const NumberInputResponsive = forwardRef<HTMLInputElement, NumberInputResponsiveProps>(\n (\n {\n breakpoint,\n client,\n defaultMatchMediaValue = client === undefined ? undefined : client === 'desktop',\n ...restProps\n },\n ref,\n ) => {\n const isDesktop = useIsDesktop(breakpoint, defaultMatchMediaValue);\n\n return (\n <NumberInput\n {...restProps}\n Input={Input}\n ref={ref}\n view={isDesktop ? 'desktop' : 'mobile'}\n breakpoint={breakpoint}\n defaultMatchMediaValue={defaultMatchMediaValue}\n />\n );\n },\n);\n\nNumberInputResponsive.displayName = 'NumberInputResponsive';\n"],"names":["forwardRef","__rest","useIsDesktop","React","NumberInput","__assign","Input"],"mappings":";;;;;;;;;;;;;;IASa,qBAAqB,GAAGA,gBAAU,CAC3C,UACI,EAKC,EACD,GAAG,EAAA;AALC,IAAA,IAAA,UAAU,GAAA,EAAA,CAAA,UAAA,EACV,MAAM,GAAA,EAAA,CAAA,MAAA,EACN,EAAgF,GAAA,EAAA,CAAA,sBAAA,EAAhF,sBAAsB,GAAA,EAAA,KAAA,MAAA,GAAG,MAAM,KAAK,SAAS,GAAG,SAAS,GAAG,MAAM,KAAK,SAAS,GAAA,EAAA,EAC7E,SAAS,GAJhBC,YAAA,CAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,wBAAA,CAKC,CADe;IAIhB,IAAM,SAAS,GAAGC,iBAAY,CAAC,UAAU,EAAE,sBAAsB,CAAC;AAElE,IAAA,QACIC,sBAAA,CAAA,aAAA,CAACC,qBAAW,EAAAC,cAAA,CAAA,EAAA,EACJ,SAAS,EACb,EAAA,KAAK,EAAEC,YAAK,EACZ,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,SAAS,GAAG,SAAS,GAAG,QAAQ,EACtC,UAAU,EAAE,UAAU,EACtB,sBAAsB,EAAE,sBAAsB,EAAA,CAAA,CAChD;AAEV,CAAC;AAGL,qBAAqB,CAAC,WAAW,GAAG,uBAAuB;;;;"}
|
|
1
|
+
{"version":3,"file":"Component.responsive.js","sources":["../src/Component.responsive.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\n\nimport { Input } from '@alfalab/core-components-input';\nimport { useIsDesktop } from '@alfalab/core-components-mq';\n\nimport { NumberInput, type NumberInputProps } from './components/number-input';\n\nexport type NumberInputResponsiveProps = Omit<NumberInputProps, 'Input' | 'view'>;\n\nexport const NumberInputResponsive = forwardRef<HTMLInputElement, NumberInputResponsiveProps>(\n (\n {\n breakpoint,\n client,\n defaultMatchMediaValue = client === undefined ? undefined : client === 'desktop',\n ...restProps\n },\n ref,\n ) => {\n const isDesktop = useIsDesktop(breakpoint, defaultMatchMediaValue);\n\n return (\n <NumberInput\n {...restProps}\n Input={Input}\n ref={ref}\n view={isDesktop ? 'desktop' : 'mobile'}\n breakpoint={breakpoint}\n defaultMatchMediaValue={defaultMatchMediaValue}\n />\n );\n },\n);\n\nNumberInputResponsive.displayName = 'NumberInputResponsive';\n"],"names":["forwardRef","__rest","useIsDesktop","React","NumberInput","__assign","Input"],"mappings":";;;;;;;;;;;;;;IASa,qBAAqB,GAAGA,gBAAU,CAC3C,UACI,EAKC,EACD,GAAG,EAAA;AALC,IAAA,IAAA,UAAU,GAAA,EAAA,CAAA,UAAA,EACV,MAAM,GAAA,EAAA,CAAA,MAAA,EACN,EAAgF,GAAA,EAAA,CAAA,sBAAA,EAAhF,sBAAsB,GAAA,EAAA,KAAA,MAAA,GAAG,MAAM,KAAK,SAAS,GAAG,SAAS,GAAG,MAAM,KAAK,SAAS,GAAA,EAAA,EAC7E,SAAS,GAJhBC,YAAA,CAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,wBAAA,CAKC,CADe;IAIhB,IAAM,SAAS,GAAGC,iBAAY,CAAC,UAAU,EAAE,sBAAsB,CAAC;AAElE,IAAA,QACIC,sBAAA,CAAA,aAAA,CAACC,qBAAW,EAAAC,cAAA,CAAA,EAAA,EACJ,SAAS,EACb,EAAA,KAAK,EAAEC,YAAK,EACZ,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,SAAS,GAAG,SAAS,GAAG,QAAQ,EACtC,UAAU,EAAE,UAAU,EACtB,sBAAsB,EAAE,sBAAsB,EAAA,CAAA,CAChD;AAEV,CAAC;AAGL,qBAAqB,CAAC,WAAW,GAAG,uBAAuB;;;;"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import React, { ChangeEvent, FC, Ref } from 'react';
|
|
2
|
-
import type
|
|
1
|
+
import React, { type ChangeEvent, type FC, type Ref } from 'react';
|
|
2
|
+
import { type InputProps } from '@alfalab/core-components-input/cssm';
|
|
3
3
|
export interface NumberInputProps extends Omit<InputProps, 'value' | 'onChange' | 'type' | 'defaultValue' | 'dataTestId'> {
|
|
4
4
|
/**
|
|
5
5
|
* Значение поля ввода
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Component.js","sources":["../../../src/components/number-input/Component.tsx"],"sourcesContent":["import React, {\n ChangeEvent,\n FC,\n FocusEvent,\n forwardRef,\n Ref,\n useEffect,\n useMemo,\n useState,\n} from 'react';\nimport mergeRefs from 'react-merge-refs';\nimport { MaskitoOptions, maskitoTransform } from '@maskito/core';\nimport { useMaskito } from '@maskito/react';\n\nimport type { InputProps } from '@alfalab/core-components-input';\nimport { fnUtils, os } from '@alfalab/core-components-shared';\n\nimport {\n createMaskOptions,\n getMinMaxOrDefault,\n MAX_DIGITS,\n MINUS_SIGN,\n parseNumber,\n stringifyNumberWithoutExp,\n} from '../../utils';\nimport { Steppers } from '../steppers';\n\nexport interface NumberInputProps\n extends Omit<InputProps, 'value' | 'onChange' | 'type' | 'defaultValue' | 'dataTestId'> {\n /**\n * Значение поля ввода\n */\n value?: string | number | null;\n\n /**\n * Значение по-умолчанию\n */\n defaultValue?: string | number | null;\n\n /**\n * Разделитель ',' или '.'\n */\n separator?: '.' | ',';\n\n /**\n * Количество символов после разделителя\n * Если указан проп step, то всегда 0\n */\n fractionLength?: number;\n\n /**\n * Шаг инкремента/декремента. Используйте только целочисленные значения\n */\n step?: number;\n\n /**\n * Минимальное значение\n * @default Number.MIN_SAFE_INTEGER\n */\n min?: number;\n\n /**\n * Максимальное значение\n * @default Number.MAX_SAFE_INTEGER\n */\n max?: number;\n\n /**\n * Отображение компонента в мобильном или десктопном виде\n */\n view?: 'desktop' | 'mobile';\n\n /**\n * Компонент инпута\n */\n Input: FC<InputProps & { ref?: Ref<HTMLInputElement> }>;\n\n /**\n * Обработчик события изменения значения\n */\n onChange?: (e: ChangeEvent<HTMLInputElement> | null, payload: { value: number | null }) => void;\n\n /**\n * Идентификатор для систем автоматизированного тестирования.\n * Для кнопки инкремента используется модификатор -increment-button, декремента -decrement-button\n */\n dataTestId?: string;\n}\n\nexport const NumberInput = forwardRef<HTMLInputElement, NumberInputProps>(\n (\n {\n value: propValue,\n onChange,\n separator = ',',\n fractionLength = MAX_DIGITS,\n defaultValue,\n Input,\n min: minProp,\n max: maxProp,\n rightAddons,\n dataTestId,\n disabled,\n onBlur,\n onFocus,\n view,\n step: stepProp,\n size = 48,\n disableUserInput,\n clear: clearProp,\n colors = 'default',\n ...restProps\n },\n ref,\n ) => {\n const { min, max } = getMinMaxOrDefault({ minProp, maxProp });\n const withStepper = stepProp !== undefined;\n\n const maskOptions: MaskitoOptions = useMemo(\n () =>\n createMaskOptions({\n separator,\n fractionLength: withStepper ? 0 : fractionLength,\n min,\n max,\n }),\n [separator, fractionLength, min, max, withStepper],\n );\n\n const [focused, setFocused] = useState(false);\n const [value, setValue] = useState(() => {\n if (defaultValue == null) {\n return withStepper ? fnUtils.clamp(0, min, max).toString() : '';\n }\n\n return fnUtils\n .clamp(\n parseNumber(maskitoTransform(defaultValue.toString(), maskOptions)),\n min,\n max,\n )\n .toString();\n });\n\n const maskRef = useMaskito({ options: maskOptions });\n\n useEffect(() => {\n if (propValue !== undefined) {\n setValue((prev) => {\n const parsedNumber = parseNumber(propValue);\n\n if (parsedNumber !== parseNumber(prev)) {\n return maskitoTransform(\n stringifyNumberWithoutExp(parsedNumber),\n maskOptions,\n );\n }\n\n return prev;\n });\n }\n }, [maskOptions, propValue, separator]);\n\n const getMaxLength = (valueString: string) => {\n const hasSeparator = valueString?.includes(separator);\n const hasSigns = valueString?.startsWith(MINUS_SIGN);\n\n return MAX_DIGITS + (hasSeparator ? 1 : 0) + (hasSigns ? 1 : 0);\n };\n\n const getStep = () => Math.round(stepProp ?? 1);\n\n const changeValue = (\n event: ChangeEvent<HTMLInputElement> | null,\n newValue: number | null,\n ) => {\n const isNaNValue = Number.isNaN(newValue);\n const valueString = event?.target.value ?? newValue?.toString() ?? '';\n\n setValue(valueString);\n\n if (valueString === '' || !isNaNValue) {\n onChange?.(event, {\n value: isNaNValue ? null : newValue,\n });\n }\n };\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n const valueString = event.target.value;\n\n changeValue(event, parseNumber(valueString));\n };\n\n const handleIncrement = () => {\n const parsed = parseNumber(value);\n const nextValue = maskitoTransform(\n (Number.isNaN(parsed) ? min : parsed + getStep()).toString(),\n maskOptions,\n );\n\n changeValue(null, parseNumber(nextValue));\n };\n\n const handleDecrement = () => {\n const parsed = parseNumber(value);\n const nextValue = maskitoTransform(\n (Number.isNaN(parsed) ? max : parsed - getStep()).toString(),\n maskOptions,\n );\n\n changeValue(null, parseNumber(nextValue));\n };\n\n const handleFocus = (e: FocusEvent<HTMLInputElement>) => {\n onFocus?.(e);\n\n if (!disableUserInput) {\n setFocused(true);\n }\n };\n\n const handleBlur = (e: FocusEvent<HTMLInputElement>) => {\n onBlur?.(e);\n setFocused(false);\n };\n\n return (\n <Input\n maxLength={getMaxLength(value)}\n {...restProps}\n // В iOS в цифровой клавиатуре невозможно ввести минус.\n inputMode={min < 0 && os.isIOS() ? 'text' : 'decimal'}\n ref={mergeRefs([ref, maskRef])}\n value={value}\n onInput={handleChange}\n dataTestId={dataTestId}\n colors={colors}\n disabled={disabled}\n onFocus={handleFocus}\n onBlur={handleBlur}\n size={size}\n disableUserInput={disableUserInput}\n clear={clearProp && /\\d/.test(value)}\n rightAddons={\n withStepper ? (\n <React.Fragment>\n {rightAddons}\n <Steppers\n colors={colors}\n dataTestId={dataTestId}\n disabled={disabled}\n focused={focused}\n value={parseNumber(value)}\n min={min}\n max={max}\n onIncrement={handleIncrement}\n onDecrement={handleDecrement}\n size={size}\n />\n </React.Fragment>\n ) : (\n rightAddons\n )\n }\n />\n );\n },\n);\n"],"names":["forwardRef","MAX_DIGITS","__rest","getMinMaxOrDefault","useMemo","createMaskOptions","useState","fnUtils","parseNumber","maskitoTransform","useMaskito","useEffect","stringifyNumberWithoutExp","MINUS_SIGN","React","__assign","os","mergeRefs","Steppers"],"mappings":";;;;;;;;;;;;;;;;;;IAyFa,WAAW,GAAGA,gBAAU,CACjC,UACI,EAqBC,EACD,GAAG,EAAA;AArBC,IAAA,IAAO,SAAS,GAAA,EAAA,CAAA,KAAA,CAAA,CAChB,QAAQ,GAAA,EAAA,CAAA,QAAA,EACR,EAAe,GAAA,EAAA,CAAA,SAAA,CAAA,CAAf,SAAS,GAAA,EAAA,KAAA,MAAA,GAAG,GAAG,GAAA,EAAA,CAAA,CACf,EAA2B,GAAA,EAAA,CAAA,cAAA,CAAA,CAA3B,cAAc,GAAG,EAAA,KAAA,MAAA,GAAAC,gBAAU,GAAA,EAAA,CAAA,CAC3B,YAAY,GAAA,EAAA,CAAA,YAAA,CAAA,CACZ,KAAK,GAAA,EAAA,CAAA,KAAA,EACA,OAAO,GAAA,EAAA,CAAA,GAAA,CACP,CAAA,OAAO,SAAA,CACZ,CAAA,WAAW,GAAA,EAAA,CAAA,WAAA,CAAA,CACX,UAAU,GAAA,EAAA,CAAA,UAAA,CAAA,CACV,QAAQ,GAAA,EAAA,CAAA,QAAA,EACR,MAAM,GAAA,EAAA,CAAA,MAAA,CACN,CAAA,OAAO,aAAA,CACP,CAAI,EAAA,CAAA,IAAA,CAAA,KACE,QAAQ,GAAA,EAAA,CAAA,IAAA,CAAA,CACd,EAAS,GAAA,EAAA,CAAA,IAAA,CAAA,CAAT,IAAI,GAAG,EAAA,KAAA,MAAA,GAAA,EAAE,GAAA,EAAA,CAAA,CACT,gBAAgB,GAAA,EAAA,CAAA,gBAAA,CAAA,CACT,SAAS,GAAA,EAAA,CAAA,KAAA,EAChB,EAAkB,GAAA,EAAA,CAAA,MAAA,CAAA,CAAlB,MAAM,GAAA,EAAA,KAAA,MAAA,GAAG,SAAS,GAAA,EAAA,CAAA,CACf,SAAS,GAAAC,YAAA,CAAA,EAAA,EApBhB,wNAqBC;AAGK,IAAA,IAAA,KAAeC,wBAAkB,CAAC,EAAE,OAAO,SAAA,EAAE,OAAO,EAAA,OAAA,EAAE,CAAC,EAArD,GAAG,SAAA,EAAE,GAAG,SAA6C;AAC7D,IAAA,IAAM,WAAW,GAAG,QAAQ,KAAK,SAAS;IAE1C,IAAM,WAAW,GAAmBC,aAAO,CACvC,YAAA;AACI,QAAA,OAAAC,uBAAiB,CAAC;AACd,YAAA,SAAS,EAAA,SAAA;YACT,cAAc,EAAE,WAAW,GAAG,CAAC,GAAG,cAAc;AAChD,YAAA,GAAG,EAAA,GAAA;AACH,YAAA,GAAG,EAAA,GAAA;SACN,CAAC;AALF,KAKE,EACN,CAAC,SAAS,EAAE,cAAc,EAAE,GAAG,EAAE,GAAG,EAAE,WAAW,CAAC,CACrD;IAEK,IAAA,EAAA,GAAwBC,cAAQ,CAAC,KAAK,CAAC,EAAtC,OAAO,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,UAAU,GAAA,EAAA,CAAA,CAAA,CAAmB;IACvC,IAAA,EAAA,GAAoBA,cAAQ,CAAC,YAAA;QAC/B,IAAI,YAAY,IAAI,IAAI,EAAE;YACtB,OAAO,WAAW,GAAGC,YAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,QAAQ,EAAE,GAAG,EAAE;AAClE;AAED,QAAA,OAAOA;AACF,aAAA,KAAK,CACFC,iBAAW,CAACC,qBAAgB,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,WAAW,CAAC,CAAC,EACnE,GAAG,EACH,GAAG;AAEN,aAAA,QAAQ,EAAE;AACnB,KAAC,CAAC,EAZK,KAAK,QAAA,EAAE,QAAQ,QAYpB;IAEF,IAAM,OAAO,GAAGC,gBAAU,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;AAEpD,IAAAC,eAAS,CAAC,YAAA;QACN,IAAI,SAAS,KAAK,SAAS,EAAE;YACzB,QAAQ,CAAC,UAAC,IAAI,EAAA;AACV,gBAAA,IAAM,YAAY,GAAGH,iBAAW,CAAC,SAAS,CAAC;AAE3C,gBAAA,IAAI,YAAY,KAAKA,iBAAW,CAAC,IAAI,CAAC,EAAE;oBACpC,OAAOC,qBAAgB,CACnBG,+BAAyB,CAAC,YAAY,CAAC,EACvC,WAAW,CACd;AACJ;AAED,gBAAA,OAAO,IAAI;AACf,aAAC,CAAC;AACL;KACJ,EAAE,CAAC,WAAW,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IAEvC,IAAM,YAAY,GAAG,UAAC,WAAmB,EAAA;AACrC,QAAA,IAAM,YAAY,GAAG,WAAW,KAAA,IAAA,IAAX,WAAW,KAAA,MAAA,GAAA,MAAA,GAAX,WAAW,CAAE,QAAQ,CAAC,SAAS,CAAC;AACrD,QAAA,IAAM,QAAQ,GAAG,WAAW,KAAA,IAAA,IAAX,WAAW,KAAA,MAAA,GAAA,MAAA,GAAX,WAAW,CAAE,UAAU,CAACC,gBAAU,CAAC;QAEpD,OAAOZ,gBAAU,IAAI,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC;AACnE,KAAC;AAED,IAAA,IAAM,OAAO,GAAG,YAAA,EAAM,OAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAR,IAAA,IAAA,QAAQ,cAAR,QAAQ,GAAI,CAAC,CAAC,CAAA,EAAA;AAE/C,IAAA,IAAM,WAAW,GAAG,UAChB,KAA2C,EAC3C,QAAuB,EAAA;;QAEvB,IAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC;QACzC,IAAM,WAAW,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,KAAK,aAAL,KAAK,KAAA,MAAA,GAAA,MAAA,GAAL,KAAK,CAAE,MAAM,CAAC,KAAK,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,QAAQ,KAAR,IAAA,IAAA,QAAQ,KAAR,MAAA,GAAA,MAAA,GAAA,QAAQ,CAAE,QAAQ,EAAE,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,EAAE;QAErE,QAAQ,CAAC,WAAW,CAAC;AAErB,QAAA,IAAI,WAAW,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE;AACnC,YAAA,QAAQ,aAAR,QAAQ,KAAA,MAAA,GAAA,MAAA,GAAR,QAAQ,CAAG,KAAK,EAAE;gBACd,KAAK,EAAE,UAAU,GAAG,IAAI,GAAG,QAAQ;AACtC,aAAA,CAAC;AACL;AACL,KAAC;IAED,IAAM,YAAY,GAAG,UAAC,KAAoC,EAAA;AACtD,QAAA,IAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK;QAEtC,WAAW,CAAC,KAAK,EAAEO,iBAAW,CAAC,WAAW,CAAC,CAAC;AAChD,KAAC;AAED,IAAA,IAAM,eAAe,GAAG,YAAA;AACpB,QAAA,IAAM,MAAM,GAAGA,iBAAW,CAAC,KAAK,CAAC;AACjC,QAAA,IAAM,SAAS,GAAGC,qBAAgB,CAC9B,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,GAAG,MAAM,GAAG,OAAO,EAAE,EAAE,QAAQ,EAAE,EAC5D,WAAW,CACd;QAED,WAAW,CAAC,IAAI,EAAED,iBAAW,CAAC,SAAS,CAAC,CAAC;AAC7C,KAAC;AAED,IAAA,IAAM,eAAe,GAAG,YAAA;AACpB,QAAA,IAAM,MAAM,GAAGA,iBAAW,CAAC,KAAK,CAAC;AACjC,QAAA,IAAM,SAAS,GAAGC,qBAAgB,CAC9B,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,GAAG,MAAM,GAAG,OAAO,EAAE,EAAE,QAAQ,EAAE,EAC5D,WAAW,CACd;QAED,WAAW,CAAC,IAAI,EAAED,iBAAW,CAAC,SAAS,CAAC,CAAC;AAC7C,KAAC;IAED,IAAM,WAAW,GAAG,UAAC,CAA+B,EAAA;AAChD,QAAA,OAAO,aAAP,OAAO,KAAA,MAAA,GAAA,MAAA,GAAP,OAAO,CAAG,CAAC,CAAC;QAEZ,IAAI,CAAC,gBAAgB,EAAE;YACnB,UAAU,CAAC,IAAI,CAAC;AACnB;AACL,KAAC;IAED,IAAM,UAAU,GAAG,UAAC,CAA+B,EAAA;AAC/C,QAAA,MAAM,aAAN,MAAM,KAAA,MAAA,GAAA,MAAA,GAAN,MAAM,CAAG,CAAC,CAAC;QACX,UAAU,CAAC,KAAK,CAAC;AACrB,KAAC;IAED,QACIM,sBAAC,CAAA,aAAA,CAAA,KAAK,EACFC,cAAA,CAAA,EAAA,SAAS,EAAE,YAAY,CAAC,KAAK,CAAC,EAAA,EAC1B,SAAS,EAAA;;AAEb,QAAA,SAAS,EAAE,GAAG,GAAG,CAAC,IAAIC,OAAE,CAAC,KAAK,EAAE,GAAG,MAAM,GAAG,SAAS,EACrD,GAAG,EAAEC,0BAAS,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,EAC9B,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,YAAY,EACrB,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,IAAI,EACV,gBAAgB,EAAE,gBAAgB,EAClC,KAAK,EAAE,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EACpC,WAAW,EACP,WAAW,IACPH,sBAAC,CAAA,aAAA,CAAAA,sBAAK,CAAC,QAAQ,EAAA,IAAA;YACV,WAAW;YACZA,sBAAC,CAAA,aAAA,CAAAI,kBAAQ,EACL,EAAA,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,OAAO,EAChB,KAAK,EAAEV,iBAAW,CAAC,KAAK,CAAC,EACzB,GAAG,EAAE,GAAG,EACR,GAAG,EAAE,GAAG,EACR,WAAW,EAAE,eAAe,EAC5B,WAAW,EAAE,eAAe,EAC5B,IAAI,EAAE,IAAI,EAAA,CACZ,CACW,KAEjB,WAAW,CACd,EAEP,CAAA,CAAA;AAEV,CAAC;;;;"}
|
|
1
|
+
{"version":3,"file":"Component.js","sources":["../../../src/components/number-input/Component.tsx"],"sourcesContent":["import React, {\n type ChangeEvent,\n type FC,\n type FocusEvent,\n forwardRef,\n type Ref,\n useEffect,\n useMemo,\n useState,\n} from 'react';\nimport mergeRefs from 'react-merge-refs';\nimport { type MaskitoOptions, maskitoTransform } from '@maskito/core';\nimport { useMaskito } from '@maskito/react';\n\nimport { type InputProps } from '@alfalab/core-components-input';\nimport { fnUtils, os } from '@alfalab/core-components-shared';\n\nimport {\n createMaskOptions,\n getMinMaxOrDefault,\n MAX_DIGITS,\n MINUS_SIGN,\n parseNumber,\n stringifyNumberWithoutExp,\n} from '../../utils';\nimport { Steppers } from '../steppers';\n\nexport interface NumberInputProps\n extends Omit<InputProps, 'value' | 'onChange' | 'type' | 'defaultValue' | 'dataTestId'> {\n /**\n * Значение поля ввода\n */\n value?: string | number | null;\n\n /**\n * Значение по-умолчанию\n */\n defaultValue?: string | number | null;\n\n /**\n * Разделитель ',' или '.'\n */\n separator?: '.' | ',';\n\n /**\n * Количество символов после разделителя\n * Если указан проп step, то всегда 0\n */\n fractionLength?: number;\n\n /**\n * Шаг инкремента/декремента. Используйте только целочисленные значения\n */\n step?: number;\n\n /**\n * Минимальное значение\n * @default Number.MIN_SAFE_INTEGER\n */\n min?: number;\n\n /**\n * Максимальное значение\n * @default Number.MAX_SAFE_INTEGER\n */\n max?: number;\n\n /**\n * Отображение компонента в мобильном или десктопном виде\n */\n view?: 'desktop' | 'mobile';\n\n /**\n * Компонент инпута\n */\n Input: FC<InputProps & { ref?: Ref<HTMLInputElement> }>;\n\n /**\n * Обработчик события изменения значения\n */\n onChange?: (e: ChangeEvent<HTMLInputElement> | null, payload: { value: number | null }) => void;\n\n /**\n * Идентификатор для систем автоматизированного тестирования.\n * Для кнопки инкремента используется модификатор -increment-button, декремента -decrement-button\n */\n dataTestId?: string;\n}\n\nexport const NumberInput = forwardRef<HTMLInputElement, NumberInputProps>(\n (\n {\n value: propValue,\n onChange,\n separator = ',',\n fractionLength = MAX_DIGITS,\n defaultValue,\n Input,\n min: minProp,\n max: maxProp,\n rightAddons,\n dataTestId,\n disabled,\n onBlur,\n onFocus,\n view,\n step: stepProp,\n size = 48,\n disableUserInput,\n clear: clearProp,\n colors = 'default',\n ...restProps\n },\n ref,\n ) => {\n const { min, max } = getMinMaxOrDefault({ minProp, maxProp });\n const withStepper = stepProp !== undefined;\n\n const maskOptions: MaskitoOptions = useMemo(\n () =>\n createMaskOptions({\n separator,\n fractionLength: withStepper ? 0 : fractionLength,\n min,\n max,\n }),\n [separator, fractionLength, min, max, withStepper],\n );\n\n const [focused, setFocused] = useState(false);\n const [value, setValue] = useState(() => {\n if (defaultValue == null) {\n return withStepper ? fnUtils.clamp(0, min, max).toString() : '';\n }\n\n return fnUtils\n .clamp(\n parseNumber(maskitoTransform(defaultValue.toString(), maskOptions)),\n min,\n max,\n )\n .toString();\n });\n\n const maskRef = useMaskito({ options: maskOptions });\n\n useEffect(() => {\n if (propValue !== undefined) {\n setValue((prev) => {\n const parsedNumber = parseNumber(propValue);\n\n if (parsedNumber !== parseNumber(prev)) {\n return maskitoTransform(\n stringifyNumberWithoutExp(parsedNumber),\n maskOptions,\n );\n }\n\n return prev;\n });\n }\n }, [maskOptions, propValue, separator]);\n\n const getMaxLength = (valueString: string) => {\n const hasSeparator = valueString?.includes(separator);\n const hasSigns = valueString?.startsWith(MINUS_SIGN);\n\n return MAX_DIGITS + (hasSeparator ? 1 : 0) + (hasSigns ? 1 : 0);\n };\n\n const getStep = () => Math.round(stepProp ?? 1);\n\n const changeValue = (\n event: ChangeEvent<HTMLInputElement> | null,\n newValue: number | null,\n ) => {\n const isNaNValue = Number.isNaN(newValue);\n const valueString = event?.target.value ?? newValue?.toString() ?? '';\n\n setValue(valueString);\n\n if (valueString === '' || !isNaNValue) {\n onChange?.(event, {\n value: isNaNValue ? null : newValue,\n });\n }\n };\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n const valueString = event.target.value;\n\n changeValue(event, parseNumber(valueString));\n };\n\n const handleIncrement = () => {\n const parsed = parseNumber(value);\n const nextValue = maskitoTransform(\n (Number.isNaN(parsed) ? min : parsed + getStep()).toString(),\n maskOptions,\n );\n\n changeValue(null, parseNumber(nextValue));\n };\n\n const handleDecrement = () => {\n const parsed = parseNumber(value);\n const nextValue = maskitoTransform(\n (Number.isNaN(parsed) ? max : parsed - getStep()).toString(),\n maskOptions,\n );\n\n changeValue(null, parseNumber(nextValue));\n };\n\n const handleFocus = (e: FocusEvent<HTMLInputElement>) => {\n onFocus?.(e);\n\n if (!disableUserInput) {\n setFocused(true);\n }\n };\n\n const handleBlur = (e: FocusEvent<HTMLInputElement>) => {\n onBlur?.(e);\n setFocused(false);\n };\n\n return (\n <Input\n maxLength={getMaxLength(value)}\n {...restProps}\n // В iOS в цифровой клавиатуре невозможно ввести минус.\n inputMode={min < 0 && os.isIOS() ? 'text' : 'decimal'}\n ref={mergeRefs([ref, maskRef])}\n value={value}\n onInput={handleChange}\n dataTestId={dataTestId}\n colors={colors}\n disabled={disabled}\n onFocus={handleFocus}\n onBlur={handleBlur}\n size={size}\n disableUserInput={disableUserInput}\n clear={clearProp && /\\d/.test(value)}\n rightAddons={\n withStepper ? (\n <React.Fragment>\n {rightAddons}\n <Steppers\n colors={colors}\n dataTestId={dataTestId}\n disabled={disabled}\n focused={focused}\n value={parseNumber(value)}\n min={min}\n max={max}\n onIncrement={handleIncrement}\n onDecrement={handleDecrement}\n size={size}\n />\n </React.Fragment>\n ) : (\n rightAddons\n )\n }\n />\n );\n },\n);\n"],"names":["forwardRef","MAX_DIGITS","__rest","getMinMaxOrDefault","useMemo","createMaskOptions","useState","fnUtils","parseNumber","maskitoTransform","useMaskito","useEffect","stringifyNumberWithoutExp","MINUS_SIGN","React","__assign","os","mergeRefs","Steppers"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { FC } from 'react';
|
|
2
|
-
import { InputProps } from '@alfalab/core-components-input/cssm';
|
|
1
|
+
import { type FC } from 'react';
|
|
2
|
+
import { type InputProps } from '@alfalab/core-components-input/cssm';
|
|
3
3
|
export declare type SteppersProps = {
|
|
4
4
|
value: number;
|
|
5
5
|
min: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Component.js","sources":["../../../src/components/steppers/Component.tsx"],"sourcesContent":["import React, { FC } from 'react';\nimport cn from 'classnames';\n\nimport { IconButton } from '@alfalab/core-components-icon-button';\nimport { InputProps } from '@alfalab/core-components-input';\nimport { getDataTestId } from '@alfalab/core-components-shared';\nimport { MinusMIcon } from '@alfalab/icons-glyph/MinusMIcon';\nimport { MinusSIcon } from '@alfalab/icons-glyph/MinusSIcon';\nimport { PlusMediumMIcon } from '@alfalab/icons-glyph/PlusMediumMIcon';\nimport { PlusSIcon } from '@alfalab/icons-glyph/PlusSIcon';\n\nimport defaultColors from './default.module.css';\nimport styles from './index.module.css';\nimport invertedColors from './inverted.module.css';\n\nexport type SteppersProps = {\n value: number;\n min: number;\n max: number;\n className?: string;\n disabled?: boolean;\n focused?: boolean;\n onIncrement: () => void;\n onDecrement: () => void;\n dataTestId?: string;\n colors: 'default' | 'inverted';\n size: InputProps['size'];\n};\n\nconst colorStyles = {\n default: defaultColors,\n inverted: invertedColors,\n};\n\nfunction preventDefault(e: React.MouseEvent<HTMLElement>) {\n e.preventDefault();\n}\n\nconst SIZE_TO_CLASSNAME_MAP = {\n s: 'size-48',\n m: 'size-56',\n l: 'size-64',\n xl: 'size-72',\n 40: 'size-40',\n 48: 'size-48',\n 56: 'size-56',\n 64: 'size-64',\n 72: 'size-72',\n};\n\nexport const Steppers: FC<SteppersProps> = ({\n className,\n onIncrement,\n onDecrement,\n value,\n min,\n max,\n disabled,\n focused,\n dataTestId,\n colors,\n size = 48,\n}) => {\n const decButtonDisabled = disabled || value <= min;\n const incButtonDisabled = disabled || value >= max;\n\n const MinusIconComponent = size === 40 ? MinusSIcon : MinusMIcon;\n const PlusIconComponent = size === 40 ? PlusSIcon : PlusMediumMIcon;\n\n return (\n <div\n className={cn(\n styles.component,\n colorStyles[colors].steppers,\n styles[SIZE_TO_CLASSNAME_MAP[size]],\n className,\n {\n [colorStyles[colors].steppersFocused]: focused,\n [colorStyles[colors].steppersDisabled]: disabled,\n },\n )}\n >\n <IconButton\n colors={colors}\n disabled={decButtonDisabled}\n className={styles.button}\n icon={<MinusIconComponent />}\n aria-label='уменьшить'\n onMouseDown={preventDefault}\n onClick={onDecrement}\n dataTestId={getDataTestId(dataTestId, 'decrement-button')}\n view='secondary'\n />\n <div className={cn(styles.separator, colorStyles[colors].separator)} />\n <IconButton\n colors={colors}\n disabled={incButtonDisabled}\n className={styles.button}\n icon={<PlusIconComponent />}\n aria-label='увеличить'\n onMouseDown={preventDefault}\n onClick={onIncrement}\n dataTestId={getDataTestId(dataTestId, 'increment-button')}\n view='secondary'\n />\n </div>\n );\n};\n\nSteppers.displayName = 'Steppers';\n"],"names":["defaultColors","invertedColors","MinusSIcon","MinusMIcon","PlusSIcon","PlusMediumMIcon","React","cn","styles","IconButton","getDataTestId"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Component.js","sources":["../../../src/components/steppers/Component.tsx"],"sourcesContent":["import React, { type FC } from 'react';\nimport cn from 'classnames';\n\nimport { IconButton } from '@alfalab/core-components-icon-button';\nimport { type InputProps } from '@alfalab/core-components-input';\nimport { getDataTestId } from '@alfalab/core-components-shared';\nimport { MinusMIcon } from '@alfalab/icons-glyph/MinusMIcon';\nimport { MinusSIcon } from '@alfalab/icons-glyph/MinusSIcon';\nimport { PlusMediumMIcon } from '@alfalab/icons-glyph/PlusMediumMIcon';\nimport { PlusSIcon } from '@alfalab/icons-glyph/PlusSIcon';\n\nimport defaultColors from './default.module.css';\nimport styles from './index.module.css';\nimport invertedColors from './inverted.module.css';\n\nexport type SteppersProps = {\n value: number;\n min: number;\n max: number;\n className?: string;\n disabled?: boolean;\n focused?: boolean;\n onIncrement: () => void;\n onDecrement: () => void;\n dataTestId?: string;\n colors: 'default' | 'inverted';\n size: InputProps['size'];\n};\n\nconst colorStyles = {\n default: defaultColors,\n inverted: invertedColors,\n};\n\nfunction preventDefault(e: React.MouseEvent<HTMLElement>) {\n e.preventDefault();\n}\n\nconst SIZE_TO_CLASSNAME_MAP = {\n s: 'size-48',\n m: 'size-56',\n l: 'size-64',\n xl: 'size-72',\n 40: 'size-40',\n 48: 'size-48',\n 56: 'size-56',\n 64: 'size-64',\n 72: 'size-72',\n};\n\nexport const Steppers: FC<SteppersProps> = ({\n className,\n onIncrement,\n onDecrement,\n value,\n min,\n max,\n disabled,\n focused,\n dataTestId,\n colors,\n size = 48,\n}) => {\n const decButtonDisabled = disabled || value <= min;\n const incButtonDisabled = disabled || value >= max;\n\n const MinusIconComponent = size === 40 ? MinusSIcon : MinusMIcon;\n const PlusIconComponent = size === 40 ? PlusSIcon : PlusMediumMIcon;\n\n return (\n <div\n className={cn(\n styles.component,\n colorStyles[colors].steppers,\n styles[SIZE_TO_CLASSNAME_MAP[size]],\n className,\n {\n [colorStyles[colors].steppersFocused]: focused,\n [colorStyles[colors].steppersDisabled]: disabled,\n },\n )}\n >\n <IconButton\n colors={colors}\n disabled={decButtonDisabled}\n className={styles.button}\n icon={<MinusIconComponent />}\n aria-label='уменьшить'\n onMouseDown={preventDefault}\n onClick={onDecrement}\n dataTestId={getDataTestId(dataTestId, 'decrement-button')}\n view='secondary'\n />\n <div className={cn(styles.separator, colorStyles[colors].separator)} />\n <IconButton\n colors={colors}\n disabled={incButtonDisabled}\n className={styles.button}\n icon={<PlusIconComponent />}\n aria-label='увеличить'\n onMouseDown={preventDefault}\n onClick={onIncrement}\n dataTestId={getDataTestId(dataTestId, 'increment-button')}\n view='secondary'\n />\n </div>\n );\n};\n\nSteppers.displayName = 'Steppers';\n"],"names":["defaultColors","invertedColors","MinusSIcon","MinusMIcon","PlusSIcon","PlusMediumMIcon","React","cn","styles","IconButton","getDataTestId"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { NumberInputProps } from '../components/number-input';
|
|
2
|
+
import { type NumberInputProps } from '../components/number-input';
|
|
3
3
|
export declare type NumberInputDesktopProps = Omit<NumberInputProps, 'Input' | 'breakpoint' | 'view'>;
|
|
4
4
|
export declare const NumberInputDesktop: React.ForwardRefExoticComponent<NumberInputDesktopProps & React.RefAttributes<HTMLInputElement>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Component.desktop.js","sources":["../../src/desktop/Component.desktop.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\n\nimport { InputDesktop } from '@alfalab/core-components-input/desktop';\n\nimport { NumberInput, NumberInputProps } from '../components/number-input';\n\nexport type NumberInputDesktopProps = Omit<NumberInputProps, 'Input' | 'breakpoint' | 'view'>;\n\nexport const NumberInputDesktop = forwardRef<HTMLInputElement, NumberInputDesktopProps>(\n (props, ref) => <NumberInput {...props} Input={InputDesktop} ref={ref} view='desktop' />,\n);\n"],"names":["forwardRef","React","NumberInput","__assign","InputDesktop"],"mappings":";;;;;;;;;;;;;AAQO,IAAM,kBAAkB,GAAGA,gBAAU,CACxC,UAAC,KAAK,EAAE,GAAG,EAAA,EAAK,OAAAC,sBAAA,CAAA,aAAA,CAACC,qBAAW,EAAKC,cAAA,CAAA,EAAA,EAAA,KAAK,EAAE,EAAA,KAAK,EAAEC,oBAAY,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAC,SAAS,EAAA,CAAA,CAAG,CAAxE,EAAwE;;;;"}
|
|
1
|
+
{"version":3,"file":"Component.desktop.js","sources":["../../src/desktop/Component.desktop.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\n\nimport { InputDesktop } from '@alfalab/core-components-input/desktop';\n\nimport { NumberInput, type NumberInputProps } from '../components/number-input';\n\nexport type NumberInputDesktopProps = Omit<NumberInputProps, 'Input' | 'breakpoint' | 'view'>;\n\nexport const NumberInputDesktop = forwardRef<HTMLInputElement, NumberInputDesktopProps>(\n (props, ref) => <NumberInput {...props} Input={InputDesktop} ref={ref} view='desktop' />,\n);\n"],"names":["forwardRef","React","NumberInput","__assign","InputDesktop"],"mappings":";;;;;;;;;;;;;AAQO,IAAM,kBAAkB,GAAGA,gBAAU,CACxC,UAAC,KAAK,EAAE,GAAG,EAAA,EAAK,OAAAC,sBAAA,CAAA,aAAA,CAACC,qBAAW,EAAKC,cAAA,CAAA,EAAA,EAAA,KAAK,EAAE,EAAA,KAAK,EAAEC,oBAAY,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAC,SAAS,EAAA,CAAA,CAAG,CAAxE,EAAwE;;;;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { NumberInputProps } from '../components/number-input';
|
|
2
|
+
import { type NumberInputProps } from '../components/number-input';
|
|
3
3
|
export declare type NumberInputMobileProps = Omit<NumberInputProps, 'Input' | 'breakpoint' | 'view'>;
|
|
4
4
|
export declare const NumberInputMobile: React.ForwardRefExoticComponent<NumberInputMobileProps & React.RefAttributes<HTMLInputElement>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Component.mobile.js","sources":["../../src/mobile/Component.mobile.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\n\nimport { InputMobile } from '@alfalab/core-components-input/mobile';\n\nimport { NumberInput, NumberInputProps } from '../components/number-input';\n\nexport type NumberInputMobileProps = Omit<NumberInputProps, 'Input' | 'breakpoint' | 'view'>;\n\nexport const NumberInputMobile = forwardRef<HTMLInputElement, NumberInputMobileProps>(\n (props, ref) => <NumberInput {...props} Input={InputMobile} ref={ref} view='mobile' />,\n);\n"],"names":["forwardRef","React","NumberInput","__assign","InputMobile"],"mappings":";;;;;;;;;;;;;AAQO,IAAM,iBAAiB,GAAGA,gBAAU,CACvC,UAAC,KAAK,EAAE,GAAG,EAAA,EAAK,OAAAC,sBAAA,CAAA,aAAA,CAACC,qBAAW,EAAKC,cAAA,CAAA,EAAA,EAAA,KAAK,EAAE,EAAA,KAAK,EAAEC,kBAAW,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAC,QAAQ,EAAA,CAAA,CAAG,CAAtE,EAAsE;;;;"}
|
|
1
|
+
{"version":3,"file":"Component.mobile.js","sources":["../../src/mobile/Component.mobile.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\n\nimport { InputMobile } from '@alfalab/core-components-input/mobile';\n\nimport { NumberInput, type NumberInputProps } from '../components/number-input';\n\nexport type NumberInputMobileProps = Omit<NumberInputProps, 'Input' | 'breakpoint' | 'view'>;\n\nexport const NumberInputMobile = forwardRef<HTMLInputElement, NumberInputMobileProps>(\n (props, ref) => <NumberInput {...props} Input={InputMobile} ref={ref} view='mobile' />,\n);\n"],"names":["forwardRef","React","NumberInput","__assign","InputMobile"],"mappings":";;;;;;;;;;;;;AAQO,IAAM,iBAAiB,GAAGA,gBAAU,CACvC,UAAC,KAAK,EAAE,GAAG,EAAA,EAAK,OAAAC,sBAAA,CAAA,aAAA,CAACC,qBAAW,EAAKC,cAAA,CAAA,EAAA,EAAA,KAAK,EAAE,EAAA,KAAK,EAAEC,kBAAW,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAC,QAAQ,EAAA,CAAA,CAAG,CAAtE,EAAsE;;;;"}
|
package/cssm/utils.d.ts
CHANGED
package/cssm/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sources":["../src/utils.ts"],"sourcesContent":["/* eslint-disable no-param-reassign */\nimport {\n MaskitoOptions,\n MaskitoPlugin,\n MaskitoPostprocessor,\n MaskitoPreprocessor,\n maskitoTransform,\n} from '@maskito/core';\n\nimport { fnUtils, getDataTestId } from '@alfalab/core-components-shared';\n\nimport { MAX_SAFE_INTEGER, MIN_SAFE_INTEGER } from './constants/min-max-safe-integer';\n\nexport const MINUS_SIGN = '-';\nexport const SEPARATORS = [',', '.'];\nexport const MAX_DIGITS = 15; // с 16 уже упираемся в MAX_SAFE_INTEGER\n\nexport function parseNumber(value: string | number | null = '') {\n if (typeof value === 'number') return value;\n\n const pseudoSeparatorsRegExp = new RegExp(`[${SEPARATORS.join('')}]`, 'gi');\n\n return value\n ? parseFloat(\n value\n .replace(new RegExp(`[^${MINUS_SIGN}${SEPARATORS.join('')}0-9]`, 'gi'), '')\n .replace(pseudoSeparatorsRegExp, '.'),\n )\n : NaN;\n}\n\n/**\n * Преобразовать число в строку с заменой экспоненты на десятичную дробь\n */\nexport function stringifyNumberWithoutExp(value: number): string {\n const valueString = String(value);\n const [numberPart, expPart] = valueString.split('e-');\n\n let valueWithoutExp = valueString;\n\n if (expPart) {\n const [, fractionalPart] = numberPart.split('.');\n const decimalDigits = Number(expPart) + (fractionalPart?.length || 0);\n\n valueWithoutExp = value.toFixed(decimalDigits);\n }\n\n return valueWithoutExp;\n}\n\nconst getNumberRegExp = (min: number, fractionLength: number): RegExp => {\n let reStr = '[0-9]*';\n\n if (min < 0) {\n reStr = `(\\\\${MINUS_SIGN})?${reStr}`;\n }\n\n if (fractionLength !== 0) {\n reStr = `${reStr}[${SEPARATORS.map((s) => `\\\\${s}`).join('')}]?[0-9]{0,${\n fractionLength || MAX_DIGITS\n }}`;\n }\n\n return new RegExp(`^${reStr}$`);\n};\n\nexport function createMaskOptions({\n separator,\n fractionLength,\n min,\n max,\n}: {\n separator: string;\n fractionLength: number;\n min: number;\n max: number;\n}): MaskitoOptions {\n return {\n mask: getNumberRegExp(min, fractionLength),\n preprocessors: [\n createPseudoSeparatorPreprocessor(separator),\n createNotEmptyIntegerPartPreprocessor({ separator, fractionLength }),\n createZeroFractionLengthPreprocessor(fractionLength, separator),\n createRepeatedSeparatorPreprocessor(separator),\n ],\n postprocessors: [\n createLeadingZeroesValidationPostprocessor(separator),\n createMinMaxPostprocessor({ min, max, separator }),\n ],\n plugins: [createNotEmptyPartsPlugin(separator), createMinMaxPlugin({ min, max })],\n };\n}\n\n/**\n * Заполняет целочисленную часть при вводе separator.\n * @example Type , => 0,\n */\nfunction createNotEmptyIntegerPartPreprocessor({\n separator,\n fractionLength,\n}: {\n separator: string;\n fractionLength: number;\n}): MaskitoPreprocessor {\n const startWithDecimalSepRegExp = new RegExp(`^\\\\D*\\\\${separator}`);\n\n return ({ elementState, data }) => {\n const { value, selection } = elementState;\n const [from] = selection;\n\n if (\n fractionLength <= 0 ||\n value.includes(separator) ||\n !data.match(startWithDecimalSepRegExp)\n ) {\n return { elementState, data };\n }\n\n const digitsBeforeCursor = value.slice(0, from).match(/\\d+/);\n\n return {\n elementState,\n data: digitsBeforeCursor ? data : `0${data}`,\n };\n };\n}\n\n/**\n * Не позволяет вводить невалидный разделитель.\n */\nfunction createPseudoSeparatorPreprocessor(separator: string): MaskitoPreprocessor {\n const pseudoSeparatorsRegExp = new RegExp(`[${SEPARATORS.join('')}]`, 'gi');\n\n return ({ elementState, data }) => {\n const { value, selection } = elementState;\n\n return {\n elementState: {\n selection,\n value: value.replace(pseudoSeparatorsRegExp, separator),\n },\n data: data.replace(pseudoSeparatorsRegExp, separator),\n };\n };\n}\n\n/**\n * Помогает верно обрезать значения при вставке, если fractionLength===0\n * @example paste 123,123 -> 123\n */\nfunction createZeroFractionLengthPreprocessor(\n fractionLength: number,\n separator: string,\n): MaskitoPreprocessor {\n if (fractionLength > 0) {\n return (state) => state;\n }\n\n const decimalPartRegExp = new RegExp(`\\\\${separator}.*$`, 'g');\n\n return ({ elementState, data }) => {\n const { value, selection } = elementState;\n const [from, to] = selection;\n const newValue = value.replace(decimalPartRegExp, '');\n\n return {\n elementState: {\n selection: [Math.min(from, newValue.length), Math.min(to, newValue.length)],\n value: newValue,\n },\n data: data.replace(decimalPartRegExp, ''),\n };\n };\n}\n\n/**\n * Запрещает вводить второй сепаратор\n */\nfunction createRepeatedSeparatorPreprocessor(separator: string): MaskitoPreprocessor {\n return ({ elementState, data }) => {\n const { value, selection } = elementState;\n const [from, to] = selection;\n\n return {\n elementState,\n data:\n !value.includes(separator) || value.slice(from, to + 1).includes(separator)\n ? data\n : data.replace(new RegExp(`\\\\${separator}`), ''),\n };\n };\n}\n\n/**\n * Удаляет лишние нули в начале целой части.\n * @example 0,|00005 => Backspace => |5\n * @example -0,|00005 => Backspace => -|5\n * @example \"000000\" => 0|\n * @example 0| => Type \"5\" => 5|\n */\nfunction createLeadingZeroesValidationPostprocessor(separator: string): MaskitoPostprocessor {\n const trimLeadingZeroes = (value: string): string =>\n value\n .replace(new RegExp('^(\\\\D+)?0+(?=0)'), '$1')\n .replace(new RegExp('^(\\\\D+)?0+(?=[1-9])'), '$1');\n\n const countTrimmedZeroesBefore = (value: string, index: number): number => {\n const valueBefore = value.slice(0, index);\n const followedByZero = value.slice(index).startsWith('0');\n\n return (\n valueBefore.length - trimLeadingZeroes(valueBefore).length + (followedByZero ? 1 : 0)\n );\n };\n\n return ({ value, selection }) => {\n const [from, to] = selection;\n const hasSeparator = value.includes(separator);\n const [integerPart, decimalPart = ''] = value.split(separator);\n const zeroTrimmedIntegerPart = trimLeadingZeroes(integerPart);\n\n if (integerPart === zeroTrimmedIntegerPart) {\n return { value, selection };\n }\n\n const newFrom = from - countTrimmedZeroesBefore(value, from);\n const newTo = to - countTrimmedZeroesBefore(value, to);\n\n return {\n value: zeroTrimmedIntegerPart + (hasSeparator ? separator : '') + decimalPart,\n selection: [Math.max(newFrom, 0), Math.max(newTo, 0)],\n };\n };\n}\n\n/**\n * Валидирует значение с учетом min max значений.\n * Работает совместно с createMinMaxPlugin\n */\nfunction createMinMaxPostprocessor({\n min,\n max,\n separator,\n}: {\n min: number;\n max: number;\n separator: string;\n}): MaskitoPostprocessor {\n return ({ value, selection }) => {\n const parsedNumber = parseNumber(value);\n\n const limitedValue =\n /**\n * Здесь невозможно ограничить нижнюю границу, если пользователь вводит положительное число.\n * То же самое для верхней границы и отрицательного числа.\n * Если min=5, то без этого условия не получится ввести 40, похожая ситуация и с отрицательным max\n */\n parsedNumber > 0 ? Math.min(parsedNumber, max) : Math.max(parsedNumber, min);\n\n if (!Number.isNaN(parsedNumber) && limitedValue !== parsedNumber) {\n const newValue = `${limitedValue}`.replace('.', separator);\n\n return {\n value: newValue,\n selection: [newValue.length, newValue.length],\n };\n }\n\n return {\n value,\n selection,\n };\n };\n}\n\nexport function createMinMaxPlugin({ min, max }: { min: number; max: number }): MaskitoPlugin {\n return (element, options) => {\n const listener = () => {\n const parsedNumber = parseNumber(element.value);\n\n const clampedNumber = fnUtils.clamp(parsedNumber, min, max);\n\n if (!Number.isNaN(parsedNumber) && parsedNumber !== clampedNumber) {\n element.value = maskitoTransform(stringifyNumberWithoutExp(clampedNumber), options);\n element.dispatchEvent(new Event('input', { bubbles: true }));\n }\n };\n\n const evListenerOptions = { capture: true };\n\n element.addEventListener('blur', listener, evListenerOptions);\n\n return () => element.removeEventListener('blur', listener, evListenerOptions);\n };\n}\n\nexport function createNotEmptyPartsPlugin(separator: string): MaskitoPlugin {\n return (element) => {\n const listener = () => {\n const newValue = element.value\n // 0,9000000 -> 0,9\n .replace(new RegExp(`(\\\\${separator}\\\\d*?)(0+$)`), '$1')\n // ,2 => 0,2\n .replace(new RegExp(`^(\\\\D+)?\\\\${separator}`), `$10${separator}`)\n // 0, -> 0\n .replace(new RegExp(`\\\\${separator}$`), '')\n // -0 -> 0\n .replace(new RegExp(`^${MINUS_SIGN}0$`), '0')\n // - -> ''\n .replace(new RegExp(`^${MINUS_SIGN}$`), '');\n\n if (newValue !== element.value) {\n element.value = newValue;\n element.dispatchEvent(new Event('input', { bubbles: true }));\n }\n };\n\n const evListenerOptions = { capture: true };\n\n element.addEventListener('blur', listener, evListenerOptions);\n\n return () => element.removeEventListener('blur', listener, evListenerOptions);\n };\n}\n\nexport function getNumberInputTestIds(dataTestId: string) {\n return {\n input: dataTestId,\n inputWrapper: getDataTestId(dataTestId, 'form-control'),\n inputWrapperInner: getDataTestId(dataTestId, 'form-control-inner'),\n leftAddons: getDataTestId(dataTestId, 'form-control-left-addons'),\n rightAddons: getDataTestId(dataTestId, 'form-control-right-addons'),\n error: getDataTestId(dataTestId, 'form-control-error-message'),\n hint: getDataTestId(dataTestId, 'form-control-hint'),\n decrementButton: getDataTestId(dataTestId, 'decrement-button'),\n incrementButton: getDataTestId(dataTestId, 'increment-button'),\n };\n}\n\n/**\n * Определение минимального / максимального значения\n * @description Если значение не передано, вернется { Number.MIN_SAFE_INTEGER, Number.MAX_SAFE_INTEGER }\n */\nexport const getMinMaxOrDefault = ({\n minProp,\n maxProp,\n}: {\n minProp?: number;\n maxProp?: number;\n}) => {\n const min = Math.max(MIN_SAFE_INTEGER, minProp ?? MIN_SAFE_INTEGER);\n const max = Math.min(MAX_SAFE_INTEGER, maxProp ?? MAX_SAFE_INTEGER);\n\n return { min, max };\n};\n"],"names":["fnUtils","maskitoTransform","getDataTestId","MIN_SAFE_INTEGER","MAX_SAFE_INTEGER"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../src/utils.ts"],"sourcesContent":["/* eslint-disable no-param-reassign */\nimport {\n type MaskitoOptions,\n type MaskitoPlugin,\n type MaskitoPostprocessor,\n type MaskitoPreprocessor,\n maskitoTransform,\n} from '@maskito/core';\n\nimport { fnUtils, getDataTestId } from '@alfalab/core-components-shared';\n\nimport { MAX_SAFE_INTEGER, MIN_SAFE_INTEGER } from './constants/min-max-safe-integer';\n\nexport const MINUS_SIGN = '-';\nexport const SEPARATORS = [',', '.'];\nexport const MAX_DIGITS = 15; // с 16 уже упираемся в MAX_SAFE_INTEGER\n\nexport function parseNumber(value: string | number | null = '') {\n if (typeof value === 'number') return value;\n\n const pseudoSeparatorsRegExp = new RegExp(`[${SEPARATORS.join('')}]`, 'gi');\n\n return value\n ? parseFloat(\n value\n .replace(new RegExp(`[^${MINUS_SIGN}${SEPARATORS.join('')}0-9]`, 'gi'), '')\n .replace(pseudoSeparatorsRegExp, '.'),\n )\n : NaN;\n}\n\n/**\n * Преобразовать число в строку с заменой экспоненты на десятичную дробь\n */\nexport function stringifyNumberWithoutExp(value: number): string {\n const valueString = String(value);\n const [numberPart, expPart] = valueString.split('e-');\n\n let valueWithoutExp = valueString;\n\n if (expPart) {\n const [, fractionalPart] = numberPart.split('.');\n const decimalDigits = Number(expPart) + (fractionalPart?.length || 0);\n\n valueWithoutExp = value.toFixed(decimalDigits);\n }\n\n return valueWithoutExp;\n}\n\nconst getNumberRegExp = (min: number, fractionLength: number): RegExp => {\n let reStr = '[0-9]*';\n\n if (min < 0) {\n reStr = `(\\\\${MINUS_SIGN})?${reStr}`;\n }\n\n if (fractionLength !== 0) {\n reStr = `${reStr}[${SEPARATORS.map((s) => `\\\\${s}`).join('')}]?[0-9]{0,${\n fractionLength || MAX_DIGITS\n }}`;\n }\n\n return new RegExp(`^${reStr}$`);\n};\n\nexport function createMaskOptions({\n separator,\n fractionLength,\n min,\n max,\n}: {\n separator: string;\n fractionLength: number;\n min: number;\n max: number;\n}): MaskitoOptions {\n return {\n mask: getNumberRegExp(min, fractionLength),\n preprocessors: [\n createPseudoSeparatorPreprocessor(separator),\n createNotEmptyIntegerPartPreprocessor({ separator, fractionLength }),\n createZeroFractionLengthPreprocessor(fractionLength, separator),\n createRepeatedSeparatorPreprocessor(separator),\n ],\n postprocessors: [\n createLeadingZeroesValidationPostprocessor(separator),\n createMinMaxPostprocessor({ min, max, separator }),\n ],\n plugins: [createNotEmptyPartsPlugin(separator), createMinMaxPlugin({ min, max })],\n };\n}\n\n/**\n * Заполняет целочисленную часть при вводе separator.\n * @example Type , => 0,\n */\nfunction createNotEmptyIntegerPartPreprocessor({\n separator,\n fractionLength,\n}: {\n separator: string;\n fractionLength: number;\n}): MaskitoPreprocessor {\n const startWithDecimalSepRegExp = new RegExp(`^\\\\D*\\\\${separator}`);\n\n return ({ elementState, data }) => {\n const { value, selection } = elementState;\n const [from] = selection;\n\n if (\n fractionLength <= 0 ||\n value.includes(separator) ||\n !data.match(startWithDecimalSepRegExp)\n ) {\n return { elementState, data };\n }\n\n const digitsBeforeCursor = value.slice(0, from).match(/\\d+/);\n\n return {\n elementState,\n data: digitsBeforeCursor ? data : `0${data}`,\n };\n };\n}\n\n/**\n * Не позволяет вводить невалидный разделитель.\n */\nfunction createPseudoSeparatorPreprocessor(separator: string): MaskitoPreprocessor {\n const pseudoSeparatorsRegExp = new RegExp(`[${SEPARATORS.join('')}]`, 'gi');\n\n return ({ elementState, data }) => {\n const { value, selection } = elementState;\n\n return {\n elementState: {\n selection,\n value: value.replace(pseudoSeparatorsRegExp, separator),\n },\n data: data.replace(pseudoSeparatorsRegExp, separator),\n };\n };\n}\n\n/**\n * Помогает верно обрезать значения при вставке, если fractionLength===0\n * @example paste 123,123 -> 123\n */\nfunction createZeroFractionLengthPreprocessor(\n fractionLength: number,\n separator: string,\n): MaskitoPreprocessor {\n if (fractionLength > 0) {\n return (state) => state;\n }\n\n const decimalPartRegExp = new RegExp(`\\\\${separator}.*$`, 'g');\n\n return ({ elementState, data }) => {\n const { value, selection } = elementState;\n const [from, to] = selection;\n const newValue = value.replace(decimalPartRegExp, '');\n\n return {\n elementState: {\n selection: [Math.min(from, newValue.length), Math.min(to, newValue.length)],\n value: newValue,\n },\n data: data.replace(decimalPartRegExp, ''),\n };\n };\n}\n\n/**\n * Запрещает вводить второй сепаратор\n */\nfunction createRepeatedSeparatorPreprocessor(separator: string): MaskitoPreprocessor {\n return ({ elementState, data }) => {\n const { value, selection } = elementState;\n const [from, to] = selection;\n\n return {\n elementState,\n data:\n !value.includes(separator) || value.slice(from, to + 1).includes(separator)\n ? data\n : data.replace(new RegExp(`\\\\${separator}`), ''),\n };\n };\n}\n\n/**\n * Удаляет лишние нули в начале целой части.\n * @example 0,|00005 => Backspace => |5\n * @example -0,|00005 => Backspace => -|5\n * @example \"000000\" => 0|\n * @example 0| => Type \"5\" => 5|\n */\nfunction createLeadingZeroesValidationPostprocessor(separator: string): MaskitoPostprocessor {\n const trimLeadingZeroes = (value: string): string =>\n value\n .replace(new RegExp('^(\\\\D+)?0+(?=0)'), '$1')\n .replace(new RegExp('^(\\\\D+)?0+(?=[1-9])'), '$1');\n\n const countTrimmedZeroesBefore = (value: string, index: number): number => {\n const valueBefore = value.slice(0, index);\n const followedByZero = value.slice(index).startsWith('0');\n\n return (\n valueBefore.length - trimLeadingZeroes(valueBefore).length + (followedByZero ? 1 : 0)\n );\n };\n\n return ({ value, selection }) => {\n const [from, to] = selection;\n const hasSeparator = value.includes(separator);\n const [integerPart, decimalPart = ''] = value.split(separator);\n const zeroTrimmedIntegerPart = trimLeadingZeroes(integerPart);\n\n if (integerPart === zeroTrimmedIntegerPart) {\n return { value, selection };\n }\n\n const newFrom = from - countTrimmedZeroesBefore(value, from);\n const newTo = to - countTrimmedZeroesBefore(value, to);\n\n return {\n value: zeroTrimmedIntegerPart + (hasSeparator ? separator : '') + decimalPart,\n selection: [Math.max(newFrom, 0), Math.max(newTo, 0)],\n };\n };\n}\n\n/**\n * Валидирует значение с учетом min max значений.\n * Работает совместно с createMinMaxPlugin\n */\nfunction createMinMaxPostprocessor({\n min,\n max,\n separator,\n}: {\n min: number;\n max: number;\n separator: string;\n}): MaskitoPostprocessor {\n return ({ value, selection }) => {\n const parsedNumber = parseNumber(value);\n\n const limitedValue =\n /**\n * Здесь невозможно ограничить нижнюю границу, если пользователь вводит положительное число.\n * То же самое для верхней границы и отрицательного числа.\n * Если min=5, то без этого условия не получится ввести 40, похожая ситуация и с отрицательным max\n */\n parsedNumber > 0 ? Math.min(parsedNumber, max) : Math.max(parsedNumber, min);\n\n if (!Number.isNaN(parsedNumber) && limitedValue !== parsedNumber) {\n const newValue = `${limitedValue}`.replace('.', separator);\n\n return {\n value: newValue,\n selection: [newValue.length, newValue.length],\n };\n }\n\n return {\n value,\n selection,\n };\n };\n}\n\nexport function createMinMaxPlugin({ min, max }: { min: number; max: number }): MaskitoPlugin {\n return (element, options) => {\n const listener = () => {\n const parsedNumber = parseNumber(element.value);\n\n const clampedNumber = fnUtils.clamp(parsedNumber, min, max);\n\n if (!Number.isNaN(parsedNumber) && parsedNumber !== clampedNumber) {\n element.value = maskitoTransform(stringifyNumberWithoutExp(clampedNumber), options);\n element.dispatchEvent(new Event('input', { bubbles: true }));\n }\n };\n\n const evListenerOptions = { capture: true };\n\n element.addEventListener('blur', listener, evListenerOptions);\n\n return () => element.removeEventListener('blur', listener, evListenerOptions);\n };\n}\n\nexport function createNotEmptyPartsPlugin(separator: string): MaskitoPlugin {\n return (element) => {\n const listener = () => {\n const newValue = element.value\n // 0,9000000 -> 0,9\n .replace(new RegExp(`(\\\\${separator}\\\\d*?)(0+$)`), '$1')\n // ,2 => 0,2\n .replace(new RegExp(`^(\\\\D+)?\\\\${separator}`), `$10${separator}`)\n // 0, -> 0\n .replace(new RegExp(`\\\\${separator}$`), '')\n // -0 -> 0\n .replace(new RegExp(`^${MINUS_SIGN}0$`), '0')\n // - -> ''\n .replace(new RegExp(`^${MINUS_SIGN}$`), '');\n\n if (newValue !== element.value) {\n element.value = newValue;\n element.dispatchEvent(new Event('input', { bubbles: true }));\n }\n };\n\n const evListenerOptions = { capture: true };\n\n element.addEventListener('blur', listener, evListenerOptions);\n\n return () => element.removeEventListener('blur', listener, evListenerOptions);\n };\n}\n\nexport function getNumberInputTestIds(dataTestId: string) {\n return {\n input: dataTestId,\n inputWrapper: getDataTestId(dataTestId, 'form-control'),\n inputWrapperInner: getDataTestId(dataTestId, 'form-control-inner'),\n leftAddons: getDataTestId(dataTestId, 'form-control-left-addons'),\n rightAddons: getDataTestId(dataTestId, 'form-control-right-addons'),\n error: getDataTestId(dataTestId, 'form-control-error-message'),\n hint: getDataTestId(dataTestId, 'form-control-hint'),\n decrementButton: getDataTestId(dataTestId, 'decrement-button'),\n incrementButton: getDataTestId(dataTestId, 'increment-button'),\n };\n}\n\n/**\n * Определение минимального / максимального значения\n * @description Если значение не передано, вернется { Number.MIN_SAFE_INTEGER, Number.MAX_SAFE_INTEGER }\n */\nexport const getMinMaxOrDefault = ({\n minProp,\n maxProp,\n}: {\n minProp?: number;\n maxProp?: number;\n}) => {\n const min = Math.max(MIN_SAFE_INTEGER, minProp ?? MIN_SAFE_INTEGER);\n const max = Math.min(MAX_SAFE_INTEGER, maxProp ?? MAX_SAFE_INTEGER);\n\n return { min, max };\n};\n"],"names":["fnUtils","maskitoTransform","getDataTestId","MIN_SAFE_INTEGER","MAX_SAFE_INTEGER"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { NumberInputProps } from '../components/number-input';
|
|
2
|
+
import { type NumberInputProps } from '../components/number-input';
|
|
3
3
|
export declare type NumberInputDesktopProps = Omit<NumberInputProps, 'Input' | 'breakpoint' | 'view'>;
|
|
4
4
|
export declare const NumberInputDesktop: React.ForwardRefExoticComponent<NumberInputDesktopProps & React.RefAttributes<HTMLInputElement>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Component.desktop.js","sources":["../src/desktop/Component.desktop.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\n\nimport { InputDesktop } from '@alfalab/core-components-input/desktop';\n\nimport { NumberInput, NumberInputProps } from '../components/number-input';\n\nexport type NumberInputDesktopProps = Omit<NumberInputProps, 'Input' | 'breakpoint' | 'view'>;\n\nexport const NumberInputDesktop = forwardRef<HTMLInputElement, NumberInputDesktopProps>(\n (props, ref) => <NumberInput {...props} Input={InputDesktop} ref={ref} view='desktop' />,\n);\n"],"names":["forwardRef","React","NumberInput","__assign","InputDesktop"],"mappings":";;;;;;;;;;;;;AAQO,IAAM,kBAAkB,GAAGA,gBAAU,CACxC,UAAC,KAAK,EAAE,GAAG,EAAA,EAAK,OAAAC,sBAAA,CAAA,aAAA,CAACC,qBAAW,EAAKC,cAAA,CAAA,EAAA,EAAA,KAAK,EAAE,EAAA,KAAK,EAAEC,oBAAY,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAC,SAAS,EAAA,CAAA,CAAG,CAAxE,EAAwE;;;;"}
|
|
1
|
+
{"version":3,"file":"Component.desktop.js","sources":["../src/desktop/Component.desktop.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\n\nimport { InputDesktop } from '@alfalab/core-components-input/desktop';\n\nimport { NumberInput, type NumberInputProps } from '../components/number-input';\n\nexport type NumberInputDesktopProps = Omit<NumberInputProps, 'Input' | 'breakpoint' | 'view'>;\n\nexport const NumberInputDesktop = forwardRef<HTMLInputElement, NumberInputDesktopProps>(\n (props, ref) => <NumberInput {...props} Input={InputDesktop} ref={ref} view='desktop' />,\n);\n"],"names":["forwardRef","React","NumberInput","__assign","InputDesktop"],"mappings":";;;;;;;;;;;;;AAQO,IAAM,kBAAkB,GAAGA,gBAAU,CACxC,UAAC,KAAK,EAAE,GAAG,EAAA,EAAK,OAAAC,sBAAA,CAAA,aAAA,CAACC,qBAAW,EAAKC,cAAA,CAAA,EAAA,EAAA,KAAK,EAAE,EAAA,KAAK,EAAEC,oBAAY,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAC,SAAS,EAAA,CAAA,CAAG,CAAxE,EAAwE;;;;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { NumberInputProps } from './components/number-input';
|
|
2
|
+
import { type NumberInputProps } from './components/number-input';
|
|
3
3
|
export declare type NumberInputResponsiveProps = Omit<NumberInputProps, 'Input' | 'view'>;
|
|
4
4
|
export declare const NumberInputResponsive: React.ForwardRefExoticComponent<NumberInputResponsiveProps & React.RefAttributes<HTMLInputElement>>;
|