@skbkontur/react-ui 6.0.0-beta.2 → 6.0.0-beta.3
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 +34 -0
- package/components/Calendar/Calendar.js +1 -27
- package/components/Calendar/Calendar.js.map +1 -1
- package/components/Calendar/CalendarDay.js +1 -1
- package/components/Calendar/CalendarDay.js.map +1 -1
- package/components/CurrencyInput/CurrencyInput.js +3 -18
- package/components/CurrencyInput/CurrencyInput.js.map +1 -1
- package/components/Dropdown/Dropdown.d.ts +18 -19
- package/components/Dropdown/Dropdown.js +2 -2
- package/components/Dropdown/Dropdown.js.map +1 -1
- package/components/FileUploader/FileUploader.d.ts +4 -4
- package/components/FileUploader/FileUploader.js +10 -10
- package/components/FileUploader/FileUploader.js.map +1 -1
- package/components/FileUploader/FileUploaderControlContext.js.map +1 -0
- package/{internal/FileUploaderControl → components/FileUploader}/FileUploaderControlProvider.d.ts +0 -4
- package/components/FileUploader/FileUploaderControlProvider.js.map +1 -0
- package/components/FileUploader/FileUploaderFile.d.ts +1 -1
- package/components/FileUploader/FileUploaderFile.js +5 -5
- package/components/FileUploader/FileUploaderFile.js.map +1 -1
- package/{internal/FileUploaderControl/FileUploaderFile → components/FileUploader}/FileUploaderFile.styles.d.ts +4 -4
- package/{internal/FileUploaderControl/FileUploaderFile → components/FileUploader}/FileUploaderFile.styles.js +1 -1
- package/components/FileUploader/FileUploaderFile.styles.js.map +1 -0
- package/{internal/FileUploaderControl → components/FileUploader}/FileUploaderFileList/FileUploaderFileList.d.ts +4 -6
- package/{internal/FileUploaderControl → components/FileUploader}/FileUploaderFileList/FileUploaderFileList.js +3 -4
- package/components/FileUploader/FileUploaderFileList/FileUploaderFileList.js.map +1 -0
- package/components/FileUploader/FileUploaderFileList/FileUploaderFileList.styles.js.map +1 -0
- package/{internal/FileUploaderControl/FileUploaderFile/icons → components/FileUploader}/FileUploaderFileStatusIcon.d.ts +2 -2
- package/{internal/FileUploaderControl/FileUploaderFile/icons → components/FileUploader}/FileUploaderFileStatusIcon.js +11 -12
- package/components/FileUploader/FileUploaderFileStatusIcon.js.map +1 -0
- package/{internal/FileUploaderControl/FileUploaderFile/icons → components/FileUploader}/FileUploaderFileTypeIcon.d.ts +2 -2
- package/{internal/FileUploaderControl/FileUploaderFile/icons → components/FileUploader}/FileUploaderFileTypeIcon.js +23 -23
- package/components/FileUploader/FileUploaderFileTypeIcon.js.map +1 -0
- package/components/FileUploader/FileUploaderFileValidationResult.js.map +1 -0
- package/components/FileUploader/fileUtils.js.map +1 -0
- package/components/FileUploader/hooks/useControlLocale.d.ts +2 -0
- package/components/FileUploader/hooks/useControlLocale.js +6 -0
- package/components/FileUploader/hooks/useControlLocale.js.map +1 -0
- package/components/FileUploader/hooks/useFileUploaderSize.js.map +1 -0
- package/{internal/FileUploaderControl → components/FileUploader}/hooks/useUpload.d.ts +1 -1
- package/components/FileUploader/hooks/useUpload.js.map +1 -0
- package/components/FileUploader/icons/{TileUploadIcon.d.ts → DeleteIcon.d.ts} +1 -1
- package/components/FileUploader/icons/DeleteIcon.js +11 -0
- package/components/FileUploader/icons/DeleteIcon.js.map +1 -0
- package/components/FileUploader/{UploadIcon.d.ts → icons/UploadIcon.d.ts} +2 -2
- package/components/FileUploader/{UploadIcon.js → icons/UploadIcon.js} +2 -2
- package/components/FileUploader/icons/UploadIcon.js.map +1 -0
- package/components/FileUploader/icons/row/ArchiveIcon.d.ts +3 -0
- package/components/FileUploader/icons/row/ArchiveIcon.js +11 -0
- package/components/FileUploader/icons/row/ArchiveIcon.js.map +1 -0
- package/components/FileUploader/icons/row/DocTextIcon.d.ts +3 -0
- package/components/FileUploader/icons/row/DocTextIcon.js +11 -0
- package/components/FileUploader/icons/row/DocTextIcon.js.map +1 -0
- package/components/FileUploader/icons/row/FolderIcon.d.ts +3 -0
- package/components/FileUploader/icons/row/FolderIcon.js +11 -0
- package/components/FileUploader/icons/row/FolderIcon.js.map +1 -0
- package/components/FileUploader/icons/row/MarkupIcon.d.ts +3 -0
- package/components/FileUploader/icons/row/MarkupIcon.js +11 -0
- package/components/FileUploader/icons/row/MarkupIcon.js.map +1 -0
- package/components/FileUploader/icons/row/PdfIcon.d.ts +3 -0
- package/components/FileUploader/icons/row/PdfIcon.js +11 -0
- package/components/FileUploader/icons/row/PdfIcon.js.map +1 -0
- package/components/FileUploader/icons/row/PictureIcon.d.ts +3 -0
- package/components/FileUploader/icons/row/PictureIcon.js +11 -0
- package/components/FileUploader/icons/row/PictureIcon.js.map +1 -0
- package/components/FileUploader/icons/row/PresentationIcon.d.ts +3 -0
- package/components/FileUploader/icons/row/PresentationIcon.js +11 -0
- package/components/FileUploader/icons/row/PresentationIcon.js.map +1 -0
- package/components/FileUploader/icons/row/RowUploadIcon.d.ts +3 -0
- package/components/FileUploader/icons/row/RowUploadIcon.js +11 -0
- package/components/FileUploader/icons/row/RowUploadIcon.js.map +1 -0
- package/components/FileUploader/icons/row/TableIcon.d.ts +3 -0
- package/components/FileUploader/icons/row/TableIcon.js +11 -0
- package/components/FileUploader/icons/row/TableIcon.js.map +1 -0
- package/components/FileUploader/icons/row/TextIcon.d.ts +3 -0
- package/components/FileUploader/icons/row/TextIcon.js +11 -0
- package/components/FileUploader/icons/row/TextIcon.js.map +1 -0
- package/components/FileUploader/icons/row/ValidationErrorIcon.d.ts +3 -0
- package/components/FileUploader/icons/row/ValidationErrorIcon.js +11 -0
- package/components/FileUploader/icons/row/ValidationErrorIcon.js.map +1 -0
- package/components/FileUploader/icons/row/ValidationWarningIcon.d.ts +3 -0
- package/components/FileUploader/icons/row/ValidationWarningIcon.js +11 -0
- package/components/FileUploader/icons/row/ValidationWarningIcon.js.map +1 -0
- package/components/FileUploader/icons/tile/ArchiveIcon.d.ts +3 -0
- package/components/FileUploader/icons/tile/ArchiveIcon.js +11 -0
- package/components/FileUploader/icons/tile/ArchiveIcon.js.map +1 -0
- package/components/FileUploader/icons/tile/DocTextIcon.d.ts +3 -0
- package/components/FileUploader/icons/tile/DocTextIcon.js +11 -0
- package/components/FileUploader/icons/tile/DocTextIcon.js.map +1 -0
- package/components/FileUploader/icons/tile/FolderIcon.d.ts +3 -0
- package/components/FileUploader/icons/tile/FolderIcon.js +11 -0
- package/components/FileUploader/icons/tile/FolderIcon.js.map +1 -0
- package/components/FileUploader/icons/tile/MarkupIcon.d.ts +3 -0
- package/components/FileUploader/icons/tile/MarkupIcon.js +11 -0
- package/components/FileUploader/icons/tile/MarkupIcon.js.map +1 -0
- package/components/FileUploader/icons/tile/PdfIcon.d.ts +3 -0
- package/components/FileUploader/icons/tile/PdfIcon.js +11 -0
- package/components/FileUploader/icons/tile/PdfIcon.js.map +1 -0
- package/components/FileUploader/icons/tile/PictureIcon.d.ts +3 -0
- package/components/FileUploader/icons/tile/PictureIcon.js +11 -0
- package/components/FileUploader/icons/tile/PictureIcon.js.map +1 -0
- package/components/FileUploader/icons/tile/PresentationIcon.d.ts +3 -0
- package/components/FileUploader/icons/tile/PresentationIcon.js +11 -0
- package/components/FileUploader/icons/tile/PresentationIcon.js.map +1 -0
- package/components/FileUploader/icons/tile/TableIcon.d.ts +3 -0
- package/components/FileUploader/icons/tile/TableIcon.js +11 -0
- package/components/FileUploader/icons/tile/TableIcon.js.map +1 -0
- package/components/FileUploader/icons/tile/TextIcon.d.ts +3 -0
- package/components/FileUploader/icons/tile/TextIcon.js +11 -0
- package/components/FileUploader/icons/tile/TextIcon.js.map +1 -0
- package/components/FileUploader/icons/tile/TileUploadIcon.d.ts +3 -0
- package/components/FileUploader/icons/tile/TileUploadIcon.js +11 -0
- package/components/FileUploader/icons/tile/TileUploadIcon.js.map +1 -0
- package/components/FileUploader/icons/tile/ValidationErrorIcon.d.ts +3 -0
- package/components/FileUploader/icons/tile/ValidationErrorIcon.js +11 -0
- package/components/FileUploader/icons/tile/ValidationErrorIcon.js.map +1 -0
- package/components/FileUploader/icons/tile/ValidationWarningIcon.d.ts +3 -0
- package/components/FileUploader/icons/tile/ValidationWarningIcon.js +11 -0
- package/components/FileUploader/icons/tile/ValidationWarningIcon.js.map +1 -0
- package/components/FileUploader/index.d.ts +3 -3
- package/components/FileUploader/index.js +2 -2
- package/components/FileUploader/index.js.map +1 -1
- package/components/FileUploader/withFileUploaderControlProvider.js.map +1 -0
- package/components/FxInput/FxInput.js +3 -1
- package/components/FxInput/FxInput.js.map +1 -1
- package/components/GlobalLoader/GlobalLoader.d.ts +20 -23
- package/components/GlobalLoader/GlobalLoader.js +10 -13
- package/components/GlobalLoader/GlobalLoader.js.map +1 -1
- package/components/Kebab/Kebab.d.ts +10 -11
- package/components/Kebab/Kebab.js +1 -1
- package/components/Kebab/Kebab.js.map +1 -1
- package/components/Loader/Loader.d.ts +9 -9
- package/components/Loader/Loader.js +3 -3
- package/components/Loader/Loader.js.map +1 -1
- package/components/MaskedInput/FixedIMaskInput.js +11 -0
- package/components/MaskedInput/FixedIMaskInput.js.map +1 -1
- package/components/Paging/Paging.d.ts +23 -22
- package/components/Paging/Paging.js.map +1 -1
- package/components/Spinner/Spinner.d.ts +28 -16
- package/components/Spinner/Spinner.js +0 -5
- package/components/Spinner/Spinner.js.map +1 -1
- package/components/Tabs/Indicator.styles.d.ts +1 -0
- package/components/Tabs/Indicator.styles.js +4 -1
- package/components/Tabs/Indicator.styles.js.map +1 -1
- package/components/Tabs/Tab.d.ts +11 -10
- package/components/Tabs/Tab.js +3 -1
- package/components/Tabs/Tab.js.map +1 -1
- package/components/Tabs/Tabs.d.ts +7 -12
- package/components/Tabs/Tabs.js +1 -6
- package/components/Tabs/Tabs.js.map +1 -1
- package/components/Textarea/Textarea.styles.js +1 -1
- package/components/Textarea/Textarea.styles.js.map +1 -1
- package/components/Toast/Toast.d.ts +3 -3
- package/components/Toast/Toast.js.map +1 -1
- package/components/Tooltip/Tooltip.d.ts +1 -1
- package/components/Tooltip/Tooltip.js.map +1 -1
- package/internal/Menu/Menu.d.ts +1 -2
- package/internal/Menu/Menu.js.map +1 -1
- package/internal/PopupMenu/PopupMenu.d.ts +3 -7
- package/internal/PopupMenu/PopupMenu.js.map +1 -1
- package/internal/RenderContainer/RenderContainer.d.ts +3 -0
- package/internal/RenderContainer/RenderContainer.js +4 -1
- package/internal/RenderContainer/RenderContainer.js.map +1 -1
- package/internal/themes/BasicTheme.d.ts +1 -0
- package/internal/themes/BasicTheme.js +1 -0
- package/internal/themes/BasicTheme.js.map +1 -1
- package/lib/rootNode/getRootNode.js +0 -24
- package/lib/rootNode/getRootNode.js.map +1 -1
- package/lib/scrollInputCaretIntoView.d.ts +14 -0
- package/lib/scrollInputCaretIntoView.js +38 -0
- package/lib/scrollInputCaretIntoView.js.map +1 -0
- package/lib/utils.js +2 -2
- package/lib/utils.js.map +1 -1
- package/package.json +2 -3
- package/components/FileUploader/UploadIcon.js.map +0 -1
- package/components/FileUploader/icons/RowUploadIcon.d.ts +0 -3
- package/components/FileUploader/icons/RowUploadIcon.js +0 -11
- package/components/FileUploader/icons/RowUploadIcon.js.map +0 -1
- package/components/FileUploader/icons/TileUploadIcon.js +0 -11
- package/components/FileUploader/icons/TileUploadIcon.js.map +0 -1
- package/internal/FileUploaderControl/FileUploaderControlContext.js.map +0 -1
- package/internal/FileUploaderControl/FileUploaderControlProvider.js.map +0 -1
- package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.d.ts +0 -1
- package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.js +0 -2
- package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.js.map +0 -1
- package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.styles.js.map +0 -1
- package/internal/FileUploaderControl/FileUploaderFile/icons/DeleteIcon.d.ts +0 -3
- package/internal/FileUploaderControl/FileUploaderFile/icons/DeleteIcon.js +0 -11
- package/internal/FileUploaderControl/FileUploaderFile/icons/DeleteIcon.js.map +0 -1
- package/internal/FileUploaderControl/FileUploaderFile/icons/FileUploaderFileStatusIcon.js.map +0 -1
- package/internal/FileUploaderControl/FileUploaderFile/icons/FileUploaderFileTypeIcon.js.map +0 -1
- package/internal/FileUploaderControl/FileUploaderFile/icons/row/ArchiveIcon.d.ts +0 -3
- package/internal/FileUploaderControl/FileUploaderFile/icons/row/ArchiveIcon.js +0 -11
- package/internal/FileUploaderControl/FileUploaderFile/icons/row/ArchiveIcon.js.map +0 -1
- package/internal/FileUploaderControl/FileUploaderFile/icons/row/DocTextIcon.d.ts +0 -3
- package/internal/FileUploaderControl/FileUploaderFile/icons/row/DocTextIcon.js +0 -11
- package/internal/FileUploaderControl/FileUploaderFile/icons/row/DocTextIcon.js.map +0 -1
- package/internal/FileUploaderControl/FileUploaderFile/icons/row/FolderIcon.d.ts +0 -3
- package/internal/FileUploaderControl/FileUploaderFile/icons/row/FolderIcon.js +0 -11
- package/internal/FileUploaderControl/FileUploaderFile/icons/row/FolderIcon.js.map +0 -1
- package/internal/FileUploaderControl/FileUploaderFile/icons/row/MarkupIcon.d.ts +0 -3
- package/internal/FileUploaderControl/FileUploaderFile/icons/row/MarkupIcon.js +0 -11
- package/internal/FileUploaderControl/FileUploaderFile/icons/row/MarkupIcon.js.map +0 -1
- package/internal/FileUploaderControl/FileUploaderFile/icons/row/PdfIcon.d.ts +0 -3
- package/internal/FileUploaderControl/FileUploaderFile/icons/row/PdfIcon.js +0 -11
- package/internal/FileUploaderControl/FileUploaderFile/icons/row/PdfIcon.js.map +0 -1
- package/internal/FileUploaderControl/FileUploaderFile/icons/row/PictureIcon.d.ts +0 -3
- package/internal/FileUploaderControl/FileUploaderFile/icons/row/PictureIcon.js +0 -11
- package/internal/FileUploaderControl/FileUploaderFile/icons/row/PictureIcon.js.map +0 -1
- package/internal/FileUploaderControl/FileUploaderFile/icons/row/PresentationIcon.d.ts +0 -3
- package/internal/FileUploaderControl/FileUploaderFile/icons/row/PresentationIcon.js +0 -11
- package/internal/FileUploaderControl/FileUploaderFile/icons/row/PresentationIcon.js.map +0 -1
- package/internal/FileUploaderControl/FileUploaderFile/icons/row/TableIcon.d.ts +0 -3
- package/internal/FileUploaderControl/FileUploaderFile/icons/row/TableIcon.js +0 -11
- package/internal/FileUploaderControl/FileUploaderFile/icons/row/TableIcon.js.map +0 -1
- package/internal/FileUploaderControl/FileUploaderFile/icons/row/TextIcon.d.ts +0 -3
- package/internal/FileUploaderControl/FileUploaderFile/icons/row/TextIcon.js +0 -11
- package/internal/FileUploaderControl/FileUploaderFile/icons/row/TextIcon.js.map +0 -1
- package/internal/FileUploaderControl/FileUploaderFile/icons/row/ValidationErrorIcon.d.ts +0 -3
- package/internal/FileUploaderControl/FileUploaderFile/icons/row/ValidationErrorIcon.js +0 -11
- package/internal/FileUploaderControl/FileUploaderFile/icons/row/ValidationErrorIcon.js.map +0 -1
- package/internal/FileUploaderControl/FileUploaderFile/icons/row/ValidationWarningIcon.d.ts +0 -3
- package/internal/FileUploaderControl/FileUploaderFile/icons/row/ValidationWarningIcon.js +0 -11
- package/internal/FileUploaderControl/FileUploaderFile/icons/row/ValidationWarningIcon.js.map +0 -1
- package/internal/FileUploaderControl/FileUploaderFile/icons/tile/ArchiveIcon.d.ts +0 -3
- package/internal/FileUploaderControl/FileUploaderFile/icons/tile/ArchiveIcon.js +0 -11
- package/internal/FileUploaderControl/FileUploaderFile/icons/tile/ArchiveIcon.js.map +0 -1
- package/internal/FileUploaderControl/FileUploaderFile/icons/tile/DocTextIcon.d.ts +0 -3
- package/internal/FileUploaderControl/FileUploaderFile/icons/tile/DocTextIcon.js +0 -11
- package/internal/FileUploaderControl/FileUploaderFile/icons/tile/DocTextIcon.js.map +0 -1
- package/internal/FileUploaderControl/FileUploaderFile/icons/tile/FolderIcon.d.ts +0 -3
- package/internal/FileUploaderControl/FileUploaderFile/icons/tile/FolderIcon.js +0 -11
- package/internal/FileUploaderControl/FileUploaderFile/icons/tile/FolderIcon.js.map +0 -1
- package/internal/FileUploaderControl/FileUploaderFile/icons/tile/MarkupIcon.d.ts +0 -3
- package/internal/FileUploaderControl/FileUploaderFile/icons/tile/MarkupIcon.js +0 -11
- package/internal/FileUploaderControl/FileUploaderFile/icons/tile/MarkupIcon.js.map +0 -1
- package/internal/FileUploaderControl/FileUploaderFile/icons/tile/PdfIcon.d.ts +0 -3
- package/internal/FileUploaderControl/FileUploaderFile/icons/tile/PdfIcon.js +0 -11
- package/internal/FileUploaderControl/FileUploaderFile/icons/tile/PdfIcon.js.map +0 -1
- package/internal/FileUploaderControl/FileUploaderFile/icons/tile/PictureIcon.d.ts +0 -3
- package/internal/FileUploaderControl/FileUploaderFile/icons/tile/PictureIcon.js +0 -11
- package/internal/FileUploaderControl/FileUploaderFile/icons/tile/PictureIcon.js.map +0 -1
- package/internal/FileUploaderControl/FileUploaderFile/icons/tile/PresentationIcon.d.ts +0 -3
- package/internal/FileUploaderControl/FileUploaderFile/icons/tile/PresentationIcon.js +0 -11
- package/internal/FileUploaderControl/FileUploaderFile/icons/tile/PresentationIcon.js.map +0 -1
- package/internal/FileUploaderControl/FileUploaderFile/icons/tile/TableIcon.d.ts +0 -3
- package/internal/FileUploaderControl/FileUploaderFile/icons/tile/TableIcon.js +0 -11
- package/internal/FileUploaderControl/FileUploaderFile/icons/tile/TableIcon.js.map +0 -1
- package/internal/FileUploaderControl/FileUploaderFile/icons/tile/TextIcon.d.ts +0 -3
- package/internal/FileUploaderControl/FileUploaderFile/icons/tile/TextIcon.js +0 -11
- package/internal/FileUploaderControl/FileUploaderFile/icons/tile/TextIcon.js.map +0 -1
- package/internal/FileUploaderControl/FileUploaderFile/icons/tile/ValidationErrorIcon.d.ts +0 -3
- package/internal/FileUploaderControl/FileUploaderFile/icons/tile/ValidationErrorIcon.js +0 -11
- package/internal/FileUploaderControl/FileUploaderFile/icons/tile/ValidationErrorIcon.js.map +0 -1
- package/internal/FileUploaderControl/FileUploaderFile/icons/tile/ValidationWarningIcon.d.ts +0 -3
- package/internal/FileUploaderControl/FileUploaderFile/icons/tile/ValidationWarningIcon.js +0 -11
- package/internal/FileUploaderControl/FileUploaderFile/icons/tile/ValidationWarningIcon.js.map +0 -1
- package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.js.map +0 -1
- package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.styles.js.map +0 -1
- package/internal/FileUploaderControl/FileUploaderFileValidationResult.js.map +0 -1
- package/internal/FileUploaderControl/fileUtils.js.map +0 -1
- package/internal/FileUploaderControl/hooks/useControlLocale.d.ts +0 -1
- package/internal/FileUploaderControl/hooks/useControlLocale.js +0 -4
- package/internal/FileUploaderControl/hooks/useControlLocale.js.map +0 -1
- package/internal/FileUploaderControl/hooks/useFileUploaderSize.js.map +0 -1
- package/internal/FileUploaderControl/hooks/useUpload.js.map +0 -1
- package/internal/FileUploaderControl/withFileUploaderControlProvider.js.map +0 -1
- /package/{internal/FileUploaderControl → components/FileUploader}/FileUploaderControlContext.d.ts +0 -0
- /package/{internal/FileUploaderControl → components/FileUploader}/FileUploaderControlContext.js +0 -0
- /package/{internal/FileUploaderControl → components/FileUploader}/FileUploaderControlProvider.js +0 -0
- /package/{internal/FileUploaderControl → components/FileUploader}/FileUploaderFileList/FileUploaderFileList.styles.d.ts +0 -0
- /package/{internal/FileUploaderControl → components/FileUploader}/FileUploaderFileList/FileUploaderFileList.styles.js +0 -0
- /package/{internal/FileUploaderControl → components/FileUploader}/FileUploaderFileValidationResult.d.ts +0 -0
- /package/{internal/FileUploaderControl → components/FileUploader}/FileUploaderFileValidationResult.js +0 -0
- /package/{internal/FileUploaderControl → components/FileUploader}/fileUtils.d.ts +0 -0
- /package/{internal/FileUploaderControl → components/FileUploader}/fileUtils.js +0 -0
- /package/{internal/FileUploaderControl → components/FileUploader}/hooks/useFileUploaderSize.d.ts +0 -0
- /package/{internal/FileUploaderControl → components/FileUploader}/hooks/useFileUploaderSize.js +0 -0
- /package/{internal/FileUploaderControl → components/FileUploader}/hooks/useUpload.js +0 -0
- /package/{internal/FileUploaderControl → components/FileUploader}/withFileUploaderControlProvider.d.ts +0 -0
- /package/{internal/FileUploaderControl → components/FileUploader}/withFileUploaderControlProvider.js +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,40 @@
|
|
|
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.6.8](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@5.6.7...@skbkontur/react-ui@5.6.8) (2026-03-12)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* **Calendar:** show year label only for first month ([0513727](https://github.com/skbkontur/retail-ui/commit/05137279c82a4a77bc4d875e708890117659aac1))
|
|
12
|
+
* **Textarea:** remove min-width ([8941d1b](https://github.com/skbkontur/retail-ui/commit/8941d1ba9f3aa88e53cd9d6fdc2b3bd99606a674))
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
## [5.6.7](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@5.6.6...@skbkontur/react-ui@5.6.7) (2026-03-12)
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
### Bug Fixes
|
|
22
|
+
|
|
23
|
+
* **Calendar:** fix color calendar active weekend by figma ([ab605b6](https://github.com/skbkontur/retail-ui/commit/ab605b6b1933cd23fa2cc7553496812f4bdc37cf))
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
## [5.6.6](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@5.6.5...@skbkontur/react-ui@5.6.6) (2026-02-26)
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
### Bug Fixes
|
|
33
|
+
|
|
34
|
+
* **MaskedInput:** scroll when cursor move in input ([1b574d5](https://github.com/skbkontur/retail-ui/commit/1b574d50539bfab0b71d1963eefdbab3edef77e6))
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
|
|
6
40
|
## [5.6.5](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@5.6.4...@skbkontur/react-ui@5.6.5) (2026-02-20)
|
|
7
41
|
|
|
8
42
|
|
|
@@ -112,7 +112,7 @@ var Calendar = /** @class */ (function (_super) {
|
|
|
112
112
|
* @public
|
|
113
113
|
*/
|
|
114
114
|
_this.scrollToMonth = function (month, year) { return __awaiter(_this, void 0, void 0, function () {
|
|
115
|
-
var monthNative, minDate, maxDate, minMonth, maxMonth, currentMonth, diffInMonths, maxMonthsToAdd, onEnd,
|
|
115
|
+
var monthNative, minDate, maxDate, minMonth, maxMonth, currentMonth, diffInMonths, maxMonthsToAdd, onEnd, monthsToPrependCount, monthsToPrepend_1, monthsToAppendCount_1, monthsToAppend_1;
|
|
116
116
|
var _this = this;
|
|
117
117
|
return __generator(this, function (_a) {
|
|
118
118
|
switch (_a.label) {
|
|
@@ -152,13 +152,6 @@ var Calendar = /** @class */ (function (_super) {
|
|
|
152
152
|
scrollPosition: 0,
|
|
153
153
|
});
|
|
154
154
|
};
|
|
155
|
-
isYearChanges = function (state) {
|
|
156
|
-
return (state.months[1].year !== year &&
|
|
157
|
-
// if diff in months is 2 or less,
|
|
158
|
-
// either year is not changing either months already
|
|
159
|
-
// have right isFirstInYear/isLastInYear flags
|
|
160
|
-
Math.abs(diffInMonths) > 2);
|
|
161
|
-
};
|
|
162
155
|
// If scrolling upwards, prepend maximum maxMonthsToAdd months
|
|
163
156
|
// and scroll to the first month
|
|
164
157
|
if (diffInMonths > 0) {
|
|
@@ -167,16 +160,6 @@ var Calendar = /** @class */ (function (_super) {
|
|
|
167
160
|
return MonthViewModel.create(monthNative + index, year);
|
|
168
161
|
});
|
|
169
162
|
this.setState(function (state) {
|
|
170
|
-
var yearChanges = isYearChanges(state);
|
|
171
|
-
if (yearChanges) {
|
|
172
|
-
// Mutating here can lead to some unexpected bugs
|
|
173
|
-
// but we couldn't find any yet
|
|
174
|
-
state.months[0].isFirstInYear = true;
|
|
175
|
-
if (monthsToPrepend_1.length) {
|
|
176
|
-
// Mutating item here is safe as it was just created
|
|
177
|
-
monthsToPrepend_1[monthsToPrepend_1.length - 1].isLastInYear = true;
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
163
|
return {
|
|
181
164
|
months: monthsToPrepend_1.concat(state.months),
|
|
182
165
|
scrollPosition: -CalendarUtils.getMonthsHeight(monthsToPrepend_1, _this.theme),
|
|
@@ -194,15 +177,6 @@ var Calendar = /** @class */ (function (_super) {
|
|
|
194
177
|
return MonthViewModel.create(monthNative + index - monthsToAppendCount_1 + 2, year);
|
|
195
178
|
});
|
|
196
179
|
this.setState(function (state) {
|
|
197
|
-
if (isYearChanges(state)) {
|
|
198
|
-
// Mutating here can lead to some unexpected bugs
|
|
199
|
-
// but we couldn't find any yet
|
|
200
|
-
state.months[state.months.length - 1].isLastInYear = true;
|
|
201
|
-
// Mutating item here is safe as it was just created
|
|
202
|
-
if (monthsToAppend_1[0]) {
|
|
203
|
-
monthsToAppend_1[0].isFirstInYear = true;
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
180
|
return { months: state.months.concat(monthsToAppend_1) };
|
|
207
181
|
}, function () {
|
|
208
182
|
var targetPosition = -1 * CalendarUtils.getMonthsHeight(_this.state.months.slice(1, -2), _this.theme);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Calendar.js","sourceRoot":"","sources":["../../../components/Calendar/Calendar.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\nimport normalizeWheel from 'normalize-wheel';\nimport throttle from 'lodash.throttle';\nimport shallowEqual from 'shallowequal';\nimport type { Emotion } from '@emotion/css/create-instance';\n\nimport type { GlobalObject, SafeTimer } from '../../lib/globalObject.js';\nimport { isInstanceOf } from '../../lib/isInstanceOf.js';\nimport { InternalDate } from '../../lib/date/InternalDate.js';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode/index.js';\nimport { rootNode } from '../../lib/rootNode/index.js';\nimport type { CommonProps } from '../../internal/CommonWrapper/index.js';\nimport { CommonWrapper } from '../../internal/CommonWrapper/index.js';\nimport { MAX_DATE, MAX_MONTH, MAX_YEAR, MIN_DATE, MIN_MONTH, MIN_YEAR } from '../../lib/date/constants.js';\nimport type { Nullable, Range } from '../../typings/utility-types.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport { animation } from '../../lib/animation/index.js';\nimport { isMobile } from '../../lib/client.js';\nimport { createPropsGetter } from '../../lib/createPropsGetter.js';\nimport { InternalDateTransformer } from '../../lib/date/InternalDateTransformer.js';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';\n\nimport { themeConfig } from './config.js';\nimport { MonthViewModel } from './MonthViewModel.js';\nimport * as CalendarScrollEvents from './CalendarScrollEvents.js';\nimport { Month } from './Month.js';\nimport { getStyles } from './Calendar.styles.js';\nimport type { CalendarDateShape } from './CalendarDateShape.js';\nimport { create, isGreater, isLess } from './CalendarDateShape.js';\nimport * as CalendarUtils from './CalendarUtils.js';\nimport type { CalendarContextProps } from './CalendarContext.js';\nimport { CalendarContext } from './CalendarContext.js';\nimport type { CalendarDayProps } from './CalendarDay.js';\nimport { CalendarDay } from './CalendarDay.js';\n\nexport interface CalendarProps extends CommonProps {\n /** Задает функцию, которая вызывается при изменении value.\n * @param {string} date - строка в формате `dd.mm.yyyy`. */\n onValueChange?: (date: string) => void;\n\n /** Задает текущую дату в формате `dd.mm.yyyy`. */\n value: Nullable<string>;\n\n /** Задает максимальную возможную дату в формате `dd.mm.yyyy`. */\n maxDate?: string;\n\n /** Задает минимальную возможную дату в формате `dd.mm.yyyy`. */\n minDate?: string;\n\n /** Задает начальную дату периода в формате `dd.mm.yyyy`. */\n periodStartDate?: string;\n\n /** Задает конечную дату периода в формате `dd.mm.yyyy`. */\n periodEndDate?: string;\n\n /** Задает функцию для определения праздничных дней.\n * @default (_day, isWeekend) => isWeekend.\n * @param {string} day - строка в формате `dd.mm.yyyy`.\n * @param {boolean} isWeekend - флаг выходного (суббота или воскресенье).\n * @returns {boolean} `true` для выходного или `false` для рабочего дня. */\n isHoliday?: (day: string, isWeekend: boolean) => boolean;\n\n /** Задает начальный месяц. */\n initialMonth?: Range<1, 13>;\n\n /** Задает начальный год. */\n initialYear?: number;\n\n /** Задает метод отрисовки дат в календаре.\n * @default (props: CalendarDayProps) => <CalendarDay {...props} />\n * @param {CalendarDayProps} props - параметры дня.\n * @returns {ReactElement} элемент, который отрисовывает контент числа месяца. */\n renderDay?: (props: CalendarDayProps) => React.ReactElement<unknown>;\n\n /** Задает функцию, которая вызывается при каждом изменении месяца.\n * @param {CalendarMonthChangeInfo} changeInfo - информация о изменении отображаемого месяца, где\n * `month: number` - номер текущего отображаемого месяца от 1 до 12,\n * `year: number` - отображаемый год. */\n onMonthChange?: (changeInfo: CalendarMonthChangeInfo) => void;\n}\n\nexport interface CalendarState {\n scrollPosition: number;\n months: MonthViewModel[];\n scrollDirection: number;\n scrollTarget: number;\n}\n\nexport interface CalendarMonthChangeInfo {\n month: number;\n year: number;\n}\n\nexport const CalendarDataTids = {\n root: 'Calendar__root',\n month: 'MonthView__month',\n dayCell: 'DayCellView__root',\n headerMonth: 'MonthView__headerMonth',\n headerYear: 'MonthView__headerYear',\n} as const;\n\ntype DefaultProps = Required<Pick<CalendarProps, 'minDate' | 'maxDate' | 'isHoliday'>>;\n\n/**\n * Компонент календаря `Calendar` из DatePicker'а помогает выбирать дату с помощью мыши.\n */\n@withRenderEnvironment\n@rootNode\nexport class Calendar extends React.Component<CalendarProps, CalendarState> {\n public static __KONTUR_REACT_UI__ = 'Calendar';\n public static displayName = 'Calendar';\n\n public static Day = CalendarDay;\n\n private static formatDate(date: number, month: number, year: number) {\n return new InternalDate().setComponents({ date, month, year }).toString({ withPad: true });\n }\n\n public static defaultProps: DefaultProps = {\n minDate: Calendar.formatDate(MIN_DATE, MIN_MONTH, MIN_YEAR),\n maxDate: Calendar.formatDate(MAX_DATE, MAX_MONTH, MAX_YEAR),\n isHoliday: (_day: string, isWeekend: boolean) => isWeekend,\n };\n\n private getProps = createPropsGetter(Calendar.defaultProps);\n\n private globalObject!: GlobalObject;\n private emotion!: Emotion;\n private cx!: Emotion['cx'];\n private styles!: ReturnType<typeof getStyles>;\n private theme!: Theme;\n private wheelEndTimeout: SafeTimer;\n private root: Nullable<HTMLElement>;\n private animation!: ReturnType<typeof animation>;\n private touchStartY: Nullable<number> = null;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n\n constructor(props: CalendarProps) {\n super(props);\n\n const { minDate, maxDate, value } = this.getProps();\n\n const minDateShape = this.getDateInNativeFormat(minDate);\n const maxDateShape = this.getDateInNativeFormat(maxDate);\n const dateShape = this.getDateInNativeFormat(value);\n\n const today = CalendarUtils.getTodayDate();\n const initialDate = CalendarUtils.getInitialDate({\n today,\n date: dateShape,\n minDate: minDateShape,\n maxDate: maxDateShape,\n });\n\n const initialMonth = this.props.initialMonth\n ? CalendarUtils.getMonthInNativeFormat(this.props.initialMonth)\n : initialDate.month;\n const initialYear = this.props.initialYear ?? initialDate.year;\n\n this.state = {\n scrollPosition: 0,\n months: CalendarUtils.getMonths(initialMonth, initialYear),\n scrollDirection: 1,\n scrollTarget: 0,\n };\n }\n\n public componentDidUpdate(prevProps: Readonly<CalendarProps>, prevState: Readonly<CalendarState>): void {\n const { value, onMonthChange } = this.props;\n if (value && !shallowEqual(value, prevProps.value)) {\n const date = new InternalDate().parseValue(value).getComponentsLikeNumber();\n this.scrollToMonth(date.month, date.year);\n }\n\n if (onMonthChange) {\n const visibleMonthsModels = this.getVisibleMonths(this.state).map(this.getViewModel);\n const prevFirstVisibleMonthModels = this.getVisibleMonths(prevState).map(this.getViewModel);\n\n if (visibleMonthsModels.length > 0 && prevFirstVisibleMonthModels.length > 0) {\n const currentMonth = visibleMonthsModels[0].month;\n const prevCurrentMonth = prevFirstVisibleMonthModels[0].month;\n\n if (currentMonth !== prevCurrentMonth) {\n this.handleMonthChange(visibleMonthsModels);\n }\n }\n }\n }\n\n public componentWillUnmount() {\n if (this.animation.inProgress()) {\n this.animation.cancel();\n }\n }\n\n public render(): React.JSX.Element {\n this.styles = getStyles(this.emotion);\n this.animation = animation(this.globalObject);\n\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n /**\n * Прокручивает календарь до переданной даты\n * @public\n */\n public scrollToMonth = async (month: number, year: number): Promise<void> => {\n const monthNative = CalendarUtils.getMonthInNativeFormat(month);\n\n if (this.animation.inProgress()) {\n this.animation.finish();\n // FIXME: Dirty hack to await batched updates\n await new Promise((r) => setTimeout(r, 0));\n }\n\n const minDate = this.getDateInNativeFormat(this.getProps().minDate);\n const maxDate = this.getDateInNativeFormat(this.getProps().maxDate);\n\n if (minDate && isGreater(minDate, create(32, monthNative, year))) {\n const minMonth = CalendarUtils.getMonthInHumanFormat(minDate.month);\n this.scrollToMonth(minMonth, minDate.year);\n return;\n }\n\n if (maxDate && isLess(maxDate, create(0, monthNative, year))) {\n const maxMonth = CalendarUtils.getMonthInHumanFormat(maxDate.month);\n this.scrollToMonth(maxMonth, maxDate.year);\n return;\n }\n\n const currentMonth = this.state.months[1];\n const diffInMonths = currentMonth.month + currentMonth.year * 12 - monthNative - year * 12;\n\n if (diffInMonths === 0) {\n this.scrollTo(0);\n return;\n }\n\n const maxMonthsToAdd = themeConfig(this.theme).MAX_MONTHS_TO_APPEND_ON_SCROLL;\n\n const onEnd = () => {\n this.setState({\n months: CalendarUtils.getMonths(monthNative, year),\n scrollPosition: 0,\n });\n };\n\n const isYearChanges = (state: CalendarState) => {\n return (\n state.months[1].year !== year &&\n // if diff in months is 2 or less,\n // either year is not changing either months already\n // have right isFirstInYear/isLastInYear flags\n Math.abs(diffInMonths) > 2\n );\n };\n\n // If scrolling upwards, prepend maximum maxMonthsToAdd months\n // and scroll to the first month\n if (diffInMonths > 0) {\n const monthsToPrependCount = Math.min(Math.abs(diffInMonths) - 1, maxMonthsToAdd);\n const monthsToPrepend = Array.from({ length: monthsToPrependCount }, (_, index) => {\n return MonthViewModel.create(monthNative + index, year);\n });\n this.setState(\n (state) => {\n const yearChanges = isYearChanges(state);\n if (yearChanges) {\n // Mutating here can lead to some unexpected bugs\n // but we couldn't find any yet\n state.months[0].isFirstInYear = true;\n if (monthsToPrepend.length) {\n // Mutating item here is safe as it was just created\n monthsToPrepend[monthsToPrepend.length - 1].isLastInYear = true;\n }\n }\n return {\n months: monthsToPrepend.concat(state.months),\n scrollPosition: -CalendarUtils.getMonthsHeight(monthsToPrepend, this.theme),\n };\n },\n () => {\n const targetPosition = this.state.months[0].getHeight(this.theme);\n this.scrollTo(targetPosition, onEnd);\n },\n );\n }\n\n // If scrolling downwards, append maximum maxMonthsToAdd months\n // and scroll to the last but one month\n if (diffInMonths < 0) {\n const monthsToAppendCount = Math.min(Math.abs(diffInMonths), maxMonthsToAdd);\n const monthsToAppend = Array.from({ length: monthsToAppendCount }, (_, index) => {\n return MonthViewModel.create(monthNative + index - monthsToAppendCount + 2, year);\n });\n this.setState(\n (state) => {\n if (isYearChanges(state)) {\n // Mutating here can lead to some unexpected bugs\n // but we couldn't find any yet\n state.months[state.months.length - 1].isLastInYear = true;\n // Mutating item here is safe as it was just created\n if (monthsToAppend[0]) {\n monthsToAppend[0].isFirstInYear = true;\n }\n }\n return { months: state.months.concat(monthsToAppend) };\n },\n () => {\n const targetPosition = -1 * CalendarUtils.getMonthsHeight(this.state.months.slice(1, -2), this.theme);\n this.scrollTo(targetPosition, onEnd);\n },\n );\n }\n };\n\n private handleMonthChange = (visibleMonths: MonthViewModel[]): void => {\n const currentMonth = visibleMonths[0];\n const changeInfo = {\n month: CalendarUtils.getMonthInHumanFormat(currentMonth.month),\n year: currentMonth.year,\n };\n\n this.props.onMonthChange?.(changeInfo);\n };\n\n private getViewModel = (item: [number, MonthViewModel]): MonthViewModel => item[1];\n\n private renderMain = () => {\n const monthsForRender = this.getVisibleMonths(this.state);\n const wrapperStyle = { height: themeConfig(this.theme).WRAPPER_HEIGHT };\n\n const props = this.getProps();\n\n const context: CalendarContextProps = {\n value: this.getDateInNativeFormat(props.value),\n minDate: this.getDateInNativeFormat(props.minDate),\n maxDate: this.getDateInNativeFormat(props.maxDate),\n isHoliday: props.isHoliday,\n renderDay: props.renderDay,\n today: CalendarUtils.getTodayDate(),\n onDateClick: this.handleDateClick,\n };\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...props}>\n <div ref={this.refRoot} data-tid={CalendarDataTids.root} className={this.cx(this.styles.root(this.theme))}>\n <div style={wrapperStyle} className={this.styles.wrapper()}>\n <CalendarContext.Provider value={context}>\n {monthsForRender.map(this.renderMonth, this)}\n </CalendarContext.Provider>\n </div>\n <div className={this.styles.separator(this.theme)} />\n </div>\n </CommonWrapper>\n );\n };\n\n private refRoot = (element: HTMLElement | null) => {\n if (!this.root && element) {\n if (isMobile) {\n element.addEventListener('touchstart', this.handleTouchStart);\n element.addEventListener('touchmove', this.throttledHandleTouchMove);\n } else {\n element.addEventListener('wheel', this.handleWheel, { passive: false });\n }\n }\n if (this.root && !element) {\n if (isMobile) {\n this.root.removeEventListener('touchstart', this.handleTouchStart);\n this.root.removeEventListener('touchmove', this.throttledHandleTouchMove);\n } else {\n this.root.removeEventListener('wheel', this.handleWheel);\n }\n }\n this.root = element;\n };\n\n private renderMonth([top, month]: [number, MonthViewModel]) {\n return (\n <Month\n key={month.month + '-' + month.year}\n top={top}\n month={month}\n onMonthYearChange={this.handleMonthYearChange}\n />\n );\n }\n\n private handleDateClick = (dateShape: CalendarDateShape) => {\n const value = InternalDateTransformer.dateToHumanString(dateShape);\n\n this.props.onValueChange?.(value);\n };\n\n private getDateInNativeFormat(date: Nullable<string>) {\n return new InternalDate().parseValue(date).toNativeFormat();\n }\n\n private getMonthPositions(months: MonthViewModel[], scrollPosition: number) {\n const positions = [scrollPosition - months[0].getHeight(this.theme)];\n for (let i = 1; i < months.length; i++) {\n const position = positions[i - 1] + months[i - 1].getHeight(this.theme);\n positions.push(position);\n }\n return positions;\n }\n\n private getVisibleMonths(state: Readonly<CalendarState>): Array<[number, MonthViewModel]> {\n const { months, scrollPosition } = state;\n const positions = this.getMonthPositions(months, scrollPosition);\n\n return months\n .map<[number, MonthViewModel]>((x, i) => [positions[i], x])\n .filter(([top, month]) => CalendarUtils.isMonthVisible(top, month, this.theme));\n }\n\n private handleMonthYearChange = (monthNative: number, year: number) => {\n const month = CalendarUtils.getMonthInHumanFormat(monthNative);\n this.scrollToMonth(month, year);\n };\n\n private executeAnimations = (pixelY: number) => {\n this.setState(({ months, scrollPosition }) => {\n const targetPosition = CalendarUtils.calculateScrollPosition(\n months,\n scrollPosition,\n pixelY,\n this.theme,\n ).scrollPosition;\n return { scrollTarget: targetPosition };\n }, this.handleWheelEnd);\n\n this.animation.animate(pixelY, (deltaY) => {\n // FIXME: Typescript not resolving setState cb type\n this.setState(CalendarUtils.applyDelta(deltaY, this.theme) as any);\n });\n\n CalendarScrollEvents.emit();\n };\n\n private handleTouchStart = (event: Event) => {\n if (!isInstanceOf(event, this.globalObject.TouchEvent)) {\n return;\n }\n\n const clientY = event.targetTouches[0].clientY;\n this.touchStartY = clientY;\n };\n\n private handleTouchMove = (event: Event) => {\n if (!isInstanceOf(event, this.globalObject.TouchEvent)) {\n return;\n }\n\n const { clientY } = event.changedTouches[0];\n\n const deltaY = (this.touchStartY || 0) - clientY;\n this.touchStartY = clientY;\n\n this.executeAnimations(deltaY);\n };\n\n private throttledHandleTouchMove = throttle(this.handleTouchMove, 10);\n\n private handleWheel = (event: Event) => {\n if (!isInstanceOf(event, this.globalObject.WheelEvent)) {\n return;\n }\n event.preventDefault();\n const { pixelY } = normalizeWheel(event);\n\n this.executeAnimations(pixelY);\n };\n\n private handleWheelEnd = () => {\n if (this.wheelEndTimeout) {\n clearTimeout(this.wheelEndTimeout);\n }\n this.wheelEndTimeout = setTimeout(this.scrollToNearestWeek, 300);\n };\n private scrollToNearestWeek = () => {\n const { scrollTarget, scrollDirection } = this.state;\n\n const thresholdHeight = themeConfig(this.theme).MONTH_TITLE_OFFSET_HEIGHT + themeConfig(this.theme).DAY_HEIGHT;\n\n if (scrollTarget < thresholdHeight) {\n let targetPosition = 0;\n if (scrollDirection < 0) {\n targetPosition = thresholdHeight;\n }\n\n this.setState({ scrollTarget: targetPosition }, () => {\n const amount = scrollTarget - targetPosition;\n this.animation.animate(amount, (deltaY) => {\n // FIXME: Typescript not resolving setState cb type\n this.setState(CalendarUtils.applyDelta(deltaY, this.theme) as any);\n });\n });\n }\n };\n\n private scrollTo = (pos: number, onEnd?: () => void) => {\n const scrollAmmount = pos - this.state.scrollPosition;\n return this.scrollAmount(scrollAmmount, onEnd);\n };\n\n private scrollAmount = (scrollAmmount: number, onEnd?: () => void) => {\n return this.animation.animate(\n scrollAmmount,\n (deltaY) => {\n this.setState(({ scrollPosition }) => ({\n scrollPosition: scrollPosition + deltaY,\n }));\n },\n onEnd,\n );\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"Calendar.js","sourceRoot":"","sources":["../../../components/Calendar/Calendar.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\nimport normalizeWheel from 'normalize-wheel';\nimport throttle from 'lodash.throttle';\nimport shallowEqual from 'shallowequal';\nimport type { Emotion } from '@emotion/css/create-instance';\n\nimport type { GlobalObject, SafeTimer } from '../../lib/globalObject.js';\nimport { isInstanceOf } from '../../lib/isInstanceOf.js';\nimport { InternalDate } from '../../lib/date/InternalDate.js';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode/index.js';\nimport { rootNode } from '../../lib/rootNode/index.js';\nimport type { CommonProps } from '../../internal/CommonWrapper/index.js';\nimport { CommonWrapper } from '../../internal/CommonWrapper/index.js';\nimport { MAX_DATE, MAX_MONTH, MAX_YEAR, MIN_DATE, MIN_MONTH, MIN_YEAR } from '../../lib/date/constants.js';\nimport type { Nullable, Range } from '../../typings/utility-types.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport { animation } from '../../lib/animation/index.js';\nimport { isMobile } from '../../lib/client.js';\nimport { createPropsGetter } from '../../lib/createPropsGetter.js';\nimport { InternalDateTransformer } from '../../lib/date/InternalDateTransformer.js';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';\n\nimport { themeConfig } from './config.js';\nimport { MonthViewModel } from './MonthViewModel.js';\nimport * as CalendarScrollEvents from './CalendarScrollEvents.js';\nimport { Month } from './Month.js';\nimport { getStyles } from './Calendar.styles.js';\nimport type { CalendarDateShape } from './CalendarDateShape.js';\nimport { create, isGreater, isLess } from './CalendarDateShape.js';\nimport * as CalendarUtils from './CalendarUtils.js';\nimport type { CalendarContextProps } from './CalendarContext.js';\nimport { CalendarContext } from './CalendarContext.js';\nimport type { CalendarDayProps } from './CalendarDay.js';\nimport { CalendarDay } from './CalendarDay.js';\n\nexport interface CalendarProps extends CommonProps {\n /** Задает функцию, которая вызывается при изменении value.\n * @param {string} date - строка в формате `dd.mm.yyyy`. */\n onValueChange?: (date: string) => void;\n\n /** Задает текущую дату в формате `dd.mm.yyyy`. */\n value: Nullable<string>;\n\n /** Задает максимальную возможную дату в формате `dd.mm.yyyy`. */\n maxDate?: string;\n\n /** Задает минимальную возможную дату в формате `dd.mm.yyyy`. */\n minDate?: string;\n\n /** Задает начальную дату периода в формате `dd.mm.yyyy`. */\n periodStartDate?: string;\n\n /** Задает конечную дату периода в формате `dd.mm.yyyy`. */\n periodEndDate?: string;\n\n /** Задает функцию для определения праздничных дней.\n * @default (_day, isWeekend) => isWeekend.\n * @param {string} day - строка в формате `dd.mm.yyyy`.\n * @param {boolean} isWeekend - флаг выходного (суббота или воскресенье).\n * @returns {boolean} `true` для выходного или `false` для рабочего дня. */\n isHoliday?: (day: string, isWeekend: boolean) => boolean;\n\n /** Задает начальный месяц. */\n initialMonth?: Range<1, 13>;\n\n /** Задает начальный год. */\n initialYear?: number;\n\n /** Задает метод отрисовки дат в календаре.\n * @default (props: CalendarDayProps) => <CalendarDay {...props} />\n * @param {CalendarDayProps} props - параметры дня.\n * @returns {ReactElement} элемент, который отрисовывает контент числа месяца. */\n renderDay?: (props: CalendarDayProps) => React.ReactElement<unknown>;\n\n /** Задает функцию, которая вызывается при каждом изменении месяца.\n * @param {CalendarMonthChangeInfo} changeInfo - информация о изменении отображаемого месяца, где\n * `month: number` - номер текущего отображаемого месяца от 1 до 12,\n * `year: number` - отображаемый год. */\n onMonthChange?: (changeInfo: CalendarMonthChangeInfo) => void;\n}\n\nexport interface CalendarState {\n scrollPosition: number;\n months: MonthViewModel[];\n scrollDirection: number;\n scrollTarget: number;\n}\n\nexport interface CalendarMonthChangeInfo {\n month: number;\n year: number;\n}\n\nexport const CalendarDataTids = {\n root: 'Calendar__root',\n month: 'MonthView__month',\n dayCell: 'DayCellView__root',\n headerMonth: 'MonthView__headerMonth',\n headerYear: 'MonthView__headerYear',\n} as const;\n\ntype DefaultProps = Required<Pick<CalendarProps, 'minDate' | 'maxDate' | 'isHoliday'>>;\n\n/**\n * Компонент календаря `Calendar` из DatePicker'а помогает выбирать дату с помощью мыши.\n */\n@withRenderEnvironment\n@rootNode\nexport class Calendar extends React.Component<CalendarProps, CalendarState> {\n public static __KONTUR_REACT_UI__ = 'Calendar';\n public static displayName = 'Calendar';\n\n public static Day = CalendarDay;\n\n private static formatDate(date: number, month: number, year: number) {\n return new InternalDate().setComponents({ date, month, year }).toString({ withPad: true });\n }\n\n public static defaultProps: DefaultProps = {\n minDate: Calendar.formatDate(MIN_DATE, MIN_MONTH, MIN_YEAR),\n maxDate: Calendar.formatDate(MAX_DATE, MAX_MONTH, MAX_YEAR),\n isHoliday: (_day: string, isWeekend: boolean) => isWeekend,\n };\n\n private getProps = createPropsGetter(Calendar.defaultProps);\n\n private globalObject!: GlobalObject;\n private emotion!: Emotion;\n private cx!: Emotion['cx'];\n private styles!: ReturnType<typeof getStyles>;\n private theme!: Theme;\n private wheelEndTimeout: SafeTimer;\n private root: Nullable<HTMLElement>;\n private animation!: ReturnType<typeof animation>;\n private touchStartY: Nullable<number> = null;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n\n constructor(props: CalendarProps) {\n super(props);\n\n const { minDate, maxDate, value } = this.getProps();\n\n const minDateShape = this.getDateInNativeFormat(minDate);\n const maxDateShape = this.getDateInNativeFormat(maxDate);\n const dateShape = this.getDateInNativeFormat(value);\n\n const today = CalendarUtils.getTodayDate();\n const initialDate = CalendarUtils.getInitialDate({\n today,\n date: dateShape,\n minDate: minDateShape,\n maxDate: maxDateShape,\n });\n\n const initialMonth = this.props.initialMonth\n ? CalendarUtils.getMonthInNativeFormat(this.props.initialMonth)\n : initialDate.month;\n const initialYear = this.props.initialYear ?? initialDate.year;\n\n this.state = {\n scrollPosition: 0,\n months: CalendarUtils.getMonths(initialMonth, initialYear),\n scrollDirection: 1,\n scrollTarget: 0,\n };\n }\n\n public componentDidUpdate(prevProps: Readonly<CalendarProps>, prevState: Readonly<CalendarState>): void {\n const { value, onMonthChange } = this.props;\n if (value && !shallowEqual(value, prevProps.value)) {\n const date = new InternalDate().parseValue(value).getComponentsLikeNumber();\n this.scrollToMonth(date.month, date.year);\n }\n\n if (onMonthChange) {\n const visibleMonthsModels = this.getVisibleMonths(this.state).map(this.getViewModel);\n const prevFirstVisibleMonthModels = this.getVisibleMonths(prevState).map(this.getViewModel);\n\n if (visibleMonthsModels.length > 0 && prevFirstVisibleMonthModels.length > 0) {\n const currentMonth = visibleMonthsModels[0].month;\n const prevCurrentMonth = prevFirstVisibleMonthModels[0].month;\n\n if (currentMonth !== prevCurrentMonth) {\n this.handleMonthChange(visibleMonthsModels);\n }\n }\n }\n }\n\n public componentWillUnmount() {\n if (this.animation.inProgress()) {\n this.animation.cancel();\n }\n }\n\n public render(): React.JSX.Element {\n this.styles = getStyles(this.emotion);\n this.animation = animation(this.globalObject);\n\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n /**\n * Прокручивает календарь до переданной даты\n * @public\n */\n public scrollToMonth = async (month: number, year: number): Promise<void> => {\n const monthNative = CalendarUtils.getMonthInNativeFormat(month);\n\n if (this.animation.inProgress()) {\n this.animation.finish();\n // FIXME: Dirty hack to await batched updates\n await new Promise((r) => setTimeout(r, 0));\n }\n\n const minDate = this.getDateInNativeFormat(this.getProps().minDate);\n const maxDate = this.getDateInNativeFormat(this.getProps().maxDate);\n\n if (minDate && isGreater(minDate, create(32, monthNative, year))) {\n const minMonth = CalendarUtils.getMonthInHumanFormat(minDate.month);\n this.scrollToMonth(minMonth, minDate.year);\n return;\n }\n\n if (maxDate && isLess(maxDate, create(0, monthNative, year))) {\n const maxMonth = CalendarUtils.getMonthInHumanFormat(maxDate.month);\n this.scrollToMonth(maxMonth, maxDate.year);\n return;\n }\n\n const currentMonth = this.state.months[1];\n const diffInMonths = currentMonth.month + currentMonth.year * 12 - monthNative - year * 12;\n\n if (diffInMonths === 0) {\n this.scrollTo(0);\n return;\n }\n\n const maxMonthsToAdd = themeConfig(this.theme).MAX_MONTHS_TO_APPEND_ON_SCROLL;\n\n const onEnd = () => {\n this.setState({\n months: CalendarUtils.getMonths(monthNative, year),\n scrollPosition: 0,\n });\n };\n\n // If scrolling upwards, prepend maximum maxMonthsToAdd months\n // and scroll to the first month\n if (diffInMonths > 0) {\n const monthsToPrependCount = Math.min(Math.abs(diffInMonths) - 1, maxMonthsToAdd);\n const monthsToPrepend = Array.from({ length: monthsToPrependCount }, (_, index) => {\n return MonthViewModel.create(monthNative + index, year);\n });\n this.setState(\n (state) => {\n return {\n months: monthsToPrepend.concat(state.months),\n scrollPosition: -CalendarUtils.getMonthsHeight(monthsToPrepend, this.theme),\n };\n },\n () => {\n const targetPosition = this.state.months[0].getHeight(this.theme);\n this.scrollTo(targetPosition, onEnd);\n },\n );\n }\n\n // If scrolling downwards, append maximum maxMonthsToAdd months\n // and scroll to the last but one month\n if (diffInMonths < 0) {\n const monthsToAppendCount = Math.min(Math.abs(diffInMonths), maxMonthsToAdd);\n const monthsToAppend = Array.from({ length: monthsToAppendCount }, (_, index) => {\n return MonthViewModel.create(monthNative + index - monthsToAppendCount + 2, year);\n });\n this.setState(\n (state) => {\n return { months: state.months.concat(monthsToAppend) };\n },\n () => {\n const targetPosition = -1 * CalendarUtils.getMonthsHeight(this.state.months.slice(1, -2), this.theme);\n this.scrollTo(targetPosition, onEnd);\n },\n );\n }\n };\n\n private handleMonthChange = (visibleMonths: MonthViewModel[]): void => {\n const currentMonth = visibleMonths[0];\n const changeInfo = {\n month: CalendarUtils.getMonthInHumanFormat(currentMonth.month),\n year: currentMonth.year,\n };\n\n this.props.onMonthChange?.(changeInfo);\n };\n\n private getViewModel = (item: [number, MonthViewModel]): MonthViewModel => item[1];\n\n private renderMain = () => {\n const monthsForRender = this.getVisibleMonths(this.state);\n const wrapperStyle = { height: themeConfig(this.theme).WRAPPER_HEIGHT };\n\n const props = this.getProps();\n\n const context: CalendarContextProps = {\n value: this.getDateInNativeFormat(props.value),\n minDate: this.getDateInNativeFormat(props.minDate),\n maxDate: this.getDateInNativeFormat(props.maxDate),\n isHoliday: props.isHoliday,\n renderDay: props.renderDay,\n today: CalendarUtils.getTodayDate(),\n onDateClick: this.handleDateClick,\n };\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...props}>\n <div ref={this.refRoot} data-tid={CalendarDataTids.root} className={this.cx(this.styles.root(this.theme))}>\n <div style={wrapperStyle} className={this.styles.wrapper()}>\n <CalendarContext.Provider value={context}>\n {monthsForRender.map(this.renderMonth, this)}\n </CalendarContext.Provider>\n </div>\n <div className={this.styles.separator(this.theme)} />\n </div>\n </CommonWrapper>\n );\n };\n\n private refRoot = (element: HTMLElement | null) => {\n if (!this.root && element) {\n if (isMobile) {\n element.addEventListener('touchstart', this.handleTouchStart);\n element.addEventListener('touchmove', this.throttledHandleTouchMove);\n } else {\n element.addEventListener('wheel', this.handleWheel, { passive: false });\n }\n }\n if (this.root && !element) {\n if (isMobile) {\n this.root.removeEventListener('touchstart', this.handleTouchStart);\n this.root.removeEventListener('touchmove', this.throttledHandleTouchMove);\n } else {\n this.root.removeEventListener('wheel', this.handleWheel);\n }\n }\n this.root = element;\n };\n\n private renderMonth([top, month]: [number, MonthViewModel]) {\n return (\n <Month\n key={month.month + '-' + month.year}\n top={top}\n month={month}\n onMonthYearChange={this.handleMonthYearChange}\n />\n );\n }\n\n private handleDateClick = (dateShape: CalendarDateShape) => {\n const value = InternalDateTransformer.dateToHumanString(dateShape);\n\n this.props.onValueChange?.(value);\n };\n\n private getDateInNativeFormat(date: Nullable<string>) {\n return new InternalDate().parseValue(date).toNativeFormat();\n }\n\n private getMonthPositions(months: MonthViewModel[], scrollPosition: number) {\n const positions = [scrollPosition - months[0].getHeight(this.theme)];\n for (let i = 1; i < months.length; i++) {\n const position = positions[i - 1] + months[i - 1].getHeight(this.theme);\n positions.push(position);\n }\n return positions;\n }\n\n private getVisibleMonths(state: Readonly<CalendarState>): Array<[number, MonthViewModel]> {\n const { months, scrollPosition } = state;\n const positions = this.getMonthPositions(months, scrollPosition);\n\n return months\n .map<[number, MonthViewModel]>((x, i) => [positions[i], x])\n .filter(([top, month]) => CalendarUtils.isMonthVisible(top, month, this.theme));\n }\n\n private handleMonthYearChange = (monthNative: number, year: number) => {\n const month = CalendarUtils.getMonthInHumanFormat(monthNative);\n this.scrollToMonth(month, year);\n };\n\n private executeAnimations = (pixelY: number) => {\n this.setState(({ months, scrollPosition }) => {\n const targetPosition = CalendarUtils.calculateScrollPosition(\n months,\n scrollPosition,\n pixelY,\n this.theme,\n ).scrollPosition;\n return { scrollTarget: targetPosition };\n }, this.handleWheelEnd);\n\n this.animation.animate(pixelY, (deltaY) => {\n // FIXME: Typescript not resolving setState cb type\n this.setState(CalendarUtils.applyDelta(deltaY, this.theme) as any);\n });\n\n CalendarScrollEvents.emit();\n };\n\n private handleTouchStart = (event: Event) => {\n if (!isInstanceOf(event, this.globalObject.TouchEvent)) {\n return;\n }\n\n const clientY = event.targetTouches[0].clientY;\n this.touchStartY = clientY;\n };\n\n private handleTouchMove = (event: Event) => {\n if (!isInstanceOf(event, this.globalObject.TouchEvent)) {\n return;\n }\n\n const { clientY } = event.changedTouches[0];\n\n const deltaY = (this.touchStartY || 0) - clientY;\n this.touchStartY = clientY;\n\n this.executeAnimations(deltaY);\n };\n\n private throttledHandleTouchMove = throttle(this.handleTouchMove, 10);\n\n private handleWheel = (event: Event) => {\n if (!isInstanceOf(event, this.globalObject.WheelEvent)) {\n return;\n }\n event.preventDefault();\n const { pixelY } = normalizeWheel(event);\n\n this.executeAnimations(pixelY);\n };\n\n private handleWheelEnd = () => {\n if (this.wheelEndTimeout) {\n clearTimeout(this.wheelEndTimeout);\n }\n this.wheelEndTimeout = setTimeout(this.scrollToNearestWeek, 300);\n };\n private scrollToNearestWeek = () => {\n const { scrollTarget, scrollDirection } = this.state;\n\n const thresholdHeight = themeConfig(this.theme).MONTH_TITLE_OFFSET_HEIGHT + themeConfig(this.theme).DAY_HEIGHT;\n\n if (scrollTarget < thresholdHeight) {\n let targetPosition = 0;\n if (scrollDirection < 0) {\n targetPosition = thresholdHeight;\n }\n\n this.setState({ scrollTarget: targetPosition }, () => {\n const amount = scrollTarget - targetPosition;\n this.animation.animate(amount, (deltaY) => {\n // FIXME: Typescript not resolving setState cb type\n this.setState(CalendarUtils.applyDelta(deltaY, this.theme) as any);\n });\n });\n }\n };\n\n private scrollTo = (pos: number, onEnd?: () => void) => {\n const scrollAmmount = pos - this.state.scrollPosition;\n return this.scrollAmount(scrollAmmount, onEnd);\n };\n\n private scrollAmount = (scrollAmmount: number, onEnd?: () => void) => {\n return this.animation.animate(\n scrollAmmount,\n (deltaY) => {\n this.setState(({ scrollPosition }) => ({\n scrollPosition: scrollPosition + deltaY,\n }));\n },\n onEnd,\n );\n };\n}\n"]}
|
|
@@ -54,8 +54,8 @@ export var CalendarDay = memo(forwardRefAndName('CalendarDay', function Calendar
|
|
|
54
54
|
var caption = children !== null && children !== void 0 ? children : day;
|
|
55
55
|
return (React.createElement("button", __assign({ ref: ref, "data-tid": CalendarDataTids.dayCell, "aria-label": ariaLabel, tabIndex: -1, disabled: isDisabled, onClick: handleClick, className: cx((_b = {},
|
|
56
56
|
_b[styles.day(theme)] = true,
|
|
57
|
-
_b[styles.selected(theme)] = isSelected,
|
|
58
57
|
_b[styles.weekend(theme)] = isWeekend,
|
|
58
|
+
_b[styles.selected(theme)] = isSelected,
|
|
59
59
|
_b), className) }, getVisualStateDataAttributes({ selected: isSelected }), rest),
|
|
60
60
|
React.createElement("span", { className: cx((_c = {}, _c[styles.todayCaption(theme)] = isToday, _c)) }, caption)));
|
|
61
61
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CalendarDay.js","sourceRoot":"","sources":["../../../components/Calendar/CalendarDay.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AACA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAE7D,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,4BAA4B,EAAE,MAAM,oEAAoE,CAAC;AAClH,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAEnE,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAwBjD;;;;GAIG;AACH,MAAM,CAAC,IAAM,WAAW,GAAG,IAAI,CAC7B,iBAAiB,CACf,aAAa,EACb,SAAS,WAAW,CAClB,EAWsC,EACtC,GAAiC;;IAX/B,IAAA,OAAO,aAAA,EACP,UAAU,gBAAA,EACV,UAAU,gBAAA,EACV,SAAS,eAAA,EACT,IAAI,UAAA,EACJ,UAAU,gBAAA,EACV,OAAO,aAAA,EACP,QAAQ,cAAA,EACR,SAAS,eAAA,EACN,IAAI,cAVT,8GAWC,CADQ;IAIT,IAAM,KAAK,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;IAC/B,IAAA,EAAE,GAAK,UAAU,EAAE,GAAjB,CAAkB;IAC5B,IAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;IAE5B,IAAA,QAAQ,GAAK,UAAU,CAAC,aAAa,CAAC,SAA9B,CAA+B;IAC/C,IAAM,YAAY,GAAG,IAAI,YAAY,CAAC,EAAE,QAAQ,UAAA,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAEjE,IAAM,MAAM,GAAG,mBAAmB,CAAC,UAAU,EAAE,sBAAsB,CAAC,CAAC;IACvE,IAAM,SAAS,GAAG,UAAG,MAAM,CAAC,0BAA0B,eAAK,YAAY,CAAC,YAAY,EAAE,CAAE,CAAC;IAEzF,IAAM,WAAW,GAAG,WAAW,CAC7B,UAAC,CAAC;QACA,UAAU,EAAE,CAAC;QACb,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAG,CAAC,CAAC,CAAC;IACf,CAAC,EACD,CAAC,UAAU,EAAE,OAAO,CAAC,CACtB,CAAC;IAEM,IAAM,GAAG,GAAK,YAAY,CAAC,uBAAuB,EAAE,KAA3C,CAA4C;IAC7D,IAAM,OAAO,GAAG,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,GAAG,CAAC;IAEhC,OAAO,CACL,yCACE,GAAG,EAAE,GAAG,cACE,gBAAgB,CAAC,OAAO,gBACtB,SAAS,EACrB,QAAQ,EAAE,CAAC,CAAC,EACZ,QAAQ,EAAE,UAAU,EACpB,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,EAAE;YAET,GAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAG,IAAI;YACzB,GAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"CalendarDay.js","sourceRoot":"","sources":["../../../components/Calendar/CalendarDay.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { PropsWithChildren } from 'react';\nimport React, { useContext, memo, useCallback } from 'react';\n\nimport { useEmotion, useStyles } from '../../lib/renderEnvironment/index.js';\nimport { useLocaleForControl } from '../../lib/locale/useLocaleForControl.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport { DatePickerLocaleHelper } from '../DatePicker/locale/index.js';\nimport { InternalDate } from '../../lib/date/InternalDate.js';\nimport { LocaleContext } from '../../lib/locale/index.js';\nimport { getVisualStateDataAttributes } from '../../internal/CommonWrapper/utils/getVisualStateDataAttributes.js';\nimport { forwardRefAndName } from '../../lib/forwardRefAndName.js';\n\nimport { getStyles } from './DayCellView.styles.js';\nimport { CalendarDataTids } from './Calendar.js';\n\nexport interface CalendarDayProps extends React.HTMLAttributes<HTMLButtonElement> {\n /** Устанавливает, является ли день текущим. */\n isToday?: boolean;\n\n /** Устанавливает, является ли день выбранным. */\n isSelected?: boolean;\n\n /** Устанавливает, является ли день недоступным. */\n isDisabled?: boolean;\n\n /** Устанавливает, является ли день выходным. */\n isWeekend?: boolean;\n\n /** Задает день. */\n date: string;\n\n /** Задает функцию, которая вызывается при клике на день. Необходима для внутренней работы Calendar. Не предназначена для переопределения. Вместо этого, следует использовать стандартный `onClick`.\n * @internal @ignore\n */\n onDayClick: () => void;\n}\n\n/**\n * Компонент дня `CalendarDay` из Calendar.\n *\n * @visibleName Calendar.Day\n */\nexport const CalendarDay = memo(\n forwardRefAndName(\n 'CalendarDay',\n function CalendarDay(\n {\n isToday,\n isSelected,\n isDisabled,\n isWeekend,\n date,\n onDayClick,\n onClick,\n children,\n className,\n ...rest\n }: PropsWithChildren<CalendarDayProps>,\n ref: React.Ref<HTMLButtonElement>,\n ) {\n const theme = useContext(ThemeContext);\n const { cx } = useEmotion();\n const styles = useStyles(getStyles);\n\n const { langCode } = useContext(LocaleContext);\n const internalDate = new InternalDate({ langCode, value: date });\n\n const locale = useLocaleForControl('Calendar', DatePickerLocaleHelper);\n const ariaLabel = `${locale.dayCellChooseDateAriaLabel}: ${internalDate.toA11YFormat()}`;\n\n const handleClick = useCallback<React.MouseEventHandler<HTMLButtonElement>>(\n (e) => {\n onDayClick();\n onClick?.(e);\n },\n [onDayClick, onClick],\n );\n\n const { date: day } = internalDate.getComponentsLikeNumber();\n const caption = children ?? day;\n\n return (\n <button\n ref={ref}\n data-tid={CalendarDataTids.dayCell}\n aria-label={ariaLabel}\n tabIndex={-1}\n disabled={isDisabled}\n onClick={handleClick}\n className={cx(\n {\n [styles.day(theme)]: true,\n [styles.weekend(theme)]: isWeekend,\n [styles.selected(theme)]: isSelected,\n },\n className,\n )}\n {...getVisualStateDataAttributes({ selected: isSelected })}\n {...rest}\n >\n <span className={cx({ [styles.todayCaption(theme)]: isToday })}>{caption}</span>\n </button>\n );\n },\n ),\n);\n"]}
|
|
@@ -50,6 +50,7 @@ import { CommonWrapper } from '../../internal/CommonWrapper/index.js';
|
|
|
50
50
|
import { rootNode } from '../../lib/rootNode/index.js';
|
|
51
51
|
import { createPropsGetter } from '../../lib/createPropsGetter.js';
|
|
52
52
|
import { isInstanceOf } from '../../lib/isInstanceOf.js';
|
|
53
|
+
import { scrollInputCaretIntoView } from '../../lib/scrollInputCaretIntoView.js';
|
|
53
54
|
import { FocusControlWrapper } from '../../internal/FocusControlWrapper/index.js';
|
|
54
55
|
import { MAX_SAFE_DIGITS } from './constants.js';
|
|
55
56
|
import { SelectionHelper } from './SelectionHelper.js';
|
|
@@ -176,24 +177,8 @@ var CurrencyInput = /** @class */ (function (_super) {
|
|
|
176
177
|
_this.scrollInput = function () {
|
|
177
178
|
var _a;
|
|
178
179
|
var node = (_a = _this.input) === null || _a === void 0 ? void 0 : _a.getNode();
|
|
179
|
-
if (
|
|
180
|
-
|
|
181
|
-
}
|
|
182
|
-
var PAD = 1;
|
|
183
|
-
var SHIFT = 3;
|
|
184
|
-
var selection = _this.state.selection;
|
|
185
|
-
var selected = selection.start !== selection.end;
|
|
186
|
-
var position = selected && selection.direction === 'forward' ? selection.end : selection.start;
|
|
187
|
-
var charsCount = _this.state.formatted.length;
|
|
188
|
-
var charWidth = node.scrollWidth / charsCount;
|
|
189
|
-
var frame = Math.ceil(node.clientWidth / charWidth);
|
|
190
|
-
var frameStart = Math.ceil(node.scrollLeft / charWidth);
|
|
191
|
-
var frameEnd = frameStart + frame;
|
|
192
|
-
if (position < frameStart + PAD) {
|
|
193
|
-
node.scrollLeft = (position - SHIFT) * charWidth;
|
|
194
|
-
}
|
|
195
|
-
if (position > frameEnd - PAD) {
|
|
196
|
-
node.scrollLeft = (position - frame + SHIFT) * charWidth;
|
|
180
|
+
if (node) {
|
|
181
|
+
scrollInputCaretIntoView(node, _this.state.selection);
|
|
197
182
|
}
|
|
198
183
|
};
|
|
199
184
|
_this.getSelection = function (input) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CurrencyInput.js","sourceRoot":"","sources":["../../../components/CurrencyInput/CurrencyInput.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { AriaAttributes } from 'react';\nimport React from 'react';\nimport warning from 'warning';\n\nimport { getOwnerGlobalObject } from '../../lib/globalObject.js';\nimport { isNonNullable, isNullable, isElement } from '../../lib/utils.js';\nimport type { InputProps } from '../Input/index.js';\nimport { Input } from '../Input/index.js';\nimport type { Nullable, Override } from '../../typings/utility-types.js';\nimport type { CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper/index.js';\nimport { CommonWrapper } from '../../internal/CommonWrapper/index.js';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode/index.js';\nimport { rootNode } from '../../lib/rootNode/index.js';\nimport { createPropsGetter } from '../../lib/createPropsGetter.js';\nimport { isInstanceOf } from '../../lib/isInstanceOf.js';\nimport { FocusControlWrapper } from '../../internal/FocusControlWrapper/index.js';\n\nimport { MAX_SAFE_DIGITS } from './constants.js';\nimport type { Selection, SelectionDirection } from './SelectionHelper.js';\nimport { SelectionHelper } from './SelectionHelper.js';\nimport { CurrencyHelper } from './CurrencyHelper.js';\nimport { CurrencyInputHelper } from './CurrencyInputHelper.js';\nimport { CURRENCY_INPUT_ACTIONS, extractAction } from './CurrencyInputKeyboardActions.js';\n\nexport interface CurrencyInputProps\n extends Pick<AriaAttributes, 'aria-label'>,\n CommonProps,\n Override<\n Omit<InputProps, 'showClearIcon' | 'maxLength'>,\n {\n /** Значение поля. */\n value?: Nullable<number>;\n\n /** Убирает лишние нули после запятой. */\n hideTrailingZeros?: boolean;\n\n /** Устанавливает минимальное количество отображаемых знаков после запятой. Если fractionDigits=15, то в целой части допускается только **0**. */\n fractionDigits?: Nullable<number>;\n\n /** Разрешает вводить в поле символ минуса для отрицательных значений. */\n signed?: boolean;\n\n /** Допустимое количество цифр целой части до запятой.\n * Если передан **0**, то в целой части допускается только **0**. */\n integerDigits?: Nullable<number>;\n\n /** Событие изменения `value`. */\n onValueChange: (value: Nullable<number>) => void;\n\n /** Событие отправки формы. */\n onSubmit?: () => void;\n }\n > {}\n\nexport interface CurrencyInputState {\n formatted: string;\n selection: Selection;\n focused: boolean;\n}\n\nexport const CurrencyInputDataTids = {\n root: 'CurrencyInput__root',\n} as const;\n\ntype DefaultProps = Required<\n Pick<CurrencyInputProps, 'align' | 'fractionDigits' | 'hideTrailingZeros' | 'value' | 'inputMode'>\n>;\n\n/** Поле для денежных сумм. */\n@rootNode\nexport class CurrencyInput extends React.PureComponent<CurrencyInputProps, CurrencyInputState> {\n public static __KONTUR_REACT_UI__ = 'CurrencyInput';\n public static displayName = 'CurrencyInput';\n\n public static defaultProps: DefaultProps = {\n align: 'right',\n fractionDigits: 2,\n hideTrailingZeros: false,\n value: null,\n inputMode: 'decimal',\n };\n\n private getProps = createPropsGetter(CurrencyInput.defaultProps);\n private validateProps(props: CurrencyInputProps): void {\n warning(\n isNumeric(props.value) || isNullable(props.value),\n '[CurrencyInput]: Prop `value` is not a valid number. Received value is `' + props.value + '`.',\n );\n warning(\n (props.integerDigits || 0) + (props.fractionDigits || 0) <= MAX_SAFE_DIGITS,\n `[CurrencyInput]: Sum of 'integerDigits' and 'fractionDigits' exceeds ${MAX_SAFE_DIGITS}.` +\n `\\nSee CurrencyInput documentation`,\n );\n }\n\n public state: CurrencyInputState = {\n ...this.getState(this.getProps().value, this.getProps().fractionDigits, this.getProps().hideTrailingZeros),\n focused: false,\n };\n\n private input: Nullable<Input>;\n private tempSelectionForOnChange: Selection = SelectionHelper.fromPosition(0);\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n\n public componentDidMount(): void {\n this.validateProps(this.getProps());\n }\n\n public componentDidUpdate(prevProps: CurrencyInputProps, prevState: CurrencyInputState) {\n const { value, fractionDigits, hideTrailingZeros } = this.getProps();\n this.validateProps(this.getProps());\n\n if (\n (isNumeric(value) && Number(value) !== CurrencyHelper.parse(prevState.formatted)) ||\n prevProps.fractionDigits !== fractionDigits\n ) {\n this.setState(this.getState(value, fractionDigits, hideTrailingZeros));\n }\n if (isNonNullable(prevProps.value) && isNullable(value)) {\n this.setState({ formatted: '' });\n }\n if (this.state.focused && this.input) {\n const { start, end } = this.state.selection;\n\n this.input.setSelectionRange(start, end);\n }\n if (prevState.selection !== this.state.selection) {\n this.scrollInput();\n }\n }\n\n public render(): React.JSX.Element {\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.getProps()}>\n {this.renderMain}\n </CommonWrapper>\n );\n }\n\n public renderMain = (props: CommonWrapperRestProps<CurrencyInputProps>): React.JSX.Element => {\n const { fractionDigits, signed, onSubmit, integerDigits, hideTrailingZeros, ...rest } = props;\n\n return (\n <FocusControlWrapper onBlurWhenDisabled={this.resetFocus}>\n <Input\n data-tid={CurrencyInputDataTids.root}\n {...rest}\n align={this.getProps().align}\n value={this.state.formatted}\n onBlur={this.handleBlur}\n onFocus={this.handleFocus}\n onMouseUp={this.handleMouseUp}\n onKeyDown={this.handleKeyDown}\n onValueChange={this.handleValueChange}\n onPaste={this.handlePaste}\n onCopy={this.handleCopy}\n onCut={this.handleCut}\n aria-label={this.props['aria-label']}\n onMouseEnter={this.props.onMouseEnter}\n onMouseLeave={this.props.onMouseLeave}\n onMouseOver={this.props.onMouseOver}\n ref={this.refInput}\n placeholder={this.state.focused ? '' : getPlaceholder(props)}\n />\n </FocusControlWrapper>\n );\n };\n\n /** Программно устанавливает фокус на поле.\n * Появляется фокусная рамка, элемент получает клавиатурные события и воспринимается как текущий элемент для чтения скринридерами.\n * @public\n */\n public focus = (): void => {\n if (this.input) {\n this.input.focus();\n }\n };\n\n /** Программно снимает фокус с кнопки.\n * @public\n */\n public blur = (): void => {\n if (this.input) {\n this.input.blur();\n }\n };\n\n private getState(value: Nullable<number>, fractionDigits: Nullable<number>, hideTrailingZeros: boolean) {\n return {\n formatted: CurrencyHelper.format(value, { fractionDigits, hideTrailingZeros }),\n selection: SelectionHelper.fromPosition(0),\n };\n }\n\n private setSelectionFromEvent(event: React.MouseEvent<HTMLInputElement>) {\n const selection = getInputSelectionFromEvent(event.target);\n const normilized = CurrencyInputHelper.normalizeSelection(this.state.formatted, selection);\n this.setState({ selection: normilized });\n }\n\n private handleMouseUp = (event: React.MouseEvent<HTMLInputElement>) => {\n this.setSelectionFromEvent(event);\n };\n\n private handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n const selection = this.getSelection(event.target);\n this.tempSelectionForOnChange = selection;\n\n if (this.props.onKeyDown) {\n this.props.onKeyDown(event);\n if (event.defaultPrevented) {\n return;\n }\n }\n\n const action = extractAction(event);\n\n if (action === CURRENCY_INPUT_ACTIONS.Ignore) {\n return;\n }\n\n if (action !== CURRENCY_INPUT_ACTIONS.Unknown) {\n event.preventDefault();\n }\n\n switch (action) {\n case CURRENCY_INPUT_ACTIONS.Submit: {\n if (this.props.onSubmit) {\n this.props.onSubmit();\n }\n return;\n }\n case CURRENCY_INPUT_ACTIONS.Backspace: {\n this.inputValue(CurrencyInputHelper.moveCursor(this.state.formatted, selection, -1), selection.end, '');\n return;\n }\n case CURRENCY_INPUT_ACTIONS.Delete: {\n this.inputValue(selection.start, CurrencyInputHelper.moveCursor(this.state.formatted, selection, +1), '');\n return;\n }\n case CURRENCY_INPUT_ACTIONS.MoveCursorLeft: {\n this.moveCursor(selection, -1);\n return;\n }\n case CURRENCY_INPUT_ACTIONS.MoveCursorRight: {\n this.moveCursor(selection, +1);\n return;\n }\n case CURRENCY_INPUT_ACTIONS.Home: {\n this.setState({ selection: SelectionHelper.fromPosition(0) });\n return;\n }\n case CURRENCY_INPUT_ACTIONS.End: {\n const end = this.state.formatted.length;\n this.setState({ selection: SelectionHelper.fromPosition(end) });\n return;\n }\n case CURRENCY_INPUT_ACTIONS.ExtendSelectionLeft: {\n this.extendSelection(selection, -1);\n return;\n }\n case CURRENCY_INPUT_ACTIONS.ExtendSelectionRight: {\n this.extendSelection(selection, +1);\n return;\n }\n case CURRENCY_INPUT_ACTIONS.FullSelection: {\n this.setState({\n selection: SelectionHelper.forward(0, this.state.formatted.length),\n });\n return;\n }\n case CURRENCY_INPUT_ACTIONS.ExtendSelectionToStart: {\n this.setState({\n selection: SelectionHelper.backward(0, selection.start),\n });\n return;\n }\n case CURRENCY_INPUT_ACTIONS.ExtendSelectionToEnd: {\n const inputEnd = this.state.formatted.length;\n this.setState({\n selection: SelectionHelper.forward(selection.start, inputEnd),\n });\n return;\n }\n case CURRENCY_INPUT_ACTIONS.Comma: {\n this.inputValue(selection.start, selection.end, ',');\n return;\n }\n }\n };\n\n private scrollInput = () => {\n const node = this.input?.getNode();\n if (!node || node.scrollWidth === node.clientWidth) {\n return;\n }\n const PAD = 1;\n const SHIFT = 3;\n\n const selection = this.state.selection;\n const selected = selection.start !== selection.end;\n const position = selected && selection.direction === 'forward' ? selection.end : selection.start;\n const charsCount = this.state.formatted.length;\n const charWidth = node.scrollWidth / charsCount;\n const frame = Math.ceil(node.clientWidth / charWidth);\n const frameStart = Math.ceil(node.scrollLeft / charWidth);\n const frameEnd = frameStart + frame;\n\n if (position < frameStart + PAD) {\n node.scrollLeft = (position - SHIFT) * charWidth;\n }\n if (position > frameEnd - PAD) {\n node.scrollLeft = (position - frame + SHIFT) * charWidth;\n }\n };\n\n private getSelection = (input: EventTarget): Selection => {\n const selection = getInputSelectionFromEvent(input);\n return {\n start: selection.start,\n end: selection.end,\n direction: this.state.selection.direction,\n };\n };\n\n private moveCursor = (selection: Selection, step: number) => {\n const position = CurrencyInputHelper.moveCursor(this.state.formatted, selection, step);\n this.setState({ selection: SelectionHelper.fromPosition(position) });\n };\n\n private extendSelection = (selection: Selection, step: number) => {\n const extended = CurrencyInputHelper.extendSelection(this.state.formatted, selection, step);\n this.setState({ selection: extended });\n };\n\n private inputValue = (start: number, end: number, value: string) => {\n const result = CurrencyInputHelper.safeInsert(this.state.formatted, start, end, value, {\n integerDigits: this.props.integerDigits,\n fractionDigits: this.getProps().fractionDigits,\n unsigned: !this.props.signed,\n });\n if (result) {\n const formatted = result.value;\n const selection = SelectionHelper.fromPosition(result.position);\n this.setState({ formatted, selection }, () => {\n const parsedValue = CurrencyHelper.parse(formatted);\n if (this.props.value !== parsedValue) {\n this.props.onValueChange(parsedValue);\n }\n });\n return true;\n }\n\n if (this.input) {\n this.input.blink();\n }\n return false;\n };\n\n private getOnChangeDelta = (value: string) => {\n const selection = this.tempSelectionForOnChange;\n const oldValue = this.state.formatted;\n if (selection.start !== selection.end) {\n return value.substring(selection.start, value.length - (oldValue.length - selection.end));\n } else if (value.length > oldValue.length) {\n return value.substr(selection.start, value.length - oldValue.length);\n }\n return null;\n };\n\n private handleValueChange = (value: string): void => {\n const selection = this.tempSelectionForOnChange;\n const delta = this.getOnChangeDelta(value);\n if (isNonNullable(delta) && !this.inputValue(selection.start, selection.end, delta)) {\n this.setState({ selection });\n }\n };\n\n private handlePaste = (event: React.ClipboardEvent<HTMLInputElement>) => {\n const data = event.clipboardData.getData('text');\n const selection = this.getSelection(event.target);\n this.inputValue(selection.start, selection.end, data);\n event.preventDefault();\n this.props.onPaste?.(event);\n };\n\n private handleCopy = (event: React.ClipboardEvent<HTMLInputElement>) => {\n const selection = this.getSelection(event.target);\n if (selection.start !== selection.end) {\n const substring = this.state.formatted.substring(selection.start, selection.end);\n const data = CurrencyHelper.formatForClipboard(substring);\n event.clipboardData.setData('text', data);\n }\n event.preventDefault();\n };\n\n private handleCut = (event: React.ClipboardEvent<HTMLInputElement>) => {\n const selection = this.getSelection(event.target);\n if (selection.start !== selection.end) {\n const substring = this.state.formatted.substring(selection.start, selection.end);\n const data = CurrencyHelper.formatForClipboard(substring);\n event.clipboardData.setData('text', data);\n this.inputValue(selection.start, selection.end, '');\n }\n event.preventDefault();\n };\n\n private handleFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n const { selectionStart, selectionEnd, selectionDirection } = event.target;\n const valueLength = event.target.value.length;\n\n const selection = {\n start: selectionStart !== selectionEnd ? selectionStart || 0 : selectionStart || valueLength,\n end: selectionEnd !== selectionStart ? selectionEnd || 0 : selectionEnd || valueLength,\n direction: (selectionDirection as SelectionDirection) || 'none',\n };\n\n this.setState({\n focused: true,\n selection,\n });\n\n if (this.props.onFocus) {\n this.props.onFocus(event);\n }\n };\n\n private resetFocus = () => {\n const value = CurrencyHelper.parse(this.state.formatted);\n\n this.setState({\n ...this.getState(value, this.getProps().fractionDigits, this.getProps().hideTrailingZeros),\n focused: false,\n });\n };\n\n private handleBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n this.resetFocus();\n this.props.onBlur?.(event);\n };\n\n private refInput = (element: Nullable<Input>) => {\n this.input = element;\n };\n}\n\nfunction getInputSelectionFromEvent(input: EventTarget): Selection {\n if (!isElement(input) || !isInstanceOf(input, getOwnerGlobalObject(input).HTMLInputElement)) {\n warning(false, 'input is not HTMLInputElement');\n\n return {\n start: 0,\n end: 0,\n direction: 'none',\n };\n }\n\n return {\n start: input.selectionStart ?? 0,\n end: input.selectionEnd ?? 0,\n direction: input.selectionDirection as SelectionDirection,\n };\n}\n\nfunction isNumeric(value: unknown): value is number | string {\n return !isNaN(parseFloat(value as string)) && isFinite(value as number);\n}\n\nconst getPlaceholder = (props: CurrencyInputProps) => {\n if (isNullable(props.placeholder)) {\n return CurrencyHelper.format(0, {\n fractionDigits: props.fractionDigits,\n hideTrailingZeros: props.hideTrailingZeros,\n });\n }\n\n return props.placeholder;\n};\n"]}
|
|
1
|
+
{"version":3,"file":"CurrencyInput.js","sourceRoot":"","sources":["../../../components/CurrencyInput/CurrencyInput.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { AriaAttributes } from 'react';\nimport React from 'react';\nimport warning from 'warning';\n\nimport { getOwnerGlobalObject } from '../../lib/globalObject.js';\nimport { isNonNullable, isNullable, isElement } from '../../lib/utils.js';\nimport type { InputProps } from '../Input/index.js';\nimport { Input } from '../Input/index.js';\nimport type { Nullable, Override } from '../../typings/utility-types.js';\nimport type { CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper/index.js';\nimport { CommonWrapper } from '../../internal/CommonWrapper/index.js';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode/index.js';\nimport { rootNode } from '../../lib/rootNode/index.js';\nimport { createPropsGetter } from '../../lib/createPropsGetter.js';\nimport { isInstanceOf } from '../../lib/isInstanceOf.js';\nimport { scrollInputCaretIntoView } from '../../lib/scrollInputCaretIntoView.js';\nimport { FocusControlWrapper } from '../../internal/FocusControlWrapper/index.js';\n\nimport { MAX_SAFE_DIGITS } from './constants.js';\nimport type { Selection, SelectionDirection } from './SelectionHelper.js';\nimport { SelectionHelper } from './SelectionHelper.js';\nimport { CurrencyHelper } from './CurrencyHelper.js';\nimport { CurrencyInputHelper } from './CurrencyInputHelper.js';\nimport { CURRENCY_INPUT_ACTIONS, extractAction } from './CurrencyInputKeyboardActions.js';\n\nexport interface CurrencyInputProps\n extends Pick<AriaAttributes, 'aria-label'>,\n CommonProps,\n Override<\n Omit<InputProps, 'showClearIcon' | 'maxLength'>,\n {\n /** Значение поля. */\n value?: Nullable<number>;\n\n /** Убирает лишние нули после запятой. */\n hideTrailingZeros?: boolean;\n\n /** Устанавливает минимальное количество отображаемых знаков после запятой. Если fractionDigits=15, то в целой части допускается только **0**. */\n fractionDigits?: Nullable<number>;\n\n /** Разрешает вводить в поле символ минуса для отрицательных значений. */\n signed?: boolean;\n\n /** Допустимое количество цифр целой части до запятой.\n * Если передан **0**, то в целой части допускается только **0**. */\n integerDigits?: Nullable<number>;\n\n /** Событие изменения `value`. */\n onValueChange: (value: Nullable<number>) => void;\n\n /** Событие отправки формы. */\n onSubmit?: () => void;\n }\n > {}\n\nexport interface CurrencyInputState {\n formatted: string;\n selection: Selection;\n focused: boolean;\n}\n\nexport const CurrencyInputDataTids = {\n root: 'CurrencyInput__root',\n} as const;\n\ntype DefaultProps = Required<\n Pick<CurrencyInputProps, 'align' | 'fractionDigits' | 'hideTrailingZeros' | 'value' | 'inputMode'>\n>;\n\n/** Поле для денежных сумм. */\n@rootNode\nexport class CurrencyInput extends React.PureComponent<CurrencyInputProps, CurrencyInputState> {\n public static __KONTUR_REACT_UI__ = 'CurrencyInput';\n public static displayName = 'CurrencyInput';\n\n public static defaultProps: DefaultProps = {\n align: 'right',\n fractionDigits: 2,\n hideTrailingZeros: false,\n value: null,\n inputMode: 'decimal',\n };\n\n private getProps = createPropsGetter(CurrencyInput.defaultProps);\n private validateProps(props: CurrencyInputProps): void {\n warning(\n isNumeric(props.value) || isNullable(props.value),\n '[CurrencyInput]: Prop `value` is not a valid number. Received value is `' + props.value + '`.',\n );\n warning(\n (props.integerDigits || 0) + (props.fractionDigits || 0) <= MAX_SAFE_DIGITS,\n `[CurrencyInput]: Sum of 'integerDigits' and 'fractionDigits' exceeds ${MAX_SAFE_DIGITS}.` +\n `\\nSee CurrencyInput documentation`,\n );\n }\n\n public state: CurrencyInputState = {\n ...this.getState(this.getProps().value, this.getProps().fractionDigits, this.getProps().hideTrailingZeros),\n focused: false,\n };\n\n private input: Nullable<Input>;\n private tempSelectionForOnChange: Selection = SelectionHelper.fromPosition(0);\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n\n public componentDidMount(): void {\n this.validateProps(this.getProps());\n }\n\n public componentDidUpdate(prevProps: CurrencyInputProps, prevState: CurrencyInputState) {\n const { value, fractionDigits, hideTrailingZeros } = this.getProps();\n this.validateProps(this.getProps());\n\n if (\n (isNumeric(value) && Number(value) !== CurrencyHelper.parse(prevState.formatted)) ||\n prevProps.fractionDigits !== fractionDigits\n ) {\n this.setState(this.getState(value, fractionDigits, hideTrailingZeros));\n }\n if (isNonNullable(prevProps.value) && isNullable(value)) {\n this.setState({ formatted: '' });\n }\n if (this.state.focused && this.input) {\n const { start, end } = this.state.selection;\n\n this.input.setSelectionRange(start, end);\n }\n if (prevState.selection !== this.state.selection) {\n this.scrollInput();\n }\n }\n\n public render(): React.JSX.Element {\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.getProps()}>\n {this.renderMain}\n </CommonWrapper>\n );\n }\n\n public renderMain = (props: CommonWrapperRestProps<CurrencyInputProps>): React.JSX.Element => {\n const { fractionDigits, signed, onSubmit, integerDigits, hideTrailingZeros, ...rest } = props;\n\n return (\n <FocusControlWrapper onBlurWhenDisabled={this.resetFocus}>\n <Input\n data-tid={CurrencyInputDataTids.root}\n {...rest}\n align={this.getProps().align}\n value={this.state.formatted}\n onBlur={this.handleBlur}\n onFocus={this.handleFocus}\n onMouseUp={this.handleMouseUp}\n onKeyDown={this.handleKeyDown}\n onValueChange={this.handleValueChange}\n onPaste={this.handlePaste}\n onCopy={this.handleCopy}\n onCut={this.handleCut}\n aria-label={this.props['aria-label']}\n onMouseEnter={this.props.onMouseEnter}\n onMouseLeave={this.props.onMouseLeave}\n onMouseOver={this.props.onMouseOver}\n ref={this.refInput}\n placeholder={this.state.focused ? '' : getPlaceholder(props)}\n />\n </FocusControlWrapper>\n );\n };\n\n /** Программно устанавливает фокус на поле.\n * Появляется фокусная рамка, элемент получает клавиатурные события и воспринимается как текущий элемент для чтения скринридерами.\n * @public\n */\n public focus = (): void => {\n if (this.input) {\n this.input.focus();\n }\n };\n\n /** Программно снимает фокус с кнопки.\n * @public\n */\n public blur = (): void => {\n if (this.input) {\n this.input.blur();\n }\n };\n\n private getState(value: Nullable<number>, fractionDigits: Nullable<number>, hideTrailingZeros: boolean) {\n return {\n formatted: CurrencyHelper.format(value, { fractionDigits, hideTrailingZeros }),\n selection: SelectionHelper.fromPosition(0),\n };\n }\n\n private setSelectionFromEvent(event: React.MouseEvent<HTMLInputElement>) {\n const selection = getInputSelectionFromEvent(event.target);\n const normilized = CurrencyInputHelper.normalizeSelection(this.state.formatted, selection);\n this.setState({ selection: normilized });\n }\n\n private handleMouseUp = (event: React.MouseEvent<HTMLInputElement>) => {\n this.setSelectionFromEvent(event);\n };\n\n private handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n const selection = this.getSelection(event.target);\n this.tempSelectionForOnChange = selection;\n\n if (this.props.onKeyDown) {\n this.props.onKeyDown(event);\n if (event.defaultPrevented) {\n return;\n }\n }\n\n const action = extractAction(event);\n\n if (action === CURRENCY_INPUT_ACTIONS.Ignore) {\n return;\n }\n\n if (action !== CURRENCY_INPUT_ACTIONS.Unknown) {\n event.preventDefault();\n }\n\n switch (action) {\n case CURRENCY_INPUT_ACTIONS.Submit: {\n if (this.props.onSubmit) {\n this.props.onSubmit();\n }\n return;\n }\n case CURRENCY_INPUT_ACTIONS.Backspace: {\n this.inputValue(CurrencyInputHelper.moveCursor(this.state.formatted, selection, -1), selection.end, '');\n return;\n }\n case CURRENCY_INPUT_ACTIONS.Delete: {\n this.inputValue(selection.start, CurrencyInputHelper.moveCursor(this.state.formatted, selection, +1), '');\n return;\n }\n case CURRENCY_INPUT_ACTIONS.MoveCursorLeft: {\n this.moveCursor(selection, -1);\n return;\n }\n case CURRENCY_INPUT_ACTIONS.MoveCursorRight: {\n this.moveCursor(selection, +1);\n return;\n }\n case CURRENCY_INPUT_ACTIONS.Home: {\n this.setState({ selection: SelectionHelper.fromPosition(0) });\n return;\n }\n case CURRENCY_INPUT_ACTIONS.End: {\n const end = this.state.formatted.length;\n this.setState({ selection: SelectionHelper.fromPosition(end) });\n return;\n }\n case CURRENCY_INPUT_ACTIONS.ExtendSelectionLeft: {\n this.extendSelection(selection, -1);\n return;\n }\n case CURRENCY_INPUT_ACTIONS.ExtendSelectionRight: {\n this.extendSelection(selection, +1);\n return;\n }\n case CURRENCY_INPUT_ACTIONS.FullSelection: {\n this.setState({\n selection: SelectionHelper.forward(0, this.state.formatted.length),\n });\n return;\n }\n case CURRENCY_INPUT_ACTIONS.ExtendSelectionToStart: {\n this.setState({\n selection: SelectionHelper.backward(0, selection.start),\n });\n return;\n }\n case CURRENCY_INPUT_ACTIONS.ExtendSelectionToEnd: {\n const inputEnd = this.state.formatted.length;\n this.setState({\n selection: SelectionHelper.forward(selection.start, inputEnd),\n });\n return;\n }\n case CURRENCY_INPUT_ACTIONS.Comma: {\n this.inputValue(selection.start, selection.end, ',');\n return;\n }\n }\n };\n\n private scrollInput = () => {\n const node = this.input?.getNode();\n if (node) {\n scrollInputCaretIntoView(node, this.state.selection);\n }\n };\n\n private getSelection = (input: EventTarget): Selection => {\n const selection = getInputSelectionFromEvent(input);\n return {\n start: selection.start,\n end: selection.end,\n direction: this.state.selection.direction,\n };\n };\n\n private moveCursor = (selection: Selection, step: number) => {\n const position = CurrencyInputHelper.moveCursor(this.state.formatted, selection, step);\n this.setState({ selection: SelectionHelper.fromPosition(position) });\n };\n\n private extendSelection = (selection: Selection, step: number) => {\n const extended = CurrencyInputHelper.extendSelection(this.state.formatted, selection, step);\n this.setState({ selection: extended });\n };\n\n private inputValue = (start: number, end: number, value: string) => {\n const result = CurrencyInputHelper.safeInsert(this.state.formatted, start, end, value, {\n integerDigits: this.props.integerDigits,\n fractionDigits: this.getProps().fractionDigits,\n unsigned: !this.props.signed,\n });\n if (result) {\n const formatted = result.value;\n const selection = SelectionHelper.fromPosition(result.position);\n this.setState({ formatted, selection }, () => {\n const parsedValue = CurrencyHelper.parse(formatted);\n if (this.props.value !== parsedValue) {\n this.props.onValueChange(parsedValue);\n }\n });\n return true;\n }\n\n if (this.input) {\n this.input.blink();\n }\n return false;\n };\n\n private getOnChangeDelta = (value: string) => {\n const selection = this.tempSelectionForOnChange;\n const oldValue = this.state.formatted;\n if (selection.start !== selection.end) {\n return value.substring(selection.start, value.length - (oldValue.length - selection.end));\n } else if (value.length > oldValue.length) {\n return value.substr(selection.start, value.length - oldValue.length);\n }\n return null;\n };\n\n private handleValueChange = (value: string): void => {\n const selection = this.tempSelectionForOnChange;\n const delta = this.getOnChangeDelta(value);\n if (isNonNullable(delta) && !this.inputValue(selection.start, selection.end, delta)) {\n this.setState({ selection });\n }\n };\n\n private handlePaste = (event: React.ClipboardEvent<HTMLInputElement>) => {\n const data = event.clipboardData.getData('text');\n const selection = this.getSelection(event.target);\n this.inputValue(selection.start, selection.end, data);\n event.preventDefault();\n this.props.onPaste?.(event);\n };\n\n private handleCopy = (event: React.ClipboardEvent<HTMLInputElement>) => {\n const selection = this.getSelection(event.target);\n if (selection.start !== selection.end) {\n const substring = this.state.formatted.substring(selection.start, selection.end);\n const data = CurrencyHelper.formatForClipboard(substring);\n event.clipboardData.setData('text', data);\n }\n event.preventDefault();\n };\n\n private handleCut = (event: React.ClipboardEvent<HTMLInputElement>) => {\n const selection = this.getSelection(event.target);\n if (selection.start !== selection.end) {\n const substring = this.state.formatted.substring(selection.start, selection.end);\n const data = CurrencyHelper.formatForClipboard(substring);\n event.clipboardData.setData('text', data);\n this.inputValue(selection.start, selection.end, '');\n }\n event.preventDefault();\n };\n\n private handleFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n const { selectionStart, selectionEnd, selectionDirection } = event.target;\n const valueLength = event.target.value.length;\n\n const selection = {\n start: selectionStart !== selectionEnd ? selectionStart || 0 : selectionStart || valueLength,\n end: selectionEnd !== selectionStart ? selectionEnd || 0 : selectionEnd || valueLength,\n direction: (selectionDirection as SelectionDirection) || 'none',\n };\n\n this.setState({\n focused: true,\n selection,\n });\n\n if (this.props.onFocus) {\n this.props.onFocus(event);\n }\n };\n\n private resetFocus = () => {\n const value = CurrencyHelper.parse(this.state.formatted);\n\n this.setState({\n ...this.getState(value, this.getProps().fractionDigits, this.getProps().hideTrailingZeros),\n focused: false,\n });\n };\n\n private handleBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n this.resetFocus();\n this.props.onBlur?.(event);\n };\n\n private refInput = (element: Nullable<Input>) => {\n this.input = element;\n };\n}\n\nfunction getInputSelectionFromEvent(input: EventTarget): Selection {\n if (!isElement(input) || !isInstanceOf(input, getOwnerGlobalObject(input).HTMLInputElement)) {\n warning(false, 'input is not HTMLInputElement');\n\n return {\n start: 0,\n end: 0,\n direction: 'none',\n };\n }\n\n return {\n start: input.selectionStart ?? 0,\n end: input.selectionEnd ?? 0,\n direction: input.selectionDirection as SelectionDirection,\n };\n}\n\nfunction isNumeric(value: unknown): value is number | string {\n return !isNaN(parseFloat(value as string)) && isFinite(value as number);\n}\n\nconst getPlaceholder = (props: CurrencyInputProps) => {\n if (isNullable(props.placeholder)) {\n return CurrencyHelper.format(0, {\n fractionDigits: props.fractionDigits,\n hideTrailingZeros: props.hideTrailingZeros,\n });\n }\n\n return props.placeholder;\n};\n"]}
|
|
@@ -6,60 +6,59 @@ import type { CommonProps } from '../../internal/CommonWrapper/types.js';
|
|
|
6
6
|
import type { TGetRootNode } from '../../lib/rootNode//rootNodeDecorator.js';
|
|
7
7
|
import type { SizeProp } from '../../lib/types/props.js';
|
|
8
8
|
export interface DropdownProps extends Pick<AriaAttributes, 'aria-label' | 'aria-describedby'>, Pick<HTMLAttributes<HTMLElement>, 'id'>, CommonProps {
|
|
9
|
-
/**
|
|
9
|
+
/** Текст кнопки-меню. */
|
|
10
10
|
caption: React.ReactNode;
|
|
11
11
|
/** Добавляет иконку слева от текста кнопки. */
|
|
12
12
|
icon?: React.ReactElement;
|
|
13
|
-
/**
|
|
13
|
+
/** Ширина кнопки-меню. Если `menuWidth` не задан, такая же минимальная ширина применяется к раскрывающемуся меню. */
|
|
14
14
|
width?: React.CSSProperties['width'];
|
|
15
15
|
/** @ignore */
|
|
16
16
|
_renderButton?: (params: any) => JSX.Element;
|
|
17
17
|
/** Отключает использование портала. */
|
|
18
18
|
disablePortal?: boolean;
|
|
19
|
-
/**
|
|
19
|
+
/** Блокирует компонент. */
|
|
20
20
|
disabled?: boolean;
|
|
21
|
-
/**
|
|
21
|
+
/** Показывает состояние ошибки. */
|
|
22
22
|
error?: boolean;
|
|
23
|
-
/**
|
|
23
|
+
/** Показывает состояние предупреждения. */
|
|
24
24
|
warning?: boolean;
|
|
25
|
-
/**
|
|
25
|
+
/** Ограничивает максимальную высоту раскрывающегося меню. */
|
|
26
26
|
maxMenuHeight?: number;
|
|
27
|
-
/**
|
|
28
|
-
*/
|
|
27
|
+
/** Фиксирует положение раскрывающегося меню относительно кнопки-меню. */
|
|
29
28
|
menuPos?: 'top' | 'bottom';
|
|
30
|
-
/**
|
|
29
|
+
/** Выравнивает раскрывающееся меню относительно кнопки-меню. */
|
|
31
30
|
menuAlign?: 'left' | 'right';
|
|
32
|
-
/**
|
|
31
|
+
/** Ширина раскрывающегося меню. */
|
|
33
32
|
menuWidth?: number | string;
|
|
34
|
-
/**
|
|
33
|
+
/** Размер кнопки-меню. */
|
|
35
34
|
size?: SizeProp;
|
|
36
|
-
/**
|
|
35
|
+
/** Визуальный стиль кнопки-меню. */
|
|
37
36
|
use?: ButtonUse;
|
|
38
37
|
/** @ignore */
|
|
39
38
|
corners?: React.CSSProperties;
|
|
40
|
-
/**
|
|
39
|
+
/** Вызывается при закрытии раскрывающегося меню. */
|
|
41
40
|
onClose?: () => void;
|
|
42
|
-
/**
|
|
41
|
+
/** Вызывается при открытии раскрывающегося меню. */
|
|
43
42
|
onOpen?: () => void;
|
|
44
|
-
/**
|
|
43
|
+
/** Вызывается при наведении курсора (событие `onmouseenter`). Разницу с `onMouseOver` смотрите в [документации](https://learn.javascript.ru/mousemove-mouseover-mouseout-mouseenter-mouseleave). */
|
|
45
44
|
onMouseEnter?: (event: React.MouseEvent<HTMLElement>) => void;
|
|
46
|
-
/**
|
|
45
|
+
/** Вызывается при уходе курсора с элемента (событие `onmouseleave`). */
|
|
47
46
|
onMouseLeave?: (event: React.MouseEvent<HTMLElement>) => void;
|
|
48
|
-
/**
|
|
47
|
+
/** Вызывается при движении курсора над элементом (событие `onmouseover`). */
|
|
49
48
|
onMouseOver?: (event: React.MouseEvent<HTMLElement>) => void;
|
|
50
49
|
}
|
|
51
50
|
export declare const DropdownDataTids: {
|
|
52
51
|
readonly root: "Dropdown__root";
|
|
53
52
|
};
|
|
54
53
|
/**
|
|
55
|
-
*
|
|
54
|
+
* Кнопка-меню `Dropdown` открывает раскрывающееся меню с командами, объединенными по смыслу.
|
|
56
55
|
*
|
|
57
56
|
* Используйте кнопку-меню:
|
|
58
57
|
* * когда не хватает места для нескольких кнопок.
|
|
59
58
|
* * когда названия действий очень длинные.
|
|
60
59
|
* * когда действия редко используются или объединены по смыслу.
|
|
61
60
|
*
|
|
62
|
-
* Не используйте `Dropdown` для выбора значения из набора вариантов. В таком случае воспользуйтесь компонентом Select
|
|
61
|
+
* Не используйте `Dropdown` для выбора значения из набора вариантов. В таком случае воспользуйтесь компонентом `Select`.
|
|
63
62
|
*/
|
|
64
63
|
export declare class Dropdown extends React.Component<DropdownProps> {
|
|
65
64
|
static __KONTUR_REACT_UI__: string;
|
|
@@ -78,14 +78,14 @@ export var DropdownDataTids = {
|
|
|
78
78
|
root: 'Dropdown__root',
|
|
79
79
|
};
|
|
80
80
|
/**
|
|
81
|
-
*
|
|
81
|
+
* Кнопка-меню `Dropdown` открывает раскрывающееся меню с командами, объединенными по смыслу.
|
|
82
82
|
*
|
|
83
83
|
* Используйте кнопку-меню:
|
|
84
84
|
* * когда не хватает места для нескольких кнопок.
|
|
85
85
|
* * когда названия действий очень длинные.
|
|
86
86
|
* * когда действия редко используются или объединены по смыслу.
|
|
87
87
|
*
|
|
88
|
-
* Не используйте `Dropdown` для выбора значения из набора вариантов. В таком случае воспользуйтесь компонентом Select
|
|
88
|
+
* Не используйте `Dropdown` для выбора значения из набора вариантов. В таком случае воспользуйтесь компонентом `Select`.
|
|
89
89
|
*/
|
|
90
90
|
var Dropdown = /** @class */ (function (_super) {
|
|
91
91
|
__extends(Dropdown, _super);
|