@skbkontur/react-ui 5.0.13 → 5.0.15
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/CHANGELOG.md +22 -0
- package/cjs/components/FileUploader/FileUploader.d.ts +1 -0
- package/cjs/components/FileUploader/FileUploader.js +4 -2
- package/cjs/components/FileUploader/FileUploader.js.map +1 -1
- package/cjs/components/FileUploader/FileUploader.md +23 -0
- package/cjs/components/MenuItem/MenuItem.js +1 -1
- package/cjs/components/MenuItem/MenuItem.js.map +1 -1
- package/cjs/internal/Menu/Menu.js.map +1 -1
- package/components/FileUploader/FileUploader/FileUploader.js +2 -1
- package/components/FileUploader/FileUploader/FileUploader.js.map +1 -1
- package/components/FileUploader/FileUploader.d.ts +1 -0
- package/components/FileUploader/FileUploader.md +23 -0
- package/components/MenuItem/MenuItem/MenuItem.js +1 -1
- package/components/MenuItem/MenuItem/MenuItem.js.map +1 -1
- package/internal/Menu/Menu/Menu.js.map +1 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,28 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [5.0.15](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@5.0.14...@skbkontur/react-ui@5.0.15) (2025-03-28)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* **MenuItem:** correctly pass state to functional children ([#3631](https://github.com/skbkontur/retail-ui/issues/3631)) ([f15beb7](https://github.com/skbkontur/retail-ui/commit/f15beb73b5998939b28c6218fb7db5100ee3d513))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
## [5.0.14](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@5.0.13...@skbkontur/react-ui@5.0.14) (2025-03-27)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
### Bug Fixes
|
|
21
|
+
|
|
22
|
+
* **FileUploader:** add ability to remove hidden files ([#3625](https://github.com/skbkontur/retail-ui/issues/3625)) ([ffa404e](https://github.com/skbkontur/retail-ui/commit/ffa404e155d84db74291ffe5174d1ee2fba0abab))
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
6
28
|
## [5.0.13](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@5.0.12...@skbkontur/react-ui@5.0.13) (2025-03-17)
|
|
7
29
|
|
|
8
30
|
|
|
@@ -46,6 +46,7 @@ export interface FileUploaderRef extends InstanceWithRootNode {
|
|
|
46
46
|
blur: () => void;
|
|
47
47
|
/** Сбрасывает выбранные файлы */
|
|
48
48
|
reset: () => void;
|
|
49
|
+
removeFile: (fileId: string) => void;
|
|
49
50
|
}
|
|
50
51
|
export declare const FileUploaderDataTids: {
|
|
51
52
|
readonly root: "FileUploader__root";
|
|
@@ -76,6 +76,7 @@ var stopPropagation = function stopPropagation(e) {return e.stopPropagation();};
|
|
|
76
76
|
|
|
77
77
|
|
|
78
78
|
|
|
79
|
+
|
|
79
80
|
|
|
80
81
|
|
|
81
82
|
var FileUploaderDataTids = exports.FileUploaderDataTids = {
|
|
@@ -217,11 +218,12 @@ var _FileUploader = (0, _forwardRefAndName.forwardRefAndName)('FileUploader', fu
|
|
|
217
218
|
(_inputRef$current2 = inputRef.current) == null || _inputRef$current2.blur();
|
|
218
219
|
}, []);
|
|
219
220
|
|
|
220
|
-
(0, _react.useImperativeHandle)(ref, function () {return { focus: focus, blur: blur, reset: reset, getRootNode: function getRootNode() {return rootNodeRef.current;} };}, [
|
|
221
|
+
(0, _react.useImperativeHandle)(ref, function () {return { focus: focus, blur: blur, reset: reset, removeFile: removeFile, getRootNode: function getRootNode() {return rootNodeRef.current;} };}, [
|
|
221
222
|
ref,
|
|
222
223
|
blur,
|
|
223
224
|
focus,
|
|
224
|
-
reset
|
|
225
|
+
reset,
|
|
226
|
+
removeFile]
|
|
225
227
|
);
|
|
226
228
|
|
|
227
229
|
var _useState2 = (0, _react.useState)(false),focusedByTab = _useState2[0],setFocusedByTab = _useState2[1];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_globalObject","_fileUtils","_Emotion","_useMemoObject","_FileUploaderControlContext","_useControlLocale","_useUpload","_useDrop3","_ThemeContext","_withFileUploaderControlProvider","_keyListener","_FileUploaderFile","_FileUploaderFileList","_CommonWrapper","_FileUploaderFileValidationResult","_useFileUploaderSize","_forwardRefAndName","_FocusControlWrapper","_UploadIcon","_FileUploader2","_excluded","stopPropagation","e","FileUploaderDataTids","exports","root","content","link","input","defaultRenderFile","file","fileNode","_FileUploader","forwardRefAndName","props","ref","_cx","theme","useContext","ThemeContext","initialFiles","disabled","error","warning","_props$multiple","multiple","_props$width","width","fileUploaderWidth","_props$hideFiles","hideFiles","onBlur","onFocus","onChange","request","validateBeforeUpload","onRequestSuccess","onRequestError","_props$size","size","_props$renderFile","renderFile","inputProps","_objectWithoutPropertiesLoose2","default","_useContext","FileUploaderControlContext","files","setFiles","removeFile","reset","setFileValidationResult","isMinLengthReached","locale","useControlLocale","inputRef","useRef","fileDivRef","isAsync","isSingleMode","_useState","useState","isLinkVisible","setIsLinkVisible","upload","useUpload","tryValidateAndUpload","useCallback","forEach","_ref","_asyncToGenerator2","_regenerator","mark","_callee","validationMessage","wrap","_callee$","_context","prev","next","t0","sent","id","FileUploaderFileValidationResult","stop","_x","apply","arguments","sizeClassName","useFileUploaderSize","small","jsStyles","sizeSmall","medium","sizeMedium","large","sizeLarge","sizeIconClass","iconSmall","iconMedium","iconLarge","contentInnerClass","contentInnerSmall","contentInnerMedium","contentInnerLarge","handleChange","newFiles","length","filesArray","Array","from","attachedFiles","map","getAttachedFile","handleDrop","event","dataTransfer","_dataTransfer$files","clearData","_useDrop","useDrop","onDrop","isDraggable","labelRef","_useDrop2","isWindowDraggable","windowRef","isBrowser","globalObject","current","document","focus","_inputRef$current","keyListener","isTabPressed","blur","_inputRef$current2","useImperativeHandle","getRootNode","rootNodeRef","_useState2","focusedByTab","setFocusedByTab","handleInputChange","target","handleFocus","requestAnimationFrame","handleBlur","handleRemoveFile","fileId","DataTransfer","filter","f","items","add","originalFile","_useState3","hovered","setHovered","uploadButtonClassNames","cx","uploadButton","uploadButtonFocus","dragOver","canDrop","uploadButtonWrapperClassNames","windowDragOver","uploadButtonIconClassNames","icon","iconDisabled","hasOneFile","hasOneFileForSingle","contentClassNames","contentWithFiles","linkClassNames","linkHovered","linkDisabled","useEffect","iconSizes","parseInt","btnIconSizeSmall","btnIconSizeMedium","btnIconSizeLarge","createElement","UploadIcon","CommonWrapper","className","style","useMemoObject","FileUploaderFileList","onRemove","onMouseEnter","onMouseLeave","choosedFile","chooseFile","String","fromCharCode","globalClasses","afterLinkText","afterLinkText_HasFiles","singleFile","FileUploaderFile","Fragment","orDragHere","FocusControlWrapper","onBlurWhenDisabled","_extends2","tabIndex","type","visuallyHidden","onClick","FileUploader","withFileUploaderControlProvider","React","memo","displayName"],"sources":["FileUploader.tsx"],"sourcesContent":["import React, { useCallback, useContext, useEffect, useImperativeHandle, useRef, useState } from 'react';\nimport { globalObject, isBrowser } from '@skbkontur/global-object';\n\nimport { FileUploaderAttachedFile, getAttachedFile } from '../../internal/FileUploaderControl/fileUtils';\nimport { cx } from '../../lib/theming/Emotion';\nimport { InstanceWithRootNode } from '../../lib/rootNode';\nimport { useMemoObject } from '../../hooks/useMemoObject';\nimport { FileUploaderControlContext } from '../../internal/FileUploaderControl/FileUploaderControlContext';\nimport { useControlLocale } from '../../internal/FileUploaderControl/hooks/useControlLocale';\nimport { useUpload } from '../../internal/FileUploaderControl/hooks/useUpload';\nimport { useDrop } from '../../hooks/useDrop';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { FileUploaderControlProviderProps } from '../../internal/FileUploaderControl/FileUploaderControlProvider';\nimport { withFileUploaderControlProvider } from '../../internal/FileUploaderControl/withFileUploaderControlProvider';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { FileUploaderFile } from '../../internal/FileUploaderControl/FileUploaderFile/FileUploaderFile';\nimport { FileUploaderFileList } from '../../internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { Nullable } from '../../typings/utility-types';\nimport { FileUploaderFileValidationResult } from '../../internal/FileUploaderControl/FileUploaderFileValidationResult';\nimport { useFileUploaderSize } from '../../internal/FileUploaderControl/hooks/useFileUploaderSize';\nimport { SizeProp } from '../../lib/types/props';\nimport { forwardRefAndName } from '../../lib/forwardRefAndName';\nimport { FocusControlWrapper } from '../../internal/FocusControlWrapper';\n\nimport { UploadIcon } from './UploadIcon';\nimport { globalClasses, jsStyles } from './FileUploader.styles';\n\nconst stopPropagation: React.ReactEventHandler = (e) => e.stopPropagation();\n\ntype FileUploaderOverriddenProps = 'size';\n\ninterface _FileUploaderProps\n extends CommonProps,\n Omit<React.InputHTMLAttributes<HTMLInputElement>, FileUploaderOverriddenProps> {\n /** Начальное состояние загруженных файлов */\n initialFiles?: File[];\n /** Состояние ошибки всего контрола */\n error?: boolean;\n /** Состояние предупреждения всего контрола */\n warning?: boolean;\n /** Свойство ширины. */\n width?: React.CSSProperties['width'];\n /**\n * Задаёт размер контрола.\n *\n * **Допустимые значения**: `\"small\"`, `\"medium\"`, `\"large\"`.\n */\n size?: SizeProp;\n /** Свойство, скрывающее отображение файлов. */\n hideFiles?: boolean;\n\n /** Функция, через которую отправляем файлы. Используется для отслеживания статуса загрузки файла. */\n request?: (file: FileUploaderAttachedFile) => Promise<void>;\n /** Срабатывает при удачной попытке отправки через request */\n onRequestSuccess?: (fileId: string) => void;\n /** Срабатывает при неудачной попытке отправки через request */\n onRequestError?: (fileId: string) => void;\n\n /**\n * Функция валидации каждого файла.\n * Срабатывает после выбора файлов и перед попыткой отправить в request.\n * Чтобы вывести валидацию ошибки, промис должен вернуть строку.\n * */\n validateBeforeUpload?: (file: FileUploaderAttachedFile) => Promise<Nullable<string>>;\n\n /**\n * Функция, позволяющая кастомизировать файлы.\n * Через нее можно вешать кастомные валидации на каждый файл.\n * */\n renderFile?: (file: FileUploaderAttachedFile, fileNode: React.ReactElement) => React.ReactNode;\n}\n\nexport interface FileUploaderRef extends InstanceWithRootNode {\n focus: () => void;\n blur: () => void;\n /** Сбрасывает выбранные файлы */\n reset: () => void;\n}\n\nexport const FileUploaderDataTids = {\n root: 'FileUploader__root',\n content: 'FileUploader__content',\n link: 'FileUploader__link',\n input: 'FileUploader__input',\n} as const;\n\nconst defaultRenderFile = (file: FileUploaderAttachedFile, fileNode: React.ReactElement) => fileNode;\n\nconst _FileUploader = forwardRefAndName<FileUploaderRef, _FileUploaderProps>('FileUploader', (props, ref) => {\n const theme = useContext(ThemeContext);\n\n const {\n initialFiles,\n disabled,\n error,\n warning,\n multiple = false,\n width = theme.fileUploaderWidth,\n hideFiles = false,\n onBlur,\n onFocus,\n onChange,\n request,\n validateBeforeUpload,\n onRequestSuccess,\n onRequestError,\n size = 'small',\n renderFile = defaultRenderFile,\n ...inputProps\n } = props;\n\n const { files, setFiles, removeFile, reset, setFileValidationResult, isMinLengthReached } =\n useContext(FileUploaderControlContext);\n\n const locale = useControlLocale();\n\n const inputRef = useRef<HTMLInputElement>(null);\n const fileDivRef = useRef<HTMLDivElement>(null);\n\n const isAsync = !!request;\n const isSingleMode = !multiple;\n\n const [isLinkVisible, setIsLinkVisible] = useState(true);\n const upload = useUpload(request, onRequestSuccess, onRequestError);\n\n const tryValidateAndUpload = useCallback(\n (files: FileUploaderAttachedFile[]) => {\n files.forEach(async (file) => {\n const validationMessage = validateBeforeUpload && (await validateBeforeUpload(file));\n\n if (!validationMessage) {\n isAsync && upload(file);\n } else {\n setFileValidationResult(file.id, FileUploaderFileValidationResult.error(validationMessage));\n }\n });\n },\n [validateBeforeUpload, isAsync, upload, setFileValidationResult],\n );\n\n const sizeClassName = useFileUploaderSize(size, {\n small: jsStyles.sizeSmall(theme),\n medium: jsStyles.sizeMedium(theme),\n large: jsStyles.sizeLarge(theme),\n });\n\n const sizeIconClass = useFileUploaderSize(size, {\n small: jsStyles.iconSmall(theme),\n medium: jsStyles.iconMedium(theme),\n large: jsStyles.iconLarge(theme),\n });\n\n const contentInnerClass = useFileUploaderSize(size, {\n small: jsStyles.contentInnerSmall(theme),\n medium: jsStyles.contentInnerMedium(theme),\n large: jsStyles.contentInnerLarge(theme),\n });\n\n /** common part **/\n const handleChange = useCallback(\n (newFiles: FileList | null) => {\n if (!newFiles || !newFiles.length) {\n return;\n }\n\n let filesArray = Array.from(newFiles);\n\n if (isSingleMode) {\n filesArray = [filesArray[0]];\n }\n\n const attachedFiles = filesArray.map(getAttachedFile);\n\n if (isSingleMode && attachedFiles.length && files.length) {\n removeFile(files[0].id);\n }\n\n if (attachedFiles.length) {\n setFiles(attachedFiles);\n tryValidateAndUpload(attachedFiles);\n }\n },\n [tryValidateAndUpload, setFiles, isSingleMode, files, removeFile],\n );\n\n const handleDrop = useCallback(\n (event: DragEvent) => {\n if (disabled) {\n return;\n }\n\n const { dataTransfer } = event;\n if (dataTransfer) {\n if (dataTransfer.files?.length > 0) {\n handleChange(dataTransfer.files);\n }\n dataTransfer.clearData();\n }\n },\n [handleChange, disabled],\n );\n\n const { isDraggable, ref: labelRef } = useDrop<HTMLLabelElement>({ onDrop: handleDrop });\n const { isDraggable: isWindowDraggable, ref: windowRef } = useDrop<Document>();\n\n if (isBrowser(globalObject)) {\n windowRef.current = globalObject.document;\n }\n\n const focus = useCallback(() => {\n keyListener.isTabPressed = true;\n inputRef.current?.focus();\n }, []);\n\n const blur = useCallback(() => {\n inputRef.current?.blur();\n }, []);\n\n useImperativeHandle(ref, () => ({ focus, blur, reset, getRootNode: () => rootNodeRef.current }), [\n ref,\n blur,\n focus,\n reset,\n ]);\n\n const [focusedByTab, setFocusedByTab] = useState(false);\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n onChange?.(event);\n handleChange(event.target.files);\n };\n\n const handleFocus = (e: React.FocusEvent<HTMLInputElement>) => {\n if (!disabled) {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n globalObject.requestAnimationFrame?.(() => {\n if (keyListener.isTabPressed) {\n setFocusedByTab(true);\n }\n });\n onFocus?.(e);\n }\n };\n\n const handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n setFocusedByTab(false);\n if (!disabled) {\n onBlur?.(e);\n }\n };\n\n const handleRemoveFile = useCallback((fileId: string) => {\n const dataTransfer = new DataTransfer();\n files\n .filter((f) => f.id !== fileId)\n .forEach((file) => {\n dataTransfer.items.add(file.originalFile);\n });\n inputRef.current && (inputRef.current.files = dataTransfer.files);\n }, []);\n\n const [hovered, setHovered] = useState(false);\n\n const uploadButtonClassNames = cx(\n jsStyles.uploadButton(theme),\n sizeClassName,\n focusedByTab && jsStyles.uploadButtonFocus(theme),\n disabled && jsStyles.disabled(theme),\n !disabled && hovered && jsStyles.hovered(theme),\n !!warning && jsStyles.warning(theme),\n !!error && jsStyles.error(theme),\n isDraggable && !disabled && jsStyles.dragOver(theme),\n );\n\n const canDrop = isWindowDraggable && !disabled;\n const uploadButtonWrapperClassNames = cx(canDrop && jsStyles.windowDragOver(theme));\n\n const uploadButtonIconClassNames = cx(jsStyles.icon(theme), sizeIconClass, disabled && jsStyles.iconDisabled(theme));\n\n const hasOneFile = files.length === 1;\n const hasOneFileForSingle = isSingleMode && hasOneFile && !hideFiles;\n\n const contentClassNames = cx(jsStyles.content(), hasOneFileForSingle && jsStyles.contentWithFiles());\n\n const linkClassNames = cx(\n jsStyles.link(theme),\n !disabled && hovered && jsStyles.linkHovered(theme),\n disabled && jsStyles.linkDisabled(theme),\n );\n\n useEffect(() => {\n setIsLinkVisible(hasOneFileForSingle ? !isMinLengthReached : true);\n }, [isMinLengthReached, hasOneFileForSingle]);\n\n useEffect(() => {\n if (!files || !files.length || !inputRef.current) {\n return;\n }\n\n const dataTransfer = new DataTransfer();\n files.forEach((file) => dataTransfer.items.add(file.originalFile));\n inputRef.current.files = dataTransfer.files;\n }, []);\n\n const rootNodeRef = useRef(null);\n\n const iconSizes: Record<SizeProp, number> = {\n small: parseInt(theme.btnIconSizeSmall),\n medium: parseInt(theme.btnIconSizeMedium),\n large: parseInt(theme.btnIconSizeLarge),\n };\n const icon = <UploadIcon size={iconSizes[size]} />;\n\n return (\n <CommonWrapper {...props}>\n <div\n data-tid={FileUploaderDataTids.root}\n className={jsStyles.root(theme)}\n style={useMemoObject({ width })}\n ref={rootNodeRef}\n >\n {!hideFiles && !isSingleMode && !!files.length && (\n <FileUploaderFileList renderFile={renderFile} size={size} onRemove={handleRemoveFile} />\n )}\n <div className={uploadButtonWrapperClassNames}>\n <label\n onMouseEnter={() => setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n ref={labelRef}\n className={uploadButtonClassNames}\n >\n <div\n data-tid={FileUploaderDataTids.content}\n className={cx(contentClassNames, { [contentInnerClass]: !files.length || !isSingleMode })}\n >\n {isLinkVisible && (\n <span data-tid={FileUploaderDataTids.link} className={linkClassNames}>\n {hasOneFileForSingle ? locale.choosedFile : locale.chooseFile}\n </span>\n )}\n {isLinkVisible && String.fromCharCode(0xa0) /* */}\n <div\n className={cx(\n globalClasses.afterLinkText,\n hasOneFileForSingle ? jsStyles.afterLinkText_HasFiles(theme) : jsStyles.afterLinkText(theme),\n )}\n >\n {hasOneFileForSingle ? (\n <div ref={fileDivRef} className={jsStyles.singleFile()}>\n {renderFile(files[0], <FileUploaderFile file={files[0]} size={size} onRemove={handleRemoveFile} />)}\n </div>\n ) : (\n <>\n {locale.orDragHere} \n <div className={uploadButtonIconClassNames}>{icon}</div>\n </>\n )}\n </div>\n </div>\n <FocusControlWrapper onBlurWhenDisabled={() => setFocusedByTab(false)}>\n <input\n {...inputProps}\n data-tid={FileUploaderDataTids.input}\n ref={inputRef}\n tabIndex={disabled ? -1 : 0}\n type=\"file\"\n disabled={disabled}\n multiple={multiple}\n className={jsStyles.visuallyHidden()}\n onClick={stopPropagation}\n onChange={handleInputChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n />\n </FocusControlWrapper>\n </label>\n </div>\n </div>\n </CommonWrapper>\n );\n});\n\nexport interface FileUploaderProps extends _FileUploaderProps, FileUploaderControlProviderProps {}\n\nexport const FileUploader = withFileUploaderControlProvider<FileUploaderProps, FileUploaderRef>(\n React.memo(_FileUploader),\n);\nFileUploader.displayName = 'FileUploader';\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_globalObject","_fileUtils","_Emotion","_useMemoObject","_FileUploaderControlContext","_useControlLocale","_useUpload","_useDrop3","_ThemeContext","_withFileUploaderControlProvider","_keyListener","_FileUploaderFile","_FileUploaderFileList","_CommonWrapper","_FileUploaderFileValidationResult","_useFileUploaderSize","_forwardRefAndName","_FocusControlWrapper","_UploadIcon","_FileUploader2","_excluded","stopPropagation","e","FileUploaderDataTids","exports","root","content","link","input","defaultRenderFile","file","fileNode","_FileUploader","forwardRefAndName","props","ref","_cx","theme","useContext","ThemeContext","initialFiles","disabled","error","warning","_props$multiple","multiple","_props$width","width","fileUploaderWidth","_props$hideFiles","hideFiles","onBlur","onFocus","onChange","request","validateBeforeUpload","onRequestSuccess","onRequestError","_props$size","size","_props$renderFile","renderFile","inputProps","_objectWithoutPropertiesLoose2","default","_useContext","FileUploaderControlContext","files","setFiles","removeFile","reset","setFileValidationResult","isMinLengthReached","locale","useControlLocale","inputRef","useRef","fileDivRef","isAsync","isSingleMode","_useState","useState","isLinkVisible","setIsLinkVisible","upload","useUpload","tryValidateAndUpload","useCallback","forEach","_ref","_asyncToGenerator2","_regenerator","mark","_callee","validationMessage","wrap","_callee$","_context","prev","next","t0","sent","id","FileUploaderFileValidationResult","stop","_x","apply","arguments","sizeClassName","useFileUploaderSize","small","jsStyles","sizeSmall","medium","sizeMedium","large","sizeLarge","sizeIconClass","iconSmall","iconMedium","iconLarge","contentInnerClass","contentInnerSmall","contentInnerMedium","contentInnerLarge","handleChange","newFiles","length","filesArray","Array","from","attachedFiles","map","getAttachedFile","handleDrop","event","dataTransfer","_dataTransfer$files","clearData","_useDrop","useDrop","onDrop","isDraggable","labelRef","_useDrop2","isWindowDraggable","windowRef","isBrowser","globalObject","current","document","focus","_inputRef$current","keyListener","isTabPressed","blur","_inputRef$current2","useImperativeHandle","getRootNode","rootNodeRef","_useState2","focusedByTab","setFocusedByTab","handleInputChange","target","handleFocus","requestAnimationFrame","handleBlur","handleRemoveFile","fileId","DataTransfer","filter","f","items","add","originalFile","_useState3","hovered","setHovered","uploadButtonClassNames","cx","uploadButton","uploadButtonFocus","dragOver","canDrop","uploadButtonWrapperClassNames","windowDragOver","uploadButtonIconClassNames","icon","iconDisabled","hasOneFile","hasOneFileForSingle","contentClassNames","contentWithFiles","linkClassNames","linkHovered","linkDisabled","useEffect","iconSizes","parseInt","btnIconSizeSmall","btnIconSizeMedium","btnIconSizeLarge","createElement","UploadIcon","CommonWrapper","className","style","useMemoObject","FileUploaderFileList","onRemove","onMouseEnter","onMouseLeave","choosedFile","chooseFile","String","fromCharCode","globalClasses","afterLinkText","afterLinkText_HasFiles","singleFile","FileUploaderFile","Fragment","orDragHere","FocusControlWrapper","onBlurWhenDisabled","_extends2","tabIndex","type","visuallyHidden","onClick","FileUploader","withFileUploaderControlProvider","React","memo","displayName"],"sources":["FileUploader.tsx"],"sourcesContent":["import React, { useCallback, useContext, useEffect, useImperativeHandle, useRef, useState } from 'react';\nimport { globalObject, isBrowser } from '@skbkontur/global-object';\n\nimport { FileUploaderAttachedFile, getAttachedFile } from '../../internal/FileUploaderControl/fileUtils';\nimport { cx } from '../../lib/theming/Emotion';\nimport { InstanceWithRootNode } from '../../lib/rootNode';\nimport { useMemoObject } from '../../hooks/useMemoObject';\nimport { FileUploaderControlContext } from '../../internal/FileUploaderControl/FileUploaderControlContext';\nimport { useControlLocale } from '../../internal/FileUploaderControl/hooks/useControlLocale';\nimport { useUpload } from '../../internal/FileUploaderControl/hooks/useUpload';\nimport { useDrop } from '../../hooks/useDrop';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { FileUploaderControlProviderProps } from '../../internal/FileUploaderControl/FileUploaderControlProvider';\nimport { withFileUploaderControlProvider } from '../../internal/FileUploaderControl/withFileUploaderControlProvider';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { FileUploaderFile } from '../../internal/FileUploaderControl/FileUploaderFile/FileUploaderFile';\nimport { FileUploaderFileList } from '../../internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { Nullable } from '../../typings/utility-types';\nimport { FileUploaderFileValidationResult } from '../../internal/FileUploaderControl/FileUploaderFileValidationResult';\nimport { useFileUploaderSize } from '../../internal/FileUploaderControl/hooks/useFileUploaderSize';\nimport { SizeProp } from '../../lib/types/props';\nimport { forwardRefAndName } from '../../lib/forwardRefAndName';\nimport { FocusControlWrapper } from '../../internal/FocusControlWrapper';\n\nimport { UploadIcon } from './UploadIcon';\nimport { globalClasses, jsStyles } from './FileUploader.styles';\n\nconst stopPropagation: React.ReactEventHandler = (e) => e.stopPropagation();\n\ntype FileUploaderOverriddenProps = 'size';\n\ninterface _FileUploaderProps\n extends CommonProps,\n Omit<React.InputHTMLAttributes<HTMLInputElement>, FileUploaderOverriddenProps> {\n /** Начальное состояние загруженных файлов */\n initialFiles?: File[];\n /** Состояние ошибки всего контрола */\n error?: boolean;\n /** Состояние предупреждения всего контрола */\n warning?: boolean;\n /** Свойство ширины. */\n width?: React.CSSProperties['width'];\n /**\n * Задаёт размер контрола.\n *\n * **Допустимые значения**: `\"small\"`, `\"medium\"`, `\"large\"`.\n */\n size?: SizeProp;\n /** Свойство, скрывающее отображение файлов. */\n hideFiles?: boolean;\n\n /** Функция, через которую отправляем файлы. Используется для отслеживания статуса загрузки файла. */\n request?: (file: FileUploaderAttachedFile) => Promise<void>;\n /** Срабатывает при удачной попытке отправки через request */\n onRequestSuccess?: (fileId: string) => void;\n /** Срабатывает при неудачной попытке отправки через request */\n onRequestError?: (fileId: string) => void;\n\n /**\n * Функция валидации каждого файла.\n * Срабатывает после выбора файлов и перед попыткой отправить в request.\n * Чтобы вывести валидацию ошибки, промис должен вернуть строку.\n * */\n validateBeforeUpload?: (file: FileUploaderAttachedFile) => Promise<Nullable<string>>;\n\n /**\n * Функция, позволяющая кастомизировать файлы.\n * Через нее можно вешать кастомные валидации на каждый файл.\n * */\n renderFile?: (file: FileUploaderAttachedFile, fileNode: React.ReactElement) => React.ReactNode;\n}\n\nexport interface FileUploaderRef extends InstanceWithRootNode {\n focus: () => void;\n blur: () => void;\n /** Сбрасывает выбранные файлы */\n reset: () => void;\n removeFile: (fileId: string) => void;\n}\n\nexport const FileUploaderDataTids = {\n root: 'FileUploader__root',\n content: 'FileUploader__content',\n link: 'FileUploader__link',\n input: 'FileUploader__input',\n} as const;\n\nconst defaultRenderFile = (file: FileUploaderAttachedFile, fileNode: React.ReactElement) => fileNode;\n\nconst _FileUploader = forwardRefAndName<FileUploaderRef, _FileUploaderProps>('FileUploader', (props, ref) => {\n const theme = useContext(ThemeContext);\n\n const {\n initialFiles,\n disabled,\n error,\n warning,\n multiple = false,\n width = theme.fileUploaderWidth,\n hideFiles = false,\n onBlur,\n onFocus,\n onChange,\n request,\n validateBeforeUpload,\n onRequestSuccess,\n onRequestError,\n size = 'small',\n renderFile = defaultRenderFile,\n ...inputProps\n } = props;\n\n const { files, setFiles, removeFile, reset, setFileValidationResult, isMinLengthReached } =\n useContext(FileUploaderControlContext);\n\n const locale = useControlLocale();\n\n const inputRef = useRef<HTMLInputElement>(null);\n const fileDivRef = useRef<HTMLDivElement>(null);\n\n const isAsync = !!request;\n const isSingleMode = !multiple;\n\n const [isLinkVisible, setIsLinkVisible] = useState(true);\n const upload = useUpload(request, onRequestSuccess, onRequestError);\n\n const tryValidateAndUpload = useCallback(\n (files: FileUploaderAttachedFile[]) => {\n files.forEach(async (file) => {\n const validationMessage = validateBeforeUpload && (await validateBeforeUpload(file));\n\n if (!validationMessage) {\n isAsync && upload(file);\n } else {\n setFileValidationResult(file.id, FileUploaderFileValidationResult.error(validationMessage));\n }\n });\n },\n [validateBeforeUpload, isAsync, upload, setFileValidationResult],\n );\n\n const sizeClassName = useFileUploaderSize(size, {\n small: jsStyles.sizeSmall(theme),\n medium: jsStyles.sizeMedium(theme),\n large: jsStyles.sizeLarge(theme),\n });\n\n const sizeIconClass = useFileUploaderSize(size, {\n small: jsStyles.iconSmall(theme),\n medium: jsStyles.iconMedium(theme),\n large: jsStyles.iconLarge(theme),\n });\n\n const contentInnerClass = useFileUploaderSize(size, {\n small: jsStyles.contentInnerSmall(theme),\n medium: jsStyles.contentInnerMedium(theme),\n large: jsStyles.contentInnerLarge(theme),\n });\n\n /** common part **/\n const handleChange = useCallback(\n (newFiles: FileList | null) => {\n if (!newFiles || !newFiles.length) {\n return;\n }\n\n let filesArray = Array.from(newFiles);\n\n if (isSingleMode) {\n filesArray = [filesArray[0]];\n }\n\n const attachedFiles = filesArray.map(getAttachedFile);\n\n if (isSingleMode && attachedFiles.length && files.length) {\n removeFile(files[0].id);\n }\n\n if (attachedFiles.length) {\n setFiles(attachedFiles);\n tryValidateAndUpload(attachedFiles);\n }\n },\n [tryValidateAndUpload, setFiles, isSingleMode, files, removeFile],\n );\n\n const handleDrop = useCallback(\n (event: DragEvent) => {\n if (disabled) {\n return;\n }\n\n const { dataTransfer } = event;\n if (dataTransfer) {\n if (dataTransfer.files?.length > 0) {\n handleChange(dataTransfer.files);\n }\n dataTransfer.clearData();\n }\n },\n [handleChange, disabled],\n );\n\n const { isDraggable, ref: labelRef } = useDrop<HTMLLabelElement>({ onDrop: handleDrop });\n const { isDraggable: isWindowDraggable, ref: windowRef } = useDrop<Document>();\n\n if (isBrowser(globalObject)) {\n windowRef.current = globalObject.document;\n }\n\n const focus = useCallback(() => {\n keyListener.isTabPressed = true;\n inputRef.current?.focus();\n }, []);\n\n const blur = useCallback(() => {\n inputRef.current?.blur();\n }, []);\n\n useImperativeHandle(ref, () => ({ focus, blur, reset, removeFile, getRootNode: () => rootNodeRef.current }), [\n ref,\n blur,\n focus,\n reset,\n removeFile,\n ]);\n\n const [focusedByTab, setFocusedByTab] = useState(false);\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n onChange?.(event);\n handleChange(event.target.files);\n };\n\n const handleFocus = (e: React.FocusEvent<HTMLInputElement>) => {\n if (!disabled) {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n globalObject.requestAnimationFrame?.(() => {\n if (keyListener.isTabPressed) {\n setFocusedByTab(true);\n }\n });\n onFocus?.(e);\n }\n };\n\n const handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n setFocusedByTab(false);\n if (!disabled) {\n onBlur?.(e);\n }\n };\n\n const handleRemoveFile = useCallback((fileId: string) => {\n const dataTransfer = new DataTransfer();\n files\n .filter((f) => f.id !== fileId)\n .forEach((file) => {\n dataTransfer.items.add(file.originalFile);\n });\n inputRef.current && (inputRef.current.files = dataTransfer.files);\n }, []);\n\n const [hovered, setHovered] = useState(false);\n\n const uploadButtonClassNames = cx(\n jsStyles.uploadButton(theme),\n sizeClassName,\n focusedByTab && jsStyles.uploadButtonFocus(theme),\n disabled && jsStyles.disabled(theme),\n !disabled && hovered && jsStyles.hovered(theme),\n !!warning && jsStyles.warning(theme),\n !!error && jsStyles.error(theme),\n isDraggable && !disabled && jsStyles.dragOver(theme),\n );\n\n const canDrop = isWindowDraggable && !disabled;\n const uploadButtonWrapperClassNames = cx(canDrop && jsStyles.windowDragOver(theme));\n\n const uploadButtonIconClassNames = cx(jsStyles.icon(theme), sizeIconClass, disabled && jsStyles.iconDisabled(theme));\n\n const hasOneFile = files.length === 1;\n const hasOneFileForSingle = isSingleMode && hasOneFile && !hideFiles;\n\n const contentClassNames = cx(jsStyles.content(), hasOneFileForSingle && jsStyles.contentWithFiles());\n\n const linkClassNames = cx(\n jsStyles.link(theme),\n !disabled && hovered && jsStyles.linkHovered(theme),\n disabled && jsStyles.linkDisabled(theme),\n );\n\n useEffect(() => {\n setIsLinkVisible(hasOneFileForSingle ? !isMinLengthReached : true);\n }, [isMinLengthReached, hasOneFileForSingle]);\n\n useEffect(() => {\n if (!files || !files.length || !inputRef.current) {\n return;\n }\n\n const dataTransfer = new DataTransfer();\n files.forEach((file) => dataTransfer.items.add(file.originalFile));\n inputRef.current.files = dataTransfer.files;\n }, []);\n\n const rootNodeRef = useRef(null);\n\n const iconSizes: Record<SizeProp, number> = {\n small: parseInt(theme.btnIconSizeSmall),\n medium: parseInt(theme.btnIconSizeMedium),\n large: parseInt(theme.btnIconSizeLarge),\n };\n const icon = <UploadIcon size={iconSizes[size]} />;\n\n return (\n <CommonWrapper {...props}>\n <div\n data-tid={FileUploaderDataTids.root}\n className={jsStyles.root(theme)}\n style={useMemoObject({ width })}\n ref={rootNodeRef}\n >\n {!hideFiles && !isSingleMode && !!files.length && (\n <FileUploaderFileList renderFile={renderFile} size={size} onRemove={handleRemoveFile} />\n )}\n <div className={uploadButtonWrapperClassNames}>\n <label\n onMouseEnter={() => setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n ref={labelRef}\n className={uploadButtonClassNames}\n >\n <div\n data-tid={FileUploaderDataTids.content}\n className={cx(contentClassNames, { [contentInnerClass]: !files.length || !isSingleMode })}\n >\n {isLinkVisible && (\n <span data-tid={FileUploaderDataTids.link} className={linkClassNames}>\n {hasOneFileForSingle ? locale.choosedFile : locale.chooseFile}\n </span>\n )}\n {isLinkVisible && String.fromCharCode(0xa0) /* */}\n <div\n className={cx(\n globalClasses.afterLinkText,\n hasOneFileForSingle ? jsStyles.afterLinkText_HasFiles(theme) : jsStyles.afterLinkText(theme),\n )}\n >\n {hasOneFileForSingle ? (\n <div ref={fileDivRef} className={jsStyles.singleFile()}>\n {renderFile(files[0], <FileUploaderFile file={files[0]} size={size} onRemove={handleRemoveFile} />)}\n </div>\n ) : (\n <>\n {locale.orDragHere} \n <div className={uploadButtonIconClassNames}>{icon}</div>\n </>\n )}\n </div>\n </div>\n <FocusControlWrapper onBlurWhenDisabled={() => setFocusedByTab(false)}>\n <input\n {...inputProps}\n data-tid={FileUploaderDataTids.input}\n ref={inputRef}\n tabIndex={disabled ? -1 : 0}\n type=\"file\"\n disabled={disabled}\n multiple={multiple}\n className={jsStyles.visuallyHidden()}\n onClick={stopPropagation}\n onChange={handleInputChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n />\n </FocusControlWrapper>\n </label>\n </div>\n </div>\n </CommonWrapper>\n );\n});\n\nexport interface FileUploaderProps extends _FileUploaderProps, FileUploaderControlProviderProps {}\n\nexport const FileUploader = withFileUploaderControlProvider<FileUploaderProps, FileUploaderRef>(\n React.memo(_FileUploader),\n);\nFileUploader.displayName = 'FileUploader';\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -82,6 +82,29 @@ import { FileUploader } from '@skbkontur/react-ui';
|
|
|
82
82
|
<FileUploader multiple error />
|
|
83
83
|
```
|
|
84
84
|
|
|
85
|
+
Ручное удаление файлов
|
|
86
|
+
|
|
87
|
+
В критичных случаях, если нужно удалить файлы из контрола вручную, то это можно сделать, используя метод `removeFile` из `ref`.
|
|
88
|
+
Обратите внимание, что при вызове `removeFile` вызываются коллбэки `onRemove` и `onValueChange`.
|
|
89
|
+
|
|
90
|
+
```jsx harmony
|
|
91
|
+
import { FileUploader, Button } from '@skbkontur/react-ui';
|
|
92
|
+
|
|
93
|
+
const fileUploaderRef = React.useRef(null);
|
|
94
|
+
const [fileList, setFileList] = React.useState([]);
|
|
95
|
+
|
|
96
|
+
<div style={{ display: 'inline-grid', gap: '10px' }}>
|
|
97
|
+
<FileUploader ref={fileUploaderRef} multiple onValueChange={(files) => setFileList(files)} />
|
|
98
|
+
{fileList.map((file) => {
|
|
99
|
+
return (
|
|
100
|
+
<Button key={file.id} onClick={() => fileUploaderRef.current.removeFile(file.id)}>
|
|
101
|
+
Delete file {file.originalFile.name}
|
|
102
|
+
</Button>
|
|
103
|
+
);
|
|
104
|
+
})}
|
|
105
|
+
</div>
|
|
106
|
+
```
|
|
107
|
+
|
|
85
108
|
#### Локали по умолчанию
|
|
86
109
|
|
|
87
110
|
```typescript static
|
|
@@ -318,7 +318,7 @@ MenuItem = exports.MenuItem = (0, _rootNode.rootNode)(_class = (_MenuItem = /*#_
|
|
|
318
318
|
|
|
319
319
|
var content = children;
|
|
320
320
|
if ((0, _utils.isFunction)(children)) {
|
|
321
|
-
content = children(
|
|
321
|
+
content = children(_this.activeState);
|
|
322
322
|
}
|
|
323
323
|
|
|
324
324
|
var Component = _this.getComponent();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireDefault","require","_propTypes","_globalObject","_scrollYCenterIntoNearestScrollable","_utils","_ThemeContext","_CommonWrapper","_Emotion","_rootNode","_MenuContext","_getVisualStateDataAttributes","_MenuItem2","_excluded","_class","_MenuItem","MenuItemDataTids","exports","root","content","comment","MenuItem","rootNode","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","state","iconOffsetTop","highlighted","mouseEntered","rootRef","contentRef","React","createRef","highlight","setState","unhighlight","select","event","handleClick","isEnabled","props","disabled","navigate","href","target","window","open","location","renderMain","_cx2","_cx3","_cx4","_this$props","link","icon","loose","size","_enableIconPadding","component","onMouseEnter","onMouseLeave","isMobile","scrollIntoView","_this$props$rel","rel","isExternalLink","isNotSelectable","children","unusedClasses","className","style","dataTid","rest","_objectWithoutPropertiesLoose2","default","iconElement","_cx","createElement","top","cx","styles","getIconSizeClassName","theme","getRootSizeClassName","rootMobile","hover","isHover","selected","isSelected","getWithIconSizeClassName","Boolean","context","enableIconPadding","isFunction","Component","getComponent","CommonWrapper","_extends2","rootNodeRef","setRootNode","getVisualStateDataAttributes","ref","setRootRef","activeState","onMouseOver","handleMouseEnterFix","handleMouseLeave","onClick","undefined","tabIndex","mobileContentWithIcon","isNonNullable","commentHover","e","_this$context$navigat","navigation","_this$context$navigat2","onItemClick","element","_this$props2","hasIconAmongItems","_this$context$navigat3","items","some","item","_inheritsLoose2","_proto","prototype","render","_this2","ThemeContext","Consumer","componentDidMount","scrollYCenterIntoNearestScrollable","isBrowser","globalObject","getComputedStyle","getPropertyValue","current","_this$context$navigat4","add","_this$context$setEnab","_this$context","setEnableIconPadding","componentWillUnmount","_this$context$navigat5","_this$context$setEnab2","_this$context2","remove","componentDidUpdate","prevProps","_this$context$setEnab3","_this$context3","_this$context$navigat6","_this$context$navigat7","rootLarge","rootMedium","rootSmall","iconLarge","iconMedium","iconSmall","withIconLarge","withIconMedium","withIconSmall","_createClass2","key","get","__KONTUR_REACT_UI__","displayName","__MENU_ITEM__","propTypes","PropTypes","node","bool","string","func","contextType","MenuContext","isMenuItem","isReactUIComponent"],"sources":["MenuItem.tsx"],"sourcesContent":["import React, { AriaAttributes, HTMLAttributes } from 'react';\nimport PropTypes from 'prop-types';\nimport { globalObject, isBrowser } from '@skbkontur/global-object';\n\nimport { scrollYCenterIntoNearestScrollable } from '../../lib/dom/scrollYCenterIntoNearestScrollable';\nimport { Nullable } from '../../typings/utility-types';\nimport { isExternalLink, isFunction, isNonNullable, isReactUIComponent } from '../../lib/utils';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { SizeProp } from '../../lib/types/props';\nimport { MenuContext, MenuContextType } from '../../internal/Menu/MenuContext';\nimport { getVisualStateDataAttributes } from '../../internal/CommonWrapper/utils/getVisualStateDataAttributes';\n\nimport { styles } from './MenuItem.styles';\n\nexport type MenuItemState = null | 'hover' | 'selected' | void;\n\nexport interface MenuItemProps\n extends Pick<AriaAttributes, 'aria-describedby' | 'aria-label'>,\n Pick<HTMLAttributes<HTMLElement>, 'id'>,\n Omit<CommonProps, 'children'> {\n /**\n * @ignore\n */\n _enableIconPadding?: boolean;\n /**\n * Добавляет описание для элемента меню.\n */\n comment?: React.ReactNode;\n /**\n * Отключенное состояние.\n */\n disabled?: boolean;\n /**\n * Добавляет элементу меню иконку.\n */\n icon?: React.ReactElement<any>;\n /**\n * Меняет цвет текста на синий.\n */\n link?: boolean;\n /**\n * Размер\n */\n size?: SizeProp;\n /**\n * @ignore\n */\n loose?: boolean;\n /**\n * @ignore\n */\n state?: MenuItemState;\n /**\n * HTML-событие `onclick`.\n */\n onClick?: (event: React.SyntheticEvent<HTMLElement>) => void;\n /**\n * HTML-событие `mouseenter`.\n */\n onMouseEnter?: React.MouseEventHandler;\n /**\n * HTML-событие `mouseleave`.\n */\n onMouseLeave?: React.MouseEventHandler;\n children?: React.ReactNode | ((state: MenuItemState) => React.ReactNode);\n /**\n * HTML-атрибут `target`.\n */\n target?: React.AnchorHTMLAttributes<HTMLAnchorElement>['target'];\n /**\n * HTML-атрибут `title`.\n */\n title?: React.AnchorHTMLAttributes<HTMLAnchorElement>['title'];\n /**\n * HTML-атрибут `href`.\n */\n href?: React.AnchorHTMLAttributes<HTMLAnchorElement>['href'];\n /**\n * HTML-атрибут `rel`.\n *\n * Для внешних ссылок аттрибут rel по умолчанию равен \"noopener noreferrer\"\n */\n rel?: React.AnchorHTMLAttributes<HTMLAnchorElement>['rel'];\n /**\n * Заменяет корневой элемент, на компонент переданный в проп.\n *\n * По умолчанию корневой элемент рендерится как `button`. <br />Если передан `href`, то вместо `button` рендерится `a`.\n */\n component?: React.ComponentType<any>;\n /**\n * Запрещает выделение и выбор данного пункта меню\n *\n */\n isNotSelectable?: boolean;\n\n isMobile?: boolean;\n /** @ignore */\n scrollIntoView?: boolean;\n}\n\nexport const MenuItemDataTids = {\n root: 'MenuItem__root',\n content: 'MenuItem__content',\n comment: 'MenuItem__comment',\n} as const;\n\n/**\n *\n * `MenuItem` - это вложенный компонент, задающий базовые стили для элемента меню и позволяющий навигироваться по элементам меню с помощью клавиатуры.\n *\n * Сущности в которых может быть использован `MenuItem`: [DropdownMenu](#/Components/DropdownMenu), [Kebab](#/Components/Kebab), [TooltipMenu](#/Components/TooltipMenu) и [Select](#/Components/Select).\n */\n@rootNode\nexport class MenuItem extends React.Component<MenuItemProps> {\n public static __KONTUR_REACT_UI__ = 'MenuItem';\n public static displayName = 'MenuItem';\n public static __MENU_ITEM__ = true;\n\n public static propTypes = {\n comment: PropTypes.node,\n\n disabled: PropTypes.bool,\n\n href: PropTypes.string,\n\n icon: PropTypes.node,\n\n loose: PropTypes.bool,\n\n state: PropTypes.string,\n\n target: PropTypes.string,\n\n onClick: PropTypes.func,\n\n size: PropTypes.string,\n };\n\n public state = {\n iconOffsetTop: 0,\n highlighted: false,\n };\n\n private theme!: Theme;\n private mouseEntered = false;\n private setRootNode!: TSetRootNode;\n private rootRef: Nullable<HTMLElement> = null;\n private contentRef = React.createRef<HTMLElement>();\n static contextType = MenuContext;\n\n public context!: MenuContextType;\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public componentDidMount() {\n if (this.props.scrollIntoView && this.rootRef) {\n scrollYCenterIntoNearestScrollable(this.rootRef);\n }\n if (this.rootRef && isBrowser(globalObject)) {\n this.setState({ iconOffsetTop: globalObject.getComputedStyle(this.rootRef).getPropertyValue('padding-top') });\n }\n if (this.contentRef.current && !this.props.isNotSelectable) {\n this.context.navigation?.add(this.contentRef.current, this);\n }\n if (this.props.icon) {\n this.context.setEnableIconPadding?.(true);\n }\n }\n\n public componentWillUnmount() {\n if (this.contentRef.current) {\n !this.props.isNotSelectable && this.context.navigation?.remove(this.contentRef.current);\n this.context.setEnableIconPadding?.(this.hasIconAmongItems());\n }\n }\n\n public componentDidUpdate(prevProps: Readonly<MenuItemProps>) {\n if (prevProps.icon !== this.props.icon) {\n this.context.setEnableIconPadding?.(!!this.props.icon || this.hasIconAmongItems());\n }\n if (this.contentRef.current && prevProps.isNotSelectable !== this.props.isNotSelectable) {\n if (this.props.isNotSelectable) {\n this.unhighlight();\n this.context.navigation?.remove(this.contentRef.current);\n } else {\n this.context.navigation?.add(this.contentRef.current, this);\n }\n }\n }\n\n public highlight = () => {\n this.setState({ highlighted: true });\n };\n\n public unhighlight = () => {\n this.setState({ highlighted: false });\n };\n\n public select = (event: React.SyntheticEvent<HTMLElement>) => {\n this.handleClick(event as React.MouseEvent<HTMLElement>);\n };\n\n public isEnabled = () => {\n return !this.props.disabled;\n };\n\n public navigate = () => {\n if (!this.props.href) {\n return;\n }\n if (this.props.target) {\n window.open(this.props.href, this.props.target);\n } else {\n location.href = this.props.href;\n }\n };\n\n private getRootSizeClassName() {\n switch (this.props.size) {\n case 'large':\n return styles.rootLarge(this.theme);\n case 'medium':\n return styles.rootMedium(this.theme);\n case 'small':\n default:\n return styles.rootSmall(this.theme);\n }\n }\n\n private getIconSizeClassName() {\n switch (this.props.size) {\n case 'large':\n return styles.iconLarge(this.theme);\n case 'medium':\n return styles.iconMedium(this.theme);\n case 'small':\n default:\n return styles.iconSmall(this.theme);\n }\n }\n\n private getWithIconSizeClassName() {\n switch (this.props.size) {\n case 'large':\n return styles.withIconLarge(this.theme);\n case 'medium':\n return styles.withIconMedium(this.theme);\n case 'small':\n default:\n return styles.withIconSmall(this.theme);\n }\n }\n\n private renderMain = () => {\n const {\n link,\n comment,\n icon,\n loose,\n state,\n size,\n _enableIconPadding,\n component,\n onMouseEnter,\n onMouseLeave,\n isMobile,\n href,\n disabled,\n scrollIntoView,\n rel = href && isExternalLink(href) ? 'noopener noreferrer' : this.props.rel,\n isNotSelectable,\n children,\n className: unusedClasses,\n style,\n 'data-tid': dataTid,\n ...rest\n } = this.props;\n\n let iconElement = null;\n if (icon) {\n iconElement = (\n <div\n style={{ top: this.state.iconOffsetTop }}\n className={cx({\n [styles.icon()]: true,\n [this.getIconSizeClassName()]: true,\n })}\n >\n {icon}\n </div>\n );\n }\n\n const className = cx({\n [styles.root(this.theme)]: true,\n [this.getRootSizeClassName()]: true,\n [styles.rootMobile(this.theme)]: isMobile,\n [styles.loose()]: !!loose,\n [styles.hover(this.theme)]: this.isHover,\n [styles.selected(this.theme)]: this.isSelected,\n [styles.link(this.theme)]: !!link,\n [this.getWithIconSizeClassName()]: Boolean(iconElement) || !!_enableIconPadding || this.context.enableIconPadding,\n [styles.disabled(this.theme)]: !!disabled,\n });\n\n let content = children;\n if (isFunction(children)) {\n content = children(state);\n }\n\n const Component = this.getComponent();\n\n return (\n <CommonWrapper\n rootNodeRef={this.setRootNode}\n {...getVisualStateDataAttributes({\n hover: this.isHover,\n selected: this.isSelected,\n })}\n {...this.props}\n >\n <Component\n ref={this.setRootRef}\n data-tid={MenuItemDataTids.root}\n {...rest}\n disabled={disabled}\n state={this.activeState}\n onMouseOver={this.handleMouseEnterFix}\n onMouseLeave={this.handleMouseLeave}\n onClick={this.handleClick}\n className={className}\n href={href}\n rel={href ? rel : undefined}\n tabIndex={-1}\n >\n {iconElement}\n <span\n className={cx({\n [styles.mobileContentWithIcon()]: isMobile && isNonNullable(icon),\n })}\n ref={this.contentRef}\n data-tid={MenuItemDataTids.content}\n >\n {typeof content === 'function' ? content() : content}\n </span>\n {comment && (\n <div\n data-tid={MenuItemDataTids.comment}\n className={cx({\n [styles.comment(this.theme)]: true,\n [styles.commentHover(this.theme)]: this.isHover,\n })}\n >\n {comment}\n </div>\n )}\n </Component>\n </CommonWrapper>\n );\n };\n\n private get activeState() {\n return this.state.highlighted ? 'hover' : this.props.state;\n }\n\n private get isHover(): boolean {\n return (this.state.highlighted || this.props.state === 'hover') && !this.props.disabled;\n }\n\n private get isSelected(): boolean {\n return this.props.state === 'selected' && !this.state.highlighted;\n }\n\n // https://github.com/facebook/react/issues/10109\n // Mouseenter event not triggered when cursor moves from disabled button\n private handleMouseEnterFix = (e: React.MouseEvent<HTMLElement>) => {\n if (!this.mouseEntered) {\n this.mouseEntered = true;\n this.props.onMouseEnter?.(e);\n !this.props.isNotSelectable && this.context.navigation?.highlight(this);\n }\n };\n\n private handleMouseLeave = (e: React.MouseEvent<HTMLElement>) => {\n this.mouseEntered = false;\n this.props.onMouseLeave?.(e);\n !this.props.isNotSelectable && this.context.navigation?.unhighlight();\n };\n\n private handleClick = (e: React.MouseEvent<HTMLElement>) => {\n if (this.props.isNotSelectable) {\n return;\n }\n this.props.onClick?.(e);\n this.context.onItemClick?.(e);\n };\n\n private setRootRef = (element: HTMLElement) => {\n this.rootRef = element;\n };\n\n private getComponent = () => {\n const { disabled, component, href } = this.props;\n\n if (component) {\n return component;\n }\n\n if (disabled) {\n return 'button';\n }\n\n if (href) {\n return 'a';\n }\n\n return 'button';\n };\n\n private hasIconAmongItems = () => {\n return Boolean(this.context.navigation?.items.some((item) => item.props.icon));\n };\n}\n\nexport const isMenuItem = isReactUIComponent('MenuItem');\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_propTypes","_globalObject","_scrollYCenterIntoNearestScrollable","_utils","_ThemeContext","_CommonWrapper","_Emotion","_rootNode","_MenuContext","_getVisualStateDataAttributes","_MenuItem2","_excluded","_class","_MenuItem","MenuItemDataTids","exports","root","content","comment","MenuItem","rootNode","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","state","iconOffsetTop","highlighted","mouseEntered","rootRef","contentRef","React","createRef","highlight","setState","unhighlight","select","event","handleClick","isEnabled","props","disabled","navigate","href","target","window","open","location","renderMain","_cx2","_cx3","_cx4","_this$props","link","icon","loose","size","_enableIconPadding","component","onMouseEnter","onMouseLeave","isMobile","scrollIntoView","_this$props$rel","rel","isExternalLink","isNotSelectable","children","unusedClasses","className","style","dataTid","rest","_objectWithoutPropertiesLoose2","default","iconElement","_cx","createElement","top","cx","styles","getIconSizeClassName","theme","getRootSizeClassName","rootMobile","hover","isHover","selected","isSelected","getWithIconSizeClassName","Boolean","context","enableIconPadding","isFunction","activeState","Component","getComponent","CommonWrapper","_extends2","rootNodeRef","setRootNode","getVisualStateDataAttributes","ref","setRootRef","onMouseOver","handleMouseEnterFix","handleMouseLeave","onClick","undefined","tabIndex","mobileContentWithIcon","isNonNullable","commentHover","e","_this$context$navigat","navigation","_this$context$navigat2","onItemClick","element","_this$props2","hasIconAmongItems","_this$context$navigat3","items","some","item","_inheritsLoose2","_proto","prototype","render","_this2","ThemeContext","Consumer","componentDidMount","scrollYCenterIntoNearestScrollable","isBrowser","globalObject","getComputedStyle","getPropertyValue","current","_this$context$navigat4","add","_this$context$setEnab","_this$context","setEnableIconPadding","componentWillUnmount","_this$context$navigat5","_this$context$setEnab2","_this$context2","remove","componentDidUpdate","prevProps","_this$context$setEnab3","_this$context3","_this$context$navigat6","_this$context$navigat7","rootLarge","rootMedium","rootSmall","iconLarge","iconMedium","iconSmall","withIconLarge","withIconMedium","withIconSmall","_createClass2","key","get","__KONTUR_REACT_UI__","displayName","__MENU_ITEM__","propTypes","PropTypes","node","bool","string","func","contextType","MenuContext","isMenuItem","isReactUIComponent"],"sources":["MenuItem.tsx"],"sourcesContent":["import React, { AriaAttributes, HTMLAttributes } from 'react';\nimport PropTypes from 'prop-types';\nimport { globalObject, isBrowser } from '@skbkontur/global-object';\n\nimport { scrollYCenterIntoNearestScrollable } from '../../lib/dom/scrollYCenterIntoNearestScrollable';\nimport { Nullable } from '../../typings/utility-types';\nimport { isExternalLink, isFunction, isNonNullable, isReactUIComponent } from '../../lib/utils';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { SizeProp } from '../../lib/types/props';\nimport { MenuContext, MenuContextType } from '../../internal/Menu/MenuContext';\nimport { getVisualStateDataAttributes } from '../../internal/CommonWrapper/utils/getVisualStateDataAttributes';\n\nimport { styles } from './MenuItem.styles';\n\nexport type MenuItemState = null | 'hover' | 'selected' | void;\n\nexport interface MenuItemProps\n extends Pick<AriaAttributes, 'aria-describedby' | 'aria-label'>,\n Pick<HTMLAttributes<HTMLElement>, 'id'>,\n Omit<CommonProps, 'children'> {\n /**\n * @ignore\n */\n _enableIconPadding?: boolean;\n /**\n * Добавляет описание для элемента меню.\n */\n comment?: React.ReactNode;\n /**\n * Отключенное состояние.\n */\n disabled?: boolean;\n /**\n * Добавляет элементу меню иконку.\n */\n icon?: React.ReactElement<any>;\n /**\n * Меняет цвет текста на синий.\n */\n link?: boolean;\n /**\n * Размер\n */\n size?: SizeProp;\n /**\n * @ignore\n */\n loose?: boolean;\n /**\n * @ignore\n */\n state?: MenuItemState;\n /**\n * HTML-событие `onclick`.\n */\n onClick?: (event: React.SyntheticEvent<HTMLElement>) => void;\n /**\n * HTML-событие `mouseenter`.\n */\n onMouseEnter?: React.MouseEventHandler;\n /**\n * HTML-событие `mouseleave`.\n */\n onMouseLeave?: React.MouseEventHandler;\n children?: React.ReactNode | ((state: MenuItemState) => React.ReactNode);\n /**\n * HTML-атрибут `target`.\n */\n target?: React.AnchorHTMLAttributes<HTMLAnchorElement>['target'];\n /**\n * HTML-атрибут `title`.\n */\n title?: React.AnchorHTMLAttributes<HTMLAnchorElement>['title'];\n /**\n * HTML-атрибут `href`.\n */\n href?: React.AnchorHTMLAttributes<HTMLAnchorElement>['href'];\n /**\n * HTML-атрибут `rel`.\n *\n * Для внешних ссылок аттрибут rel по умолчанию равен \"noopener noreferrer\"\n */\n rel?: React.AnchorHTMLAttributes<HTMLAnchorElement>['rel'];\n /**\n * Заменяет корневой элемент, на компонент переданный в проп.\n *\n * По умолчанию корневой элемент рендерится как `button`. <br />Если передан `href`, то вместо `button` рендерится `a`.\n */\n component?: React.ComponentType<any>;\n /**\n * Запрещает выделение и выбор данного пункта меню\n *\n */\n isNotSelectable?: boolean;\n\n isMobile?: boolean;\n /** @ignore */\n scrollIntoView?: boolean;\n}\n\nexport const MenuItemDataTids = {\n root: 'MenuItem__root',\n content: 'MenuItem__content',\n comment: 'MenuItem__comment',\n} as const;\n\n/**\n *\n * `MenuItem` - это вложенный компонент, задающий базовые стили для элемента меню и позволяющий навигироваться по элементам меню с помощью клавиатуры.\n *\n * Сущности в которых может быть использован `MenuItem`: [DropdownMenu](#/Components/DropdownMenu), [Kebab](#/Components/Kebab), [TooltipMenu](#/Components/TooltipMenu) и [Select](#/Components/Select).\n */\n@rootNode\nexport class MenuItem extends React.Component<MenuItemProps> {\n public static __KONTUR_REACT_UI__ = 'MenuItem';\n public static displayName = 'MenuItem';\n public static __MENU_ITEM__ = true;\n\n public static propTypes = {\n comment: PropTypes.node,\n\n disabled: PropTypes.bool,\n\n href: PropTypes.string,\n\n icon: PropTypes.node,\n\n loose: PropTypes.bool,\n\n state: PropTypes.string,\n\n target: PropTypes.string,\n\n onClick: PropTypes.func,\n\n size: PropTypes.string,\n };\n\n public state = {\n iconOffsetTop: 0,\n highlighted: false,\n };\n\n private theme!: Theme;\n private mouseEntered = false;\n private setRootNode!: TSetRootNode;\n private rootRef: Nullable<HTMLElement> = null;\n private contentRef = React.createRef<HTMLElement>();\n static contextType = MenuContext;\n\n public context!: MenuContextType;\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public componentDidMount() {\n if (this.props.scrollIntoView && this.rootRef) {\n scrollYCenterIntoNearestScrollable(this.rootRef);\n }\n if (this.rootRef && isBrowser(globalObject)) {\n this.setState({ iconOffsetTop: globalObject.getComputedStyle(this.rootRef).getPropertyValue('padding-top') });\n }\n if (this.contentRef.current && !this.props.isNotSelectable) {\n this.context.navigation?.add(this.contentRef.current, this);\n }\n if (this.props.icon) {\n this.context.setEnableIconPadding?.(true);\n }\n }\n\n public componentWillUnmount() {\n if (this.contentRef.current) {\n !this.props.isNotSelectable && this.context.navigation?.remove(this.contentRef.current);\n this.context.setEnableIconPadding?.(this.hasIconAmongItems());\n }\n }\n\n public componentDidUpdate(prevProps: Readonly<MenuItemProps>) {\n if (prevProps.icon !== this.props.icon) {\n this.context.setEnableIconPadding?.(!!this.props.icon || this.hasIconAmongItems());\n }\n if (this.contentRef.current && prevProps.isNotSelectable !== this.props.isNotSelectable) {\n if (this.props.isNotSelectable) {\n this.unhighlight();\n this.context.navigation?.remove(this.contentRef.current);\n } else {\n this.context.navigation?.add(this.contentRef.current, this);\n }\n }\n }\n\n public highlight = () => {\n this.setState({ highlighted: true });\n };\n\n public unhighlight = () => {\n this.setState({ highlighted: false });\n };\n\n public select = (event: React.SyntheticEvent<HTMLElement>) => {\n this.handleClick(event as React.MouseEvent<HTMLElement>);\n };\n\n public isEnabled = () => {\n return !this.props.disabled;\n };\n\n public navigate = () => {\n if (!this.props.href) {\n return;\n }\n if (this.props.target) {\n window.open(this.props.href, this.props.target);\n } else {\n location.href = this.props.href;\n }\n };\n\n private getRootSizeClassName() {\n switch (this.props.size) {\n case 'large':\n return styles.rootLarge(this.theme);\n case 'medium':\n return styles.rootMedium(this.theme);\n case 'small':\n default:\n return styles.rootSmall(this.theme);\n }\n }\n\n private getIconSizeClassName() {\n switch (this.props.size) {\n case 'large':\n return styles.iconLarge(this.theme);\n case 'medium':\n return styles.iconMedium(this.theme);\n case 'small':\n default:\n return styles.iconSmall(this.theme);\n }\n }\n\n private getWithIconSizeClassName() {\n switch (this.props.size) {\n case 'large':\n return styles.withIconLarge(this.theme);\n case 'medium':\n return styles.withIconMedium(this.theme);\n case 'small':\n default:\n return styles.withIconSmall(this.theme);\n }\n }\n\n private renderMain = () => {\n const {\n link,\n comment,\n icon,\n loose,\n state,\n size,\n _enableIconPadding,\n component,\n onMouseEnter,\n onMouseLeave,\n isMobile,\n href,\n disabled,\n scrollIntoView,\n rel = href && isExternalLink(href) ? 'noopener noreferrer' : this.props.rel,\n isNotSelectable,\n children,\n className: unusedClasses,\n style,\n 'data-tid': dataTid,\n ...rest\n } = this.props;\n\n let iconElement = null;\n if (icon) {\n iconElement = (\n <div\n style={{ top: this.state.iconOffsetTop }}\n className={cx({\n [styles.icon()]: true,\n [this.getIconSizeClassName()]: true,\n })}\n >\n {icon}\n </div>\n );\n }\n\n const className = cx({\n [styles.root(this.theme)]: true,\n [this.getRootSizeClassName()]: true,\n [styles.rootMobile(this.theme)]: isMobile,\n [styles.loose()]: !!loose,\n [styles.hover(this.theme)]: this.isHover,\n [styles.selected(this.theme)]: this.isSelected,\n [styles.link(this.theme)]: !!link,\n [this.getWithIconSizeClassName()]: Boolean(iconElement) || !!_enableIconPadding || this.context.enableIconPadding,\n [styles.disabled(this.theme)]: !!disabled,\n });\n\n let content = children;\n if (isFunction(children)) {\n content = children(this.activeState);\n }\n\n const Component = this.getComponent();\n\n return (\n <CommonWrapper\n rootNodeRef={this.setRootNode}\n {...getVisualStateDataAttributes({\n hover: this.isHover,\n selected: this.isSelected,\n })}\n {...this.props}\n >\n <Component\n ref={this.setRootRef}\n data-tid={MenuItemDataTids.root}\n {...rest}\n disabled={disabled}\n state={this.activeState}\n onMouseOver={this.handleMouseEnterFix}\n onMouseLeave={this.handleMouseLeave}\n onClick={this.handleClick}\n className={className}\n href={href}\n rel={href ? rel : undefined}\n tabIndex={-1}\n >\n {iconElement}\n <span\n className={cx({\n [styles.mobileContentWithIcon()]: isMobile && isNonNullable(icon),\n })}\n ref={this.contentRef}\n data-tid={MenuItemDataTids.content}\n >\n {typeof content === 'function' ? content() : content}\n </span>\n {comment && (\n <div\n data-tid={MenuItemDataTids.comment}\n className={cx({\n [styles.comment(this.theme)]: true,\n [styles.commentHover(this.theme)]: this.isHover,\n })}\n >\n {comment}\n </div>\n )}\n </Component>\n </CommonWrapper>\n );\n };\n\n private get activeState() {\n return this.state.highlighted ? 'hover' : this.props.state;\n }\n\n private get isHover(): boolean {\n return (this.state.highlighted || this.props.state === 'hover') && !this.props.disabled;\n }\n\n private get isSelected(): boolean {\n return this.props.state === 'selected' && !this.state.highlighted;\n }\n\n // https://github.com/facebook/react/issues/10109\n // Mouseenter event not triggered when cursor moves from disabled button\n private handleMouseEnterFix = (e: React.MouseEvent<HTMLElement>) => {\n if (!this.mouseEntered) {\n this.mouseEntered = true;\n this.props.onMouseEnter?.(e);\n !this.props.isNotSelectable && this.context.navigation?.highlight(this);\n }\n };\n\n private handleMouseLeave = (e: React.MouseEvent<HTMLElement>) => {\n this.mouseEntered = false;\n this.props.onMouseLeave?.(e);\n !this.props.isNotSelectable && this.context.navigation?.unhighlight();\n };\n\n private handleClick = (e: React.MouseEvent<HTMLElement>) => {\n if (this.props.isNotSelectable) {\n return;\n }\n this.props.onClick?.(e);\n this.context.onItemClick?.(e);\n };\n\n private setRootRef = (element: HTMLElement) => {\n this.rootRef = element;\n };\n\n private getComponent = () => {\n const { disabled, component, href } = this.props;\n\n if (component) {\n return component;\n }\n\n if (disabled) {\n return 'button';\n }\n\n if (href) {\n return 'a';\n }\n\n return 'button';\n };\n\n private hasIconAmongItems = () => {\n return Boolean(this.context.navigation?.items.some((item) => item.props.icon));\n };\n}\n\nexport const isMenuItem = isReactUIComponent('MenuItem');\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireDefault","require","_globalObject","_identifiers","_MenuSeparator","_ThemeFactory","_getDOMRect","_decorator","_utils","_ScrollContainer","_MenuItem","_ThemeContext","_Emotion","_rootNode2","_client","_createPropsGetter","_isInstanceOf","_CommonWrapper","_Menu2","_MenuNavigation","_MenuContext","_class","_Menu","MenuDataTids","exports","root","Menu","responsiveLayout","rootNode","_React$PureComponent","_this","_len","arguments","length","args","Array","_key","call","apply","concat","getProps","createPropsGetter","defaultProps","state","highlightedIndex","maxHeight","scrollState","enableIconPadding","unmounted","contentRef","React","createRef","menuNavigation","MenuNavigation","MenuItemDataTids","content","focusOnRootElement","getRootNode","isInstanceOf","globalObject","HTMLElement","focus","renderHeader","_cx","default","createElement","className","cx","styles","wrapper","headerWrapper","ref","el","header","contentWrapper","props","menuSeparatorWrapper","theme","renderMenuSeparatorWithNoMargin","renderFooter","_cx2","footerWrapper","footer","ThemeContext","Provider","value","ThemeFactory","create","menuSeparatorMarginY","MenuSeparator","setInitialSelection","i","initialSelectedItemIndex","down","shouldRecalculateMaxHeight","prevProps","_this$props","children","prevMaxHeight","prevHeader","prevFooter","prevChildrenCount","Children","count","calculateMaxHeight","parsedMaxHeight","isBrowser","rootElementMaxHeight","getComputedStyle","parseFloat","calculatedMaxHeight","getDOMRect","height","setState","refScrollContainer","scrollContainer","scrollToSelected","highlightedItem","scrollTo","scrollToTop","scrollToBottom","scroll","nextIndex","items","handleKeyDown","event","onKeyDown","defaultPrevented","isKeyArrowUp","preventDefault","up","isKeyArrowDown","isKeyEnter","select","getStyle","align","maxWidth","width","minWidth","handleScrollStateChange","setEnableIconPadding","isIconPaddingEnabled","preventIconsOffset","_inheritsLoose2","_proto","prototype","componentWillUnmount","componentDidMount","componentDidUpdate","render","_this2","Consumer","renderMain","move","enter","_this$menuNavigation$","navigate","reset","hasHighlightedItem","highlightItem","index","highlightByIndex","_cx3","_cx4","isEmpty","_this$getProps","hasMargin","preventWindowScroll","offsetY","top","scrollContainerScrollBarOffsetY","right","bottom","isMobile","isMobileLayout","CommonWrapper","_extends2","rootNodeRef","setRootNode","getAlignRightClass","mobileRoot","shadow","style","id","tabIndex","ScrollContainer","onScrollStateChange","disabled","disableScrollContainer","scrollContainerMobile","MenuContext","navigation","onItemClick","step","cyclicSelection","childrenToArray","filter","isNonNullable","PureComponent","__KONTUR_REACT_UI__","displayName","ret","forEach","child","push","_cx5","alignRight","isIE11","alignRightIE11","alignRightIE11FixAutoWidth"],"sources":["Menu.tsx"],"sourcesContent":["import React, { CSSProperties, HTMLAttributes } from 'react';\nimport { globalObject, isBrowser } from '@skbkontur/global-object';\n\nimport { isKeyArrowDown, isKeyArrowUp, isKeyEnter } from '../../lib/events/keyboard/identifiers';\nimport { MenuSeparator } from '../../components/MenuSeparator';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { getDOMRect } from '../../lib/dom/getDOMRect';\nimport { responsiveLayout } from '../../components/ResponsiveLayout/decorator';\nimport { isNonNullable } from '../../lib/utils';\nimport { ScrollContainer, ScrollContainerScrollState } from '../../components/ScrollContainer';\nimport { MenuItem, MenuItemDataTids } from '../../components/MenuItem';\nimport { Nullable } from '../../typings/utility-types';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { cx } from '../../lib/theming/Emotion';\nimport { getRootNode, rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { isIE11 } from '../../lib/client';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { isInstanceOf } from '../../lib/isInstanceOf';\nimport { CommonProps, CommonWrapper } from '../CommonWrapper';\n\nimport { styles } from './Menu.styles';\nimport { MenuNavigation } from './MenuNavigation';\nimport { MenuContext } from './MenuContext';\n\nexport interface MenuProps extends CommonProps, Pick<HTMLAttributes<HTMLDivElement>, 'id'> {\n children: React.ReactNode;\n hasMargin?: boolean;\n /**\n * Максимальная высота применяется только для скролл контейнера\n *\n * Высота `header` и `footer` в нее не включены\n */\n maxHeight?: number | string;\n onItemClick?: (event: React.SyntheticEvent<HTMLElement>) => void;\n width?: number | string;\n preventWindowScroll?: boolean;\n /**\n * Отключение кастомного скролла контейнера\n */\n disableScrollContainer?: boolean;\n align?: 'left' | 'right';\n /**\n * Предотвращает выравнивание текста всех пунктов меню относительно друг друга.\n * Так, если хотя бы у одного пункта меню есть иконка, текст в остальных пунктах меню будет выровнен относительно пункта меню с иконкой\n */\n preventIconsOffset?: boolean;\n onKeyDown?: (event: React.KeyboardEvent<HTMLElement>) => void;\n\n header?: React.ReactNode;\n footer?: React.ReactNode;\n /**\n * Циклический перебор айтемов меню (по-дефолтну включен)\n */\n cyclicSelection?: boolean;\n initialSelectedItemIndex?: number;\n}\n\nexport interface MenuState {\n highlightedIndex: number;\n maxHeight: number | string;\n scrollState: ScrollContainerScrollState;\n enableIconPadding: boolean;\n}\n\nexport const MenuDataTids = {\n root: 'Menu__root',\n} as const;\n\ntype DefaultProps = Required<\n Pick<\n MenuProps,\n | 'align'\n | 'width'\n | 'hasMargin'\n | 'maxHeight'\n | 'preventWindowScroll'\n | 'cyclicSelection'\n | 'initialSelectedItemIndex'\n >\n>;\n\n@responsiveLayout\n@rootNode\nexport class Menu extends React.PureComponent<MenuProps, MenuState> {\n public static __KONTUR_REACT_UI__ = 'Menu';\n public static displayName = 'Menu';\n\n public static defaultProps: DefaultProps = {\n align: 'left',\n width: 'auto',\n maxHeight: 300,\n hasMargin: true,\n preventWindowScroll: true,\n cyclicSelection: true,\n initialSelectedItemIndex: -1,\n };\n\n private getProps = createPropsGetter(Menu.defaultProps);\n\n public state: MenuState = {\n highlightedIndex: -1,\n maxHeight: this.getProps().maxHeight || 'none',\n scrollState: 'top',\n enableIconPadding: false,\n };\n\n private theme!: Theme;\n private scrollContainer: Nullable<ScrollContainer>;\n private isMobileLayout!: boolean;\n private unmounted = false;\n private setRootNode!: TSetRootNode;\n private header: Nullable<HTMLDivElement>;\n private footer: Nullable<HTMLDivElement>;\n private contentRef = React.createRef<HTMLDivElement>();\n private menuNavigation: MenuNavigation<MenuItem> = new MenuNavigation(this.contentRef, MenuItemDataTids.content);\n\n public componentWillUnmount() {\n this.unmounted = true;\n }\n\n public componentDidMount() {\n this.setInitialSelection();\n this.calculateMaxHeight();\n this.unmounted = false;\n }\n\n public componentDidUpdate(prevProps: MenuProps) {\n if (this.shouldRecalculateMaxHeight(prevProps)) {\n this.calculateMaxHeight();\n }\n\n if (prevProps.maxHeight !== this.getProps().maxHeight) {\n this.setState({\n maxHeight: this.props.maxHeight || 'none',\n });\n }\n }\n\n public focus() {\n this.focusOnRootElement();\n }\n\n private focusOnRootElement = (): void => {\n const rootNode = getRootNode(this);\n if (isInstanceOf(rootNode, globalObject.HTMLElement)) {\n rootNode?.focus();\n }\n };\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n /**\n * @public\n */\n public up() {\n this.move(-1);\n }\n\n /**\n * @public\n */\n public down() {\n this.move(1);\n }\n\n /**\n * @public\n */\n public enter(event: React.SyntheticEvent<HTMLElement>) {\n this.menuNavigation.highlightedItem?.navigate();\n return this.menuNavigation.select(event);\n }\n\n /**\n * @public\n */\n public reset() {\n this.menuNavigation.reset();\n }\n\n /**\n * @public\n */\n public hasHighlightedItem() {\n return !!this.menuNavigation.highlightedItem;\n }\n\n public highlightItem(index: number) {\n this.menuNavigation.highlightByIndex(index);\n }\n\n private renderMain() {\n if (this.isEmpty()) {\n return null;\n }\n const { hasMargin, maxHeight, preventWindowScroll } = this.getProps();\n\n const offsetY = {\n top: `${this.theme.scrollContainerScrollBarOffsetY}`,\n right: 0,\n bottom: `${this.theme.scrollContainerScrollBarOffsetY}`,\n };\n\n const isMobile = this.isMobileLayout;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div\n data-tid={MenuDataTids.root}\n className={cx(getAlignRightClass(this.props), {\n [styles.root(this.theme)]: true,\n [styles.hasMargin(this.theme)]: hasMargin,\n [styles.mobileRoot(this.theme)]: isMobile,\n [styles.shadow(this.theme)]: !isMobile,\n })}\n style={this.getStyle(this.props)}\n id={this.props.id}\n onKeyDown={this.handleKeyDown}\n tabIndex={0}\n >\n {this.props.header && this.renderHeader()}\n <ScrollContainer\n ref={this.refScrollContainer}\n maxHeight={maxHeight}\n preventWindowScroll={preventWindowScroll}\n onScrollStateChange={this.handleScrollStateChange}\n disabled={this.props.disableScrollContainer}\n offsetY={offsetY}\n >\n <div\n className={cx({\n [styles.scrollContainer(this.theme)]: true,\n [styles.scrollContainerMobile(this.theme)]: isMobile,\n })}\n ref={this.contentRef}\n >\n <MenuContext.Provider\n value={{\n navigation: this.menuNavigation,\n onItemClick: this.props.onItemClick,\n enableIconPadding: this.state.enableIconPadding,\n setEnableIconPadding: this.setEnableIconPadding,\n }}\n >\n {this.props.children}\n </MenuContext.Provider>\n </div>\n </ScrollContainer>\n {this.props.footer && this.renderFooter()}\n </div>\n </CommonWrapper>\n );\n }\n\n private renderHeader = () => {\n return (\n <div\n className={cx({\n [styles.wrapper()]: true,\n [styles.headerWrapper()]: true,\n })}\n ref={(el) => (this.header = el)}\n >\n <div className={styles.contentWrapper()}>{this.props.header}</div>\n <div className={styles.menuSeparatorWrapper(this.theme)}>\n {this.state.scrollState !== 'top' && this.renderMenuSeparatorWithNoMargin()}\n </div>\n </div>\n );\n };\n\n private renderFooter = () => {\n return (\n <div\n className={cx({\n [styles.wrapper()]: true,\n [styles.footerWrapper()]: true,\n })}\n ref={(el) => (this.footer = el)}\n >\n <div className={styles.menuSeparatorWrapper(this.theme)}>\n {this.state.scrollState !== 'bottom' && this.renderMenuSeparatorWithNoMargin()}\n </div>\n <div className={styles.contentWrapper()}>{this.props.footer}</div>\n </div>\n );\n };\n\n private renderMenuSeparatorWithNoMargin = () => {\n return (\n <ThemeContext.Provider value={ThemeFactory.create({ menuSeparatorMarginY: '0' }, this.theme)}>\n <MenuSeparator />\n </ThemeContext.Provider>\n );\n };\n\n private setInitialSelection = () => {\n for (let i = this.getProps().initialSelectedItemIndex; i > -1; i--) {\n this.down();\n }\n };\n\n private shouldRecalculateMaxHeight = (prevProps: MenuProps): boolean => {\n const { header, footer, children } = this.props;\n const maxHeight = this.getProps().maxHeight;\n const prevMaxHeight = prevProps.maxHeight;\n const prevHeader = prevProps.header;\n const prevFooter = prevProps.footer;\n const prevChildrenCount = React.Children.count(prevProps.children);\n\n return (\n maxHeight !== prevMaxHeight ||\n footer !== prevFooter ||\n header !== prevHeader ||\n React.Children.count(children) !== prevChildrenCount\n );\n };\n\n private calculateMaxHeight = () => {\n const maxHeight = this.getProps().maxHeight;\n let parsedMaxHeight = maxHeight;\n const rootNode = getRootNode(this);\n\n if (typeof maxHeight === 'string' && isBrowser(globalObject) && rootNode) {\n const rootElementMaxHeight = globalObject.getComputedStyle?.(rootNode).maxHeight;\n\n if (rootElementMaxHeight) {\n parsedMaxHeight = parseFloat(rootElementMaxHeight);\n }\n }\n\n const calculatedMaxHeight =\n typeof parsedMaxHeight === 'number'\n ? parsedMaxHeight +\n ((this.header && getDOMRect(this.header).height) || 0) +\n ((this.footer && getDOMRect(this.footer).height) || 0)\n : maxHeight;\n\n this.setState({\n maxHeight: calculatedMaxHeight || 'none',\n });\n };\n\n private refScrollContainer = (scrollContainer: Nullable<ScrollContainer>) => {\n this.scrollContainer = scrollContainer;\n };\n\n private scrollToSelected = () => {\n const highlightedItem = this.menuNavigation.highlightedItem;\n if (this.scrollContainer && highlightedItem) {\n const rootNode = getRootNode(highlightedItem);\n // TODO: Remove this check once IF-647 is resolved\n if (isInstanceOf(rootNode, globalObject.HTMLElement)) {\n this.scrollContainer.scrollTo(rootNode);\n }\n }\n };\n\n private scrollToTop = () => {\n if (this.scrollContainer) {\n this.scrollContainer.scrollToTop();\n }\n };\n\n private scrollToBottom = () => {\n if (this.scrollContainer) {\n this.scrollContainer.scrollToBottom();\n }\n };\n\n private scroll = (nextIndex: number) => {\n switch (nextIndex) {\n case 0:\n this.scrollToTop?.();\n break;\n case this.menuNavigation.items.length - 1:\n this.scrollToBottom?.();\n break;\n default:\n this.scrollToSelected?.();\n }\n };\n\n private move(step: number) {\n if (this.unmounted) {\n // NOTE workaround, because `ComboBox` call `process.nextTick` in reducer\n return;\n }\n const nextIndex = this.menuNavigation.move(step, this.getProps().cyclicSelection);\n this.scroll(nextIndex);\n }\n\n private isEmpty() {\n const { children } = this.props;\n return !children || !childrenToArray(children).filter(isNonNullable).length;\n }\n\n private handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>): void => {\n if (typeof this.props.onKeyDown === 'function') {\n this.props.onKeyDown(event);\n }\n\n if (event.defaultPrevented) {\n return;\n }\n\n if (isKeyArrowUp(event)) {\n event.preventDefault();\n this.up();\n } else if (isKeyArrowDown(event)) {\n event.preventDefault();\n this.down();\n } else if (isKeyEnter(event)) {\n this.menuNavigation.select(event);\n }\n };\n\n private getStyle = (props: MenuProps): CSSProperties => {\n if (props.align === 'right') {\n return {\n maxWidth: props.width,\n minWidth: props.width,\n maxHeight: this.state.maxHeight,\n };\n }\n\n return {\n width: props.width,\n maxHeight: this.state.maxHeight,\n };\n };\n\n private handleScrollStateChange = (scrollState: ScrollContainerScrollState) => {\n if (this.state.scrollState !== scrollState) {\n this.setState({ scrollState });\n }\n };\n\n private setEnableIconPadding = (isIconPaddingEnabled: boolean) => {\n !this.getProps().preventIconsOffset && this.setState({ enableIconPadding: isIconPaddingEnabled });\n };\n}\n\nfunction childrenToArray(children: React.ReactNode): React.ReactNode[] {\n const ret: React.ReactNode[] = [];\n // Use forEach instead of map to avoid cloning for key unifying.\n React.Children.forEach(children, (child) => {\n ret.push(child);\n });\n return ret;\n}\n\nconst getAlignRightClass = (props: MenuProps) => {\n if (props.align === 'right') {\n return cx({\n [styles.alignRight()]: !isIE11,\n [styles.alignRightIE11()]: isIE11,\n [styles.alignRightIE11FixAutoWidth()]: isIE11 && props.width === 'auto',\n });\n }\n\n return null;\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_globalObject","_identifiers","_MenuSeparator","_ThemeFactory","_getDOMRect","_decorator","_utils","_ScrollContainer","_MenuItem","_ThemeContext","_Emotion","_rootNode2","_client","_createPropsGetter","_isInstanceOf","_CommonWrapper","_Menu2","_MenuNavigation","_MenuContext","_class","_Menu","MenuDataTids","exports","root","Menu","responsiveLayout","rootNode","_React$PureComponent","_this","_len","arguments","length","args","Array","_key","call","apply","concat","getProps","createPropsGetter","defaultProps","state","highlightedIndex","maxHeight","scrollState","enableIconPadding","unmounted","contentRef","React","createRef","menuNavigation","MenuNavigation","MenuItemDataTids","content","focusOnRootElement","getRootNode","isInstanceOf","globalObject","HTMLElement","focus","renderHeader","_cx","default","createElement","className","cx","styles","wrapper","headerWrapper","ref","el","header","contentWrapper","props","menuSeparatorWrapper","theme","renderMenuSeparatorWithNoMargin","renderFooter","_cx2","footerWrapper","footer","ThemeContext","Provider","value","ThemeFactory","create","menuSeparatorMarginY","MenuSeparator","setInitialSelection","i","initialSelectedItemIndex","down","shouldRecalculateMaxHeight","prevProps","_this$props","children","prevMaxHeight","prevHeader","prevFooter","prevChildrenCount","Children","count","calculateMaxHeight","parsedMaxHeight","isBrowser","rootElementMaxHeight","getComputedStyle","parseFloat","calculatedMaxHeight","getDOMRect","height","setState","refScrollContainer","scrollContainer","scrollToSelected","highlightedItem","scrollTo","scrollToTop","scrollToBottom","scroll","nextIndex","items","handleKeyDown","event","onKeyDown","defaultPrevented","isKeyArrowUp","preventDefault","up","isKeyArrowDown","isKeyEnter","select","getStyle","align","maxWidth","width","minWidth","handleScrollStateChange","setEnableIconPadding","isIconPaddingEnabled","preventIconsOffset","_inheritsLoose2","_proto","prototype","componentWillUnmount","componentDidMount","componentDidUpdate","render","_this2","Consumer","renderMain","move","enter","_this$menuNavigation$","navigate","reset","hasHighlightedItem","highlightItem","index","highlightByIndex","_cx3","_cx4","isEmpty","_this$getProps","hasMargin","preventWindowScroll","offsetY","top","scrollContainerScrollBarOffsetY","right","bottom","isMobile","isMobileLayout","CommonWrapper","_extends2","rootNodeRef","setRootNode","getAlignRightClass","mobileRoot","shadow","style","id","tabIndex","ScrollContainer","onScrollStateChange","disabled","disableScrollContainer","scrollContainerMobile","MenuContext","navigation","onItemClick","step","cyclicSelection","childrenToArray","filter","isNonNullable","PureComponent","__KONTUR_REACT_UI__","displayName","ret","forEach","child","push","_cx5","alignRight","isIE11","alignRightIE11","alignRightIE11FixAutoWidth"],"sources":["Menu.tsx"],"sourcesContent":["import React, { CSSProperties, HTMLAttributes } from 'react';\nimport { globalObject, isBrowser } from '@skbkontur/global-object';\n\nimport { isKeyArrowDown, isKeyArrowUp, isKeyEnter } from '../../lib/events/keyboard/identifiers';\nimport { MenuSeparator } from '../../components/MenuSeparator';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { getDOMRect } from '../../lib/dom/getDOMRect';\nimport { responsiveLayout } from '../../components/ResponsiveLayout/decorator';\nimport { isNonNullable } from '../../lib/utils';\nimport { ScrollContainer, ScrollContainerScrollState } from '../../components/ScrollContainer';\nimport { MenuItem, MenuItemDataTids } from '../../components/MenuItem';\nimport { Nullable } from '../../typings/utility-types';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { cx } from '../../lib/theming/Emotion';\nimport { getRootNode, rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { isIE11 } from '../../lib/client';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { isInstanceOf } from '../../lib/isInstanceOf';\nimport { CommonProps, CommonWrapper } from '../CommonWrapper';\n\nimport { styles } from './Menu.styles';\nimport { MenuNavigation } from './MenuNavigation';\nimport { MenuContext } from './MenuContext';\n\nexport interface MenuProps extends CommonProps, Pick<HTMLAttributes<HTMLDivElement>, 'id'> {\n children: React.ReactNode;\n hasMargin?: boolean;\n /**\n * Максимальная высота применяется только для скролл контейнера\n *\n * Высота `header` и `footer` в нее не включены\n */\n maxHeight?: number | string;\n onItemClick?: (event: React.SyntheticEvent<HTMLElement>) => void;\n width?: number | string;\n preventWindowScroll?: boolean;\n /**\n * Отключение кастомного скролла контейнера\n */\n disableScrollContainer?: boolean;\n align?: 'left' | 'right';\n /**\n * Предотвращает выравнивание текста всех пунктов меню относительно друг друга.\n * Так, если хотя бы у одного пункта меню есть иконка, текст в остальных пунктах меню будет выровнен относительно пункта меню с иконкой\n */\n preventIconsOffset?: boolean;\n onKeyDown?: (event: React.KeyboardEvent<HTMLElement>) => void;\n\n header?: React.ReactNode;\n footer?: React.ReactNode;\n /**\n * Циклический перебор айтемов меню (по-дефолтну включен)\n */\n cyclicSelection?: boolean;\n initialSelectedItemIndex?: number;\n}\n\nexport interface MenuState {\n highlightedIndex: number; // TODO unused variable, remove in next major release\n maxHeight: number | string;\n scrollState: ScrollContainerScrollState;\n enableIconPadding: boolean;\n}\n\nexport const MenuDataTids = {\n root: 'Menu__root',\n} as const;\n\ntype DefaultProps = Required<\n Pick<\n MenuProps,\n | 'align'\n | 'width'\n | 'hasMargin'\n | 'maxHeight'\n | 'preventWindowScroll'\n | 'cyclicSelection'\n | 'initialSelectedItemIndex'\n >\n>;\n\n@responsiveLayout\n@rootNode\nexport class Menu extends React.PureComponent<MenuProps, MenuState> {\n public static __KONTUR_REACT_UI__ = 'Menu';\n public static displayName = 'Menu';\n\n public static defaultProps: DefaultProps = {\n align: 'left',\n width: 'auto',\n maxHeight: 300,\n hasMargin: true,\n preventWindowScroll: true,\n cyclicSelection: true,\n initialSelectedItemIndex: -1,\n };\n\n private getProps = createPropsGetter(Menu.defaultProps);\n\n public state: MenuState = {\n highlightedIndex: -1,\n maxHeight: this.getProps().maxHeight || 'none',\n scrollState: 'top',\n enableIconPadding: false,\n };\n\n private theme!: Theme;\n private scrollContainer: Nullable<ScrollContainer>;\n private isMobileLayout!: boolean;\n private unmounted = false;\n private setRootNode!: TSetRootNode;\n private header: Nullable<HTMLDivElement>;\n private footer: Nullable<HTMLDivElement>;\n private contentRef = React.createRef<HTMLDivElement>();\n private menuNavigation: MenuNavigation<MenuItem> = new MenuNavigation(this.contentRef, MenuItemDataTids.content);\n\n public componentWillUnmount() {\n this.unmounted = true;\n }\n\n public componentDidMount() {\n this.setInitialSelection();\n this.calculateMaxHeight();\n this.unmounted = false;\n }\n\n public componentDidUpdate(prevProps: MenuProps) {\n if (this.shouldRecalculateMaxHeight(prevProps)) {\n this.calculateMaxHeight();\n }\n\n if (prevProps.maxHeight !== this.getProps().maxHeight) {\n this.setState({\n maxHeight: this.props.maxHeight || 'none',\n });\n }\n }\n\n public focus() {\n this.focusOnRootElement();\n }\n\n private focusOnRootElement = (): void => {\n const rootNode = getRootNode(this);\n if (isInstanceOf(rootNode, globalObject.HTMLElement)) {\n rootNode?.focus();\n }\n };\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n /**\n * @public\n */\n public up() {\n this.move(-1);\n }\n\n /**\n * @public\n */\n public down() {\n this.move(1);\n }\n\n /**\n * @public\n */\n public enter(event: React.SyntheticEvent<HTMLElement>) {\n this.menuNavigation.highlightedItem?.navigate();\n return this.menuNavigation.select(event);\n }\n\n /**\n * @public\n */\n public reset() {\n this.menuNavigation.reset();\n }\n\n /**\n * @public\n */\n public hasHighlightedItem() {\n return !!this.menuNavigation.highlightedItem;\n }\n\n public highlightItem(index: number) {\n this.menuNavigation.highlightByIndex(index);\n }\n\n private renderMain() {\n if (this.isEmpty()) {\n return null;\n }\n const { hasMargin, maxHeight, preventWindowScroll } = this.getProps();\n\n const offsetY = {\n top: `${this.theme.scrollContainerScrollBarOffsetY}`,\n right: 0,\n bottom: `${this.theme.scrollContainerScrollBarOffsetY}`,\n };\n\n const isMobile = this.isMobileLayout;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div\n data-tid={MenuDataTids.root}\n className={cx(getAlignRightClass(this.props), {\n [styles.root(this.theme)]: true,\n [styles.hasMargin(this.theme)]: hasMargin,\n [styles.mobileRoot(this.theme)]: isMobile,\n [styles.shadow(this.theme)]: !isMobile,\n })}\n style={this.getStyle(this.props)}\n id={this.props.id}\n onKeyDown={this.handleKeyDown}\n tabIndex={0}\n >\n {this.props.header && this.renderHeader()}\n <ScrollContainer\n ref={this.refScrollContainer}\n maxHeight={maxHeight}\n preventWindowScroll={preventWindowScroll}\n onScrollStateChange={this.handleScrollStateChange}\n disabled={this.props.disableScrollContainer}\n offsetY={offsetY}\n >\n <div\n className={cx({\n [styles.scrollContainer(this.theme)]: true,\n [styles.scrollContainerMobile(this.theme)]: isMobile,\n })}\n ref={this.contentRef}\n >\n <MenuContext.Provider\n value={{\n navigation: this.menuNavigation,\n onItemClick: this.props.onItemClick,\n enableIconPadding: this.state.enableIconPadding,\n setEnableIconPadding: this.setEnableIconPadding,\n }}\n >\n {this.props.children}\n </MenuContext.Provider>\n </div>\n </ScrollContainer>\n {this.props.footer && this.renderFooter()}\n </div>\n </CommonWrapper>\n );\n }\n\n private renderHeader = () => {\n return (\n <div\n className={cx({\n [styles.wrapper()]: true,\n [styles.headerWrapper()]: true,\n })}\n ref={(el) => (this.header = el)}\n >\n <div className={styles.contentWrapper()}>{this.props.header}</div>\n <div className={styles.menuSeparatorWrapper(this.theme)}>\n {this.state.scrollState !== 'top' && this.renderMenuSeparatorWithNoMargin()}\n </div>\n </div>\n );\n };\n\n private renderFooter = () => {\n return (\n <div\n className={cx({\n [styles.wrapper()]: true,\n [styles.footerWrapper()]: true,\n })}\n ref={(el) => (this.footer = el)}\n >\n <div className={styles.menuSeparatorWrapper(this.theme)}>\n {this.state.scrollState !== 'bottom' && this.renderMenuSeparatorWithNoMargin()}\n </div>\n <div className={styles.contentWrapper()}>{this.props.footer}</div>\n </div>\n );\n };\n\n private renderMenuSeparatorWithNoMargin = () => {\n return (\n <ThemeContext.Provider value={ThemeFactory.create({ menuSeparatorMarginY: '0' }, this.theme)}>\n <MenuSeparator />\n </ThemeContext.Provider>\n );\n };\n\n private setInitialSelection = () => {\n for (let i = this.getProps().initialSelectedItemIndex; i > -1; i--) {\n this.down();\n }\n };\n\n private shouldRecalculateMaxHeight = (prevProps: MenuProps): boolean => {\n const { header, footer, children } = this.props;\n const maxHeight = this.getProps().maxHeight;\n const prevMaxHeight = prevProps.maxHeight;\n const prevHeader = prevProps.header;\n const prevFooter = prevProps.footer;\n const prevChildrenCount = React.Children.count(prevProps.children);\n\n return (\n maxHeight !== prevMaxHeight ||\n footer !== prevFooter ||\n header !== prevHeader ||\n React.Children.count(children) !== prevChildrenCount\n );\n };\n\n private calculateMaxHeight = () => {\n const maxHeight = this.getProps().maxHeight;\n let parsedMaxHeight = maxHeight;\n const rootNode = getRootNode(this);\n\n if (typeof maxHeight === 'string' && isBrowser(globalObject) && rootNode) {\n const rootElementMaxHeight = globalObject.getComputedStyle?.(rootNode).maxHeight;\n\n if (rootElementMaxHeight) {\n parsedMaxHeight = parseFloat(rootElementMaxHeight);\n }\n }\n\n const calculatedMaxHeight =\n typeof parsedMaxHeight === 'number'\n ? parsedMaxHeight +\n ((this.header && getDOMRect(this.header).height) || 0) +\n ((this.footer && getDOMRect(this.footer).height) || 0)\n : maxHeight;\n\n this.setState({\n maxHeight: calculatedMaxHeight || 'none',\n });\n };\n\n private refScrollContainer = (scrollContainer: Nullable<ScrollContainer>) => {\n this.scrollContainer = scrollContainer;\n };\n\n private scrollToSelected = () => {\n const highlightedItem = this.menuNavigation.highlightedItem;\n if (this.scrollContainer && highlightedItem) {\n const rootNode = getRootNode(highlightedItem);\n // TODO: Remove this check once IF-647 is resolved\n if (isInstanceOf(rootNode, globalObject.HTMLElement)) {\n this.scrollContainer.scrollTo(rootNode);\n }\n }\n };\n\n private scrollToTop = () => {\n if (this.scrollContainer) {\n this.scrollContainer.scrollToTop();\n }\n };\n\n private scrollToBottom = () => {\n if (this.scrollContainer) {\n this.scrollContainer.scrollToBottom();\n }\n };\n\n private scroll = (nextIndex: number) => {\n switch (nextIndex) {\n case 0:\n this.scrollToTop?.();\n break;\n case this.menuNavigation.items.length - 1:\n this.scrollToBottom?.();\n break;\n default:\n this.scrollToSelected?.();\n }\n };\n\n private move(step: number) {\n if (this.unmounted) {\n // NOTE workaround, because `ComboBox` call `process.nextTick` in reducer\n return;\n }\n const nextIndex = this.menuNavigation.move(step, this.getProps().cyclicSelection);\n this.scroll(nextIndex);\n }\n\n private isEmpty() {\n const { children } = this.props;\n return !children || !childrenToArray(children).filter(isNonNullable).length;\n }\n\n private handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>): void => {\n if (typeof this.props.onKeyDown === 'function') {\n this.props.onKeyDown(event);\n }\n\n if (event.defaultPrevented) {\n return;\n }\n\n if (isKeyArrowUp(event)) {\n event.preventDefault();\n this.up();\n } else if (isKeyArrowDown(event)) {\n event.preventDefault();\n this.down();\n } else if (isKeyEnter(event)) {\n this.menuNavigation.select(event);\n }\n };\n\n private getStyle = (props: MenuProps): CSSProperties => {\n if (props.align === 'right') {\n return {\n maxWidth: props.width,\n minWidth: props.width,\n maxHeight: this.state.maxHeight,\n };\n }\n\n return {\n width: props.width,\n maxHeight: this.state.maxHeight,\n };\n };\n\n private handleScrollStateChange = (scrollState: ScrollContainerScrollState) => {\n if (this.state.scrollState !== scrollState) {\n this.setState({ scrollState });\n }\n };\n\n private setEnableIconPadding = (isIconPaddingEnabled: boolean) => {\n !this.getProps().preventIconsOffset && this.setState({ enableIconPadding: isIconPaddingEnabled });\n };\n}\n\nfunction childrenToArray(children: React.ReactNode): React.ReactNode[] {\n const ret: React.ReactNode[] = [];\n // Use forEach instead of map to avoid cloning for key unifying.\n React.Children.forEach(children, (child) => {\n ret.push(child);\n });\n return ret;\n}\n\nconst getAlignRightClass = (props: MenuProps) => {\n if (props.align === 'right') {\n return cx({\n [styles.alignRight()]: !isIE11,\n [styles.alignRightIE11()]: isIE11,\n [styles.alignRightIE11FixAutoWidth()]: isIE11 && props.width === 'auto',\n });\n }\n\n return null;\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -183,11 +183,12 @@ var _FileUploader = forwardRefAndName('FileUploader', function (props, ref) {
|
|
|
183
183
|
focus: focus,
|
|
184
184
|
blur: blur,
|
|
185
185
|
reset: reset,
|
|
186
|
+
removeFile: removeFile,
|
|
186
187
|
getRootNode: function getRootNode() {
|
|
187
188
|
return rootNodeRef.current;
|
|
188
189
|
}
|
|
189
190
|
};
|
|
190
|
-
}, [ref, blur, focus, reset]);
|
|
191
|
+
}, [ref, blur, focus, reset, removeFile]);
|
|
191
192
|
var _useState2 = useState(false),
|
|
192
193
|
focusedByTab = _useState2[0],
|
|
193
194
|
setFocusedByTab = _useState2[1];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useCallback","useContext","useEffect","useImperativeHandle","useRef","useState","globalObject","isBrowser","getAttachedFile","cx","useMemoObject","FileUploaderControlContext","useControlLocale","useUpload","useDrop","ThemeContext","withFileUploaderControlProvider","keyListener","FileUploaderFile","FileUploaderFileList","CommonWrapper","FileUploaderFileValidationResult","useFileUploaderSize","forwardRefAndName","FocusControlWrapper","UploadIcon","globalClasses","jsStyles","stopPropagation","e","FileUploaderDataTids","root","content","link","input","defaultRenderFile","file","fileNode","_FileUploader","props","ref","_cx","theme","initialFiles","disabled","error","warning","_props$multiple","multiple","_props$width","width","fileUploaderWidth","_props$hideFiles","hideFiles","onBlur","onFocus","onChange","request","validateBeforeUpload","onRequestSuccess","onRequestError","_props$size","size","_props$renderFile","renderFile","inputProps","_objectWithoutPropertiesLoose","_excluded","_useContext","files","setFiles","removeFile","reset","setFileValidationResult","isMinLengthReached","locale","inputRef","fileDivRef","isAsync","isSingleMode","_useState","isLinkVisible","setIsLinkVisible","upload","tryValidateAndUpload","forEach","_ref","_asyncToGenerator","_regeneratorRuntime","mark","_callee","validationMessage","wrap","_callee$","_context","prev","next","t0","sent","id","stop","_x","apply","arguments","sizeClassName","small","sizeSmall","medium","sizeMedium","large","sizeLarge","sizeIconClass","iconSmall","iconMedium","iconLarge","contentInnerClass","contentInnerSmall","contentInnerMedium","contentInnerLarge","handleChange","newFiles","length","filesArray","Array","from","attachedFiles","map","handleDrop","event","dataTransfer","_dataTransfer$files","clearData","_useDrop","onDrop","isDraggable","labelRef","_useDrop2","isWindowDraggable","windowRef","current","document","focus","_inputRef$current","isTabPressed","blur","_inputRef$current2","getRootNode","rootNodeRef","_useState2","focusedByTab","setFocusedByTab","handleInputChange","target","handleFocus","requestAnimationFrame","handleBlur","handleRemoveFile","fileId","DataTransfer","filter","f","items","add","originalFile","_useState3","hovered","setHovered","uploadButtonClassNames","uploadButton","uploadButtonFocus","dragOver","canDrop","uploadButtonWrapperClassNames","windowDragOver","uploadButtonIconClassNames","icon","iconDisabled","hasOneFile","hasOneFileForSingle","contentClassNames","contentWithFiles","linkClassNames","linkHovered","linkDisabled","iconSizes","parseInt","btnIconSizeSmall","btnIconSizeMedium","btnIconSizeLarge","createElement","className","style","onRemove","onMouseEnter","onMouseLeave","choosedFile","chooseFile","String","fromCharCode","afterLinkText","afterLinkText_HasFiles","singleFile","Fragment","orDragHere","onBlurWhenDisabled","_extends","tabIndex","type","visuallyHidden","onClick","FileUploader","memo","displayName"],"sources":["FileUploader.tsx"],"sourcesContent":["import React, { useCallback, useContext, useEffect, useImperativeHandle, useRef, useState } from 'react';\nimport { globalObject, isBrowser } from '@skbkontur/global-object';\n\nimport { FileUploaderAttachedFile, getAttachedFile } from '../../internal/FileUploaderControl/fileUtils';\nimport { cx } from '../../lib/theming/Emotion';\nimport { InstanceWithRootNode } from '../../lib/rootNode';\nimport { useMemoObject } from '../../hooks/useMemoObject';\nimport { FileUploaderControlContext } from '../../internal/FileUploaderControl/FileUploaderControlContext';\nimport { useControlLocale } from '../../internal/FileUploaderControl/hooks/useControlLocale';\nimport { useUpload } from '../../internal/FileUploaderControl/hooks/useUpload';\nimport { useDrop } from '../../hooks/useDrop';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { FileUploaderControlProviderProps } from '../../internal/FileUploaderControl/FileUploaderControlProvider';\nimport { withFileUploaderControlProvider } from '../../internal/FileUploaderControl/withFileUploaderControlProvider';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { FileUploaderFile } from '../../internal/FileUploaderControl/FileUploaderFile/FileUploaderFile';\nimport { FileUploaderFileList } from '../../internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { Nullable } from '../../typings/utility-types';\nimport { FileUploaderFileValidationResult } from '../../internal/FileUploaderControl/FileUploaderFileValidationResult';\nimport { useFileUploaderSize } from '../../internal/FileUploaderControl/hooks/useFileUploaderSize';\nimport { SizeProp } from '../../lib/types/props';\nimport { forwardRefAndName } from '../../lib/forwardRefAndName';\nimport { FocusControlWrapper } from '../../internal/FocusControlWrapper';\n\nimport { UploadIcon } from './UploadIcon';\nimport { globalClasses, jsStyles } from './FileUploader.styles';\n\nconst stopPropagation: React.ReactEventHandler = (e) => e.stopPropagation();\n\ntype FileUploaderOverriddenProps = 'size';\n\ninterface _FileUploaderProps\n extends CommonProps,\n Omit<React.InputHTMLAttributes<HTMLInputElement>, FileUploaderOverriddenProps> {\n /** Начальное состояние загруженных файлов */\n initialFiles?: File[];\n /** Состояние ошибки всего контрола */\n error?: boolean;\n /** Состояние предупреждения всего контрола */\n warning?: boolean;\n /** Свойство ширины. */\n width?: React.CSSProperties['width'];\n /**\n * Задаёт размер контрола.\n *\n * **Допустимые значения**: `\"small\"`, `\"medium\"`, `\"large\"`.\n */\n size?: SizeProp;\n /** Свойство, скрывающее отображение файлов. */\n hideFiles?: boolean;\n\n /** Функция, через которую отправляем файлы. Используется для отслеживания статуса загрузки файла. */\n request?: (file: FileUploaderAttachedFile) => Promise<void>;\n /** Срабатывает при удачной попытке отправки через request */\n onRequestSuccess?: (fileId: string) => void;\n /** Срабатывает при неудачной попытке отправки через request */\n onRequestError?: (fileId: string) => void;\n\n /**\n * Функция валидации каждого файла.\n * Срабатывает после выбора файлов и перед попыткой отправить в request.\n * Чтобы вывести валидацию ошибки, промис должен вернуть строку.\n * */\n validateBeforeUpload?: (file: FileUploaderAttachedFile) => Promise<Nullable<string>>;\n\n /**\n * Функция, позволяющая кастомизировать файлы.\n * Через нее можно вешать кастомные валидации на каждый файл.\n * */\n renderFile?: (file: FileUploaderAttachedFile, fileNode: React.ReactElement) => React.ReactNode;\n}\n\nexport interface FileUploaderRef extends InstanceWithRootNode {\n focus: () => void;\n blur: () => void;\n /** Сбрасывает выбранные файлы */\n reset: () => void;\n}\n\nexport const FileUploaderDataTids = {\n root: 'FileUploader__root',\n content: 'FileUploader__content',\n link: 'FileUploader__link',\n input: 'FileUploader__input',\n} as const;\n\nconst defaultRenderFile = (file: FileUploaderAttachedFile, fileNode: React.ReactElement) => fileNode;\n\nconst _FileUploader = forwardRefAndName<FileUploaderRef, _FileUploaderProps>('FileUploader', (props, ref) => {\n const theme = useContext(ThemeContext);\n\n const {\n initialFiles,\n disabled,\n error,\n warning,\n multiple = false,\n width = theme.fileUploaderWidth,\n hideFiles = false,\n onBlur,\n onFocus,\n onChange,\n request,\n validateBeforeUpload,\n onRequestSuccess,\n onRequestError,\n size = 'small',\n renderFile = defaultRenderFile,\n ...inputProps\n } = props;\n\n const { files, setFiles, removeFile, reset, setFileValidationResult, isMinLengthReached } =\n useContext(FileUploaderControlContext);\n\n const locale = useControlLocale();\n\n const inputRef = useRef<HTMLInputElement>(null);\n const fileDivRef = useRef<HTMLDivElement>(null);\n\n const isAsync = !!request;\n const isSingleMode = !multiple;\n\n const [isLinkVisible, setIsLinkVisible] = useState(true);\n const upload = useUpload(request, onRequestSuccess, onRequestError);\n\n const tryValidateAndUpload = useCallback(\n (files: FileUploaderAttachedFile[]) => {\n files.forEach(async (file) => {\n const validationMessage = validateBeforeUpload && (await validateBeforeUpload(file));\n\n if (!validationMessage) {\n isAsync && upload(file);\n } else {\n setFileValidationResult(file.id, FileUploaderFileValidationResult.error(validationMessage));\n }\n });\n },\n [validateBeforeUpload, isAsync, upload, setFileValidationResult],\n );\n\n const sizeClassName = useFileUploaderSize(size, {\n small: jsStyles.sizeSmall(theme),\n medium: jsStyles.sizeMedium(theme),\n large: jsStyles.sizeLarge(theme),\n });\n\n const sizeIconClass = useFileUploaderSize(size, {\n small: jsStyles.iconSmall(theme),\n medium: jsStyles.iconMedium(theme),\n large: jsStyles.iconLarge(theme),\n });\n\n const contentInnerClass = useFileUploaderSize(size, {\n small: jsStyles.contentInnerSmall(theme),\n medium: jsStyles.contentInnerMedium(theme),\n large: jsStyles.contentInnerLarge(theme),\n });\n\n /** common part **/\n const handleChange = useCallback(\n (newFiles: FileList | null) => {\n if (!newFiles || !newFiles.length) {\n return;\n }\n\n let filesArray = Array.from(newFiles);\n\n if (isSingleMode) {\n filesArray = [filesArray[0]];\n }\n\n const attachedFiles = filesArray.map(getAttachedFile);\n\n if (isSingleMode && attachedFiles.length && files.length) {\n removeFile(files[0].id);\n }\n\n if (attachedFiles.length) {\n setFiles(attachedFiles);\n tryValidateAndUpload(attachedFiles);\n }\n },\n [tryValidateAndUpload, setFiles, isSingleMode, files, removeFile],\n );\n\n const handleDrop = useCallback(\n (event: DragEvent) => {\n if (disabled) {\n return;\n }\n\n const { dataTransfer } = event;\n if (dataTransfer) {\n if (dataTransfer.files?.length > 0) {\n handleChange(dataTransfer.files);\n }\n dataTransfer.clearData();\n }\n },\n [handleChange, disabled],\n );\n\n const { isDraggable, ref: labelRef } = useDrop<HTMLLabelElement>({ onDrop: handleDrop });\n const { isDraggable: isWindowDraggable, ref: windowRef } = useDrop<Document>();\n\n if (isBrowser(globalObject)) {\n windowRef.current = globalObject.document;\n }\n\n const focus = useCallback(() => {\n keyListener.isTabPressed = true;\n inputRef.current?.focus();\n }, []);\n\n const blur = useCallback(() => {\n inputRef.current?.blur();\n }, []);\n\n useImperativeHandle(ref, () => ({ focus, blur, reset, getRootNode: () => rootNodeRef.current }), [\n ref,\n blur,\n focus,\n reset,\n ]);\n\n const [focusedByTab, setFocusedByTab] = useState(false);\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n onChange?.(event);\n handleChange(event.target.files);\n };\n\n const handleFocus = (e: React.FocusEvent<HTMLInputElement>) => {\n if (!disabled) {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n globalObject.requestAnimationFrame?.(() => {\n if (keyListener.isTabPressed) {\n setFocusedByTab(true);\n }\n });\n onFocus?.(e);\n }\n };\n\n const handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n setFocusedByTab(false);\n if (!disabled) {\n onBlur?.(e);\n }\n };\n\n const handleRemoveFile = useCallback((fileId: string) => {\n const dataTransfer = new DataTransfer();\n files\n .filter((f) => f.id !== fileId)\n .forEach((file) => {\n dataTransfer.items.add(file.originalFile);\n });\n inputRef.current && (inputRef.current.files = dataTransfer.files);\n }, []);\n\n const [hovered, setHovered] = useState(false);\n\n const uploadButtonClassNames = cx(\n jsStyles.uploadButton(theme),\n sizeClassName,\n focusedByTab && jsStyles.uploadButtonFocus(theme),\n disabled && jsStyles.disabled(theme),\n !disabled && hovered && jsStyles.hovered(theme),\n !!warning && jsStyles.warning(theme),\n !!error && jsStyles.error(theme),\n isDraggable && !disabled && jsStyles.dragOver(theme),\n );\n\n const canDrop = isWindowDraggable && !disabled;\n const uploadButtonWrapperClassNames = cx(canDrop && jsStyles.windowDragOver(theme));\n\n const uploadButtonIconClassNames = cx(jsStyles.icon(theme), sizeIconClass, disabled && jsStyles.iconDisabled(theme));\n\n const hasOneFile = files.length === 1;\n const hasOneFileForSingle = isSingleMode && hasOneFile && !hideFiles;\n\n const contentClassNames = cx(jsStyles.content(), hasOneFileForSingle && jsStyles.contentWithFiles());\n\n const linkClassNames = cx(\n jsStyles.link(theme),\n !disabled && hovered && jsStyles.linkHovered(theme),\n disabled && jsStyles.linkDisabled(theme),\n );\n\n useEffect(() => {\n setIsLinkVisible(hasOneFileForSingle ? !isMinLengthReached : true);\n }, [isMinLengthReached, hasOneFileForSingle]);\n\n useEffect(() => {\n if (!files || !files.length || !inputRef.current) {\n return;\n }\n\n const dataTransfer = new DataTransfer();\n files.forEach((file) => dataTransfer.items.add(file.originalFile));\n inputRef.current.files = dataTransfer.files;\n }, []);\n\n const rootNodeRef = useRef(null);\n\n const iconSizes: Record<SizeProp, number> = {\n small: parseInt(theme.btnIconSizeSmall),\n medium: parseInt(theme.btnIconSizeMedium),\n large: parseInt(theme.btnIconSizeLarge),\n };\n const icon = <UploadIcon size={iconSizes[size]} />;\n\n return (\n <CommonWrapper {...props}>\n <div\n data-tid={FileUploaderDataTids.root}\n className={jsStyles.root(theme)}\n style={useMemoObject({ width })}\n ref={rootNodeRef}\n >\n {!hideFiles && !isSingleMode && !!files.length && (\n <FileUploaderFileList renderFile={renderFile} size={size} onRemove={handleRemoveFile} />\n )}\n <div className={uploadButtonWrapperClassNames}>\n <label\n onMouseEnter={() => setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n ref={labelRef}\n className={uploadButtonClassNames}\n >\n <div\n data-tid={FileUploaderDataTids.content}\n className={cx(contentClassNames, { [contentInnerClass]: !files.length || !isSingleMode })}\n >\n {isLinkVisible && (\n <span data-tid={FileUploaderDataTids.link} className={linkClassNames}>\n {hasOneFileForSingle ? locale.choosedFile : locale.chooseFile}\n </span>\n )}\n {isLinkVisible && String.fromCharCode(0xa0) /* */}\n <div\n className={cx(\n globalClasses.afterLinkText,\n hasOneFileForSingle ? jsStyles.afterLinkText_HasFiles(theme) : jsStyles.afterLinkText(theme),\n )}\n >\n {hasOneFileForSingle ? (\n <div ref={fileDivRef} className={jsStyles.singleFile()}>\n {renderFile(files[0], <FileUploaderFile file={files[0]} size={size} onRemove={handleRemoveFile} />)}\n </div>\n ) : (\n <>\n {locale.orDragHere} \n <div className={uploadButtonIconClassNames}>{icon}</div>\n </>\n )}\n </div>\n </div>\n <FocusControlWrapper onBlurWhenDisabled={() => setFocusedByTab(false)}>\n <input\n {...inputProps}\n data-tid={FileUploaderDataTids.input}\n ref={inputRef}\n tabIndex={disabled ? -1 : 0}\n type=\"file\"\n disabled={disabled}\n multiple={multiple}\n className={jsStyles.visuallyHidden()}\n onClick={stopPropagation}\n onChange={handleInputChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n />\n </FocusControlWrapper>\n </label>\n </div>\n </div>\n </CommonWrapper>\n );\n});\n\nexport interface FileUploaderProps extends _FileUploaderProps, FileUploaderControlProviderProps {}\n\nexport const FileUploader = withFileUploaderControlProvider<FileUploaderProps, FileUploaderRef>(\n React.memo(_FileUploader),\n);\nFileUploader.displayName = 'FileUploader';\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","useCallback","useContext","useEffect","useImperativeHandle","useRef","useState","globalObject","isBrowser","getAttachedFile","cx","useMemoObject","FileUploaderControlContext","useControlLocale","useUpload","useDrop","ThemeContext","withFileUploaderControlProvider","keyListener","FileUploaderFile","FileUploaderFileList","CommonWrapper","FileUploaderFileValidationResult","useFileUploaderSize","forwardRefAndName","FocusControlWrapper","UploadIcon","globalClasses","jsStyles","stopPropagation","e","FileUploaderDataTids","root","content","link","input","defaultRenderFile","file","fileNode","_FileUploader","props","ref","_cx","theme","initialFiles","disabled","error","warning","_props$multiple","multiple","_props$width","width","fileUploaderWidth","_props$hideFiles","hideFiles","onBlur","onFocus","onChange","request","validateBeforeUpload","onRequestSuccess","onRequestError","_props$size","size","_props$renderFile","renderFile","inputProps","_objectWithoutPropertiesLoose","_excluded","_useContext","files","setFiles","removeFile","reset","setFileValidationResult","isMinLengthReached","locale","inputRef","fileDivRef","isAsync","isSingleMode","_useState","isLinkVisible","setIsLinkVisible","upload","tryValidateAndUpload","forEach","_ref","_asyncToGenerator","_regeneratorRuntime","mark","_callee","validationMessage","wrap","_callee$","_context","prev","next","t0","sent","id","stop","_x","apply","arguments","sizeClassName","small","sizeSmall","medium","sizeMedium","large","sizeLarge","sizeIconClass","iconSmall","iconMedium","iconLarge","contentInnerClass","contentInnerSmall","contentInnerMedium","contentInnerLarge","handleChange","newFiles","length","filesArray","Array","from","attachedFiles","map","handleDrop","event","dataTransfer","_dataTransfer$files","clearData","_useDrop","onDrop","isDraggable","labelRef","_useDrop2","isWindowDraggable","windowRef","current","document","focus","_inputRef$current","isTabPressed","blur","_inputRef$current2","getRootNode","rootNodeRef","_useState2","focusedByTab","setFocusedByTab","handleInputChange","target","handleFocus","requestAnimationFrame","handleBlur","handleRemoveFile","fileId","DataTransfer","filter","f","items","add","originalFile","_useState3","hovered","setHovered","uploadButtonClassNames","uploadButton","uploadButtonFocus","dragOver","canDrop","uploadButtonWrapperClassNames","windowDragOver","uploadButtonIconClassNames","icon","iconDisabled","hasOneFile","hasOneFileForSingle","contentClassNames","contentWithFiles","linkClassNames","linkHovered","linkDisabled","iconSizes","parseInt","btnIconSizeSmall","btnIconSizeMedium","btnIconSizeLarge","createElement","className","style","onRemove","onMouseEnter","onMouseLeave","choosedFile","chooseFile","String","fromCharCode","afterLinkText","afterLinkText_HasFiles","singleFile","Fragment","orDragHere","onBlurWhenDisabled","_extends","tabIndex","type","visuallyHidden","onClick","FileUploader","memo","displayName"],"sources":["FileUploader.tsx"],"sourcesContent":["import React, { useCallback, useContext, useEffect, useImperativeHandle, useRef, useState } from 'react';\nimport { globalObject, isBrowser } from '@skbkontur/global-object';\n\nimport { FileUploaderAttachedFile, getAttachedFile } from '../../internal/FileUploaderControl/fileUtils';\nimport { cx } from '../../lib/theming/Emotion';\nimport { InstanceWithRootNode } from '../../lib/rootNode';\nimport { useMemoObject } from '../../hooks/useMemoObject';\nimport { FileUploaderControlContext } from '../../internal/FileUploaderControl/FileUploaderControlContext';\nimport { useControlLocale } from '../../internal/FileUploaderControl/hooks/useControlLocale';\nimport { useUpload } from '../../internal/FileUploaderControl/hooks/useUpload';\nimport { useDrop } from '../../hooks/useDrop';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { FileUploaderControlProviderProps } from '../../internal/FileUploaderControl/FileUploaderControlProvider';\nimport { withFileUploaderControlProvider } from '../../internal/FileUploaderControl/withFileUploaderControlProvider';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { FileUploaderFile } from '../../internal/FileUploaderControl/FileUploaderFile/FileUploaderFile';\nimport { FileUploaderFileList } from '../../internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { Nullable } from '../../typings/utility-types';\nimport { FileUploaderFileValidationResult } from '../../internal/FileUploaderControl/FileUploaderFileValidationResult';\nimport { useFileUploaderSize } from '../../internal/FileUploaderControl/hooks/useFileUploaderSize';\nimport { SizeProp } from '../../lib/types/props';\nimport { forwardRefAndName } from '../../lib/forwardRefAndName';\nimport { FocusControlWrapper } from '../../internal/FocusControlWrapper';\n\nimport { UploadIcon } from './UploadIcon';\nimport { globalClasses, jsStyles } from './FileUploader.styles';\n\nconst stopPropagation: React.ReactEventHandler = (e) => e.stopPropagation();\n\ntype FileUploaderOverriddenProps = 'size';\n\ninterface _FileUploaderProps\n extends CommonProps,\n Omit<React.InputHTMLAttributes<HTMLInputElement>, FileUploaderOverriddenProps> {\n /** Начальное состояние загруженных файлов */\n initialFiles?: File[];\n /** Состояние ошибки всего контрола */\n error?: boolean;\n /** Состояние предупреждения всего контрола */\n warning?: boolean;\n /** Свойство ширины. */\n width?: React.CSSProperties['width'];\n /**\n * Задаёт размер контрола.\n *\n * **Допустимые значения**: `\"small\"`, `\"medium\"`, `\"large\"`.\n */\n size?: SizeProp;\n /** Свойство, скрывающее отображение файлов. */\n hideFiles?: boolean;\n\n /** Функция, через которую отправляем файлы. Используется для отслеживания статуса загрузки файла. */\n request?: (file: FileUploaderAttachedFile) => Promise<void>;\n /** Срабатывает при удачной попытке отправки через request */\n onRequestSuccess?: (fileId: string) => void;\n /** Срабатывает при неудачной попытке отправки через request */\n onRequestError?: (fileId: string) => void;\n\n /**\n * Функция валидации каждого файла.\n * Срабатывает после выбора файлов и перед попыткой отправить в request.\n * Чтобы вывести валидацию ошибки, промис должен вернуть строку.\n * */\n validateBeforeUpload?: (file: FileUploaderAttachedFile) => Promise<Nullable<string>>;\n\n /**\n * Функция, позволяющая кастомизировать файлы.\n * Через нее можно вешать кастомные валидации на каждый файл.\n * */\n renderFile?: (file: FileUploaderAttachedFile, fileNode: React.ReactElement) => React.ReactNode;\n}\n\nexport interface FileUploaderRef extends InstanceWithRootNode {\n focus: () => void;\n blur: () => void;\n /** Сбрасывает выбранные файлы */\n reset: () => void;\n removeFile: (fileId: string) => void;\n}\n\nexport const FileUploaderDataTids = {\n root: 'FileUploader__root',\n content: 'FileUploader__content',\n link: 'FileUploader__link',\n input: 'FileUploader__input',\n} as const;\n\nconst defaultRenderFile = (file: FileUploaderAttachedFile, fileNode: React.ReactElement) => fileNode;\n\nconst _FileUploader = forwardRefAndName<FileUploaderRef, _FileUploaderProps>('FileUploader', (props, ref) => {\n const theme = useContext(ThemeContext);\n\n const {\n initialFiles,\n disabled,\n error,\n warning,\n multiple = false,\n width = theme.fileUploaderWidth,\n hideFiles = false,\n onBlur,\n onFocus,\n onChange,\n request,\n validateBeforeUpload,\n onRequestSuccess,\n onRequestError,\n size = 'small',\n renderFile = defaultRenderFile,\n ...inputProps\n } = props;\n\n const { files, setFiles, removeFile, reset, setFileValidationResult, isMinLengthReached } =\n useContext(FileUploaderControlContext);\n\n const locale = useControlLocale();\n\n const inputRef = useRef<HTMLInputElement>(null);\n const fileDivRef = useRef<HTMLDivElement>(null);\n\n const isAsync = !!request;\n const isSingleMode = !multiple;\n\n const [isLinkVisible, setIsLinkVisible] = useState(true);\n const upload = useUpload(request, onRequestSuccess, onRequestError);\n\n const tryValidateAndUpload = useCallback(\n (files: FileUploaderAttachedFile[]) => {\n files.forEach(async (file) => {\n const validationMessage = validateBeforeUpload && (await validateBeforeUpload(file));\n\n if (!validationMessage) {\n isAsync && upload(file);\n } else {\n setFileValidationResult(file.id, FileUploaderFileValidationResult.error(validationMessage));\n }\n });\n },\n [validateBeforeUpload, isAsync, upload, setFileValidationResult],\n );\n\n const sizeClassName = useFileUploaderSize(size, {\n small: jsStyles.sizeSmall(theme),\n medium: jsStyles.sizeMedium(theme),\n large: jsStyles.sizeLarge(theme),\n });\n\n const sizeIconClass = useFileUploaderSize(size, {\n small: jsStyles.iconSmall(theme),\n medium: jsStyles.iconMedium(theme),\n large: jsStyles.iconLarge(theme),\n });\n\n const contentInnerClass = useFileUploaderSize(size, {\n small: jsStyles.contentInnerSmall(theme),\n medium: jsStyles.contentInnerMedium(theme),\n large: jsStyles.contentInnerLarge(theme),\n });\n\n /** common part **/\n const handleChange = useCallback(\n (newFiles: FileList | null) => {\n if (!newFiles || !newFiles.length) {\n return;\n }\n\n let filesArray = Array.from(newFiles);\n\n if (isSingleMode) {\n filesArray = [filesArray[0]];\n }\n\n const attachedFiles = filesArray.map(getAttachedFile);\n\n if (isSingleMode && attachedFiles.length && files.length) {\n removeFile(files[0].id);\n }\n\n if (attachedFiles.length) {\n setFiles(attachedFiles);\n tryValidateAndUpload(attachedFiles);\n }\n },\n [tryValidateAndUpload, setFiles, isSingleMode, files, removeFile],\n );\n\n const handleDrop = useCallback(\n (event: DragEvent) => {\n if (disabled) {\n return;\n }\n\n const { dataTransfer } = event;\n if (dataTransfer) {\n if (dataTransfer.files?.length > 0) {\n handleChange(dataTransfer.files);\n }\n dataTransfer.clearData();\n }\n },\n [handleChange, disabled],\n );\n\n const { isDraggable, ref: labelRef } = useDrop<HTMLLabelElement>({ onDrop: handleDrop });\n const { isDraggable: isWindowDraggable, ref: windowRef } = useDrop<Document>();\n\n if (isBrowser(globalObject)) {\n windowRef.current = globalObject.document;\n }\n\n const focus = useCallback(() => {\n keyListener.isTabPressed = true;\n inputRef.current?.focus();\n }, []);\n\n const blur = useCallback(() => {\n inputRef.current?.blur();\n }, []);\n\n useImperativeHandle(ref, () => ({ focus, blur, reset, removeFile, getRootNode: () => rootNodeRef.current }), [\n ref,\n blur,\n focus,\n reset,\n removeFile,\n ]);\n\n const [focusedByTab, setFocusedByTab] = useState(false);\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n onChange?.(event);\n handleChange(event.target.files);\n };\n\n const handleFocus = (e: React.FocusEvent<HTMLInputElement>) => {\n if (!disabled) {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n globalObject.requestAnimationFrame?.(() => {\n if (keyListener.isTabPressed) {\n setFocusedByTab(true);\n }\n });\n onFocus?.(e);\n }\n };\n\n const handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n setFocusedByTab(false);\n if (!disabled) {\n onBlur?.(e);\n }\n };\n\n const handleRemoveFile = useCallback((fileId: string) => {\n const dataTransfer = new DataTransfer();\n files\n .filter((f) => f.id !== fileId)\n .forEach((file) => {\n dataTransfer.items.add(file.originalFile);\n });\n inputRef.current && (inputRef.current.files = dataTransfer.files);\n }, []);\n\n const [hovered, setHovered] = useState(false);\n\n const uploadButtonClassNames = cx(\n jsStyles.uploadButton(theme),\n sizeClassName,\n focusedByTab && jsStyles.uploadButtonFocus(theme),\n disabled && jsStyles.disabled(theme),\n !disabled && hovered && jsStyles.hovered(theme),\n !!warning && jsStyles.warning(theme),\n !!error && jsStyles.error(theme),\n isDraggable && !disabled && jsStyles.dragOver(theme),\n );\n\n const canDrop = isWindowDraggable && !disabled;\n const uploadButtonWrapperClassNames = cx(canDrop && jsStyles.windowDragOver(theme));\n\n const uploadButtonIconClassNames = cx(jsStyles.icon(theme), sizeIconClass, disabled && jsStyles.iconDisabled(theme));\n\n const hasOneFile = files.length === 1;\n const hasOneFileForSingle = isSingleMode && hasOneFile && !hideFiles;\n\n const contentClassNames = cx(jsStyles.content(), hasOneFileForSingle && jsStyles.contentWithFiles());\n\n const linkClassNames = cx(\n jsStyles.link(theme),\n !disabled && hovered && jsStyles.linkHovered(theme),\n disabled && jsStyles.linkDisabled(theme),\n );\n\n useEffect(() => {\n setIsLinkVisible(hasOneFileForSingle ? !isMinLengthReached : true);\n }, [isMinLengthReached, hasOneFileForSingle]);\n\n useEffect(() => {\n if (!files || !files.length || !inputRef.current) {\n return;\n }\n\n const dataTransfer = new DataTransfer();\n files.forEach((file) => dataTransfer.items.add(file.originalFile));\n inputRef.current.files = dataTransfer.files;\n }, []);\n\n const rootNodeRef = useRef(null);\n\n const iconSizes: Record<SizeProp, number> = {\n small: parseInt(theme.btnIconSizeSmall),\n medium: parseInt(theme.btnIconSizeMedium),\n large: parseInt(theme.btnIconSizeLarge),\n };\n const icon = <UploadIcon size={iconSizes[size]} />;\n\n return (\n <CommonWrapper {...props}>\n <div\n data-tid={FileUploaderDataTids.root}\n className={jsStyles.root(theme)}\n style={useMemoObject({ width })}\n ref={rootNodeRef}\n >\n {!hideFiles && !isSingleMode && !!files.length && (\n <FileUploaderFileList renderFile={renderFile} size={size} onRemove={handleRemoveFile} />\n )}\n <div className={uploadButtonWrapperClassNames}>\n <label\n onMouseEnter={() => setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n ref={labelRef}\n className={uploadButtonClassNames}\n >\n <div\n data-tid={FileUploaderDataTids.content}\n className={cx(contentClassNames, { [contentInnerClass]: !files.length || !isSingleMode })}\n >\n {isLinkVisible && (\n <span data-tid={FileUploaderDataTids.link} className={linkClassNames}>\n {hasOneFileForSingle ? locale.choosedFile : locale.chooseFile}\n </span>\n )}\n {isLinkVisible && String.fromCharCode(0xa0) /* */}\n <div\n className={cx(\n globalClasses.afterLinkText,\n hasOneFileForSingle ? jsStyles.afterLinkText_HasFiles(theme) : jsStyles.afterLinkText(theme),\n )}\n >\n {hasOneFileForSingle ? (\n <div ref={fileDivRef} className={jsStyles.singleFile()}>\n {renderFile(files[0], <FileUploaderFile file={files[0]} size={size} onRemove={handleRemoveFile} />)}\n </div>\n ) : (\n <>\n {locale.orDragHere} \n <div className={uploadButtonIconClassNames}>{icon}</div>\n </>\n )}\n </div>\n </div>\n <FocusControlWrapper onBlurWhenDisabled={() => setFocusedByTab(false)}>\n <input\n {...inputProps}\n data-tid={FileUploaderDataTids.input}\n ref={inputRef}\n tabIndex={disabled ? -1 : 0}\n type=\"file\"\n disabled={disabled}\n multiple={multiple}\n className={jsStyles.visuallyHidden()}\n onClick={stopPropagation}\n onChange={handleInputChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n />\n </FocusControlWrapper>\n </label>\n </div>\n </div>\n </CommonWrapper>\n );\n});\n\nexport interface FileUploaderProps extends _FileUploaderProps, FileUploaderControlProviderProps {}\n\nexport const FileUploader = withFileUploaderControlProvider<FileUploaderProps, FileUploaderRef>(\n React.memo(_FileUploader),\n);\nFileUploader.displayName = 'FileUploader';\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -46,6 +46,7 @@ export interface FileUploaderRef extends InstanceWithRootNode {
|
|
|
46
46
|
blur: () => void;
|
|
47
47
|
/** Сбрасывает выбранные файлы */
|
|
48
48
|
reset: () => void;
|
|
49
|
+
removeFile: (fileId: string) => void;
|
|
49
50
|
}
|
|
50
51
|
export declare const FileUploaderDataTids: {
|
|
51
52
|
readonly root: "FileUploader__root";
|
|
@@ -82,6 +82,29 @@ import { FileUploader } from '@skbkontur/react-ui';
|
|
|
82
82
|
<FileUploader multiple error />
|
|
83
83
|
```
|
|
84
84
|
|
|
85
|
+
Ручное удаление файлов
|
|
86
|
+
|
|
87
|
+
В критичных случаях, если нужно удалить файлы из контрола вручную, то это можно сделать, используя метод `removeFile` из `ref`.
|
|
88
|
+
Обратите внимание, что при вызове `removeFile` вызываются коллбэки `onRemove` и `onValueChange`.
|
|
89
|
+
|
|
90
|
+
```jsx harmony
|
|
91
|
+
import { FileUploader, Button } from '@skbkontur/react-ui';
|
|
92
|
+
|
|
93
|
+
const fileUploaderRef = React.useRef(null);
|
|
94
|
+
const [fileList, setFileList] = React.useState([]);
|
|
95
|
+
|
|
96
|
+
<div style={{ display: 'inline-grid', gap: '10px' }}>
|
|
97
|
+
<FileUploader ref={fileUploaderRef} multiple onValueChange={(files) => setFileList(files)} />
|
|
98
|
+
{fileList.map((file) => {
|
|
99
|
+
return (
|
|
100
|
+
<Button key={file.id} onClick={() => fileUploaderRef.current.removeFile(file.id)}>
|
|
101
|
+
Delete file {file.originalFile.name}
|
|
102
|
+
</Button>
|
|
103
|
+
);
|
|
104
|
+
})}
|
|
105
|
+
</div>
|
|
106
|
+
```
|
|
107
|
+
|
|
85
108
|
#### Локали по умолчанию
|
|
86
109
|
|
|
87
110
|
```typescript static
|
|
@@ -107,7 +107,7 @@ export var MenuItem = rootNode(_class = (_MenuItem = /*#__PURE__*/function (_Rea
|
|
|
107
107
|
var className = cx((_cx2 = {}, _cx2[styles.root(_this.theme)] = true, _cx2[_this.getRootSizeClassName()] = true, _cx2[styles.rootMobile(_this.theme)] = isMobile, _cx2[styles.loose()] = !!loose, _cx2[styles.hover(_this.theme)] = _this.isHover, _cx2[styles.selected(_this.theme)] = _this.isSelected, _cx2[styles.link(_this.theme)] = !!link, _cx2[_this.getWithIconSizeClassName()] = Boolean(iconElement) || !!_enableIconPadding || _this.context.enableIconPadding, _cx2[styles.disabled(_this.theme)] = !!disabled, _cx2));
|
|
108
108
|
var content = children;
|
|
109
109
|
if (isFunction(children)) {
|
|
110
|
-
content = children(
|
|
110
|
+
content = children(_this.activeState);
|
|
111
111
|
}
|
|
112
112
|
var Component = _this.getComponent();
|
|
113
113
|
return /*#__PURE__*/(
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","PropTypes","globalObject","isBrowser","scrollYCenterIntoNearestScrollable","isExternalLink","isFunction","isNonNullable","isReactUIComponent","ThemeContext","CommonWrapper","cx","rootNode","MenuContext","getVisualStateDataAttributes","styles","MenuItemDataTids","root","content","comment","MenuItem","_class","_MenuItem","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","state","iconOffsetTop","highlighted","mouseEntered","rootRef","contentRef","createRef","highlight","setState","unhighlight","select","event","handleClick","isEnabled","props","disabled","navigate","href","target","window","open","location","renderMain","_cx2","_cx3","_cx4","_this$props","link","icon","loose","size","_enableIconPadding","component","onMouseEnter","onMouseLeave","isMobile","scrollIntoView","_this$props$rel","rel","isNotSelectable","children","unusedClasses","className","style","dataTid","rest","_objectWithoutPropertiesLoose","_excluded","iconElement","_cx","createElement","top","getIconSizeClassName","theme","getRootSizeClassName","rootMobile","hover","isHover","selected","isSelected","getWithIconSizeClassName","Boolean","context","enableIconPadding","Component","getComponent","_extends","rootNodeRef","setRootNode","ref","setRootRef","activeState","onMouseOver","handleMouseEnterFix","handleMouseLeave","onClick","undefined","tabIndex","mobileContentWithIcon","commentHover","e","_this$context$navigat","navigation","_this$context$navigat2","onItemClick","element","_this$props2","hasIconAmongItems","_this$context$navigat3","items","some","item","_inheritsLoose","_proto","prototype","render","_this2","Consumer","componentDidMount","getComputedStyle","getPropertyValue","current","_this$context$navigat4","add","_this$context$setEnab","_this$context","setEnableIconPadding","componentWillUnmount","_this$context$navigat5","_this$context$setEnab2","_this$context2","remove","componentDidUpdate","prevProps","_this$context$setEnab3","_this$context3","_this$context$navigat6","_this$context$navigat7","rootLarge","rootMedium","rootSmall","iconLarge","iconMedium","iconSmall","withIconLarge","withIconMedium","withIconSmall","_createClass","key","get","__KONTUR_REACT_UI__","displayName","__MENU_ITEM__","propTypes","node","bool","string","func","contextType","isMenuItem"],"sources":["MenuItem.tsx"],"sourcesContent":["import React, { AriaAttributes, HTMLAttributes } from 'react';\nimport PropTypes from 'prop-types';\nimport { globalObject, isBrowser } from '@skbkontur/global-object';\n\nimport { scrollYCenterIntoNearestScrollable } from '../../lib/dom/scrollYCenterIntoNearestScrollable';\nimport { Nullable } from '../../typings/utility-types';\nimport { isExternalLink, isFunction, isNonNullable, isReactUIComponent } from '../../lib/utils';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { SizeProp } from '../../lib/types/props';\nimport { MenuContext, MenuContextType } from '../../internal/Menu/MenuContext';\nimport { getVisualStateDataAttributes } from '../../internal/CommonWrapper/utils/getVisualStateDataAttributes';\n\nimport { styles } from './MenuItem.styles';\n\nexport type MenuItemState = null | 'hover' | 'selected' | void;\n\nexport interface MenuItemProps\n extends Pick<AriaAttributes, 'aria-describedby' | 'aria-label'>,\n Pick<HTMLAttributes<HTMLElement>, 'id'>,\n Omit<CommonProps, 'children'> {\n /**\n * @ignore\n */\n _enableIconPadding?: boolean;\n /**\n * Добавляет описание для элемента меню.\n */\n comment?: React.ReactNode;\n /**\n * Отключенное состояние.\n */\n disabled?: boolean;\n /**\n * Добавляет элементу меню иконку.\n */\n icon?: React.ReactElement<any>;\n /**\n * Меняет цвет текста на синий.\n */\n link?: boolean;\n /**\n * Размер\n */\n size?: SizeProp;\n /**\n * @ignore\n */\n loose?: boolean;\n /**\n * @ignore\n */\n state?: MenuItemState;\n /**\n * HTML-событие `onclick`.\n */\n onClick?: (event: React.SyntheticEvent<HTMLElement>) => void;\n /**\n * HTML-событие `mouseenter`.\n */\n onMouseEnter?: React.MouseEventHandler;\n /**\n * HTML-событие `mouseleave`.\n */\n onMouseLeave?: React.MouseEventHandler;\n children?: React.ReactNode | ((state: MenuItemState) => React.ReactNode);\n /**\n * HTML-атрибут `target`.\n */\n target?: React.AnchorHTMLAttributes<HTMLAnchorElement>['target'];\n /**\n * HTML-атрибут `title`.\n */\n title?: React.AnchorHTMLAttributes<HTMLAnchorElement>['title'];\n /**\n * HTML-атрибут `href`.\n */\n href?: React.AnchorHTMLAttributes<HTMLAnchorElement>['href'];\n /**\n * HTML-атрибут `rel`.\n *\n * Для внешних ссылок аттрибут rel по умолчанию равен \"noopener noreferrer\"\n */\n rel?: React.AnchorHTMLAttributes<HTMLAnchorElement>['rel'];\n /**\n * Заменяет корневой элемент, на компонент переданный в проп.\n *\n * По умолчанию корневой элемент рендерится как `button`. <br />Если передан `href`, то вместо `button` рендерится `a`.\n */\n component?: React.ComponentType<any>;\n /**\n * Запрещает выделение и выбор данного пункта меню\n *\n */\n isNotSelectable?: boolean;\n\n isMobile?: boolean;\n /** @ignore */\n scrollIntoView?: boolean;\n}\n\nexport const MenuItemDataTids = {\n root: 'MenuItem__root',\n content: 'MenuItem__content',\n comment: 'MenuItem__comment',\n} as const;\n\n/**\n *\n * `MenuItem` - это вложенный компонент, задающий базовые стили для элемента меню и позволяющий навигироваться по элементам меню с помощью клавиатуры.\n *\n * Сущности в которых может быть использован `MenuItem`: [DropdownMenu](#/Components/DropdownMenu), [Kebab](#/Components/Kebab), [TooltipMenu](#/Components/TooltipMenu) и [Select](#/Components/Select).\n */\n@rootNode\nexport class MenuItem extends React.Component<MenuItemProps> {\n public static __KONTUR_REACT_UI__ = 'MenuItem';\n public static displayName = 'MenuItem';\n public static __MENU_ITEM__ = true;\n\n public static propTypes = {\n comment: PropTypes.node,\n\n disabled: PropTypes.bool,\n\n href: PropTypes.string,\n\n icon: PropTypes.node,\n\n loose: PropTypes.bool,\n\n state: PropTypes.string,\n\n target: PropTypes.string,\n\n onClick: PropTypes.func,\n\n size: PropTypes.string,\n };\n\n public state = {\n iconOffsetTop: 0,\n highlighted: false,\n };\n\n private theme!: Theme;\n private mouseEntered = false;\n private setRootNode!: TSetRootNode;\n private rootRef: Nullable<HTMLElement> = null;\n private contentRef = React.createRef<HTMLElement>();\n static contextType = MenuContext;\n\n public context!: MenuContextType;\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public componentDidMount() {\n if (this.props.scrollIntoView && this.rootRef) {\n scrollYCenterIntoNearestScrollable(this.rootRef);\n }\n if (this.rootRef && isBrowser(globalObject)) {\n this.setState({ iconOffsetTop: globalObject.getComputedStyle(this.rootRef).getPropertyValue('padding-top') });\n }\n if (this.contentRef.current && !this.props.isNotSelectable) {\n this.context.navigation?.add(this.contentRef.current, this);\n }\n if (this.props.icon) {\n this.context.setEnableIconPadding?.(true);\n }\n }\n\n public componentWillUnmount() {\n if (this.contentRef.current) {\n !this.props.isNotSelectable && this.context.navigation?.remove(this.contentRef.current);\n this.context.setEnableIconPadding?.(this.hasIconAmongItems());\n }\n }\n\n public componentDidUpdate(prevProps: Readonly<MenuItemProps>) {\n if (prevProps.icon !== this.props.icon) {\n this.context.setEnableIconPadding?.(!!this.props.icon || this.hasIconAmongItems());\n }\n if (this.contentRef.current && prevProps.isNotSelectable !== this.props.isNotSelectable) {\n if (this.props.isNotSelectable) {\n this.unhighlight();\n this.context.navigation?.remove(this.contentRef.current);\n } else {\n this.context.navigation?.add(this.contentRef.current, this);\n }\n }\n }\n\n public highlight = () => {\n this.setState({ highlighted: true });\n };\n\n public unhighlight = () => {\n this.setState({ highlighted: false });\n };\n\n public select = (event: React.SyntheticEvent<HTMLElement>) => {\n this.handleClick(event as React.MouseEvent<HTMLElement>);\n };\n\n public isEnabled = () => {\n return !this.props.disabled;\n };\n\n public navigate = () => {\n if (!this.props.href) {\n return;\n }\n if (this.props.target) {\n window.open(this.props.href, this.props.target);\n } else {\n location.href = this.props.href;\n }\n };\n\n private getRootSizeClassName() {\n switch (this.props.size) {\n case 'large':\n return styles.rootLarge(this.theme);\n case 'medium':\n return styles.rootMedium(this.theme);\n case 'small':\n default:\n return styles.rootSmall(this.theme);\n }\n }\n\n private getIconSizeClassName() {\n switch (this.props.size) {\n case 'large':\n return styles.iconLarge(this.theme);\n case 'medium':\n return styles.iconMedium(this.theme);\n case 'small':\n default:\n return styles.iconSmall(this.theme);\n }\n }\n\n private getWithIconSizeClassName() {\n switch (this.props.size) {\n case 'large':\n return styles.withIconLarge(this.theme);\n case 'medium':\n return styles.withIconMedium(this.theme);\n case 'small':\n default:\n return styles.withIconSmall(this.theme);\n }\n }\n\n private renderMain = () => {\n const {\n link,\n comment,\n icon,\n loose,\n state,\n size,\n _enableIconPadding,\n component,\n onMouseEnter,\n onMouseLeave,\n isMobile,\n href,\n disabled,\n scrollIntoView,\n rel = href && isExternalLink(href) ? 'noopener noreferrer' : this.props.rel,\n isNotSelectable,\n children,\n className: unusedClasses,\n style,\n 'data-tid': dataTid,\n ...rest\n } = this.props;\n\n let iconElement = null;\n if (icon) {\n iconElement = (\n <div\n style={{ top: this.state.iconOffsetTop }}\n className={cx({\n [styles.icon()]: true,\n [this.getIconSizeClassName()]: true,\n })}\n >\n {icon}\n </div>\n );\n }\n\n const className = cx({\n [styles.root(this.theme)]: true,\n [this.getRootSizeClassName()]: true,\n [styles.rootMobile(this.theme)]: isMobile,\n [styles.loose()]: !!loose,\n [styles.hover(this.theme)]: this.isHover,\n [styles.selected(this.theme)]: this.isSelected,\n [styles.link(this.theme)]: !!link,\n [this.getWithIconSizeClassName()]: Boolean(iconElement) || !!_enableIconPadding || this.context.enableIconPadding,\n [styles.disabled(this.theme)]: !!disabled,\n });\n\n let content = children;\n if (isFunction(children)) {\n content = children(state);\n }\n\n const Component = this.getComponent();\n\n return (\n <CommonWrapper\n rootNodeRef={this.setRootNode}\n {...getVisualStateDataAttributes({\n hover: this.isHover,\n selected: this.isSelected,\n })}\n {...this.props}\n >\n <Component\n ref={this.setRootRef}\n data-tid={MenuItemDataTids.root}\n {...rest}\n disabled={disabled}\n state={this.activeState}\n onMouseOver={this.handleMouseEnterFix}\n onMouseLeave={this.handleMouseLeave}\n onClick={this.handleClick}\n className={className}\n href={href}\n rel={href ? rel : undefined}\n tabIndex={-1}\n >\n {iconElement}\n <span\n className={cx({\n [styles.mobileContentWithIcon()]: isMobile && isNonNullable(icon),\n })}\n ref={this.contentRef}\n data-tid={MenuItemDataTids.content}\n >\n {typeof content === 'function' ? content() : content}\n </span>\n {comment && (\n <div\n data-tid={MenuItemDataTids.comment}\n className={cx({\n [styles.comment(this.theme)]: true,\n [styles.commentHover(this.theme)]: this.isHover,\n })}\n >\n {comment}\n </div>\n )}\n </Component>\n </CommonWrapper>\n );\n };\n\n private get activeState() {\n return this.state.highlighted ? 'hover' : this.props.state;\n }\n\n private get isHover(): boolean {\n return (this.state.highlighted || this.props.state === 'hover') && !this.props.disabled;\n }\n\n private get isSelected(): boolean {\n return this.props.state === 'selected' && !this.state.highlighted;\n }\n\n // https://github.com/facebook/react/issues/10109\n // Mouseenter event not triggered when cursor moves from disabled button\n private handleMouseEnterFix = (e: React.MouseEvent<HTMLElement>) => {\n if (!this.mouseEntered) {\n this.mouseEntered = true;\n this.props.onMouseEnter?.(e);\n !this.props.isNotSelectable && this.context.navigation?.highlight(this);\n }\n };\n\n private handleMouseLeave = (e: React.MouseEvent<HTMLElement>) => {\n this.mouseEntered = false;\n this.props.onMouseLeave?.(e);\n !this.props.isNotSelectable && this.context.navigation?.unhighlight();\n };\n\n private handleClick = (e: React.MouseEvent<HTMLElement>) => {\n if (this.props.isNotSelectable) {\n return;\n }\n this.props.onClick?.(e);\n this.context.onItemClick?.(e);\n };\n\n private setRootRef = (element: HTMLElement) => {\n this.rootRef = element;\n };\n\n private getComponent = () => {\n const { disabled, component, href } = this.props;\n\n if (component) {\n return component;\n }\n\n if (disabled) {\n return 'button';\n }\n\n if (href) {\n return 'a';\n }\n\n return 'button';\n };\n\n private hasIconAmongItems = () => {\n return Boolean(this.context.navigation?.items.some((item) => item.props.icon));\n };\n}\n\nexport const isMenuItem = isReactUIComponent('MenuItem');\n"],"mappings":"+jBAAA,OAAOA,KAAK,MAA0C,OAAO;AAC7D,OAAOC,SAAS,MAAM,YAAY;AAClC,SAASC,YAAY,EAAEC,SAAS,QAAQ,0BAA0B;;AAElE,SAASC,kCAAkC,QAAQ,kDAAkD;;AAErG,SAASC,cAAc,EAAEC,UAAU,EAAEC,aAAa,EAAEC,kBAAkB,QAAQ,iBAAiB;AAC/F,SAASC,YAAY,QAAQ,gCAAgC;;AAE7D,SAAsBC,aAAa,QAAQ,8BAA8B;AACzE,SAASC,EAAE,QAAQ,2BAA2B;AAC9C,SAASC,QAAQ,QAAsB,oBAAoB;;AAE3D,SAASC,WAAW,QAAyB,iCAAiC;AAC9E,SAASC,4BAA4B,QAAQ,iEAAiE;;AAE9G,SAASC,MAAM,QAAQ,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwF1C,OAAO,IAAMC,gBAAgB,GAAG;EAC9BC,IAAI,EAAE,gBAAgB;EACtBC,OAAO,EAAE,mBAAmB;EAC5BC,OAAO,EAAE;AACX,CAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACaC,QAAQ,GADpBR,QAAQ,CAAAS,MAAA,IAAAC,SAAA,0BAAAC,gBAAA,YAAAH,SAAA,OAAAI,KAAA,UAAAC,IAAA,GAAAC,SAAA,CAAAC,MAAA,EAAAC,IAAA,OAAAC,KAAA,CAAAJ,IAAA,GAAAK,IAAA,MAAAA,IAAA,GAAAL,IAAA,EAAAK,IAAA,KAAAF,IAAA,CAAAE,IAAA,IAAAJ,SAAA,CAAAI,IAAA,GAAAN,KAAA,GAAAD,gBAAA,CAAAQ,IAAA,CAAAC,KAAA,CAAAT,gBAAA,SAAAU,MAAA,CAAAL,IAAA,WAAAJ,KAAA;;;;;;;;;;;;;;;;;;;;;;;;;IA0BAU,KAAK,GAAG;MACbC,aAAa,EAAE,CAAC;MAChBC,WAAW,EAAE;IACf,CAAC,CAAAZ,KAAA;;;IAGOa,YAAY,GAAG,KAAK,CAAAb,KAAA;;IAEpBc,OAAO,GAA0B,IAAI,CAAAd,KAAA;IACrCe,UAAU,gBAAGvC,KAAK,CAACwC,SAAS,CAAc,CAAC,CAAAhB,KAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAoD5CiB,SAAS,GAAG,YAAM;MACvBjB,KAAA,CAAKkB,QAAQ,CAAC,EAAEN,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC;IACtC,CAAC,CAAAZ,KAAA;;IAEMmB,WAAW,GAAG,YAAM;MACzBnB,KAAA,CAAKkB,QAAQ,CAAC,EAAEN,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;IACvC,CAAC,CAAAZ,KAAA;;IAEMoB,MAAM,GAAG,UAACC,KAAwC,EAAK;MAC5DrB,KAAA,CAAKsB,WAAW,CAACD,KAAsC,CAAC;IAC1D,CAAC,CAAArB,KAAA;;IAEMuB,SAAS,GAAG,YAAM;MACvB,OAAO,CAACvB,KAAA,CAAKwB,KAAK,CAACC,QAAQ;IAC7B,CAAC,CAAAzB,KAAA;;IAEM0B,QAAQ,GAAG,YAAM;MACtB,IAAI,CAAC1B,KAAA,CAAKwB,KAAK,CAACG,IAAI,EAAE;QACpB;MACF;MACA,IAAI3B,KAAA,CAAKwB,KAAK,CAACI,MAAM,EAAE;QACrBC,MAAM,CAACC,IAAI,CAAC9B,KAAA,CAAKwB,KAAK,CAACG,IAAI,EAAE3B,KAAA,CAAKwB,KAAK,CAACI,MAAM,CAAC;MACjD,CAAC,MAAM;QACLG,QAAQ,CAACJ,IAAI,GAAG3B,KAAA,CAAKwB,KAAK,CAACG,IAAI;MACjC;IACF,CAAC,CAAA3B,KAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAsCOgC,UAAU,GAAG,YAAM,KAAAC,IAAA,EAAAC,IAAA,EAAAC,IAAA;MACzB,IAAAC,WAAA;;;;;;;;;;;;;;;;;;;;;;QAsBIpC,KAAA,CAAKwB,KAAK,CArBZa,IAAI,GAAAD,WAAA,CAAJC,IAAI,CACJ1C,OAAO,GAAAyC,WAAA,CAAPzC,OAAO,CACP2C,IAAI,GAAAF,WAAA,CAAJE,IAAI,CACJC,KAAK,GAAAH,WAAA,CAALG,KAAK,CACL7B,KAAK,GAAA0B,WAAA,CAAL1B,KAAK,CACL8B,IAAI,GAAAJ,WAAA,CAAJI,IAAI,CACJC,kBAAkB,GAAAL,WAAA,CAAlBK,kBAAkB,CAClBC,SAAS,GAAAN,WAAA,CAATM,SAAS,CACTC,YAAY,GAAAP,WAAA,CAAZO,YAAY,CACZC,YAAY,GAAAR,WAAA,CAAZQ,YAAY,CACZC,QAAQ,GAAAT,WAAA,CAARS,QAAQ,CACRlB,IAAI,GAAAS,WAAA,CAAJT,IAAI,CACJF,QAAQ,GAAAW,WAAA,CAARX,QAAQ,CACRqB,cAAc,GAAAV,WAAA,CAAdU,cAAc,CAAAC,eAAA,GAAAX,WAAA,CACdY,GAAG,CAAHA,GAAG,GAAAD,eAAA,cAAGpB,IAAI,IAAI9C,cAAc,CAAC8C,IAAI,CAAC,GAAG,qBAAqB,GAAG3B,KAAA,CAAKwB,KAAK,CAACwB,GAAG,GAAAD,eAAA,CAC3EE,eAAe,GAAAb,WAAA,CAAfa,eAAe,CACfC,QAAQ,GAAAd,WAAA,CAARc,QAAQ,CACGC,aAAa,GAAAf,WAAA,CAAxBgB,SAAS,CACTC,KAAK,GAAAjB,WAAA,CAALiB,KAAK,CACOC,OAAO,GAAAlB,WAAA,CAAnB,UAAU,EACPmB,IAAI,GAAAC,6BAAA,CAAApB,WAAA,EAAAqB,SAAA;;MAGT,IAAIC,WAAW,GAAG,IAAI;MACtB,IAAIpB,IAAI,EAAE,KAAAqB,GAAA;QACRD,WAAW;QACTlF,KAAA,CAAAoF,aAAA;UACEP,KAAK,EAAE,EAAEQ,GAAG,EAAE7D,KAAA,CAAKU,KAAK,CAACC,aAAa,CAAC,CAAE;UACzCyC,SAAS,EAAEjE,EAAE,EAAAwE,GAAA,OAAAA,GAAA;UACVpE,MAAM,CAAC+C,IAAI,CAAC,CAAC,IAAG,IAAI,EAAAqB,GAAA;UACpB3D,KAAA,CAAK8D,oBAAoB,CAAC,CAAC,IAAG,IAAI,EAAAH,GAAA;UACpC,CAAE;;QAEFrB;QACE,CACN;;MACH;;MAEA,IAAMc,SAAS,GAAGjE,EAAE,EAAA8C,IAAA,OAAAA,IAAA;MACjB1C,MAAM,CAACE,IAAI,CAACO,KAAA,CAAK+D,KAAK,CAAC,IAAG,IAAI,EAAA9B,IAAA;MAC9BjC,KAAA,CAAKgE,oBAAoB,CAAC,CAAC,IAAG,IAAI,EAAA/B,IAAA;MAClC1C,MAAM,CAAC0E,UAAU,CAACjE,KAAA,CAAK+D,KAAK,CAAC,IAAGlB,QAAQ,EAAAZ,IAAA;MACxC1C,MAAM,CAACgD,KAAK,CAAC,CAAC,IAAG,CAAC,CAACA,KAAK,EAAAN,IAAA;MACxB1C,MAAM,CAAC2E,KAAK,CAAClE,KAAA,CAAK+D,KAAK,CAAC,IAAG/D,KAAA,CAAKmE,OAAO,EAAAlC,IAAA;MACvC1C,MAAM,CAAC6E,QAAQ,CAACpE,KAAA,CAAK+D,KAAK,CAAC,IAAG/D,KAAA,CAAKqE,UAAU,EAAApC,IAAA;MAC7C1C,MAAM,CAAC8C,IAAI,CAACrC,KAAA,CAAK+D,KAAK,CAAC,IAAG,CAAC,CAAC1B,IAAI,EAAAJ,IAAA;MAChCjC,KAAA,CAAKsE,wBAAwB,CAAC,CAAC,IAAGC,OAAO,CAACb,WAAW,CAAC,IAAI,CAAC,CAACjB,kBAAkB,IAAIzC,KAAA,CAAKwE,OAAO,CAACC,iBAAiB,EAAAxC,IAAA;MAChH1C,MAAM,CAACkC,QAAQ,CAACzB,KAAA,CAAK+D,KAAK,CAAC,IAAG,CAAC,CAACtC,QAAQ,EAAAQ,IAAA;MAC1C,CAAC;;MAEF,IAAIvC,OAAO,GAAGwD,QAAQ;MACtB,IAAIpE,UAAU,CAACoE,QAAQ,CAAC,EAAE;QACxBxD,OAAO,GAAGwD,QAAQ,CAACxC,KAAK,CAAC;MAC3B;;MAEA,IAAMgE,SAAS,GAAG1E,KAAA,CAAK2E,YAAY,CAAC,CAAC;;MAErC;QACEnG,KAAA,CAAAoF,aAAA,CAAC1E,aAAa,EAAA0F,QAAA;UACZC,WAAW,EAAE7E,KAAA,CAAK8E,WAAY;QAC1BxF,4BAA4B,CAAC;UAC/B4E,KAAK,EAAElE,KAAA,CAAKmE,OAAO;UACnBC,QAAQ,EAAEpE,KAAA,CAAKqE;QACjB,CAAC,CAAC;QACErE,KAAA,CAAKwB,KAAK;;QAEdhD,KAAA,CAAAoF,aAAA,CAACc,SAAS,EAAAE,QAAA;UACRG,GAAG,EAAE/E,KAAA,CAAKgF,UAAW;UACrB,YAAUxF,gBAAgB,CAACC,IAAK;QAC5B8D,IAAI;UACR9B,QAAQ,EAAEA,QAAS;UACnBf,KAAK,EAAEV,KAAA,CAAKiF,WAAY;UACxBC,WAAW,EAAElF,KAAA,CAAKmF,mBAAoB;UACtCvC,YAAY,EAAE5C,KAAA,CAAKoF,gBAAiB;UACpCC,OAAO,EAAErF,KAAA,CAAKsB,WAAY;UAC1B8B,SAAS,EAAEA,SAAU;UACrBzB,IAAI,EAAEA,IAAK;UACXqB,GAAG,EAAErB,IAAI,GAAGqB,GAAG,GAAGsC,SAAU;UAC5BC,QAAQ,EAAE,CAAC,CAAE;;QAEZ7B,WAAW;QACZlF,KAAA,CAAAoF,aAAA;UACER,SAAS,EAAEjE,EAAE,EAAA+C,IAAA,OAAAA,IAAA;UACV3C,MAAM,CAACiG,qBAAqB,CAAC,CAAC,IAAG3C,QAAQ,IAAI9D,aAAa,CAACuD,IAAI,CAAC,EAAAJ,IAAA;UAClE,CAAE;UACH6C,GAAG,EAAE/E,KAAA,CAAKe,UAAW;UACrB,YAAUvB,gBAAgB,CAACE,OAAQ;;QAElC,OAAOA,OAAO,KAAK,UAAU,GAAGA,OAAO,CAAC,CAAC,GAAGA;QACzC,CAAC;QACNC,OAAO;QACNnB,KAAA,CAAAoF,aAAA;UACE,YAAUpE,gBAAgB,CAACG,OAAQ;UACnCyD,SAAS,EAAEjE,EAAE,EAAAgD,IAAA,OAAAA,IAAA;UACV5C,MAAM,CAACI,OAAO,CAACK,KAAA,CAAK+D,KAAK,CAAC,IAAG,IAAI,EAAA5B,IAAA;UACjC5C,MAAM,CAACkG,YAAY,CAACzF,KAAA,CAAK+D,KAAK,CAAC,IAAG/D,KAAA,CAAKmE,OAAO,EAAAhC,IAAA;UAChD,CAAE;;QAEFxC;QACE;;QAEE;QACE,CAAC;;IAEpB,CAAC;;;;;;;;;;;;;;IAcD;IACA;IAAAK,KAAA,CACQmF,mBAAmB,GAAG,UAACO,CAAgC,EAAK;MAClE,IAAI,CAAC1F,KAAA,CAAKa,YAAY,EAAE,KAAA8E,qBAAA;QACtB3F,KAAA,CAAKa,YAAY,GAAG,IAAI;QACxBb,KAAA,CAAKwB,KAAK,CAACmB,YAAY,YAAvB3C,KAAA,CAAKwB,KAAK,CAACmB,YAAY,CAAG+C,CAAC,CAAC;QAC5B,CAAC1F,KAAA,CAAKwB,KAAK,CAACyB,eAAe,MAAA0C,qBAAA,GAAI3F,KAAA,CAAKwE,OAAO,CAACoB,UAAU,qBAAvBD,qBAAA,CAAyB1E,SAAS,CAAAjB,KAAK,CAAC;MACzE;IACF,CAAC,CAAAA,KAAA;;IAEOoF,gBAAgB,GAAG,UAACM,CAAgC,EAAK,KAAAG,sBAAA;MAC/D7F,KAAA,CAAKa,YAAY,GAAG,KAAK;MACzBb,KAAA,CAAKwB,KAAK,CAACoB,YAAY,YAAvB5C,KAAA,CAAKwB,KAAK,CAACoB,YAAY,CAAG8C,CAAC,CAAC;MAC5B,CAAC1F,KAAA,CAAKwB,KAAK,CAACyB,eAAe,MAAA4C,sBAAA,GAAI7F,KAAA,CAAKwE,OAAO,CAACoB,UAAU,qBAAvBC,sBAAA,CAAyB1E,WAAW,CAAC,CAAC;IACvE,CAAC,CAAAnB,KAAA;;IAEOsB,WAAW,GAAG,UAACoE,CAAgC,EAAK;MAC1D,IAAI1F,KAAA,CAAKwB,KAAK,CAACyB,eAAe,EAAE;QAC9B;MACF;MACAjD,KAAA,CAAKwB,KAAK,CAAC6D,OAAO,YAAlBrF,KAAA,CAAKwB,KAAK,CAAC6D,OAAO,CAAGK,CAAC,CAAC;MACvB1F,KAAA,CAAKwE,OAAO,CAACsB,WAAW,YAAxB9F,KAAA,CAAKwE,OAAO,CAACsB,WAAW,CAAGJ,CAAC,CAAC;IAC/B,CAAC,CAAA1F,KAAA;;IAEOgF,UAAU,GAAG,UAACe,OAAoB,EAAK;MAC7C/F,KAAA,CAAKc,OAAO,GAAGiF,OAAO;IACxB,CAAC,CAAA/F,KAAA;;IAEO2E,YAAY,GAAG,YAAM;MAC3B,IAAAqB,YAAA,GAAsChG,KAAA,CAAKwB,KAAK,CAAxCC,QAAQ,GAAAuE,YAAA,CAARvE,QAAQ,CAAEiB,SAAS,GAAAsD,YAAA,CAATtD,SAAS,CAAEf,IAAI,GAAAqE,YAAA,CAAJrE,IAAI;;MAEjC,IAAIe,SAAS,EAAE;QACb,OAAOA,SAAS;MAClB;;MAEA,IAAIjB,QAAQ,EAAE;QACZ,OAAO,QAAQ;MACjB;;MAEA,IAAIE,IAAI,EAAE;QACR,OAAO,GAAG;MACZ;;MAEA,OAAO,QAAQ;IACjB,CAAC,CAAA3B,KAAA;;IAEOiG,iBAAiB,GAAG,YAAM,KAAAC,sBAAA;MAChC,OAAO3B,OAAO,EAAA2B,sBAAA,GAAClG,KAAA,CAAKwE,OAAO,CAACoB,UAAU,qBAAvBM,sBAAA,CAAyBC,KAAK,CAACC,IAAI,CAAC,UAACC,IAAI,UAAKA,IAAI,CAAC7E,KAAK,CAACc,IAAI,GAAC,CAAC;IAChF,CAAC,QAAAtC,KAAA,EAAAsG,cAAA,CAAA1G,QAAA,EAAAG,gBAAA,MAAAwG,MAAA,GAAA3G,QAAA,CAAA4G,SAAA,CAAAD,MAAA,CAtRME,MAAM,GAAb,SAAAA,OAAA,EAAgB,KAAAC,MAAA,QACd,oBACElI,KAAA,CAAAoF,aAAA,CAAC3E,YAAY,CAAC0H,QAAQ,QACnB,UAAC5C,KAAK,EAAK,CACV2C,MAAI,CAAC3C,KAAK,GAAGA,KAAK,CAClB,OAAO2C,MAAI,CAAC1E,UAAU,CAAC,CAAC,CAC1B,CACqB,CAAC,CAE5B,CAAC,CAAAuE,MAAA,CAEMK,iBAAiB,GAAxB,SAAAA,kBAAA,EAA2B,CACzB,IAAI,IAAI,CAACpF,KAAK,CAACsB,cAAc,IAAI,IAAI,CAAChC,OAAO,EAAE,CAC7ClC,kCAAkC,CAAC,IAAI,CAACkC,OAAO,CAAC,CAClD,CACA,IAAI,IAAI,CAACA,OAAO,IAAInC,SAAS,CAACD,YAAY,CAAC,EAAE,CAC3C,IAAI,CAACwC,QAAQ,CAAC,EAAEP,aAAa,EAAEjC,YAAY,CAACmI,gBAAgB,CAAC,IAAI,CAAC/F,OAAO,CAAC,CAACgG,gBAAgB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAC/G,CACA,IAAI,IAAI,CAAC/F,UAAU,CAACgG,OAAO,IAAI,CAAC,IAAI,CAACvF,KAAK,CAACyB,eAAe,EAAE,KAAA+D,sBAAA,CAC1D,CAAAA,sBAAA,OAAI,CAACxC,OAAO,CAACoB,UAAU,aAAvBoB,sBAAA,CAAyBC,GAAG,CAAC,IAAI,CAAClG,UAAU,CAACgG,OAAO,EAAE,IAAI,CAAC,CAC7D,CACA,IAAI,IAAI,CAACvF,KAAK,CAACc,IAAI,EAAE,KAAA4E,qBAAA,EAAAC,aAAA,CACnB,CAAAD,qBAAA,IAAAC,aAAA,OAAI,CAAC3C,OAAO,EAAC4C,oBAAoB,aAAjCF,qBAAA,CAAA3G,IAAA,CAAA4G,aAAA,EAAoC,IAAI,CAAC,CAC3C,CACF,CAAC,CAAAZ,MAAA,CAEMc,oBAAoB,GAA3B,SAAAA,qBAAA,EAA8B,CAC5B,IAAI,IAAI,CAACtG,UAAU,CAACgG,OAAO,EAAE,KAAAO,sBAAA,EAAAC,sBAAA,EAAAC,cAAA,CAC3B,CAAC,IAAI,CAAChG,KAAK,CAACyB,eAAe,MAAAqE,sBAAA,GAAI,IAAI,CAAC9C,OAAO,CAACoB,UAAU,qBAAvB0B,sBAAA,CAAyBG,MAAM,CAAC,IAAI,CAAC1G,UAAU,CAACgG,OAAO,CAAC,EACvF,CAAAQ,sBAAA,IAAAC,cAAA,OAAI,CAAChD,OAAO,EAAC4C,oBAAoB,aAAjCG,sBAAA,CAAAhH,IAAA,CAAAiH,cAAA,EAAoC,IAAI,CAACvB,iBAAiB,CAAC,CAAC,CAAC,CAC/D,CACF,CAAC,CAAAM,MAAA,CAEMmB,kBAAkB,GAAzB,SAAAA,mBAA0BC,SAAkC,EAAE,CAC5D,IAAIA,SAAS,CAACrF,IAAI,KAAK,IAAI,CAACd,KAAK,CAACc,IAAI,EAAE,KAAAsF,sBAAA,EAAAC,cAAA,CACtC,CAAAD,sBAAA,IAAAC,cAAA,OAAI,CAACrD,OAAO,EAAC4C,oBAAoB,aAAjCQ,sBAAA,CAAArH,IAAA,CAAAsH,cAAA,EAAoC,CAAC,CAAC,IAAI,CAACrG,KAAK,CAACc,IAAI,IAAI,IAAI,CAAC2D,iBAAiB,CAAC,CAAC,CAAC,CACpF,CACA,IAAI,IAAI,CAAClF,UAAU,CAACgG,OAAO,IAAIY,SAAS,CAAC1E,eAAe,KAAK,IAAI,CAACzB,KAAK,CAACyB,eAAe,EAAE,CACvF,IAAI,IAAI,CAACzB,KAAK,CAACyB,eAAe,EAAE,KAAA6E,sBAAA,CAC9B,IAAI,CAAC3G,WAAW,CAAC,CAAC,CAClB,CAAA2G,sBAAA,OAAI,CAACtD,OAAO,CAACoB,UAAU,aAAvBkC,sBAAA,CAAyBL,MAAM,CAAC,IAAI,CAAC1G,UAAU,CAACgG,OAAO,CAAC,CAC1D,CAAC,MAAM,KAAAgB,sBAAA,CACL,CAAAA,sBAAA,OAAI,CAACvD,OAAO,CAACoB,UAAU,aAAvBmC,sBAAA,CAAyBd,GAAG,CAAC,IAAI,CAAClG,UAAU,CAACgG,OAAO,EAAE,IAAI,CAAC,CAC7D,CACF,CACF,CAAC,CAAAR,MAAA,CA6BOvC,oBAAoB,GAA5B,SAAAA,qBAAA,EAA+B,CAC7B,QAAQ,IAAI,CAACxC,KAAK,CAACgB,IAAI,GACrB,KAAK,OAAO,CACV,OAAOjD,MAAM,CAACyI,SAAS,CAAC,IAAI,CAACjE,KAAK,CAAC,CACrC,KAAK,QAAQ,CACX,OAAOxE,MAAM,CAAC0I,UAAU,CAAC,IAAI,CAAClE,KAAK,CAAC,CACtC,KAAK,OAAO,CACZ,QACE,OAAOxE,MAAM,CAAC2I,SAAS,CAAC,IAAI,CAACnE,KAAK,CAAC,CACvC,CACF,CAAC,CAAAwC,MAAA,CAEOzC,oBAAoB,GAA5B,SAAAA,qBAAA,EAA+B,CAC7B,QAAQ,IAAI,CAACtC,KAAK,CAACgB,IAAI,GACrB,KAAK,OAAO,CACV,OAAOjD,MAAM,CAAC4I,SAAS,CAAC,IAAI,CAACpE,KAAK,CAAC,CACrC,KAAK,QAAQ,CACX,OAAOxE,MAAM,CAAC6I,UAAU,CAAC,IAAI,CAACrE,KAAK,CAAC,CACtC,KAAK,OAAO,CACZ,QACE,OAAOxE,MAAM,CAAC8I,SAAS,CAAC,IAAI,CAACtE,KAAK,CAAC,CACvC,CACF,CAAC,CAAAwC,MAAA,CAEOjC,wBAAwB,GAAhC,SAAAA,yBAAA,EAAmC,CACjC,QAAQ,IAAI,CAAC9C,KAAK,CAACgB,IAAI,GACrB,KAAK,OAAO,CACV,OAAOjD,MAAM,CAAC+I,aAAa,CAAC,IAAI,CAACvE,KAAK,CAAC,CACzC,KAAK,QAAQ,CACX,OAAOxE,MAAM,CAACgJ,cAAc,CAAC,IAAI,CAACxE,KAAK,CAAC,CAC1C,KAAK,OAAO,CACZ,QACE,OAAOxE,MAAM,CAACiJ,aAAa,CAAC,IAAI,CAACzE,KAAK,CAAC,CAC3C,CACF,CAAC,QAAA0E,YAAA,CAAA7I,QAAA,KAAA8I,GAAA,iBAAAC,GAAA,EA8GD,SAAAA,IAAA,EAA0B,CACxB,OAAO,IAAI,CAACjI,KAAK,CAACE,WAAW,GAAG,OAAO,GAAG,IAAI,CAACY,KAAK,CAACd,KAAK,CAC5D,CAAC,MAAAgI,GAAA,aAAAC,GAAA,EAED,SAAAA,IAAA,EAA+B,CAC7B,OAAO,CAAC,IAAI,CAACjI,KAAK,CAACE,WAAW,IAAI,IAAI,CAACY,KAAK,CAACd,KAAK,KAAK,OAAO,KAAK,CAAC,IAAI,CAACc,KAAK,CAACC,QAAQ,CACzF,CAAC,MAAAiH,GAAA,gBAAAC,GAAA,EAED,SAAAA,IAAA,EAAkC,CAChC,OAAO,IAAI,CAACnH,KAAK,CAACd,KAAK,KAAK,UAAU,IAAI,CAAC,IAAI,CAACA,KAAK,CAACE,WAAW,CACnE,CAAC,OA3Q2BpC,KAAK,CAACkG,SAAS,GAAA5E,SAAA,CAC7B8I,mBAAmB,GAAG,UAAU,EAAA9I,SAAA,CAChC+I,WAAW,GAAG,UAAU,EAAA/I,SAAA,CACxBgJ,aAAa,GAAG,IAAI,EAAAhJ,SAAA,CAEpBiJ,SAAS,GAAG,EACxBpJ,OAAO,EAAElB,SAAS,CAACuK,IAAI,EAEvBvH,QAAQ,EAAEhD,SAAS,CAACwK,IAAI,EAExBtH,IAAI,EAAElD,SAAS,CAACyK,MAAM,EAEtB5G,IAAI,EAAE7D,SAAS,CAACuK,IAAI,EAEpBzG,KAAK,EAAE9D,SAAS,CAACwK,IAAI,EAErBvI,KAAK,EAAEjC,SAAS,CAACyK,MAAM,EAEvBtH,MAAM,EAAEnD,SAAS,CAACyK,MAAM,EAExB7D,OAAO,EAAE5G,SAAS,CAAC0K,IAAI,EAEvB3G,IAAI,EAAE/D,SAAS,CAACyK,MAAM,CACxB,CAAC,EAAApJ,SAAA,CAYMsJ,WAAW,GAAG/J,WAAW,EAAAS,SAAA,MAAAD,MAAA;;;AA6RlC,OAAO,IAAMwJ,UAAU,GAAGrK,kBAAkB,CAAC,UAAU,CAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","PropTypes","globalObject","isBrowser","scrollYCenterIntoNearestScrollable","isExternalLink","isFunction","isNonNullable","isReactUIComponent","ThemeContext","CommonWrapper","cx","rootNode","MenuContext","getVisualStateDataAttributes","styles","MenuItemDataTids","root","content","comment","MenuItem","_class","_MenuItem","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","state","iconOffsetTop","highlighted","mouseEntered","rootRef","contentRef","createRef","highlight","setState","unhighlight","select","event","handleClick","isEnabled","props","disabled","navigate","href","target","window","open","location","renderMain","_cx2","_cx3","_cx4","_this$props","link","icon","loose","size","_enableIconPadding","component","onMouseEnter","onMouseLeave","isMobile","scrollIntoView","_this$props$rel","rel","isNotSelectable","children","unusedClasses","className","style","dataTid","rest","_objectWithoutPropertiesLoose","_excluded","iconElement","_cx","createElement","top","getIconSizeClassName","theme","getRootSizeClassName","rootMobile","hover","isHover","selected","isSelected","getWithIconSizeClassName","Boolean","context","enableIconPadding","activeState","Component","getComponent","_extends","rootNodeRef","setRootNode","ref","setRootRef","onMouseOver","handleMouseEnterFix","handleMouseLeave","onClick","undefined","tabIndex","mobileContentWithIcon","commentHover","e","_this$context$navigat","navigation","_this$context$navigat2","onItemClick","element","_this$props2","hasIconAmongItems","_this$context$navigat3","items","some","item","_inheritsLoose","_proto","prototype","render","_this2","Consumer","componentDidMount","getComputedStyle","getPropertyValue","current","_this$context$navigat4","add","_this$context$setEnab","_this$context","setEnableIconPadding","componentWillUnmount","_this$context$navigat5","_this$context$setEnab2","_this$context2","remove","componentDidUpdate","prevProps","_this$context$setEnab3","_this$context3","_this$context$navigat6","_this$context$navigat7","rootLarge","rootMedium","rootSmall","iconLarge","iconMedium","iconSmall","withIconLarge","withIconMedium","withIconSmall","_createClass","key","get","__KONTUR_REACT_UI__","displayName","__MENU_ITEM__","propTypes","node","bool","string","func","contextType","isMenuItem"],"sources":["MenuItem.tsx"],"sourcesContent":["import React, { AriaAttributes, HTMLAttributes } from 'react';\nimport PropTypes from 'prop-types';\nimport { globalObject, isBrowser } from '@skbkontur/global-object';\n\nimport { scrollYCenterIntoNearestScrollable } from '../../lib/dom/scrollYCenterIntoNearestScrollable';\nimport { Nullable } from '../../typings/utility-types';\nimport { isExternalLink, isFunction, isNonNullable, isReactUIComponent } from '../../lib/utils';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { SizeProp } from '../../lib/types/props';\nimport { MenuContext, MenuContextType } from '../../internal/Menu/MenuContext';\nimport { getVisualStateDataAttributes } from '../../internal/CommonWrapper/utils/getVisualStateDataAttributes';\n\nimport { styles } from './MenuItem.styles';\n\nexport type MenuItemState = null | 'hover' | 'selected' | void;\n\nexport interface MenuItemProps\n extends Pick<AriaAttributes, 'aria-describedby' | 'aria-label'>,\n Pick<HTMLAttributes<HTMLElement>, 'id'>,\n Omit<CommonProps, 'children'> {\n /**\n * @ignore\n */\n _enableIconPadding?: boolean;\n /**\n * Добавляет описание для элемента меню.\n */\n comment?: React.ReactNode;\n /**\n * Отключенное состояние.\n */\n disabled?: boolean;\n /**\n * Добавляет элементу меню иконку.\n */\n icon?: React.ReactElement<any>;\n /**\n * Меняет цвет текста на синий.\n */\n link?: boolean;\n /**\n * Размер\n */\n size?: SizeProp;\n /**\n * @ignore\n */\n loose?: boolean;\n /**\n * @ignore\n */\n state?: MenuItemState;\n /**\n * HTML-событие `onclick`.\n */\n onClick?: (event: React.SyntheticEvent<HTMLElement>) => void;\n /**\n * HTML-событие `mouseenter`.\n */\n onMouseEnter?: React.MouseEventHandler;\n /**\n * HTML-событие `mouseleave`.\n */\n onMouseLeave?: React.MouseEventHandler;\n children?: React.ReactNode | ((state: MenuItemState) => React.ReactNode);\n /**\n * HTML-атрибут `target`.\n */\n target?: React.AnchorHTMLAttributes<HTMLAnchorElement>['target'];\n /**\n * HTML-атрибут `title`.\n */\n title?: React.AnchorHTMLAttributes<HTMLAnchorElement>['title'];\n /**\n * HTML-атрибут `href`.\n */\n href?: React.AnchorHTMLAttributes<HTMLAnchorElement>['href'];\n /**\n * HTML-атрибут `rel`.\n *\n * Для внешних ссылок аттрибут rel по умолчанию равен \"noopener noreferrer\"\n */\n rel?: React.AnchorHTMLAttributes<HTMLAnchorElement>['rel'];\n /**\n * Заменяет корневой элемент, на компонент переданный в проп.\n *\n * По умолчанию корневой элемент рендерится как `button`. <br />Если передан `href`, то вместо `button` рендерится `a`.\n */\n component?: React.ComponentType<any>;\n /**\n * Запрещает выделение и выбор данного пункта меню\n *\n */\n isNotSelectable?: boolean;\n\n isMobile?: boolean;\n /** @ignore */\n scrollIntoView?: boolean;\n}\n\nexport const MenuItemDataTids = {\n root: 'MenuItem__root',\n content: 'MenuItem__content',\n comment: 'MenuItem__comment',\n} as const;\n\n/**\n *\n * `MenuItem` - это вложенный компонент, задающий базовые стили для элемента меню и позволяющий навигироваться по элементам меню с помощью клавиатуры.\n *\n * Сущности в которых может быть использован `MenuItem`: [DropdownMenu](#/Components/DropdownMenu), [Kebab](#/Components/Kebab), [TooltipMenu](#/Components/TooltipMenu) и [Select](#/Components/Select).\n */\n@rootNode\nexport class MenuItem extends React.Component<MenuItemProps> {\n public static __KONTUR_REACT_UI__ = 'MenuItem';\n public static displayName = 'MenuItem';\n public static __MENU_ITEM__ = true;\n\n public static propTypes = {\n comment: PropTypes.node,\n\n disabled: PropTypes.bool,\n\n href: PropTypes.string,\n\n icon: PropTypes.node,\n\n loose: PropTypes.bool,\n\n state: PropTypes.string,\n\n target: PropTypes.string,\n\n onClick: PropTypes.func,\n\n size: PropTypes.string,\n };\n\n public state = {\n iconOffsetTop: 0,\n highlighted: false,\n };\n\n private theme!: Theme;\n private mouseEntered = false;\n private setRootNode!: TSetRootNode;\n private rootRef: Nullable<HTMLElement> = null;\n private contentRef = React.createRef<HTMLElement>();\n static contextType = MenuContext;\n\n public context!: MenuContextType;\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public componentDidMount() {\n if (this.props.scrollIntoView && this.rootRef) {\n scrollYCenterIntoNearestScrollable(this.rootRef);\n }\n if (this.rootRef && isBrowser(globalObject)) {\n this.setState({ iconOffsetTop: globalObject.getComputedStyle(this.rootRef).getPropertyValue('padding-top') });\n }\n if (this.contentRef.current && !this.props.isNotSelectable) {\n this.context.navigation?.add(this.contentRef.current, this);\n }\n if (this.props.icon) {\n this.context.setEnableIconPadding?.(true);\n }\n }\n\n public componentWillUnmount() {\n if (this.contentRef.current) {\n !this.props.isNotSelectable && this.context.navigation?.remove(this.contentRef.current);\n this.context.setEnableIconPadding?.(this.hasIconAmongItems());\n }\n }\n\n public componentDidUpdate(prevProps: Readonly<MenuItemProps>) {\n if (prevProps.icon !== this.props.icon) {\n this.context.setEnableIconPadding?.(!!this.props.icon || this.hasIconAmongItems());\n }\n if (this.contentRef.current && prevProps.isNotSelectable !== this.props.isNotSelectable) {\n if (this.props.isNotSelectable) {\n this.unhighlight();\n this.context.navigation?.remove(this.contentRef.current);\n } else {\n this.context.navigation?.add(this.contentRef.current, this);\n }\n }\n }\n\n public highlight = () => {\n this.setState({ highlighted: true });\n };\n\n public unhighlight = () => {\n this.setState({ highlighted: false });\n };\n\n public select = (event: React.SyntheticEvent<HTMLElement>) => {\n this.handleClick(event as React.MouseEvent<HTMLElement>);\n };\n\n public isEnabled = () => {\n return !this.props.disabled;\n };\n\n public navigate = () => {\n if (!this.props.href) {\n return;\n }\n if (this.props.target) {\n window.open(this.props.href, this.props.target);\n } else {\n location.href = this.props.href;\n }\n };\n\n private getRootSizeClassName() {\n switch (this.props.size) {\n case 'large':\n return styles.rootLarge(this.theme);\n case 'medium':\n return styles.rootMedium(this.theme);\n case 'small':\n default:\n return styles.rootSmall(this.theme);\n }\n }\n\n private getIconSizeClassName() {\n switch (this.props.size) {\n case 'large':\n return styles.iconLarge(this.theme);\n case 'medium':\n return styles.iconMedium(this.theme);\n case 'small':\n default:\n return styles.iconSmall(this.theme);\n }\n }\n\n private getWithIconSizeClassName() {\n switch (this.props.size) {\n case 'large':\n return styles.withIconLarge(this.theme);\n case 'medium':\n return styles.withIconMedium(this.theme);\n case 'small':\n default:\n return styles.withIconSmall(this.theme);\n }\n }\n\n private renderMain = () => {\n const {\n link,\n comment,\n icon,\n loose,\n state,\n size,\n _enableIconPadding,\n component,\n onMouseEnter,\n onMouseLeave,\n isMobile,\n href,\n disabled,\n scrollIntoView,\n rel = href && isExternalLink(href) ? 'noopener noreferrer' : this.props.rel,\n isNotSelectable,\n children,\n className: unusedClasses,\n style,\n 'data-tid': dataTid,\n ...rest\n } = this.props;\n\n let iconElement = null;\n if (icon) {\n iconElement = (\n <div\n style={{ top: this.state.iconOffsetTop }}\n className={cx({\n [styles.icon()]: true,\n [this.getIconSizeClassName()]: true,\n })}\n >\n {icon}\n </div>\n );\n }\n\n const className = cx({\n [styles.root(this.theme)]: true,\n [this.getRootSizeClassName()]: true,\n [styles.rootMobile(this.theme)]: isMobile,\n [styles.loose()]: !!loose,\n [styles.hover(this.theme)]: this.isHover,\n [styles.selected(this.theme)]: this.isSelected,\n [styles.link(this.theme)]: !!link,\n [this.getWithIconSizeClassName()]: Boolean(iconElement) || !!_enableIconPadding || this.context.enableIconPadding,\n [styles.disabled(this.theme)]: !!disabled,\n });\n\n let content = children;\n if (isFunction(children)) {\n content = children(this.activeState);\n }\n\n const Component = this.getComponent();\n\n return (\n <CommonWrapper\n rootNodeRef={this.setRootNode}\n {...getVisualStateDataAttributes({\n hover: this.isHover,\n selected: this.isSelected,\n })}\n {...this.props}\n >\n <Component\n ref={this.setRootRef}\n data-tid={MenuItemDataTids.root}\n {...rest}\n disabled={disabled}\n state={this.activeState}\n onMouseOver={this.handleMouseEnterFix}\n onMouseLeave={this.handleMouseLeave}\n onClick={this.handleClick}\n className={className}\n href={href}\n rel={href ? rel : undefined}\n tabIndex={-1}\n >\n {iconElement}\n <span\n className={cx({\n [styles.mobileContentWithIcon()]: isMobile && isNonNullable(icon),\n })}\n ref={this.contentRef}\n data-tid={MenuItemDataTids.content}\n >\n {typeof content === 'function' ? content() : content}\n </span>\n {comment && (\n <div\n data-tid={MenuItemDataTids.comment}\n className={cx({\n [styles.comment(this.theme)]: true,\n [styles.commentHover(this.theme)]: this.isHover,\n })}\n >\n {comment}\n </div>\n )}\n </Component>\n </CommonWrapper>\n );\n };\n\n private get activeState() {\n return this.state.highlighted ? 'hover' : this.props.state;\n }\n\n private get isHover(): boolean {\n return (this.state.highlighted || this.props.state === 'hover') && !this.props.disabled;\n }\n\n private get isSelected(): boolean {\n return this.props.state === 'selected' && !this.state.highlighted;\n }\n\n // https://github.com/facebook/react/issues/10109\n // Mouseenter event not triggered when cursor moves from disabled button\n private handleMouseEnterFix = (e: React.MouseEvent<HTMLElement>) => {\n if (!this.mouseEntered) {\n this.mouseEntered = true;\n this.props.onMouseEnter?.(e);\n !this.props.isNotSelectable && this.context.navigation?.highlight(this);\n }\n };\n\n private handleMouseLeave = (e: React.MouseEvent<HTMLElement>) => {\n this.mouseEntered = false;\n this.props.onMouseLeave?.(e);\n !this.props.isNotSelectable && this.context.navigation?.unhighlight();\n };\n\n private handleClick = (e: React.MouseEvent<HTMLElement>) => {\n if (this.props.isNotSelectable) {\n return;\n }\n this.props.onClick?.(e);\n this.context.onItemClick?.(e);\n };\n\n private setRootRef = (element: HTMLElement) => {\n this.rootRef = element;\n };\n\n private getComponent = () => {\n const { disabled, component, href } = this.props;\n\n if (component) {\n return component;\n }\n\n if (disabled) {\n return 'button';\n }\n\n if (href) {\n return 'a';\n }\n\n return 'button';\n };\n\n private hasIconAmongItems = () => {\n return Boolean(this.context.navigation?.items.some((item) => item.props.icon));\n };\n}\n\nexport const isMenuItem = isReactUIComponent('MenuItem');\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","globalObject","isBrowser","isKeyArrowDown","isKeyArrowUp","isKeyEnter","MenuSeparator","ThemeFactory","getDOMRect","responsiveLayout","isNonNullable","ScrollContainer","MenuItemDataTids","ThemeContext","cx","getRootNode","rootNode","isIE11","createPropsGetter","isInstanceOf","CommonWrapper","styles","MenuNavigation","MenuContext","MenuDataTids","root","Menu","_class","_Menu","_React$PureComponent","_this","_len","arguments","length","args","Array","_key","call","apply","concat","getProps","defaultProps","state","highlightedIndex","maxHeight","scrollState","enableIconPadding","unmounted","contentRef","createRef","menuNavigation","content","focusOnRootElement","HTMLElement","focus","renderHeader","_cx","createElement","className","wrapper","headerWrapper","ref","el","header","contentWrapper","props","menuSeparatorWrapper","theme","renderMenuSeparatorWithNoMargin","renderFooter","_cx2","footerWrapper","footer","Provider","value","create","menuSeparatorMarginY","setInitialSelection","i","initialSelectedItemIndex","down","shouldRecalculateMaxHeight","prevProps","_this$props","children","prevMaxHeight","prevHeader","prevFooter","prevChildrenCount","Children","count","calculateMaxHeight","parsedMaxHeight","rootElementMaxHeight","getComputedStyle","parseFloat","calculatedMaxHeight","height","setState","refScrollContainer","scrollContainer","scrollToSelected","highlightedItem","scrollTo","scrollToTop","scrollToBottom","scroll","nextIndex","items","handleKeyDown","event","onKeyDown","defaultPrevented","preventDefault","up","select","getStyle","align","maxWidth","width","minWidth","handleScrollStateChange","setEnableIconPadding","isIconPaddingEnabled","preventIconsOffset","_inheritsLoose","_proto","prototype","componentWillUnmount","componentDidMount","componentDidUpdate","render","_this2","Consumer","renderMain","move","enter","_this$menuNavigation$","navigate","reset","hasHighlightedItem","highlightItem","index","highlightByIndex","_cx3","_cx4","isEmpty","_this$getProps","hasMargin","preventWindowScroll","offsetY","top","scrollContainerScrollBarOffsetY","right","bottom","isMobile","isMobileLayout","_extends","rootNodeRef","setRootNode","getAlignRightClass","mobileRoot","shadow","style","id","tabIndex","onScrollStateChange","disabled","disableScrollContainer","scrollContainerMobile","navigation","onItemClick","step","cyclicSelection","childrenToArray","filter","PureComponent","__KONTUR_REACT_UI__","displayName","ret","forEach","child","push","_cx5","alignRight","alignRightIE11","alignRightIE11FixAutoWidth"],"sources":["Menu.tsx"],"sourcesContent":["import React, { CSSProperties, HTMLAttributes } from 'react';\nimport { globalObject, isBrowser } from '@skbkontur/global-object';\n\nimport { isKeyArrowDown, isKeyArrowUp, isKeyEnter } from '../../lib/events/keyboard/identifiers';\nimport { MenuSeparator } from '../../components/MenuSeparator';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { getDOMRect } from '../../lib/dom/getDOMRect';\nimport { responsiveLayout } from '../../components/ResponsiveLayout/decorator';\nimport { isNonNullable } from '../../lib/utils';\nimport { ScrollContainer, ScrollContainerScrollState } from '../../components/ScrollContainer';\nimport { MenuItem, MenuItemDataTids } from '../../components/MenuItem';\nimport { Nullable } from '../../typings/utility-types';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { cx } from '../../lib/theming/Emotion';\nimport { getRootNode, rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { isIE11 } from '../../lib/client';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { isInstanceOf } from '../../lib/isInstanceOf';\nimport { CommonProps, CommonWrapper } from '../CommonWrapper';\n\nimport { styles } from './Menu.styles';\nimport { MenuNavigation } from './MenuNavigation';\nimport { MenuContext } from './MenuContext';\n\nexport interface MenuProps extends CommonProps, Pick<HTMLAttributes<HTMLDivElement>, 'id'> {\n children: React.ReactNode;\n hasMargin?: boolean;\n /**\n * Максимальная высота применяется только для скролл контейнера\n *\n * Высота `header` и `footer` в нее не включены\n */\n maxHeight?: number | string;\n onItemClick?: (event: React.SyntheticEvent<HTMLElement>) => void;\n width?: number | string;\n preventWindowScroll?: boolean;\n /**\n * Отключение кастомного скролла контейнера\n */\n disableScrollContainer?: boolean;\n align?: 'left' | 'right';\n /**\n * Предотвращает выравнивание текста всех пунктов меню относительно друг друга.\n * Так, если хотя бы у одного пункта меню есть иконка, текст в остальных пунктах меню будет выровнен относительно пункта меню с иконкой\n */\n preventIconsOffset?: boolean;\n onKeyDown?: (event: React.KeyboardEvent<HTMLElement>) => void;\n\n header?: React.ReactNode;\n footer?: React.ReactNode;\n /**\n * Циклический перебор айтемов меню (по-дефолтну включен)\n */\n cyclicSelection?: boolean;\n initialSelectedItemIndex?: number;\n}\n\nexport interface MenuState {\n highlightedIndex: number;\n maxHeight: number | string;\n scrollState: ScrollContainerScrollState;\n enableIconPadding: boolean;\n}\n\nexport const MenuDataTids = {\n root: 'Menu__root',\n} as const;\n\ntype DefaultProps = Required<\n Pick<\n MenuProps,\n | 'align'\n | 'width'\n | 'hasMargin'\n | 'maxHeight'\n | 'preventWindowScroll'\n | 'cyclicSelection'\n | 'initialSelectedItemIndex'\n >\n>;\n\n@responsiveLayout\n@rootNode\nexport class Menu extends React.PureComponent<MenuProps, MenuState> {\n public static __KONTUR_REACT_UI__ = 'Menu';\n public static displayName = 'Menu';\n\n public static defaultProps: DefaultProps = {\n align: 'left',\n width: 'auto',\n maxHeight: 300,\n hasMargin: true,\n preventWindowScroll: true,\n cyclicSelection: true,\n initialSelectedItemIndex: -1,\n };\n\n private getProps = createPropsGetter(Menu.defaultProps);\n\n public state: MenuState = {\n highlightedIndex: -1,\n maxHeight: this.getProps().maxHeight || 'none',\n scrollState: 'top',\n enableIconPadding: false,\n };\n\n private theme!: Theme;\n private scrollContainer: Nullable<ScrollContainer>;\n private isMobileLayout!: boolean;\n private unmounted = false;\n private setRootNode!: TSetRootNode;\n private header: Nullable<HTMLDivElement>;\n private footer: Nullable<HTMLDivElement>;\n private contentRef = React.createRef<HTMLDivElement>();\n private menuNavigation: MenuNavigation<MenuItem> = new MenuNavigation(this.contentRef, MenuItemDataTids.content);\n\n public componentWillUnmount() {\n this.unmounted = true;\n }\n\n public componentDidMount() {\n this.setInitialSelection();\n this.calculateMaxHeight();\n this.unmounted = false;\n }\n\n public componentDidUpdate(prevProps: MenuProps) {\n if (this.shouldRecalculateMaxHeight(prevProps)) {\n this.calculateMaxHeight();\n }\n\n if (prevProps.maxHeight !== this.getProps().maxHeight) {\n this.setState({\n maxHeight: this.props.maxHeight || 'none',\n });\n }\n }\n\n public focus() {\n this.focusOnRootElement();\n }\n\n private focusOnRootElement = (): void => {\n const rootNode = getRootNode(this);\n if (isInstanceOf(rootNode, globalObject.HTMLElement)) {\n rootNode?.focus();\n }\n };\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n /**\n * @public\n */\n public up() {\n this.move(-1);\n }\n\n /**\n * @public\n */\n public down() {\n this.move(1);\n }\n\n /**\n * @public\n */\n public enter(event: React.SyntheticEvent<HTMLElement>) {\n this.menuNavigation.highlightedItem?.navigate();\n return this.menuNavigation.select(event);\n }\n\n /**\n * @public\n */\n public reset() {\n this.menuNavigation.reset();\n }\n\n /**\n * @public\n */\n public hasHighlightedItem() {\n return !!this.menuNavigation.highlightedItem;\n }\n\n public highlightItem(index: number) {\n this.menuNavigation.highlightByIndex(index);\n }\n\n private renderMain() {\n if (this.isEmpty()) {\n return null;\n }\n const { hasMargin, maxHeight, preventWindowScroll } = this.getProps();\n\n const offsetY = {\n top: `${this.theme.scrollContainerScrollBarOffsetY}`,\n right: 0,\n bottom: `${this.theme.scrollContainerScrollBarOffsetY}`,\n };\n\n const isMobile = this.isMobileLayout;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div\n data-tid={MenuDataTids.root}\n className={cx(getAlignRightClass(this.props), {\n [styles.root(this.theme)]: true,\n [styles.hasMargin(this.theme)]: hasMargin,\n [styles.mobileRoot(this.theme)]: isMobile,\n [styles.shadow(this.theme)]: !isMobile,\n })}\n style={this.getStyle(this.props)}\n id={this.props.id}\n onKeyDown={this.handleKeyDown}\n tabIndex={0}\n >\n {this.props.header && this.renderHeader()}\n <ScrollContainer\n ref={this.refScrollContainer}\n maxHeight={maxHeight}\n preventWindowScroll={preventWindowScroll}\n onScrollStateChange={this.handleScrollStateChange}\n disabled={this.props.disableScrollContainer}\n offsetY={offsetY}\n >\n <div\n className={cx({\n [styles.scrollContainer(this.theme)]: true,\n [styles.scrollContainerMobile(this.theme)]: isMobile,\n })}\n ref={this.contentRef}\n >\n <MenuContext.Provider\n value={{\n navigation: this.menuNavigation,\n onItemClick: this.props.onItemClick,\n enableIconPadding: this.state.enableIconPadding,\n setEnableIconPadding: this.setEnableIconPadding,\n }}\n >\n {this.props.children}\n </MenuContext.Provider>\n </div>\n </ScrollContainer>\n {this.props.footer && this.renderFooter()}\n </div>\n </CommonWrapper>\n );\n }\n\n private renderHeader = () => {\n return (\n <div\n className={cx({\n [styles.wrapper()]: true,\n [styles.headerWrapper()]: true,\n })}\n ref={(el) => (this.header = el)}\n >\n <div className={styles.contentWrapper()}>{this.props.header}</div>\n <div className={styles.menuSeparatorWrapper(this.theme)}>\n {this.state.scrollState !== 'top' && this.renderMenuSeparatorWithNoMargin()}\n </div>\n </div>\n );\n };\n\n private renderFooter = () => {\n return (\n <div\n className={cx({\n [styles.wrapper()]: true,\n [styles.footerWrapper()]: true,\n })}\n ref={(el) => (this.footer = el)}\n >\n <div className={styles.menuSeparatorWrapper(this.theme)}>\n {this.state.scrollState !== 'bottom' && this.renderMenuSeparatorWithNoMargin()}\n </div>\n <div className={styles.contentWrapper()}>{this.props.footer}</div>\n </div>\n );\n };\n\n private renderMenuSeparatorWithNoMargin = () => {\n return (\n <ThemeContext.Provider value={ThemeFactory.create({ menuSeparatorMarginY: '0' }, this.theme)}>\n <MenuSeparator />\n </ThemeContext.Provider>\n );\n };\n\n private setInitialSelection = () => {\n for (let i = this.getProps().initialSelectedItemIndex; i > -1; i--) {\n this.down();\n }\n };\n\n private shouldRecalculateMaxHeight = (prevProps: MenuProps): boolean => {\n const { header, footer, children } = this.props;\n const maxHeight = this.getProps().maxHeight;\n const prevMaxHeight = prevProps.maxHeight;\n const prevHeader = prevProps.header;\n const prevFooter = prevProps.footer;\n const prevChildrenCount = React.Children.count(prevProps.children);\n\n return (\n maxHeight !== prevMaxHeight ||\n footer !== prevFooter ||\n header !== prevHeader ||\n React.Children.count(children) !== prevChildrenCount\n );\n };\n\n private calculateMaxHeight = () => {\n const maxHeight = this.getProps().maxHeight;\n let parsedMaxHeight = maxHeight;\n const rootNode = getRootNode(this);\n\n if (typeof maxHeight === 'string' && isBrowser(globalObject) && rootNode) {\n const rootElementMaxHeight = globalObject.getComputedStyle?.(rootNode).maxHeight;\n\n if (rootElementMaxHeight) {\n parsedMaxHeight = parseFloat(rootElementMaxHeight);\n }\n }\n\n const calculatedMaxHeight =\n typeof parsedMaxHeight === 'number'\n ? parsedMaxHeight +\n ((this.header && getDOMRect(this.header).height) || 0) +\n ((this.footer && getDOMRect(this.footer).height) || 0)\n : maxHeight;\n\n this.setState({\n maxHeight: calculatedMaxHeight || 'none',\n });\n };\n\n private refScrollContainer = (scrollContainer: Nullable<ScrollContainer>) => {\n this.scrollContainer = scrollContainer;\n };\n\n private scrollToSelected = () => {\n const highlightedItem = this.menuNavigation.highlightedItem;\n if (this.scrollContainer && highlightedItem) {\n const rootNode = getRootNode(highlightedItem);\n // TODO: Remove this check once IF-647 is resolved\n if (isInstanceOf(rootNode, globalObject.HTMLElement)) {\n this.scrollContainer.scrollTo(rootNode);\n }\n }\n };\n\n private scrollToTop = () => {\n if (this.scrollContainer) {\n this.scrollContainer.scrollToTop();\n }\n };\n\n private scrollToBottom = () => {\n if (this.scrollContainer) {\n this.scrollContainer.scrollToBottom();\n }\n };\n\n private scroll = (nextIndex: number) => {\n switch (nextIndex) {\n case 0:\n this.scrollToTop?.();\n break;\n case this.menuNavigation.items.length - 1:\n this.scrollToBottom?.();\n break;\n default:\n this.scrollToSelected?.();\n }\n };\n\n private move(step: number) {\n if (this.unmounted) {\n // NOTE workaround, because `ComboBox` call `process.nextTick` in reducer\n return;\n }\n const nextIndex = this.menuNavigation.move(step, this.getProps().cyclicSelection);\n this.scroll(nextIndex);\n }\n\n private isEmpty() {\n const { children } = this.props;\n return !children || !childrenToArray(children).filter(isNonNullable).length;\n }\n\n private handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>): void => {\n if (typeof this.props.onKeyDown === 'function') {\n this.props.onKeyDown(event);\n }\n\n if (event.defaultPrevented) {\n return;\n }\n\n if (isKeyArrowUp(event)) {\n event.preventDefault();\n this.up();\n } else if (isKeyArrowDown(event)) {\n event.preventDefault();\n this.down();\n } else if (isKeyEnter(event)) {\n this.menuNavigation.select(event);\n }\n };\n\n private getStyle = (props: MenuProps): CSSProperties => {\n if (props.align === 'right') {\n return {\n maxWidth: props.width,\n minWidth: props.width,\n maxHeight: this.state.maxHeight,\n };\n }\n\n return {\n width: props.width,\n maxHeight: this.state.maxHeight,\n };\n };\n\n private handleScrollStateChange = (scrollState: ScrollContainerScrollState) => {\n if (this.state.scrollState !== scrollState) {\n this.setState({ scrollState });\n }\n };\n\n private setEnableIconPadding = (isIconPaddingEnabled: boolean) => {\n !this.getProps().preventIconsOffset && this.setState({ enableIconPadding: isIconPaddingEnabled });\n };\n}\n\nfunction childrenToArray(children: React.ReactNode): React.ReactNode[] {\n const ret: React.ReactNode[] = [];\n // Use forEach instead of map to avoid cloning for key unifying.\n React.Children.forEach(children, (child) => {\n ret.push(child);\n });\n return ret;\n}\n\nconst getAlignRightClass = (props: MenuProps) => {\n if (props.align === 'right') {\n return cx({\n [styles.alignRight()]: !isIE11,\n [styles.alignRightIE11()]: isIE11,\n [styles.alignRightIE11FixAutoWidth()]: isIE11 && props.width === 'auto',\n });\n }\n\n return null;\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","globalObject","isBrowser","isKeyArrowDown","isKeyArrowUp","isKeyEnter","MenuSeparator","ThemeFactory","getDOMRect","responsiveLayout","isNonNullable","ScrollContainer","MenuItemDataTids","ThemeContext","cx","getRootNode","rootNode","isIE11","createPropsGetter","isInstanceOf","CommonWrapper","styles","MenuNavigation","MenuContext","MenuDataTids","root","Menu","_class","_Menu","_React$PureComponent","_this","_len","arguments","length","args","Array","_key","call","apply","concat","getProps","defaultProps","state","highlightedIndex","maxHeight","scrollState","enableIconPadding","unmounted","contentRef","createRef","menuNavigation","content","focusOnRootElement","HTMLElement","focus","renderHeader","_cx","createElement","className","wrapper","headerWrapper","ref","el","header","contentWrapper","props","menuSeparatorWrapper","theme","renderMenuSeparatorWithNoMargin","renderFooter","_cx2","footerWrapper","footer","Provider","value","create","menuSeparatorMarginY","setInitialSelection","i","initialSelectedItemIndex","down","shouldRecalculateMaxHeight","prevProps","_this$props","children","prevMaxHeight","prevHeader","prevFooter","prevChildrenCount","Children","count","calculateMaxHeight","parsedMaxHeight","rootElementMaxHeight","getComputedStyle","parseFloat","calculatedMaxHeight","height","setState","refScrollContainer","scrollContainer","scrollToSelected","highlightedItem","scrollTo","scrollToTop","scrollToBottom","scroll","nextIndex","items","handleKeyDown","event","onKeyDown","defaultPrevented","preventDefault","up","select","getStyle","align","maxWidth","width","minWidth","handleScrollStateChange","setEnableIconPadding","isIconPaddingEnabled","preventIconsOffset","_inheritsLoose","_proto","prototype","componentWillUnmount","componentDidMount","componentDidUpdate","render","_this2","Consumer","renderMain","move","enter","_this$menuNavigation$","navigate","reset","hasHighlightedItem","highlightItem","index","highlightByIndex","_cx3","_cx4","isEmpty","_this$getProps","hasMargin","preventWindowScroll","offsetY","top","scrollContainerScrollBarOffsetY","right","bottom","isMobile","isMobileLayout","_extends","rootNodeRef","setRootNode","getAlignRightClass","mobileRoot","shadow","style","id","tabIndex","onScrollStateChange","disabled","disableScrollContainer","scrollContainerMobile","navigation","onItemClick","step","cyclicSelection","childrenToArray","filter","PureComponent","__KONTUR_REACT_UI__","displayName","ret","forEach","child","push","_cx5","alignRight","alignRightIE11","alignRightIE11FixAutoWidth"],"sources":["Menu.tsx"],"sourcesContent":["import React, { CSSProperties, HTMLAttributes } from 'react';\nimport { globalObject, isBrowser } from '@skbkontur/global-object';\n\nimport { isKeyArrowDown, isKeyArrowUp, isKeyEnter } from '../../lib/events/keyboard/identifiers';\nimport { MenuSeparator } from '../../components/MenuSeparator';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { getDOMRect } from '../../lib/dom/getDOMRect';\nimport { responsiveLayout } from '../../components/ResponsiveLayout/decorator';\nimport { isNonNullable } from '../../lib/utils';\nimport { ScrollContainer, ScrollContainerScrollState } from '../../components/ScrollContainer';\nimport { MenuItem, MenuItemDataTids } from '../../components/MenuItem';\nimport { Nullable } from '../../typings/utility-types';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { cx } from '../../lib/theming/Emotion';\nimport { getRootNode, rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { isIE11 } from '../../lib/client';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { isInstanceOf } from '../../lib/isInstanceOf';\nimport { CommonProps, CommonWrapper } from '../CommonWrapper';\n\nimport { styles } from './Menu.styles';\nimport { MenuNavigation } from './MenuNavigation';\nimport { MenuContext } from './MenuContext';\n\nexport interface MenuProps extends CommonProps, Pick<HTMLAttributes<HTMLDivElement>, 'id'> {\n children: React.ReactNode;\n hasMargin?: boolean;\n /**\n * Максимальная высота применяется только для скролл контейнера\n *\n * Высота `header` и `footer` в нее не включены\n */\n maxHeight?: number | string;\n onItemClick?: (event: React.SyntheticEvent<HTMLElement>) => void;\n width?: number | string;\n preventWindowScroll?: boolean;\n /**\n * Отключение кастомного скролла контейнера\n */\n disableScrollContainer?: boolean;\n align?: 'left' | 'right';\n /**\n * Предотвращает выравнивание текста всех пунктов меню относительно друг друга.\n * Так, если хотя бы у одного пункта меню есть иконка, текст в остальных пунктах меню будет выровнен относительно пункта меню с иконкой\n */\n preventIconsOffset?: boolean;\n onKeyDown?: (event: React.KeyboardEvent<HTMLElement>) => void;\n\n header?: React.ReactNode;\n footer?: React.ReactNode;\n /**\n * Циклический перебор айтемов меню (по-дефолтну включен)\n */\n cyclicSelection?: boolean;\n initialSelectedItemIndex?: number;\n}\n\nexport interface MenuState {\n highlightedIndex: number; // TODO unused variable, remove in next major release\n maxHeight: number | string;\n scrollState: ScrollContainerScrollState;\n enableIconPadding: boolean;\n}\n\nexport const MenuDataTids = {\n root: 'Menu__root',\n} as const;\n\ntype DefaultProps = Required<\n Pick<\n MenuProps,\n | 'align'\n | 'width'\n | 'hasMargin'\n | 'maxHeight'\n | 'preventWindowScroll'\n | 'cyclicSelection'\n | 'initialSelectedItemIndex'\n >\n>;\n\n@responsiveLayout\n@rootNode\nexport class Menu extends React.PureComponent<MenuProps, MenuState> {\n public static __KONTUR_REACT_UI__ = 'Menu';\n public static displayName = 'Menu';\n\n public static defaultProps: DefaultProps = {\n align: 'left',\n width: 'auto',\n maxHeight: 300,\n hasMargin: true,\n preventWindowScroll: true,\n cyclicSelection: true,\n initialSelectedItemIndex: -1,\n };\n\n private getProps = createPropsGetter(Menu.defaultProps);\n\n public state: MenuState = {\n highlightedIndex: -1,\n maxHeight: this.getProps().maxHeight || 'none',\n scrollState: 'top',\n enableIconPadding: false,\n };\n\n private theme!: Theme;\n private scrollContainer: Nullable<ScrollContainer>;\n private isMobileLayout!: boolean;\n private unmounted = false;\n private setRootNode!: TSetRootNode;\n private header: Nullable<HTMLDivElement>;\n private footer: Nullable<HTMLDivElement>;\n private contentRef = React.createRef<HTMLDivElement>();\n private menuNavigation: MenuNavigation<MenuItem> = new MenuNavigation(this.contentRef, MenuItemDataTids.content);\n\n public componentWillUnmount() {\n this.unmounted = true;\n }\n\n public componentDidMount() {\n this.setInitialSelection();\n this.calculateMaxHeight();\n this.unmounted = false;\n }\n\n public componentDidUpdate(prevProps: MenuProps) {\n if (this.shouldRecalculateMaxHeight(prevProps)) {\n this.calculateMaxHeight();\n }\n\n if (prevProps.maxHeight !== this.getProps().maxHeight) {\n this.setState({\n maxHeight: this.props.maxHeight || 'none',\n });\n }\n }\n\n public focus() {\n this.focusOnRootElement();\n }\n\n private focusOnRootElement = (): void => {\n const rootNode = getRootNode(this);\n if (isInstanceOf(rootNode, globalObject.HTMLElement)) {\n rootNode?.focus();\n }\n };\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n /**\n * @public\n */\n public up() {\n this.move(-1);\n }\n\n /**\n * @public\n */\n public down() {\n this.move(1);\n }\n\n /**\n * @public\n */\n public enter(event: React.SyntheticEvent<HTMLElement>) {\n this.menuNavigation.highlightedItem?.navigate();\n return this.menuNavigation.select(event);\n }\n\n /**\n * @public\n */\n public reset() {\n this.menuNavigation.reset();\n }\n\n /**\n * @public\n */\n public hasHighlightedItem() {\n return !!this.menuNavigation.highlightedItem;\n }\n\n public highlightItem(index: number) {\n this.menuNavigation.highlightByIndex(index);\n }\n\n private renderMain() {\n if (this.isEmpty()) {\n return null;\n }\n const { hasMargin, maxHeight, preventWindowScroll } = this.getProps();\n\n const offsetY = {\n top: `${this.theme.scrollContainerScrollBarOffsetY}`,\n right: 0,\n bottom: `${this.theme.scrollContainerScrollBarOffsetY}`,\n };\n\n const isMobile = this.isMobileLayout;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div\n data-tid={MenuDataTids.root}\n className={cx(getAlignRightClass(this.props), {\n [styles.root(this.theme)]: true,\n [styles.hasMargin(this.theme)]: hasMargin,\n [styles.mobileRoot(this.theme)]: isMobile,\n [styles.shadow(this.theme)]: !isMobile,\n })}\n style={this.getStyle(this.props)}\n id={this.props.id}\n onKeyDown={this.handleKeyDown}\n tabIndex={0}\n >\n {this.props.header && this.renderHeader()}\n <ScrollContainer\n ref={this.refScrollContainer}\n maxHeight={maxHeight}\n preventWindowScroll={preventWindowScroll}\n onScrollStateChange={this.handleScrollStateChange}\n disabled={this.props.disableScrollContainer}\n offsetY={offsetY}\n >\n <div\n className={cx({\n [styles.scrollContainer(this.theme)]: true,\n [styles.scrollContainerMobile(this.theme)]: isMobile,\n })}\n ref={this.contentRef}\n >\n <MenuContext.Provider\n value={{\n navigation: this.menuNavigation,\n onItemClick: this.props.onItemClick,\n enableIconPadding: this.state.enableIconPadding,\n setEnableIconPadding: this.setEnableIconPadding,\n }}\n >\n {this.props.children}\n </MenuContext.Provider>\n </div>\n </ScrollContainer>\n {this.props.footer && this.renderFooter()}\n </div>\n </CommonWrapper>\n );\n }\n\n private renderHeader = () => {\n return (\n <div\n className={cx({\n [styles.wrapper()]: true,\n [styles.headerWrapper()]: true,\n })}\n ref={(el) => (this.header = el)}\n >\n <div className={styles.contentWrapper()}>{this.props.header}</div>\n <div className={styles.menuSeparatorWrapper(this.theme)}>\n {this.state.scrollState !== 'top' && this.renderMenuSeparatorWithNoMargin()}\n </div>\n </div>\n );\n };\n\n private renderFooter = () => {\n return (\n <div\n className={cx({\n [styles.wrapper()]: true,\n [styles.footerWrapper()]: true,\n })}\n ref={(el) => (this.footer = el)}\n >\n <div className={styles.menuSeparatorWrapper(this.theme)}>\n {this.state.scrollState !== 'bottom' && this.renderMenuSeparatorWithNoMargin()}\n </div>\n <div className={styles.contentWrapper()}>{this.props.footer}</div>\n </div>\n );\n };\n\n private renderMenuSeparatorWithNoMargin = () => {\n return (\n <ThemeContext.Provider value={ThemeFactory.create({ menuSeparatorMarginY: '0' }, this.theme)}>\n <MenuSeparator />\n </ThemeContext.Provider>\n );\n };\n\n private setInitialSelection = () => {\n for (let i = this.getProps().initialSelectedItemIndex; i > -1; i--) {\n this.down();\n }\n };\n\n private shouldRecalculateMaxHeight = (prevProps: MenuProps): boolean => {\n const { header, footer, children } = this.props;\n const maxHeight = this.getProps().maxHeight;\n const prevMaxHeight = prevProps.maxHeight;\n const prevHeader = prevProps.header;\n const prevFooter = prevProps.footer;\n const prevChildrenCount = React.Children.count(prevProps.children);\n\n return (\n maxHeight !== prevMaxHeight ||\n footer !== prevFooter ||\n header !== prevHeader ||\n React.Children.count(children) !== prevChildrenCount\n );\n };\n\n private calculateMaxHeight = () => {\n const maxHeight = this.getProps().maxHeight;\n let parsedMaxHeight = maxHeight;\n const rootNode = getRootNode(this);\n\n if (typeof maxHeight === 'string' && isBrowser(globalObject) && rootNode) {\n const rootElementMaxHeight = globalObject.getComputedStyle?.(rootNode).maxHeight;\n\n if (rootElementMaxHeight) {\n parsedMaxHeight = parseFloat(rootElementMaxHeight);\n }\n }\n\n const calculatedMaxHeight =\n typeof parsedMaxHeight === 'number'\n ? parsedMaxHeight +\n ((this.header && getDOMRect(this.header).height) || 0) +\n ((this.footer && getDOMRect(this.footer).height) || 0)\n : maxHeight;\n\n this.setState({\n maxHeight: calculatedMaxHeight || 'none',\n });\n };\n\n private refScrollContainer = (scrollContainer: Nullable<ScrollContainer>) => {\n this.scrollContainer = scrollContainer;\n };\n\n private scrollToSelected = () => {\n const highlightedItem = this.menuNavigation.highlightedItem;\n if (this.scrollContainer && highlightedItem) {\n const rootNode = getRootNode(highlightedItem);\n // TODO: Remove this check once IF-647 is resolved\n if (isInstanceOf(rootNode, globalObject.HTMLElement)) {\n this.scrollContainer.scrollTo(rootNode);\n }\n }\n };\n\n private scrollToTop = () => {\n if (this.scrollContainer) {\n this.scrollContainer.scrollToTop();\n }\n };\n\n private scrollToBottom = () => {\n if (this.scrollContainer) {\n this.scrollContainer.scrollToBottom();\n }\n };\n\n private scroll = (nextIndex: number) => {\n switch (nextIndex) {\n case 0:\n this.scrollToTop?.();\n break;\n case this.menuNavigation.items.length - 1:\n this.scrollToBottom?.();\n break;\n default:\n this.scrollToSelected?.();\n }\n };\n\n private move(step: number) {\n if (this.unmounted) {\n // NOTE workaround, because `ComboBox` call `process.nextTick` in reducer\n return;\n }\n const nextIndex = this.menuNavigation.move(step, this.getProps().cyclicSelection);\n this.scroll(nextIndex);\n }\n\n private isEmpty() {\n const { children } = this.props;\n return !children || !childrenToArray(children).filter(isNonNullable).length;\n }\n\n private handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>): void => {\n if (typeof this.props.onKeyDown === 'function') {\n this.props.onKeyDown(event);\n }\n\n if (event.defaultPrevented) {\n return;\n }\n\n if (isKeyArrowUp(event)) {\n event.preventDefault();\n this.up();\n } else if (isKeyArrowDown(event)) {\n event.preventDefault();\n this.down();\n } else if (isKeyEnter(event)) {\n this.menuNavigation.select(event);\n }\n };\n\n private getStyle = (props: MenuProps): CSSProperties => {\n if (props.align === 'right') {\n return {\n maxWidth: props.width,\n minWidth: props.width,\n maxHeight: this.state.maxHeight,\n };\n }\n\n return {\n width: props.width,\n maxHeight: this.state.maxHeight,\n };\n };\n\n private handleScrollStateChange = (scrollState: ScrollContainerScrollState) => {\n if (this.state.scrollState !== scrollState) {\n this.setState({ scrollState });\n }\n };\n\n private setEnableIconPadding = (isIconPaddingEnabled: boolean) => {\n !this.getProps().preventIconsOffset && this.setState({ enableIconPadding: isIconPaddingEnabled });\n };\n}\n\nfunction childrenToArray(children: React.ReactNode): React.ReactNode[] {\n const ret: React.ReactNode[] = [];\n // Use forEach instead of map to avoid cloning for key unifying.\n React.Children.forEach(children, (child) => {\n ret.push(child);\n });\n return ret;\n}\n\nconst getAlignRightClass = (props: MenuProps) => {\n if (props.align === 'right') {\n return cx({\n [styles.alignRight()]: !isIE11,\n [styles.alignRightIE11()]: isIE11,\n [styles.alignRightIE11FixAutoWidth()]: isIE11 && props.width === 'auto',\n });\n }\n\n return null;\n};\n"],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@skbkontur/react-ui",
|
|
3
|
-
"version": "5.0.
|
|
3
|
+
"version": "5.0.15",
|
|
4
4
|
"description": "UI Components",
|
|
5
5
|
"main": "cjs/index.js",
|
|
6
6
|
"module": "index.js",
|
|
7
7
|
"sideEffects": false,
|
|
8
|
-
"homepage": "https://tech.skbkontur.ru/react-ui/5.0.
|
|
8
|
+
"homepage": "https://tech.skbkontur.ru/react-ui/5.0.15/",
|
|
9
9
|
"repository": {
|
|
10
10
|
"type": "git",
|
|
11
11
|
"url": "git@github.com:skbkontur/retail-ui.git"
|