@salutejs/plasma-new-hope 0.146.0-canary.1436.10882554984.0 → 0.147.0-canary.1418.10899581491.0
Sign up to get free protection for your applications and to get access to all the features.
- package/cjs/components/Mask/Mask.js +209 -0
- package/cjs/components/Mask/Mask.js.map +1 -0
- package/cjs/components/Mask/utils/constants.js +33 -0
- package/cjs/components/Mask/utils/constants.js.map +1 -0
- package/cjs/components/Mask/utils/createMask.js +53 -0
- package/cjs/components/Mask/utils/createMask.js.map +1 -0
- package/cjs/components/Mask/utils/mask.js +244 -0
- package/cjs/components/Mask/utils/mask.js.map +1 -0
- package/cjs/components/Mask/utils/parseMask.js +38 -0
- package/cjs/components/Mask/utils/parseMask.js.map +1 -0
- package/cjs/components/Mask/utils/processInput.js +54 -0
- package/cjs/components/Mask/utils/processInput.js.map +1 -0
- package/cjs/components/Mask/utils/processMask.js +101 -0
- package/cjs/components/Mask/utils/processMask.js.map +1 -0
- package/cjs/components/Mask/utils/selection.js +50 -0
- package/cjs/components/Mask/utils/selection.js.map +1 -0
- package/cjs/components/TextField/TextField.js +3 -1
- package/cjs/components/TextField/TextField.js.map +1 -1
- package/cjs/index.js +2 -0
- package/cjs/index.js.map +1 -1
- package/emotion/cjs/components/Mask/Mask.js +220 -0
- package/emotion/cjs/components/Mask/Mask.template-doc.mdx +126 -0
- package/emotion/cjs/components/Mask/Mask.types.js +5 -0
- package/emotion/cjs/components/Mask/index.js +12 -0
- package/emotion/cjs/components/Mask/utils/constants.js +29 -0
- package/emotion/cjs/components/Mask/utils/createMask.js +50 -0
- package/emotion/cjs/components/Mask/utils/mask.js +247 -0
- package/emotion/cjs/components/Mask/utils/parseMask.js +36 -0
- package/emotion/cjs/components/Mask/utils/processInput.js +52 -0
- package/emotion/cjs/components/Mask/utils/processMask.js +99 -0
- package/emotion/cjs/components/Mask/utils/selection.js +48 -0
- package/emotion/cjs/components/TextField/TextField.js +4 -2
- package/emotion/cjs/examples/plasma_b2c/components/Mask/Mask.js +9 -0
- package/emotion/cjs/examples/plasma_b2c/components/Mask/Mask.stories.tsx +127 -0
- package/emotion/cjs/examples/plasma_web/components/Mask/Mask.js +9 -0
- package/emotion/cjs/examples/plasma_web/components/Mask/Mask.stories.tsx +125 -0
- package/emotion/cjs/index.js +11 -0
- package/emotion/es/components/Mask/Mask.js +212 -0
- package/emotion/es/components/Mask/Mask.template-doc.mdx +126 -0
- package/emotion/es/components/Mask/Mask.types.js +1 -0
- package/emotion/es/components/Mask/index.js +1 -0
- package/emotion/es/components/Mask/utils/constants.js +23 -0
- package/emotion/es/components/Mask/utils/createMask.js +44 -0
- package/emotion/es/components/Mask/utils/mask.js +243 -0
- package/emotion/es/components/Mask/utils/parseMask.js +30 -0
- package/emotion/es/components/Mask/utils/processInput.js +46 -0
- package/emotion/es/components/Mask/utils/processMask.js +93 -0
- package/emotion/es/components/Mask/utils/selection.js +42 -0
- package/emotion/es/components/TextField/TextField.js +4 -2
- package/emotion/es/examples/plasma_b2c/components/Mask/Mask.js +3 -0
- package/emotion/es/examples/plasma_b2c/components/Mask/Mask.stories.tsx +127 -0
- package/emotion/es/examples/plasma_web/components/Mask/Mask.js +3 -0
- package/emotion/es/examples/plasma_web/components/Mask/Mask.stories.tsx +125 -0
- package/emotion/es/index.js +2 -1
- package/es/components/Mask/Mask.js +205 -0
- package/es/components/Mask/Mask.js.map +1 -0
- package/es/components/Mask/utils/constants.js +26 -0
- package/es/components/Mask/utils/constants.js.map +1 -0
- package/es/components/Mask/utils/createMask.js +48 -0
- package/es/components/Mask/utils/createMask.js.map +1 -0
- package/es/components/Mask/utils/mask.js +240 -0
- package/es/components/Mask/utils/mask.js.map +1 -0
- package/es/components/Mask/utils/parseMask.js +34 -0
- package/es/components/Mask/utils/parseMask.js.map +1 -0
- package/es/components/Mask/utils/processInput.js +50 -0
- package/es/components/Mask/utils/processInput.js.map +1 -0
- package/es/components/Mask/utils/processMask.js +97 -0
- package/es/components/Mask/utils/processMask.js.map +1 -0
- package/es/components/Mask/utils/selection.js +46 -0
- package/es/components/Mask/utils/selection.js.map +1 -0
- package/es/components/TextField/TextField.js +3 -1
- package/es/components/TextField/TextField.js.map +1 -1
- package/es/index.js +1 -0
- package/es/index.js.map +1 -1
- package/package.json +2 -2
- package/styled-components/cjs/components/Mask/Mask.js +220 -0
- package/styled-components/cjs/components/Mask/Mask.template-doc.mdx +126 -0
- package/styled-components/cjs/components/Mask/Mask.types.js +5 -0
- package/styled-components/cjs/components/Mask/index.js +12 -0
- package/styled-components/cjs/components/Mask/utils/constants.js +29 -0
- package/styled-components/cjs/components/Mask/utils/createMask.js +50 -0
- package/styled-components/cjs/components/Mask/utils/mask.js +247 -0
- package/styled-components/cjs/components/Mask/utils/parseMask.js +36 -0
- package/styled-components/cjs/components/Mask/utils/processInput.js +52 -0
- package/styled-components/cjs/components/Mask/utils/processMask.js +99 -0
- package/styled-components/cjs/components/Mask/utils/selection.js +48 -0
- package/styled-components/cjs/components/TextField/TextField.js +3 -1
- package/styled-components/cjs/examples/plasma_b2c/components/Mask/Mask.js +9 -0
- package/styled-components/cjs/examples/plasma_b2c/components/Mask/Mask.stories.tsx +127 -0
- package/styled-components/cjs/examples/plasma_web/components/Mask/Mask.js +9 -0
- package/styled-components/cjs/examples/plasma_web/components/Mask/Mask.stories.tsx +125 -0
- package/styled-components/cjs/index.js +11 -0
- package/styled-components/es/components/Mask/Mask.js +212 -0
- package/styled-components/es/components/Mask/Mask.template-doc.mdx +126 -0
- package/styled-components/es/components/Mask/Mask.types.js +1 -0
- package/styled-components/es/components/Mask/index.js +1 -0
- package/styled-components/es/components/Mask/utils/constants.js +23 -0
- package/styled-components/es/components/Mask/utils/createMask.js +44 -0
- package/styled-components/es/components/Mask/utils/mask.js +243 -0
- package/styled-components/es/components/Mask/utils/parseMask.js +30 -0
- package/styled-components/es/components/Mask/utils/processInput.js +46 -0
- package/styled-components/es/components/Mask/utils/processMask.js +93 -0
- package/styled-components/es/components/Mask/utils/selection.js +42 -0
- package/styled-components/es/components/TextField/TextField.js +3 -1
- package/styled-components/es/examples/plasma_b2c/components/Mask/Mask.js +3 -0
- package/styled-components/es/examples/plasma_b2c/components/Mask/Mask.stories.tsx +127 -0
- package/styled-components/es/examples/plasma_web/components/Mask/Mask.js +3 -0
- package/styled-components/es/examples/plasma_web/components/Mask/Mask.stories.tsx +125 -0
- package/styled-components/es/index.js +2 -1
- package/types/components/Mask/Mask.d.ts +5 -0
- package/types/components/Mask/Mask.d.ts.map +1 -0
- package/types/components/Mask/Mask.types.d.ts +84 -0
- package/types/components/Mask/Mask.types.d.ts.map +1 -0
- package/types/components/Mask/index.d.ts +2 -0
- package/types/components/Mask/index.d.ts.map +1 -0
- package/types/components/Mask/utils/constants.d.ts +15 -0
- package/types/components/Mask/utils/constants.d.ts.map +1 -0
- package/types/components/Mask/utils/createMask.d.ts +19 -0
- package/types/components/Mask/utils/createMask.d.ts.map +1 -0
- package/types/components/Mask/utils/mask.d.ts +48 -0
- package/types/components/Mask/utils/mask.d.ts.map +1 -0
- package/types/components/Mask/utils/parseMask.d.ts +3 -0
- package/types/components/Mask/utils/parseMask.d.ts.map +1 -0
- package/types/components/Mask/utils/processInput.d.ts +13 -0
- package/types/components/Mask/utils/processInput.d.ts.map +1 -0
- package/types/components/Mask/utils/processMask.d.ts +7 -0
- package/types/components/Mask/utils/processMask.d.ts.map +1 -0
- package/types/components/Mask/utils/selection.d.ts +10 -0
- package/types/components/Mask/utils/selection.d.ts.map +1 -0
- package/types/components/TextField/TextField.d.ts.map +1 -1
- package/types/examples/plasma_b2c/components/Mask/Mask.d.ts +191 -0
- package/types/examples/plasma_b2c/components/Mask/Mask.d.ts.map +1 -0
- package/types/examples/plasma_web/components/Mask/Mask.d.ts +191 -0
- package/types/examples/plasma_web/components/Mask/Mask.d.ts.map +1 -0
- package/types/index.d.ts +1 -0
- package/types/index.d.ts.map +1 -1
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"TextField.js","sources":["../../../src/components/TextField/TextField.tsx"],"sourcesContent":["import React, { forwardRef, useEffect, useRef, useState } from 'react';\nimport type { FormEventHandler, ChangeEventHandler, KeyboardEvent, ChangeEvent } from 'react';\nimport { safeUseId, useForkRef } from '@salutejs/plasma-core';\nimport { css } from '@linaria/core';\n\nimport type { RootProps } from '../../engines';\nimport { cx } from '../../utils';\n\nimport type { ChipValues, TextFieldPrimitiveValue, TextFieldProps } from './TextField.types';\nimport { base as sizeCSS } from './variations/_size/base';\nimport { base as viewCSS } from './variations/_view/base';\nimport { base as disabledCSS } from './variations/_disabled/base';\nimport { base as readOnlyCSS } from './variations/_read-only/base';\nimport { base as labelPlacementCSS } from './variations/_label-placement/base';\nimport {\n Input,\n InputContainer,\n LeftHelper,\n Label,\n InputWrapper,\n InputLabelWrapper,\n StyledContentLeft,\n StyledContentRight,\n StyledChips,\n StyledTextBefore,\n StyledTextAfter,\n StyledIndicator,\n StyledOptionalText,\n InputPlaceholder,\n} from './TextField.styles';\nimport { classes } from './TextField.tokens';\nimport { TextFieldChip } from './ui';\nimport { useKeyNavigation } from './hooks';\n\nconst optionalText = 'optional';\n\nexport const base = css`\n /* NOTE: Webkit не применяет opacity к inline тегам */\n display: block;\n`;\n\nexport const textFieldRoot = (Root: RootProps<HTMLDivElement, TextFieldProps>) =>\n forwardRef<HTMLInputElement, TextFieldProps>(\n (\n {\n id,\n className,\n style,\n\n // layout\n contentLeft,\n contentRight,\n label,\n labelPlacement,\n textBefore,\n textAfter,\n placeholder,\n leftHelper,\n enumerationType = 'plain',\n requiredPlacement = 'right',\n\n // variations\n view,\n size,\n readOnly = false,\n disabled = false,\n required = false,\n optional,\n\n // controlled\n value: outerValue,\n chips: values,\n\n // events\n onChange,\n onChangeChips,\n onSearch,\n onKeyDown,\n\n ...rest\n },\n ref,\n ) => {\n const contentRef = useRef<HTMLDivElement>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n const inputForkRef = useForkRef(inputRef, ref);\n const chipsRefs = useRef<Array<HTMLButtonElement>>([]);\n\n const controlledRefs = { contentRef, inputRef, chipsRefs };\n\n const [hasValue, setHasValue] = useState(\n Boolean(outerValue) || Boolean(inputRef?.current?.value) || Boolean(rest?.defaultValue),\n );\n const [chips, setChips] = useState<Array<ChipValues>>([]);\n\n const uniqId = safeUseId();\n const innerId = id || uniqId;\n const labelId = safeUseId();\n const helperTextId = safeUseId();\n\n const isChipEnumeration = enumerationType === 'chip';\n const isChipsVisible = isChipEnumeration && Boolean(chips?.length);\n const withHasChips = isChipsVisible ? classes.hasChips : undefined;\n\n const hasLabelValue = Boolean(label);\n const hasInnerLabel = size !== 'xs' && labelPlacement === 'inner' && !isChipsVisible && hasLabelValue;\n const hasOuterLabel = labelPlacement === 'outer' && hasLabelValue;\n const hasPlaceholder = Boolean(placeholder) && !hasInnerLabel;\n\n const innerLabelValue = hasInnerLabel || hasOuterLabel ? label : undefined;\n const innerLabelPlacementValue = labelPlacement === 'inner' && !hasInnerLabel ? undefined : labelPlacement;\n\n const innerPlaceholderValue = hasPlaceholder ? placeholder : undefined;\n const placeholderShown = Boolean(innerPlaceholderValue) && !hasValue;\n\n const requiredPlacementClass = requiredPlacement === 'right' ? 'align-right ' : undefined;\n const labelPlacementClass = innerLabelPlacementValue\n ? classes[`${innerLabelPlacementValue}LabelPlacement` as keyof typeof classes]\n : undefined;\n const hasValueClass = hasValue ? classes.hasValue : undefined;\n\n const wrapperWithoutLeftContent = !contentLeft && isChipsVisible ? classes.hasEmptyContentLeft : undefined;\n const wrapperWithoutRightContent =\n !contentRight && isChipsVisible ? classes.hasEmptyContentRight : undefined;\n\n const handleInput: FormEventHandler<HTMLInputElement> = (event) => {\n setHasValue(Boolean((event.target as HTMLInputElement).value));\n };\n\n const handleChange: ChangeEventHandler<HTMLInputElement> = (event) => {\n if (disabled || readOnly) {\n return;\n }\n\n const { maxLength, value } = event.target;\n\n if (maxLength !== -1 && value.length > maxLength) {\n return;\n }\n\n onChange?.(event);\n };\n\n const updateChips = (newChips: Array<ChipValues>, newValues: Array<TextFieldPrimitiveValue>) => {\n setChips(newChips);\n onChangeChips?.(newValues);\n };\n\n const { handleInputKeydown, handleChipKeyDown, onChipClear, handleContentKeyDown } = useKeyNavigation({\n controlledRefs,\n disabled,\n readOnly,\n chips,\n enumerationType,\n updateChips,\n onSearch,\n onChange,\n onEnterDisabled: (rest as any).onEnterDisabled,\n });\n\n const onChipClick = (event: React.MouseEvent<HTMLButtonElement>) => event.stopPropagation();\n\n const handleInputFocus = () => {\n if (readOnly || disabled || !inputRef?.current) {\n return;\n }\n\n inputRef.current.scrollTo({\n top: 0,\n left: inputRef.current.offsetLeft,\n behavior: 'smooth',\n });\n\n inputRef.current.focus();\n };\n\n const getRef = (element: HTMLButtonElement | null, index: number) => {\n if (element && chipsRefs?.current) {\n chipsRefs.current[index] = element;\n }\n };\n\n const handleOnKeyDown = (event: ChangeEvent<HTMLInputElement> & KeyboardEvent<HTMLInputElement>) => {\n handleInputKeydown(event);\n onKeyDown && onKeyDown(event);\n };\n\n useEffect(() => {\n if (!isChipEnumeration && !values?.length) {\n return;\n }\n\n const newChips =\n values?.map((value, index) => ({\n id: `${index}_${value}`,\n text: value,\n })) || [];\n\n setChips(newChips);\n }, [isChipEnumeration, values]);\n\n useEffect(() => {\n setHasValue(Boolean(rest?.defaultValue));\n }, [rest.defaultValue]);\n\n useEffect(() => {\n setHasValue(Boolean(outerValue) || Boolean(inputRef?.current?.value));\n }, [outerValue, inputRef?.current?.value]);\n\n const innerOptional = Boolean(required ? false : optional);\n const hasPlaceholderOptional = innerOptional && !innerLabelValue && !hasOuterLabel;\n const optionalTextNode = innerOptional ? (\n <StyledOptionalText>\n {Boolean(hasPlaceholderOptional ? innerPlaceholderValue : innerLabelValue) && '\\xa0'}\n {optionalText}\n </StyledOptionalText>\n ) : null;\n\n return (\n <Root\n view={view}\n size={size}\n disabled={disabled}\n readOnly={!disabled && readOnly}\n labelPlacement={innerLabelPlacementValue}\n onClick={handleInputFocus}\n className={cx(labelPlacementClass, classes.textFieldGroupItem, className)}\n style={style}\n >\n {hasOuterLabel && (\n <Label id={labelId} htmlFor={id}>\n {required && (\n <StyledIndicator className={cx(classes.outerLabelPlacement, requiredPlacementClass)} />\n )}\n {innerLabelValue}\n {optionalTextNode}\n </Label>\n )}\n <InputWrapper\n // Ref для внутреннего использования. Не отдается наружу.\n ref={(rest as any).inputWrapperRef}\n className={cx(withHasChips, wrapperWithoutLeftContent, wrapperWithoutRightContent)}\n >\n {!hasOuterLabel && required && (\n <StyledIndicator className={cx(classes.innerLabelPlacement, requiredPlacementClass)} />\n )}\n {contentLeft && <StyledContentLeft>{contentLeft}</StyledContentLeft>}\n <InputLabelWrapper\n tabIndex={-1}\n ref={contentRef}\n onKeyDown={handleContentKeyDown}\n className={withHasChips}\n >\n {textBefore && <StyledTextBefore>{textBefore}</StyledTextBefore>}\n {isChipEnumeration && Boolean(chips?.length) && (\n <StyledChips>\n {chips?.map(({ id: chipId, text }, index) => {\n return (\n <TextFieldChip\n id={chipId}\n ref={(element) => getRef(element, index)}\n key={`${chipId}_${index}`}\n disabled={disabled}\n readOnly={readOnly}\n value={text}\n text={text}\n onKeyDown={(event) => handleChipKeyDown(event, chipId, index)}\n onClear={() => onChipClear(chipId, index)}\n onClick={onChipClick}\n />\n );\n })}\n </StyledChips>\n )}\n <InputContainer>\n <Input\n ref={inputForkRef}\n id={innerId}\n value={outerValue}\n aria-labelledby={labelId}\n aria-describedby={helperTextId}\n placeholder={innerPlaceholderValue}\n className={cx(hasValueClass)}\n disabled={disabled}\n readOnly={!disabled && readOnly}\n onInput={handleInput}\n onChange={handleChange}\n onKeyDown={handleOnKeyDown}\n {...rest}\n />\n {hasInnerLabel && (\n <Label id={labelId} htmlFor={innerId}>\n {innerLabelValue}\n {optionalTextNode}\n </Label>\n )}\n {placeholderShown && !hasValue && (\n <InputPlaceholder>\n {innerPlaceholderValue}\n {hasPlaceholderOptional && optionalTextNode}\n </InputPlaceholder>\n )}\n </InputContainer>\n {textAfter && <StyledTextAfter>{textAfter}</StyledTextAfter>}\n </InputLabelWrapper>\n {contentRight && <StyledContentRight>{contentRight}</StyledContentRight>}\n </InputWrapper>\n {leftHelper && <LeftHelper id={helperTextId}>{leftHelper}</LeftHelper>}\n </Root>\n );\n },\n );\n\nexport const textFieldConfig = {\n name: 'TextField',\n tag: 'div',\n layout: textFieldRoot,\n base,\n variations: {\n view: {\n css: viewCSS,\n },\n size: {\n css: sizeCSS,\n },\n disabled: {\n css: disabledCSS,\n attrs: true,\n },\n readOnly: {\n css: readOnlyCSS,\n attrs: true,\n },\n labelPlacement: {\n css: labelPlacementCSS,\n },\n },\n defaults: {\n size: 'm',\n view: 'default',\n },\n};\n"],"names":["optionalText","base","textFieldRoot","Root","forwardRef","_ref","ref","_inputRef$current","_inputRef$current3","id","className","style","contentLeft","contentRight","label","labelPlacement","textBefore","textAfter","placeholder","leftHelper","_ref$enumerationType","enumerationType","_ref$requiredPlacemen","requiredPlacement","view","size","_ref$readOnly","readOnly","_ref$disabled","disabled","_ref$required","required","optional","outerValue","value","values","chips","onChange","onChangeChips","onSearch","onKeyDown","rest","contentRef","useRef","inputRef","inputForkRef","useForkRef","chipsRefs","controlledRefs","_useState","useState","Boolean","current","defaultValue","_useState2","_slicedToArray","hasValue","setHasValue","_useState3","_useState4","setChips","uniqId","safeUseId","innerId","labelId","helperTextId","isChipEnumeration","isChipsVisible","length","withHasChips","classes","hasChips","undefined","hasLabelValue","hasInnerLabel","hasOuterLabel","hasPlaceholder","innerLabelValue","innerLabelPlacementValue","innerPlaceholderValue","placeholderShown","requiredPlacementClass","labelPlacementClass","concat","hasValueClass","wrapperWithoutLeftContent","hasEmptyContentLeft","wrapperWithoutRightContent","hasEmptyContentRight","handleInput","event","target","handleChange","_event$target","maxLength","updateChips","newChips","newValues","_useKeyNavigation","useKeyNavigation","onEnterDisabled","handleInputKeydown","handleChipKeyDown","onChipClear","handleContentKeyDown","onChipClick","stopPropagation","handleInputFocus","scrollTo","top","left","offsetLeft","behavior","focus","getRef","element","index","handleOnKeyDown","useEffect","map","text","_inputRef$current2","innerOptional","hasPlaceholderOptional","optionalTextNode","React","createElement","StyledOptionalText","onClick","cx","textFieldGroupItem","Label","htmlFor","StyledIndicator","outerLabelPlacement","InputWrapper","inputWrapperRef","innerLabelPlacement","StyledContentLeft","InputLabelWrapper","tabIndex","StyledTextBefore","StyledChips","_ref2","chipId","TextFieldChip","key","onClear","InputContainer","Input","_extends","onInput","InputPlaceholder","StyledTextAfter","StyledContentRight","LeftHelper","textFieldConfig","name","tag","layout","variations","css","viewCSS","sizeCSS","disabledCSS","attrs","readOnlyCSS","labelPlacementCSS","defaults"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"TextField.js","sources":["../../../src/components/TextField/TextField.tsx"],"sourcesContent":["import React, { forwardRef, useEffect, useRef, useState } from 'react';\nimport type { FormEventHandler, ChangeEventHandler, KeyboardEvent, ChangeEvent } from 'react';\nimport { safeUseId, useForkRef } from '@salutejs/plasma-core';\nimport { css } from '@linaria/core';\n\nimport type { RootProps } from '../../engines';\nimport { cx } from '../../utils';\n\nimport type { ChipValues, TextFieldPrimitiveValue, TextFieldProps } from './TextField.types';\nimport { base as sizeCSS } from './variations/_size/base';\nimport { base as viewCSS } from './variations/_view/base';\nimport { base as disabledCSS } from './variations/_disabled/base';\nimport { base as readOnlyCSS } from './variations/_read-only/base';\nimport { base as labelPlacementCSS } from './variations/_label-placement/base';\nimport {\n Input,\n InputContainer,\n LeftHelper,\n Label,\n InputWrapper,\n InputLabelWrapper,\n StyledContentLeft,\n StyledContentRight,\n StyledChips,\n StyledTextBefore,\n StyledTextAfter,\n StyledIndicator,\n StyledOptionalText,\n InputPlaceholder,\n} from './TextField.styles';\nimport { classes } from './TextField.tokens';\nimport { TextFieldChip } from './ui';\nimport { useKeyNavigation } from './hooks';\n\nconst optionalText = 'optional';\n\nexport const base = css`\n /* NOTE: Webkit не применяет opacity к inline тегам */\n display: block;\n`;\n\nexport const textFieldRoot = (Root: RootProps<HTMLDivElement, TextFieldProps>) =>\n forwardRef<HTMLInputElement, TextFieldProps>(\n (\n {\n id,\n className,\n style,\n\n // layout\n contentLeft,\n contentRight,\n label,\n labelPlacement,\n textBefore,\n textAfter,\n placeholder,\n leftHelper,\n enumerationType = 'plain',\n requiredPlacement = 'right',\n\n // variations\n view,\n size,\n readOnly = false,\n disabled = false,\n required = false,\n optional,\n\n // controlled\n value: outerValue,\n chips: values,\n\n // events\n onChange,\n onChangeChips,\n onSearch,\n onKeyDown,\n\n ...rest\n },\n ref,\n ) => {\n const contentRef = useRef<HTMLDivElement>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n const inputForkRef = useForkRef(inputRef, ref);\n const chipsRefs = useRef<Array<HTMLButtonElement>>([]);\n\n const controlledRefs = { contentRef, inputRef, chipsRefs };\n\n const [hasValue, setHasValue] = useState(\n Boolean(outerValue) || Boolean(inputRef?.current?.value) || Boolean(rest?.defaultValue),\n );\n const [chips, setChips] = useState<Array<ChipValues>>([]);\n\n const uniqId = safeUseId();\n const innerId = id || uniqId;\n const labelId = safeUseId();\n const helperTextId = safeUseId();\n\n const isChipEnumeration = enumerationType === 'chip';\n const isChipsVisible = isChipEnumeration && Boolean(chips?.length);\n const withHasChips = isChipsVisible ? classes.hasChips : undefined;\n\n const hasLabelValue = Boolean(label);\n const hasInnerLabel = size !== 'xs' && labelPlacement === 'inner' && !isChipsVisible && hasLabelValue;\n const hasOuterLabel = labelPlacement === 'outer' && hasLabelValue;\n const hasPlaceholder = Boolean(placeholder) && !hasInnerLabel;\n\n const innerLabelValue = hasInnerLabel || hasOuterLabel ? label : undefined;\n const innerLabelPlacementValue = labelPlacement === 'inner' && !hasInnerLabel ? undefined : labelPlacement;\n\n const innerPlaceholderValue = hasPlaceholder ? placeholder : undefined;\n const placeholderShown = Boolean(innerPlaceholderValue) && !hasValue;\n\n const requiredPlacementClass = requiredPlacement === 'right' ? 'align-right ' : undefined;\n const labelPlacementClass = innerLabelPlacementValue\n ? classes[`${innerLabelPlacementValue}LabelPlacement` as keyof typeof classes]\n : undefined;\n const hasValueClass = hasValue ? classes.hasValue : undefined;\n\n const wrapperWithoutLeftContent = !contentLeft && isChipsVisible ? classes.hasEmptyContentLeft : undefined;\n const wrapperWithoutRightContent =\n !contentRight && isChipsVisible ? classes.hasEmptyContentRight : undefined;\n\n const handleInput: FormEventHandler<HTMLInputElement> = (event) => {\n setHasValue(Boolean((event.target as HTMLInputElement).value));\n };\n\n const handleChange: ChangeEventHandler<HTMLInputElement> = (event) => {\n if (disabled || readOnly) {\n return;\n }\n\n const { maxLength, value } = event.target;\n\n if (maxLength !== -1 && value.length > maxLength) {\n return;\n }\n\n onChange?.(event);\n };\n\n const updateChips = (newChips: Array<ChipValues>, newValues: Array<TextFieldPrimitiveValue>) => {\n setChips(newChips);\n onChangeChips?.(newValues);\n };\n\n const { handleInputKeydown, handleChipKeyDown, onChipClear, handleContentKeyDown } = useKeyNavigation({\n controlledRefs,\n disabled,\n readOnly,\n chips,\n enumerationType,\n updateChips,\n onSearch,\n onChange,\n onEnterDisabled: (rest as any).onEnterDisabled,\n });\n\n const onChipClick = (event: React.MouseEvent<HTMLButtonElement>) => event.stopPropagation();\n\n const handleInputFocus = () => {\n if (readOnly || disabled || !inputRef?.current) {\n return;\n }\n\n inputRef.current.scrollTo({\n top: 0,\n left: inputRef.current.offsetLeft,\n behavior: 'smooth',\n });\n\n inputRef.current.focus();\n };\n\n const getRef = (element: HTMLButtonElement | null, index: number) => {\n if (element && chipsRefs?.current) {\n chipsRefs.current[index] = element;\n }\n };\n\n const handleOnKeyDown = (event: ChangeEvent<HTMLInputElement> & KeyboardEvent<HTMLInputElement>) => {\n handleInputKeydown(event);\n\n if (onKeyDown) {\n onKeyDown(event);\n }\n };\n\n useEffect(() => {\n if (!isChipEnumeration && !values?.length) {\n return;\n }\n\n const newChips =\n values?.map((value, index) => ({\n id: `${index}_${value}`,\n text: value,\n })) || [];\n\n setChips(newChips);\n }, [isChipEnumeration, values]);\n\n useEffect(() => {\n setHasValue(Boolean(rest?.defaultValue));\n }, [rest.defaultValue]);\n\n useEffect(() => {\n setHasValue(Boolean(outerValue) || Boolean(inputRef?.current?.value));\n }, [outerValue, inputRef?.current?.value]);\n\n const innerOptional = Boolean(required ? false : optional);\n const hasPlaceholderOptional = innerOptional && !innerLabelValue && !hasOuterLabel;\n const optionalTextNode = innerOptional ? (\n <StyledOptionalText>\n {Boolean(hasPlaceholderOptional ? innerPlaceholderValue : innerLabelValue) && '\\xa0'}\n {optionalText}\n </StyledOptionalText>\n ) : null;\n\n return (\n <Root\n view={view}\n size={size}\n disabled={disabled}\n readOnly={!disabled && readOnly}\n labelPlacement={innerLabelPlacementValue}\n onClick={handleInputFocus}\n className={cx(labelPlacementClass, classes.textFieldGroupItem, className)}\n style={style}\n >\n {hasOuterLabel && (\n <Label id={labelId} htmlFor={id}>\n {required && (\n <StyledIndicator className={cx(classes.outerLabelPlacement, requiredPlacementClass)} />\n )}\n {innerLabelValue}\n {optionalTextNode}\n </Label>\n )}\n <InputWrapper\n // Ref для внутреннего использования. Не отдается наружу.\n ref={(rest as any).inputWrapperRef}\n className={cx(withHasChips, wrapperWithoutLeftContent, wrapperWithoutRightContent)}\n >\n {!hasOuterLabel && required && (\n <StyledIndicator className={cx(classes.innerLabelPlacement, requiredPlacementClass)} />\n )}\n {contentLeft && <StyledContentLeft>{contentLeft}</StyledContentLeft>}\n <InputLabelWrapper\n tabIndex={-1}\n ref={contentRef}\n onKeyDown={handleContentKeyDown}\n className={withHasChips}\n >\n {textBefore && <StyledTextBefore>{textBefore}</StyledTextBefore>}\n {isChipEnumeration && Boolean(chips?.length) && (\n <StyledChips>\n {chips?.map(({ id: chipId, text }, index) => {\n return (\n <TextFieldChip\n id={chipId}\n ref={(element) => getRef(element, index)}\n key={`${chipId}_${index}`}\n disabled={disabled}\n readOnly={readOnly}\n value={text}\n text={text}\n onKeyDown={(event) => handleChipKeyDown(event, chipId, index)}\n onClear={() => onChipClear(chipId, index)}\n onClick={onChipClick}\n />\n );\n })}\n </StyledChips>\n )}\n <InputContainer>\n <Input\n ref={inputForkRef}\n id={innerId}\n value={outerValue}\n aria-labelledby={labelId}\n aria-describedby={helperTextId}\n placeholder={innerPlaceholderValue}\n className={cx(hasValueClass)}\n disabled={disabled}\n readOnly={!disabled && readOnly}\n onInput={handleInput}\n onChange={handleChange}\n onKeyDown={handleOnKeyDown}\n {...rest}\n />\n {hasInnerLabel && (\n <Label id={labelId} htmlFor={innerId}>\n {innerLabelValue}\n {optionalTextNode}\n </Label>\n )}\n {placeholderShown && !hasValue && (\n <InputPlaceholder>\n {innerPlaceholderValue}\n {hasPlaceholderOptional && optionalTextNode}\n </InputPlaceholder>\n )}\n </InputContainer>\n {textAfter && <StyledTextAfter>{textAfter}</StyledTextAfter>}\n </InputLabelWrapper>\n {contentRight && <StyledContentRight>{contentRight}</StyledContentRight>}\n </InputWrapper>\n {leftHelper && <LeftHelper id={helperTextId}>{leftHelper}</LeftHelper>}\n </Root>\n );\n },\n );\n\nexport const textFieldConfig = {\n name: 'TextField',\n tag: 'div',\n layout: textFieldRoot,\n base,\n variations: {\n view: {\n css: viewCSS,\n },\n size: {\n css: sizeCSS,\n },\n disabled: {\n css: disabledCSS,\n attrs: true,\n },\n readOnly: {\n css: readOnlyCSS,\n attrs: true,\n },\n labelPlacement: {\n css: labelPlacementCSS,\n },\n },\n defaults: {\n size: 'm',\n view: 'default',\n },\n};\n"],"names":["optionalText","base","textFieldRoot","Root","forwardRef","_ref","ref","_inputRef$current","_inputRef$current3","id","className","style","contentLeft","contentRight","label","labelPlacement","textBefore","textAfter","placeholder","leftHelper","_ref$enumerationType","enumerationType","_ref$requiredPlacemen","requiredPlacement","view","size","_ref$readOnly","readOnly","_ref$disabled","disabled","_ref$required","required","optional","outerValue","value","values","chips","onChange","onChangeChips","onSearch","onKeyDown","rest","contentRef","useRef","inputRef","inputForkRef","useForkRef","chipsRefs","controlledRefs","_useState","useState","Boolean","current","defaultValue","_useState2","_slicedToArray","hasValue","setHasValue","_useState3","_useState4","setChips","uniqId","safeUseId","innerId","labelId","helperTextId","isChipEnumeration","isChipsVisible","length","withHasChips","classes","hasChips","undefined","hasLabelValue","hasInnerLabel","hasOuterLabel","hasPlaceholder","innerLabelValue","innerLabelPlacementValue","innerPlaceholderValue","placeholderShown","requiredPlacementClass","labelPlacementClass","concat","hasValueClass","wrapperWithoutLeftContent","hasEmptyContentLeft","wrapperWithoutRightContent","hasEmptyContentRight","handleInput","event","target","handleChange","_event$target","maxLength","updateChips","newChips","newValues","_useKeyNavigation","useKeyNavigation","onEnterDisabled","handleInputKeydown","handleChipKeyDown","onChipClear","handleContentKeyDown","onChipClick","stopPropagation","handleInputFocus","scrollTo","top","left","offsetLeft","behavior","focus","getRef","element","index","handleOnKeyDown","useEffect","map","text","_inputRef$current2","innerOptional","hasPlaceholderOptional","optionalTextNode","React","createElement","StyledOptionalText","onClick","cx","textFieldGroupItem","Label","htmlFor","StyledIndicator","outerLabelPlacement","InputWrapper","inputWrapperRef","innerLabelPlacement","StyledContentLeft","InputLabelWrapper","tabIndex","StyledTextBefore","StyledChips","_ref2","chipId","TextFieldChip","key","onClear","InputContainer","Input","_extends","onInput","InputPlaceholder","StyledTextAfter","StyledContentRight","LeftHelper","textFieldConfig","name","tag","layout","variations","css","viewCSS","sizeCSS","disabledCSS","attrs","readOnlyCSS","labelPlacementCSS","defaults"],"mappings":"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"}
|
package/es/index.js
CHANGED
@@ -185,6 +185,7 @@ export { emptyStateConfig, emptyStateRoot } from './components/EmptyState/EmptyS
|
|
185
185
|
export { tokens as emptyStateTokens } from './components/EmptyState/EmptyState.tokens.js';
|
186
186
|
export { editableConfig, editableRoot } from './components/Editable/Editable.js';
|
187
187
|
export { tokens as editableTokens } from './components/Editable/Editable.tokens.js';
|
188
|
+
export { composeMask } from './components/Mask/Mask.js';
|
188
189
|
export { component, mergeConfig } from './engines/common.js';
|
189
190
|
export { canUseDOM } from './utils/canUseDOM.js';
|
190
191
|
export { extractTextFrom } from './utils/extractTextFrom.js';
|
package/es/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@salutejs/plasma-new-hope",
|
3
|
-
"version": "0.
|
3
|
+
"version": "0.147.0-canary.1418.10899581491.0",
|
4
4
|
"description": "Salute Design System blueprint",
|
5
5
|
"main": "cjs/index.js",
|
6
6
|
"module": "es/index.js",
|
@@ -121,5 +121,5 @@
|
|
121
121
|
"react-popper": "2.3.0",
|
122
122
|
"storeon": "3.1.5"
|
123
123
|
},
|
124
|
-
"gitHead": "
|
124
|
+
"gitHead": "e8bf28c4a86a7091df121695cfe9756030fb50bc"
|
125
125
|
}
|
@@ -0,0 +1,220 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
5
|
+
value: true
|
6
|
+
});
|
7
|
+
exports.composeMask = void 0;
|
8
|
+
var _react = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("react"));
|
9
|
+
var _plasmaCore = /*#__PURE__*/require("@salutejs/plasma-core");
|
10
|
+
var _hooks = /*#__PURE__*/require("../../hooks");
|
11
|
+
var _createMask = /*#__PURE__*/require("./utils/createMask");
|
12
|
+
var _constants = /*#__PURE__*/require("./utils/constants");
|
13
|
+
var _excluded = ["mask", "maskChar", "alwaysShowMask", "maskString", "showPrefix", "value", "defaultValue", "showMask", "onChange", "onBlur", "onFocus", "reformat"];
|
14
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
15
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
|
16
|
+
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
17
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
18
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
19
|
+
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
20
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
21
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
22
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
23
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
24
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
25
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
26
|
+
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
27
|
+
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
28
|
+
var composeMask = exports.composeMask = function composeMask(InputComponent) {
|
29
|
+
return /*#__PURE__*/(0, _react.forwardRef)(function (props, outerRef) {
|
30
|
+
var maskValue = props.mask,
|
31
|
+
maskChar = props.maskChar,
|
32
|
+
alwaysShowMask = props.alwaysShowMask,
|
33
|
+
maskString = props.maskString,
|
34
|
+
showPrefix = props.showPrefix,
|
35
|
+
value = props.value,
|
36
|
+
defaultValue = props.defaultValue,
|
37
|
+
showMaskedValue = props.showMask,
|
38
|
+
onChange = props.onChange,
|
39
|
+
onBlur = props.onBlur,
|
40
|
+
onFocus = props.onFocus,
|
41
|
+
reformat = props.reformat,
|
42
|
+
rest = _objectWithoutProperties(props, _excluded);
|
43
|
+
var _useState = (0, _react.useState)(alwaysShowMask || showMaskedValue),
|
44
|
+
_useState2 = _slicedToArray(_useState, 2),
|
45
|
+
showMask = _useState2[0],
|
46
|
+
setShowMask = _useState2[1];
|
47
|
+
var _useState3 = (0, _react.useState)(''),
|
48
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
49
|
+
innerValue = _useState4[0],
|
50
|
+
setInnerValue = _useState4[1];
|
51
|
+
var mask = (0, _react.useMemo)(function () {
|
52
|
+
return (0, _createMask.createMask)({
|
53
|
+
value: String(value) || String(defaultValue) || '',
|
54
|
+
mask: maskValue,
|
55
|
+
maskChar: maskChar || _createMask.defaults.maskChar,
|
56
|
+
maskString: maskString,
|
57
|
+
showPrefix: showPrefix || _createMask.defaults.showPrefix,
|
58
|
+
reformat: reformat
|
59
|
+
});
|
60
|
+
}, []);
|
61
|
+
var canSetSelection = (0, _react.useRef)(false);
|
62
|
+
var inputRef = (0, _react.useRef)(null);
|
63
|
+
var innerRef = (0, _plasmaCore.useForkRef)(inputRef, outerRef);
|
64
|
+
var getSelection = function getSelection() {
|
65
|
+
var _inputRef$current, _inputRef$current2;
|
66
|
+
mask.setSelection = {
|
67
|
+
start: (inputRef === null || inputRef === void 0 || (_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 ? void 0 : _inputRef$current.selectionStart) || 0,
|
68
|
+
end: (inputRef === null || inputRef === void 0 || (_inputRef$current2 = inputRef.current) === null || _inputRef$current2 === void 0 ? void 0 : _inputRef$current2.selectionEnd) || 0
|
69
|
+
};
|
70
|
+
};
|
71
|
+
var setSelection = function setSelection() {
|
72
|
+
var _inputRef$current3;
|
73
|
+
if (!canSetSelection.current) {
|
74
|
+
return;
|
75
|
+
}
|
76
|
+
var selection = mask.getSelection;
|
77
|
+
inputRef === null || inputRef === void 0 || (_inputRef$current3 = inputRef.current) === null || _inputRef$current3 === void 0 || _inputRef$current3.setSelectionRange(selection.start, selection.end);
|
78
|
+
setTimeout(function () {
|
79
|
+
var _inputRef$current4;
|
80
|
+
return inputRef === null || inputRef === void 0 || (_inputRef$current4 = inputRef.current) === null || _inputRef$current4 === void 0 ? void 0 : _inputRef$current4.setSelectionRange(selection.start, selection.end);
|
81
|
+
}, 0);
|
82
|
+
};
|
83
|
+
var showValue = function showValue() {
|
84
|
+
if (!(inputRef !== null && inputRef !== void 0 && inputRef.current)) {
|
85
|
+
return;
|
86
|
+
}
|
87
|
+
if (showMask && (canSetSelection.current || alwaysShowMask)) {
|
88
|
+
inputRef.current.value = mask.getState.maskedValue;
|
89
|
+
setInnerValue(mask.getState.maskedValue);
|
90
|
+
return;
|
91
|
+
}
|
92
|
+
setInnerValue(mask.getState.visibleValue);
|
93
|
+
inputRef.current.value = mask.getState.visibleValue;
|
94
|
+
};
|
95
|
+
var keyPressPropName = function keyPressPropName() {
|
96
|
+
if (typeof navigator !== 'undefined' && navigator.userAgent.match(/Android/i)) {
|
97
|
+
return 'onBeforeInput';
|
98
|
+
}
|
99
|
+
return 'onKeyPress';
|
100
|
+
};
|
101
|
+
var dispatchEvent = function dispatchEvent(e) {
|
102
|
+
var _mask$getState = mask.getState,
|
103
|
+
maskedValue = _mask$getState.maskedValue,
|
104
|
+
visibleValue = _mask$getState.visibleValue;
|
105
|
+
if (onChange) {
|
106
|
+
onChange(e, {
|
107
|
+
maskedValue: maskedValue,
|
108
|
+
value: visibleValue
|
109
|
+
});
|
110
|
+
}
|
111
|
+
};
|
112
|
+
var onPaste = function onPaste(e) {
|
113
|
+
e.preventDefault();
|
114
|
+
getSelection();
|
115
|
+
if (!(e !== null && e !== void 0 && e.clipboardData)) {
|
116
|
+
return;
|
117
|
+
}
|
118
|
+
mask.paste(e.clipboardData.getData('Text'));
|
119
|
+
setTimeout(setSelection, 0);
|
120
|
+
dispatchEvent(e);
|
121
|
+
};
|
122
|
+
var handleChange = function handleChange(e) {
|
123
|
+
var currentValue;
|
124
|
+
if (showMask && (canSetSelection.current || alwaysShowMask)) {
|
125
|
+
currentValue = mask.getState.maskedValue;
|
126
|
+
} else {
|
127
|
+
currentValue = mask.getState.visibleValue;
|
128
|
+
}
|
129
|
+
if (e.target.value !== currentValue) {
|
130
|
+
getSelection();
|
131
|
+
mask.updateValue(e.target.value);
|
132
|
+
setTimeout(setSelection, 0);
|
133
|
+
}
|
134
|
+
dispatchEvent(e);
|
135
|
+
};
|
136
|
+
var onKeyPress = function onKeyPress(e) {
|
137
|
+
if (e.metaKey || e.altKey || e.ctrlKey || e.key === 'Enter') {
|
138
|
+
return;
|
139
|
+
}
|
140
|
+
e.preventDefault();
|
141
|
+
getSelection();
|
142
|
+
mask.input(e.key || String.fromCharCode(e.which));
|
143
|
+
setSelection();
|
144
|
+
dispatchEvent(e);
|
145
|
+
};
|
146
|
+
var onKeyDown = function onKeyDown(e) {
|
147
|
+
if (e.code === _constants.keyboardCode.Backspace) {
|
148
|
+
e.preventDefault();
|
149
|
+
getSelection();
|
150
|
+
mask.removePreviousOrSelected();
|
151
|
+
setSelection();
|
152
|
+
dispatchEvent(e);
|
153
|
+
}
|
154
|
+
if (e.code === _constants.keyboardCode.Delete) {
|
155
|
+
e.preventDefault();
|
156
|
+
getSelection();
|
157
|
+
mask.removeNextOrSelected();
|
158
|
+
setSelection();
|
159
|
+
dispatchEvent(e);
|
160
|
+
}
|
161
|
+
};
|
162
|
+
var handleFocus = function handleFocus(e) {
|
163
|
+
canSetSelection.current = true;
|
164
|
+
if (onFocus) {
|
165
|
+
onFocus(e);
|
166
|
+
}
|
167
|
+
};
|
168
|
+
var handleBlur = function handleBlur(e) {
|
169
|
+
canSetSelection.current = false;
|
170
|
+
if (onBlur) {
|
171
|
+
onBlur(e);
|
172
|
+
}
|
173
|
+
};
|
174
|
+
var keyPressEvent = _defineProperty({}, keyPressPropName(), onKeyPress);
|
175
|
+
(0, _hooks.useDidMountEffect)(function () {
|
176
|
+
setShowMask(alwaysShowMask || showMask);
|
177
|
+
}, [alwaysShowMask, showMask]);
|
178
|
+
(0, _hooks.useDidMountEffect)(function () {
|
179
|
+
if (reformat) {
|
180
|
+
mask.updateReformat(reformat);
|
181
|
+
}
|
182
|
+
}, [reformat]);
|
183
|
+
(0, _hooks.useDidMountEffect)(function () {
|
184
|
+
mask.updateMask(String(mask));
|
185
|
+
}, [mask]);
|
186
|
+
(0, _hooks.useDidMountEffect)(function () {
|
187
|
+
mask.updateMaskString(String(maskString));
|
188
|
+
}, [maskString]);
|
189
|
+
(0, _hooks.useDidMountEffect)(function () {
|
190
|
+
mask.updateMaskChar(String(maskChar));
|
191
|
+
}, [maskChar]);
|
192
|
+
(0, _react.useEffect)(function () {
|
193
|
+
mask.updateValue(String(value));
|
194
|
+
}, [value]);
|
195
|
+
(0, _react.useEffect)(function () {
|
196
|
+
showValue();
|
197
|
+
}, [showValue, mask]);
|
198
|
+
(0, _react.useEffect)(function () {
|
199
|
+
var subscriber = function subscriber() {
|
200
|
+
showValue();
|
201
|
+
setSelection();
|
202
|
+
};
|
203
|
+
mask.subscribe(subscriber);
|
204
|
+
return function () {
|
205
|
+
mask.unsubscribe(subscriber);
|
206
|
+
};
|
207
|
+
}, [mask, showValue, setSelection]);
|
208
|
+
return /*#__PURE__*/_react["default"].createElement(InputComponent, _extends({}, rest, {
|
209
|
+
onChange: handleChange,
|
210
|
+
onKeyDown: onKeyDown,
|
211
|
+
onPaste: onPaste,
|
212
|
+
onFocus: handleFocus,
|
213
|
+
onBlur: handleBlur
|
214
|
+
}, keyPressEvent, {
|
215
|
+
value: innerValue,
|
216
|
+
ref: innerRef,
|
217
|
+
autoComplete: "off"
|
218
|
+
}));
|
219
|
+
});
|
220
|
+
};
|
@@ -0,0 +1,126 @@
|
|
1
|
+
---
|
2
|
+
id: mask
|
3
|
+
title: Mask
|
4
|
+
---
|
5
|
+
|
6
|
+
import { PropsTable, Description, StorybookLink } from '@site/src/components';
|
7
|
+
|
8
|
+
import Tabs from '@theme/Tabs';
|
9
|
+
import TabItem from '@theme/TabItem';
|
10
|
+
|
11
|
+
# Mask
|
12
|
+
<Description name="Mask" />
|
13
|
+
<PropsTable name="Mask" exclude={['css']} />
|
14
|
+
<StorybookLink name="Mask" />
|
15
|
+
|
16
|
+
## Использование
|
17
|
+
Компонент `Mask` представляет собой поле ввода с возможностью маскирования значения.
|
18
|
+
Он реализован на компоненте [TextField](https://plasma.sberdevices.ru/b2c/components/textfield/)
|
19
|
+
и наследует практически все его свойства (`size`, `view`, `disabled`, `label` и тд.)
|
20
|
+
|
21
|
+
```tsx live
|
22
|
+
import React from 'react';
|
23
|
+
import { Mask } from '@salutejs/{{ package }}';
|
24
|
+
import { IconDone } from '@salutejs/plasma-icons';
|
25
|
+
|
26
|
+
export function App() {
|
27
|
+
return (
|
28
|
+
<div>
|
29
|
+
<Mask
|
30
|
+
label="Лейбл"
|
31
|
+
leftHelper="Подсказка к полю"
|
32
|
+
placeholder="Введите дату"
|
33
|
+
mask="00/00/0000"
|
34
|
+
maskString="DD/MM/YYYY"
|
35
|
+
size="l"
|
36
|
+
/>
|
37
|
+
</div>
|
38
|
+
);
|
39
|
+
}
|
40
|
+
```
|
41
|
+
|
42
|
+
### Маска
|
43
|
+
Маска задается с помощью свойства `mask`.
|
44
|
+
Поддерживает следующие символы:
|
45
|
+
|
46
|
+
| Обозначение | Описание |
|
47
|
+
|-------------|---------------------------------------|
|
48
|
+
| 0 | любая цифра от 0 до 9 |
|
49
|
+
| a (англ.) | A-Z, a-z |
|
50
|
+
| я | А-Я, а-я, ё, Ё |
|
51
|
+
| q | буква "q" |
|
52
|
+
| 2 | цифра "2" |
|
53
|
+
| * | любой символ |
|
54
|
+
| \ | символ экранирования "\a" - буква "a" |
|
55
|
+
|
56
|
+
|
57
|
+
<Tabs>
|
58
|
+
<TabItem value="phone" label="Маска телефона">
|
59
|
+
Пример маски для ввода телефона
|
60
|
+
|
61
|
+
```tsx live
|
62
|
+
import React from 'react';
|
63
|
+
import { Mask } from '@salutejs/{{ package }}';
|
64
|
+
|
65
|
+
export function App() {
|
66
|
+
return (
|
67
|
+
<div>
|
68
|
+
<Mask
|
69
|
+
label="Маска телефона"
|
70
|
+
placeholder="Введите телефон"
|
71
|
+
mask="+7 (000) 000 - 00 - 00"
|
72
|
+
maskChar="_"
|
73
|
+
size="l"
|
74
|
+
alwaysShowMask
|
75
|
+
/>
|
76
|
+
</div>
|
77
|
+
);
|
78
|
+
}
|
79
|
+
```
|
80
|
+
</TabItem>
|
81
|
+
<TabItem value="date" label="Маска даты">
|
82
|
+
Пример маски для ввода даты
|
83
|
+
|
84
|
+
```tsx live
|
85
|
+
import React from 'react';
|
86
|
+
import { Mask } from '@salutejs/{{ package }}';
|
87
|
+
|
88
|
+
export function App() {
|
89
|
+
return (
|
90
|
+
<div>
|
91
|
+
<Mask
|
92
|
+
label="Маска даты"
|
93
|
+
placeholder="Введите дату"
|
94
|
+
mask="00/00/0000"
|
95
|
+
maskString="DD/MM/YYYY"
|
96
|
+
size="l"
|
97
|
+
/>
|
98
|
+
</div>
|
99
|
+
);
|
100
|
+
}
|
101
|
+
```
|
102
|
+
</TabItem>
|
103
|
+
<TabItem value="time" label="Маска времени">
|
104
|
+
Пример маски для ввода даты
|
105
|
+
|
106
|
+
```tsx live
|
107
|
+
import React from 'react';
|
108
|
+
import { Mask } from '@salutejs/{{ package }}';
|
109
|
+
|
110
|
+
export function App() {
|
111
|
+
return (
|
112
|
+
<div>
|
113
|
+
<Mask
|
114
|
+
label="Маска времени"
|
115
|
+
placeholder="Введите время"
|
116
|
+
mask="1\0:00"
|
117
|
+
maskChar="_"
|
118
|
+
size="l"
|
119
|
+
showPrefix
|
120
|
+
/>
|
121
|
+
</div>
|
122
|
+
);
|
123
|
+
}
|
124
|
+
```
|
125
|
+
</TabItem>
|
126
|
+
</Tabs>
|
@@ -0,0 +1,12 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
Object.defineProperty(exports, "composeMask", {
|
7
|
+
enumerable: true,
|
8
|
+
get: function get() {
|
9
|
+
return _Mask.composeMask;
|
10
|
+
}
|
11
|
+
});
|
12
|
+
var _Mask = /*#__PURE__*/require("./Mask");
|
@@ -0,0 +1,29 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.keyboardCode = exports.escapeChar = exports.defaultFormatChars = exports.charType = void 0;
|
7
|
+
var charType = exports.charType = {
|
8
|
+
User: 1,
|
9
|
+
Char: 2,
|
10
|
+
Mask: 3
|
11
|
+
};
|
12
|
+
var keyboardCode = exports.keyboardCode = {
|
13
|
+
Backspace: 'Backspace',
|
14
|
+
Delete: 'Delete'
|
15
|
+
};
|
16
|
+
var escapeChar = exports.escapeChar = '\\';
|
17
|
+
var defaultFormatChars = exports.defaultFormatChars = [{
|
18
|
+
str: '0',
|
19
|
+
regexp: /[0-9]/
|
20
|
+
}, {
|
21
|
+
str: '*',
|
22
|
+
regexp: /./
|
23
|
+
}, {
|
24
|
+
str: 'a',
|
25
|
+
regexp: /[a-zA-Z]/
|
26
|
+
}, {
|
27
|
+
str: 'я',
|
28
|
+
regexp: /[а-яА-ЯёЁ]/
|
29
|
+
}];
|
@@ -0,0 +1,50 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.defaults = exports.createMask = void 0;
|
7
|
+
var _constants = /*#__PURE__*/require("./constants");
|
8
|
+
var _mask = /*#__PURE__*/require("./mask");
|
9
|
+
var _selection = /*#__PURE__*/require("./selection");
|
10
|
+
var defaults = exports.defaults = {
|
11
|
+
maskFormat: _constants.defaultFormatChars,
|
12
|
+
maskChar: '',
|
13
|
+
showMask: false,
|
14
|
+
removeSelectedRange: _selection.removeSelectedRange,
|
15
|
+
showPrefix: false
|
16
|
+
};
|
17
|
+
var createMask = exports.createMask = function createMask(params) {
|
18
|
+
var _params$mask;
|
19
|
+
var maskString = params.maskString,
|
20
|
+
_params$showPrefix = params.showPrefix,
|
21
|
+
showPrefix = _params$showPrefix === void 0 ? defaults.showPrefix : _params$showPrefix,
|
22
|
+
_params$maskChar = params.maskChar,
|
23
|
+
maskChar = _params$maskChar === void 0 ? defaults.maskChar : _params$maskChar,
|
24
|
+
reformat = params.reformat;
|
25
|
+
var resReformat = reformat;
|
26
|
+
if (!reformat && !params.mask) {
|
27
|
+
resReformat = function resReformat(args) {
|
28
|
+
var str = args.value.map(function (item) {
|
29
|
+
return item["char"];
|
30
|
+
}).join('');
|
31
|
+
return {
|
32
|
+
value: args.value,
|
33
|
+
visibleValue: str,
|
34
|
+
maskedValue: str,
|
35
|
+
selection: args.selection
|
36
|
+
};
|
37
|
+
};
|
38
|
+
} else if (reformat && params.mask) {
|
39
|
+
params.mask = undefined;
|
40
|
+
}
|
41
|
+
if (maskString && maskString.length !== (params === null || params === void 0 || (_params$mask = params.mask) === null || _params$mask === void 0 ? void 0 : _params$mask.length)) {
|
42
|
+
throw new Error('maskString должна быть такой же длины, как и mask');
|
43
|
+
}
|
44
|
+
if (maskChar.length > 1) {
|
45
|
+
throw new Error('maskChar должен содержать только 1 символ');
|
46
|
+
}
|
47
|
+
var mask = new _mask.Mask(showPrefix, maskChar, maskString, resReformat);
|
48
|
+
mask.updateMask(params.mask);
|
49
|
+
return mask;
|
50
|
+
};
|