@skbkontur/react-ui 4.14.2 → 4.15.1-fix-flushsync-warning
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 +32 -5
- package/cjs/components/Button/Button.d.ts +2 -6
- package/cjs/components/Button/Button.js +14 -5
- package/cjs/components/Button/Button.js.map +1 -1
- package/cjs/components/Button/Button.styles.js +2 -1
- package/cjs/components/Button/Button.styles.js.map +1 -1
- package/cjs/components/Button/getInnerLinkTheme.js +0 -3
- package/cjs/components/Button/getInnerLinkTheme.js.map +1 -1
- package/cjs/components/Calendar/Calendar.d.ts +104 -0
- package/cjs/components/Calendar/Calendar.js +475 -0
- package/cjs/components/Calendar/Calendar.js.map +1 -0
- package/cjs/components/Calendar/Calendar.md +147 -0
- package/cjs/{internal → components}/Calendar/Calendar.styles.d.ts +1 -0
- package/cjs/components/Calendar/Calendar.styles.js +33 -0
- package/cjs/components/Calendar/Calendar.styles.js.map +1 -0
- package/{internal → cjs/components}/Calendar/CalendarUtils.d.ts +19 -2
- package/cjs/components/Calendar/CalendarUtils.js +117 -0
- package/cjs/components/Calendar/CalendarUtils.js.map +1 -0
- package/cjs/components/Calendar/Month.js.map +1 -0
- package/cjs/{internal → components}/Calendar/MonthView.d.ts +1 -1
- package/cjs/{internal → components}/Calendar/MonthView.js +1 -1
- package/cjs/{internal → components}/Calendar/MonthView.js.map +1 -1
- package/cjs/components/Calendar/locale/index.d.ts +4 -0
- package/cjs/components/Calendar/locale/index.js +11 -0
- package/cjs/components/Calendar/locale/index.js.map +1 -0
- package/cjs/components/Calendar/locale/locales/en.d.ts +2 -0
- package/cjs/components/Calendar/locale/locales/en.js +16 -0
- package/cjs/components/Calendar/locale/locales/en.js.map +1 -0
- package/cjs/components/Calendar/locale/locales/ru.d.ts +2 -0
- package/cjs/components/Calendar/locale/locales/ru.js +16 -0
- package/cjs/components/Calendar/locale/locales/ru.js.map +1 -0
- package/cjs/components/Calendar/locale/types.d.ts +3 -0
- package/cjs/components/Calendar/locale/types.js +1 -0
- package/cjs/components/Calendar/locale/types.js.map +1 -0
- package/cjs/components/DatePicker/DatePicker.d.ts +16 -17
- package/cjs/components/DatePicker/DatePicker.js +107 -57
- package/cjs/components/DatePicker/DatePicker.js.map +1 -1
- package/cjs/components/DatePicker/DatePicker.styles.d.ts +3 -0
- package/cjs/components/DatePicker/DatePicker.styles.js +36 -1
- package/cjs/components/DatePicker/DatePicker.styles.js.map +1 -1
- package/cjs/components/DatePicker/DatePickerHelpers.d.ts +1 -1
- package/cjs/components/DatePicker/DatePickerHelpers.js.map +1 -1
- package/cjs/components/DatePicker/Picker.d.ts +8 -9
- package/cjs/components/DatePicker/Picker.js +32 -41
- package/cjs/components/DatePicker/Picker.js.map +1 -1
- package/cjs/components/DatePicker/locale/locales/en.js +3 -15
- package/cjs/components/DatePicker/locale/locales/en.js.map +1 -1
- package/cjs/components/DatePicker/locale/locales/ru.js +3 -15
- package/cjs/components/DatePicker/locale/locales/ru.js.map +1 -1
- package/cjs/components/DatePicker/locale/types.d.ts +2 -2
- package/cjs/components/DropdownMenu/DropdownMenu.d.ts +1 -1
- package/cjs/components/DropdownMenu/DropdownMenu.js +2 -1
- package/cjs/components/DropdownMenu/DropdownMenu.js.map +1 -1
- package/cjs/components/FileUploader/FileUploader.d.ts +1 -0
- package/cjs/components/FileUploader/FileUploader.js +3 -1
- package/cjs/components/FileUploader/FileUploader.js.map +1 -1
- package/cjs/components/Kebab/Kebab.d.ts +4 -1
- package/cjs/components/Kebab/Kebab.js +9 -3
- package/cjs/components/Kebab/Kebab.js.map +1 -1
- package/cjs/components/Link/Link.js +4 -2
- package/cjs/components/Link/Link.js.map +1 -1
- package/cjs/components/Link/Link.mixins.d.ts +1 -2
- package/cjs/components/Link/Link.mixins.js +4 -16
- package/cjs/components/Link/Link.mixins.js.map +1 -1
- package/cjs/components/Link/Link.styles.d.ts +2 -0
- package/cjs/components/Link/Link.styles.js +56 -38
- package/cjs/components/Link/Link.styles.js.map +1 -1
- package/cjs/components/Loader/Loader.js +1 -3
- package/cjs/components/Loader/Loader.js.map +1 -1
- package/cjs/components/Modal/Modal.d.ts +3 -3
- package/cjs/components/Modal/Modal.js +19 -2
- package/cjs/components/Modal/Modal.js.map +1 -1
- package/cjs/components/Modal/Modal.styles.d.ts +0 -2
- package/cjs/components/Modal/Modal.styles.js +25 -36
- package/cjs/components/Modal/Modal.styles.js.map +1 -1
- package/cjs/components/Modal/ModalBody.js +0 -2
- package/cjs/components/Modal/ModalBody.js.map +1 -1
- package/cjs/components/Modal/ModalFooter.js +3 -6
- package/cjs/components/Modal/ModalFooter.js.map +1 -1
- package/cjs/components/Modal/ModalHeader.js +2 -7
- package/cjs/components/Modal/ModalHeader.js.map +1 -1
- package/cjs/components/PasswordInput/PasswordInput.js +4 -6
- package/cjs/components/PasswordInput/PasswordInput.js.map +1 -1
- package/cjs/components/ScrollContainer/ScrollContainer.d.ts +1 -0
- package/cjs/components/ScrollContainer/ScrollContainer.js +9 -1
- package/cjs/components/ScrollContainer/ScrollContainer.js.map +1 -1
- package/cjs/components/SidePage/SidePage.d.ts +3 -3
- package/cjs/components/SidePage/SidePage.js +8 -1
- package/cjs/components/SidePage/SidePage.js.map +1 -1
- package/cjs/components/Spinner/Spinner.md +1 -1
- package/cjs/components/Switcher/Switcher.d.ts +4 -2
- package/cjs/components/Switcher/Switcher.js +13 -3
- package/cjs/components/Switcher/Switcher.js.map +1 -1
- package/cjs/components/Toast/Toast.md +16 -12
- package/cjs/components/TokenInput/TokenInput.d.ts +44 -1
- package/cjs/components/TokenInput/TokenInput.js +42 -0
- package/cjs/components/TokenInput/TokenInput.js.map +1 -1
- package/cjs/components/TokenInput/TokenInput.md +100 -0
- package/cjs/index.d.ts +1 -0
- package/cjs/index.js +1 -0
- package/cjs/index.js.map +1 -1
- package/cjs/internal/CustomComboBox/CustomComboBox.js +25 -13
- package/cjs/internal/CustomComboBox/CustomComboBox.js.map +1 -1
- package/cjs/internal/DateSelect/DateSelect.js +3 -3
- package/cjs/internal/DateSelect/DateSelect.js.map +1 -1
- package/cjs/internal/InputLikeText/InputLikeText.js +4 -1
- package/cjs/internal/InputLikeText/InputLikeText.js.map +1 -1
- package/cjs/internal/NativeDateInput/utils.d.ts +1 -1
- package/cjs/internal/NativeDateInput/utils.js.map +1 -1
- package/cjs/internal/PopupMenu/PopupMenu.d.ts +8 -0
- package/cjs/internal/PopupMenu/PopupMenu.js +23 -3
- package/cjs/internal/PopupMenu/PopupMenu.js.map +1 -1
- package/cjs/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
- package/cjs/internal/ZIndex/ZIndexStorage.d.ts +0 -5
- package/cjs/internal/ZIndex/ZIndexStorage.js +1 -6
- package/cjs/internal/ZIndex/ZIndexStorage.js.map +1 -1
- package/cjs/internal/icons/SpinnerIcon.styles.js +2 -1
- package/cjs/internal/icons/SpinnerIcon.styles.js.map +1 -1
- package/cjs/internal/themes/DefaultTheme.d.ts +4 -15
- package/cjs/internal/themes/DefaultTheme.js +15 -48
- package/cjs/internal/themes/DefaultTheme.js.map +1 -1
- package/cjs/internal/themes/Theme2022.d.ts +0 -3
- package/cjs/internal/themes/Theme2022.js +2 -11
- package/cjs/internal/themes/Theme2022.js.map +1 -1
- package/cjs/lib/date/InternalDate.d.ts +1 -1
- package/cjs/lib/date/InternalDate.js +1 -1
- package/cjs/lib/date/InternalDate.js.map +1 -1
- package/cjs/lib/locale/decorators.js +0 -3
- package/cjs/lib/locale/decorators.js.map +1 -1
- package/cjs/lib/locale/types.d.ts +2 -0
- package/cjs/lib/locale/types.js +2 -0
- package/cjs/lib/locale/types.js.map +1 -1
- package/cjs/typings/html.d.ts +1 -1
- package/cjs/typings/utility-types.d.ts +6 -0
- package/components/Button/Button/Button.js +13 -4
- package/components/Button/Button/Button.js.map +1 -1
- package/components/Button/Button.d.ts +2 -6
- package/components/Button/Button.styles/Button.styles.js +1 -1
- package/components/Button/Button.styles/Button.styles.js.map +1 -1
- package/components/Button/getInnerLinkTheme/getInnerLinkTheme.js +0 -3
- package/components/Button/getInnerLinkTheme/getInnerLinkTheme.js.map +1 -1
- package/{internal → components}/Calendar/Calendar/Calendar.js +136 -71
- package/components/Calendar/Calendar/Calendar.js.map +1 -0
- package/{internal → components}/Calendar/Calendar/package.json +1 -1
- package/components/Calendar/Calendar.d.ts +104 -0
- package/components/Calendar/Calendar.md +147 -0
- package/components/Calendar/Calendar.styles/Calendar.styles.js +17 -0
- package/components/Calendar/Calendar.styles/Calendar.styles.js.map +1 -0
- package/{internal → components}/Calendar/Calendar.styles/package.json +1 -1
- package/{internal → components}/Calendar/Calendar.styles.d.ts +1 -0
- package/{internal → components}/Calendar/CalendarDateShape/package.json +1 -1
- package/{internal → components}/Calendar/CalendarScrollEvents/package.json +1 -1
- package/{internal → components}/Calendar/CalendarUtils/CalendarUtils.js +34 -0
- package/components/Calendar/CalendarUtils/CalendarUtils.js.map +1 -0
- package/{internal → components}/Calendar/CalendarUtils/package.json +1 -1
- package/{cjs/internal → components}/Calendar/CalendarUtils.d.ts +19 -2
- package/{internal → components}/Calendar/DayCellView/package.json +1 -1
- package/{internal → components}/Calendar/DayCellView.styles/package.json +1 -1
- package/{internal → components}/Calendar/DayCellViewModel/package.json +1 -1
- package/components/Calendar/Month/Month.js.map +1 -0
- package/{internal → components}/Calendar/Month/package.json +1 -1
- package/{internal → components}/Calendar/MonthView/MonthView.js +1 -1
- package/components/Calendar/MonthView/MonthView.js.map +1 -0
- package/{internal → components}/Calendar/MonthView/package.json +1 -1
- package/{internal → components}/Calendar/MonthView.d.ts +1 -1
- package/{internal → components}/Calendar/MonthView.styles/package.json +1 -1
- package/{internal → components}/Calendar/MonthViewModel/package.json +1 -1
- package/{internal → components}/Calendar/config/package.json +1 -1
- package/{internal → components}/Calendar/index/package.json +1 -1
- package/components/Calendar/locale/index/index.js +8 -0
- package/components/Calendar/locale/index/index.js.map +1 -0
- package/components/Calendar/locale/index/package.json +6 -0
- package/components/Calendar/locale/index.d.ts +4 -0
- package/components/Calendar/locale/locales/en/en.js +3 -0
- package/components/Calendar/locale/locales/en/en.js.map +1 -0
- package/components/Calendar/locale/locales/en/package.json +6 -0
- package/components/Calendar/locale/locales/en.d.ts +2 -0
- package/components/Calendar/locale/locales/ru/package.json +6 -0
- package/components/Calendar/locale/locales/ru/ru.js +3 -0
- package/components/Calendar/locale/locales/ru/ru.js.map +1 -0
- package/components/Calendar/locale/locales/ru.d.ts +2 -0
- package/components/Calendar/locale/package.json +6 -0
- package/components/Calendar/locale/types/package.json +6 -0
- package/components/Calendar/locale/types/types.js +1 -0
- package/components/Calendar/locale/types/types.js.map +1 -0
- package/components/Calendar/locale/types.d.ts +3 -0
- package/{internal → components}/Calendar/package.json +1 -1
- package/components/DatePicker/DatePicker/DatePicker.js +112 -62
- package/components/DatePicker/DatePicker/DatePicker.js.map +1 -1
- package/components/DatePicker/DatePicker.d.ts +16 -17
- package/components/DatePicker/DatePicker.styles/DatePicker.styles.js +7 -1
- package/components/DatePicker/DatePicker.styles/DatePicker.styles.js.map +1 -1
- package/components/DatePicker/DatePicker.styles.d.ts +3 -0
- package/components/DatePicker/DatePickerHelpers/DatePickerHelpers.js.map +1 -1
- package/components/DatePicker/DatePickerHelpers.d.ts +1 -1
- package/components/DatePicker/Picker/Picker.js +50 -66
- package/components/DatePicker/Picker/Picker.js.map +1 -1
- package/components/DatePicker/Picker.d.ts +8 -9
- package/components/DatePicker/locale/locales/en/en.js +3 -3
- package/components/DatePicker/locale/locales/en/en.js.map +1 -1
- package/components/DatePicker/locale/locales/ru/ru.js +3 -3
- package/components/DatePicker/locale/locales/ru/ru.js.map +1 -1
- package/components/DatePicker/locale/types.d.ts +2 -2
- package/components/DropdownMenu/DropdownMenu/DropdownMenu.js +2 -1
- package/components/DropdownMenu/DropdownMenu/DropdownMenu.js.map +1 -1
- package/components/DropdownMenu/DropdownMenu.d.ts +1 -1
- package/components/FileUploader/FileUploader/FileUploader.js +3 -1
- package/components/FileUploader/FileUploader/FileUploader.js.map +1 -1
- package/components/FileUploader/FileUploader.d.ts +1 -0
- package/components/Kebab/Kebab/Kebab.js +6 -1
- package/components/Kebab/Kebab/Kebab.js.map +1 -1
- package/components/Kebab/Kebab.d.ts +4 -1
- package/components/Link/Link/Link.js +4 -4
- package/components/Link/Link/Link.js.map +1 -1
- package/components/Link/Link.mixins/Link.mixins.js +2 -5
- package/components/Link/Link.mixins/Link.mixins.js.map +1 -1
- package/components/Link/Link.mixins.d.ts +1 -2
- package/components/Link/Link.styles/Link.styles.js +28 -21
- package/components/Link/Link.styles/Link.styles.js.map +1 -1
- package/components/Link/Link.styles.d.ts +2 -0
- package/components/Loader/Loader/Loader.js +0 -2
- package/components/Loader/Loader/Loader.js.map +1 -1
- package/components/Modal/Modal/Modal.js +28 -11
- package/components/Modal/Modal/Modal.js.map +1 -1
- package/components/Modal/Modal.d.ts +3 -3
- package/components/Modal/Modal.styles/Modal.styles.js +24 -30
- package/components/Modal/Modal.styles/Modal.styles.js.map +1 -1
- package/components/Modal/Modal.styles.d.ts +0 -2
- package/components/Modal/ModalBody/ModalBody.js +0 -2
- package/components/Modal/ModalBody/ModalBody.js.map +1 -1
- package/components/Modal/ModalFooter/ModalFooter.js +3 -7
- package/components/Modal/ModalFooter/ModalFooter.js.map +1 -1
- package/components/Modal/ModalHeader/ModalHeader.js +3 -7
- package/components/Modal/ModalHeader/ModalHeader.js.map +1 -1
- package/components/PasswordInput/PasswordInput/PasswordInput.js +6 -5
- package/components/PasswordInput/PasswordInput/PasswordInput.js.map +1 -1
- package/components/ScrollContainer/ScrollContainer/ScrollContainer.js +12 -4
- package/components/ScrollContainer/ScrollContainer/ScrollContainer.js.map +1 -1
- package/components/ScrollContainer/ScrollContainer.d.ts +1 -0
- package/components/SidePage/SidePage/SidePage.js +9 -3
- package/components/SidePage/SidePage/SidePage.js.map +1 -1
- package/components/SidePage/SidePage.d.ts +3 -3
- package/components/Spinner/Spinner.md +1 -1
- package/components/Switcher/Switcher/Switcher.js +8 -2
- package/components/Switcher/Switcher/Switcher.js.map +1 -1
- package/components/Switcher/Switcher.d.ts +4 -2
- package/components/Toast/Toast.md +16 -12
- package/components/TokenInput/TokenInput/TokenInput.js.map +1 -1
- package/components/TokenInput/TokenInput.d.ts +44 -1
- package/components/TokenInput/TokenInput.md +100 -0
- package/index.d.ts +1 -0
- package/index.js +1 -0
- package/index.js.map +1 -1
- package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js +33 -14
- package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js.map +1 -1
- package/internal/DateSelect/DateSelect/DateSelect.js +4 -2
- package/internal/DateSelect/DateSelect/DateSelect.js.map +1 -1
- package/internal/InputLikeText/InputLikeText/InputLikeText.js +5 -2
- package/internal/InputLikeText/InputLikeText/InputLikeText.js.map +1 -1
- package/internal/NativeDateInput/utils/utils.js.map +1 -1
- package/internal/NativeDateInput/utils.d.ts +1 -1
- package/internal/PopupMenu/PopupMenu/PopupMenu.js +13 -2
- package/internal/PopupMenu/PopupMenu/PopupMenu.js.map +1 -1
- package/internal/PopupMenu/PopupMenu.d.ts +8 -0
- package/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
- package/internal/ZIndex/ZIndexStorage/ZIndexStorage.js +1 -6
- package/internal/ZIndex/ZIndexStorage/ZIndexStorage.js.map +1 -1
- package/internal/ZIndex/ZIndexStorage.d.ts +0 -5
- package/internal/icons/SpinnerIcon.styles/SpinnerIcon.styles.js +1 -1
- package/internal/icons/SpinnerIcon.styles/SpinnerIcon.styles.js.map +1 -1
- package/internal/themes/DefaultTheme/DefaultTheme.js +25 -80
- package/internal/themes/DefaultTheme/DefaultTheme.js.map +1 -1
- package/internal/themes/DefaultTheme.d.ts +4 -15
- package/internal/themes/Theme2022/Theme2022.js +6 -21
- package/internal/themes/Theme2022/Theme2022.js.map +1 -1
- package/internal/themes/Theme2022.d.ts +0 -3
- package/lib/date/InternalDate/InternalDate.js +1 -1
- package/lib/date/InternalDate/InternalDate.js.map +1 -1
- package/lib/date/InternalDate.d.ts +1 -1
- package/lib/locale/decorators/decorators.js.map +1 -1
- package/lib/locale/types/types.js.map +1 -1
- package/lib/locale/types.d.ts +2 -0
- package/package.json +2 -5
- package/typings/html.d.ts +1 -1
- package/typings/utility-types.d.ts +6 -0
- package/cjs/components/DatePicker/Picker.styles.d.ts +0 -5
- package/cjs/components/DatePicker/Picker.styles.js +0 -39
- package/cjs/components/DatePicker/Picker.styles.js.map +0 -1
- package/cjs/internal/Calendar/Calendar.d.ts +0 -63
- package/cjs/internal/Calendar/Calendar.js +0 -387
- package/cjs/internal/Calendar/Calendar.js.map +0 -1
- package/cjs/internal/Calendar/Calendar.styles.js +0 -23
- package/cjs/internal/Calendar/Calendar.styles.js.map +0 -1
- package/cjs/internal/Calendar/CalendarUtils.js +0 -71
- package/cjs/internal/Calendar/CalendarUtils.js.map +0 -1
- package/cjs/internal/Calendar/Month.js.map +0 -1
- package/components/DatePicker/Picker.styles/Picker.styles.js +0 -13
- package/components/DatePicker/Picker.styles/Picker.styles.js.map +0 -1
- package/components/DatePicker/Picker.styles/package.json +0 -6
- package/components/DatePicker/Picker.styles.d.ts +0 -5
- package/internal/Calendar/Calendar/Calendar.js.map +0 -1
- package/internal/Calendar/Calendar.d.ts +0 -63
- package/internal/Calendar/Calendar.styles/Calendar.styles.js +0 -14
- package/internal/Calendar/Calendar.styles/Calendar.styles.js.map +0 -1
- package/internal/Calendar/CalendarUtils/CalendarUtils.js.map +0 -1
- package/internal/Calendar/Month/Month.js.map +0 -1
- package/internal/Calendar/MonthView/MonthView.js.map +0 -1
- /package/cjs/{internal → components}/Calendar/CalendarDateShape.d.ts +0 -0
- /package/cjs/{internal → components}/Calendar/CalendarDateShape.js +0 -0
- /package/cjs/{internal → components}/Calendar/CalendarDateShape.js.map +0 -0
- /package/cjs/{internal → components}/Calendar/CalendarScrollEvents.d.ts +0 -0
- /package/cjs/{internal → components}/Calendar/CalendarScrollEvents.js +0 -0
- /package/cjs/{internal → components}/Calendar/CalendarScrollEvents.js.map +0 -0
- /package/cjs/{internal → components}/Calendar/DayCellView.d.ts +0 -0
- /package/cjs/{internal → components}/Calendar/DayCellView.js +0 -0
- /package/cjs/{internal → components}/Calendar/DayCellView.js.map +0 -0
- /package/cjs/{internal → components}/Calendar/DayCellView.styles.d.ts +0 -0
- /package/cjs/{internal → components}/Calendar/DayCellView.styles.js +0 -0
- /package/cjs/{internal → components}/Calendar/DayCellView.styles.js.map +0 -0
- /package/cjs/{internal → components}/Calendar/DayCellViewModel.d.ts +0 -0
- /package/cjs/{internal → components}/Calendar/DayCellViewModel.js +0 -0
- /package/cjs/{internal → components}/Calendar/DayCellViewModel.js.map +0 -0
- /package/cjs/{internal → components}/Calendar/Month.d.ts +0 -0
- /package/cjs/{internal → components}/Calendar/Month.js +0 -0
- /package/cjs/{internal → components}/Calendar/MonthView.styles.d.ts +0 -0
- /package/cjs/{internal → components}/Calendar/MonthView.styles.js +0 -0
- /package/cjs/{internal → components}/Calendar/MonthView.styles.js.map +0 -0
- /package/cjs/{internal → components}/Calendar/MonthViewModel.d.ts +0 -0
- /package/cjs/{internal → components}/Calendar/MonthViewModel.js +0 -0
- /package/cjs/{internal → components}/Calendar/MonthViewModel.js.map +0 -0
- /package/cjs/{internal → components}/Calendar/config.d.ts +0 -0
- /package/cjs/{internal → components}/Calendar/config.js +0 -0
- /package/cjs/{internal → components}/Calendar/config.js.map +0 -0
- /package/cjs/{internal → components}/Calendar/index.d.ts +0 -0
- /package/cjs/{internal → components}/Calendar/index.js +0 -0
- /package/cjs/{internal → components}/Calendar/index.js.map +0 -0
- /package/{internal → components}/Calendar/CalendarDateShape/CalendarDateShape.js +0 -0
- /package/{internal → components}/Calendar/CalendarDateShape/CalendarDateShape.js.map +0 -0
- /package/{internal → components}/Calendar/CalendarDateShape.d.ts +0 -0
- /package/{internal → components}/Calendar/CalendarScrollEvents/CalendarScrollEvents.js +0 -0
- /package/{internal → components}/Calendar/CalendarScrollEvents/CalendarScrollEvents.js.map +0 -0
- /package/{internal → components}/Calendar/CalendarScrollEvents.d.ts +0 -0
- /package/{internal → components}/Calendar/DayCellView/DayCellView.js +0 -0
- /package/{internal → components}/Calendar/DayCellView/DayCellView.js.map +0 -0
- /package/{internal → components}/Calendar/DayCellView.d.ts +0 -0
- /package/{internal → components}/Calendar/DayCellView.styles/DayCellView.styles.js +0 -0
- /package/{internal → components}/Calendar/DayCellView.styles/DayCellView.styles.js.map +0 -0
- /package/{internal → components}/Calendar/DayCellView.styles.d.ts +0 -0
- /package/{internal → components}/Calendar/DayCellViewModel/DayCellViewModel.js +0 -0
- /package/{internal → components}/Calendar/DayCellViewModel/DayCellViewModel.js.map +0 -0
- /package/{internal → components}/Calendar/DayCellViewModel.d.ts +0 -0
- /package/{internal → components}/Calendar/Month/Month.js +0 -0
- /package/{internal → components}/Calendar/Month.d.ts +0 -0
- /package/{internal → components}/Calendar/MonthView.styles/MonthView.styles.js +0 -0
- /package/{internal → components}/Calendar/MonthView.styles/MonthView.styles.js.map +0 -0
- /package/{internal → components}/Calendar/MonthView.styles.d.ts +0 -0
- /package/{internal → components}/Calendar/MonthViewModel/MonthViewModel.js +0 -0
- /package/{internal → components}/Calendar/MonthViewModel/MonthViewModel.js.map +0 -0
- /package/{internal → components}/Calendar/MonthViewModel.d.ts +0 -0
- /package/{internal → components}/Calendar/config/config.js +0 -0
- /package/{internal → components}/Calendar/config/config.js.map +0 -0
- /package/{internal → components}/Calendar/config.d.ts +0 -0
- /package/{internal → components}/Calendar/index/index.js +0 -0
- /package/{internal → components}/Calendar/index/index.js.map +0 -0
- /package/{internal → components}/Calendar/index.d.ts +0 -0
|
@@ -9,13 +9,28 @@ export declare enum TokenInputType {
|
|
|
9
9
|
}
|
|
10
10
|
export declare type TokenInputMenuAlign = 'left' | 'cursor';
|
|
11
11
|
export interface TokenInputProps<T> extends CommonProps {
|
|
12
|
+
/**
|
|
13
|
+
* Выбранные токены, которые будут отображаться в поле ввода
|
|
14
|
+
*/
|
|
12
15
|
selectedItems?: T[];
|
|
16
|
+
/**
|
|
17
|
+
* Вызывается при добавлении нового токена
|
|
18
|
+
*/
|
|
13
19
|
onValueChange?: (items: T[]) => void;
|
|
14
20
|
onMouseEnter?: MouseEventHandler<HTMLDivElement>;
|
|
15
21
|
onMouseLeave?: MouseEventHandler<HTMLDivElement>;
|
|
16
22
|
onFocus?: FocusEventHandler<HTMLTextAreaElement>;
|
|
17
23
|
onBlur?: FocusEventHandler<HTMLTextAreaElement>;
|
|
18
24
|
autoFocus?: boolean;
|
|
25
|
+
/**
|
|
26
|
+
* Тип инпута. Возможные значения:
|
|
27
|
+
*
|
|
28
|
+
* `TokenInputType.WithReference` (можно выбирать токены только из предложенных, нельзя добавить новые)
|
|
29
|
+
*
|
|
30
|
+
* `TokenInputType.WithoutReference` (можно добавлять токены, но нельзя выбирать)
|
|
31
|
+
*
|
|
32
|
+
* `TokenInputType.Combined` (можно и выбирать, и добавлять)
|
|
33
|
+
*/
|
|
19
34
|
type?: TokenInputType;
|
|
20
35
|
/**
|
|
21
36
|
* Ширина выпадающего меню может быть указана как 'auto'
|
|
@@ -26,6 +41,9 @@ export interface TokenInputProps<T> extends CommonProps {
|
|
|
26
41
|
* (по ширине текста)
|
|
27
42
|
*/
|
|
28
43
|
menuWidth?: React.CSSProperties['width'];
|
|
44
|
+
/**
|
|
45
|
+
* Определяет выравнивание меню. Принимает значения `left` и `cursor`
|
|
46
|
+
*/
|
|
29
47
|
menuAlign?: TokenInputMenuAlign;
|
|
30
48
|
/**
|
|
31
49
|
* Функция поиска элементов, должна возвращать Promise с массивом элементов.
|
|
@@ -35,8 +53,17 @@ export interface TokenInputProps<T> extends CommonProps {
|
|
|
35
53
|
* свойства `renderItem`, `valueToString`
|
|
36
54
|
*/
|
|
37
55
|
getItems?: (query: string) => Promise<T[]>;
|
|
56
|
+
/**
|
|
57
|
+
* Скрывает меню при пустом вводе
|
|
58
|
+
*/
|
|
38
59
|
hideMenuIfEmptyInputValue?: boolean;
|
|
60
|
+
/**
|
|
61
|
+
* Позволяет настроить отображение элемента списка
|
|
62
|
+
*/
|
|
39
63
|
renderItem?: (item: T, state: MenuItemState) => React.ReactNode | null;
|
|
64
|
+
/**
|
|
65
|
+
* Позволяет настроить отображение выбранного значения
|
|
66
|
+
*/
|
|
40
67
|
renderValue?: (item: T) => React.ReactNode;
|
|
41
68
|
/**
|
|
42
69
|
* Функция должна возвращать строковое представление токена
|
|
@@ -53,10 +80,22 @@ export interface TokenInputProps<T> extends CommonProps {
|
|
|
53
80
|
* Необходим для работы `renderTotalCount`
|
|
54
81
|
*/
|
|
55
82
|
totalCount?: number;
|
|
83
|
+
/**
|
|
84
|
+
* Отображает заданное содержимое, если ничего не найдено. Работает если не рендерится `AddButton`
|
|
85
|
+
*/
|
|
56
86
|
renderNotFound?: () => React.ReactNode;
|
|
87
|
+
/**
|
|
88
|
+
* Преобразует значение в элемент списка
|
|
89
|
+
*/
|
|
57
90
|
valueToItem?: (item: string) => T;
|
|
91
|
+
/**
|
|
92
|
+
* Определяет уникальный ключ по элементу
|
|
93
|
+
*/
|
|
58
94
|
toKey?: (item: T) => string | number | undefined;
|
|
59
95
|
placeholder?: string;
|
|
96
|
+
/**
|
|
97
|
+
* Символы, которые разделяют введённый текст на токены
|
|
98
|
+
*/
|
|
60
99
|
delimiters?: string[];
|
|
61
100
|
/**
|
|
62
101
|
* Состояние валидации при ошибке.
|
|
@@ -69,13 +108,17 @@ export interface TokenInputProps<T> extends CommonProps {
|
|
|
69
108
|
disabled?: boolean;
|
|
70
109
|
width?: string | number;
|
|
71
110
|
maxMenuHeight?: number | string;
|
|
111
|
+
/**
|
|
112
|
+
* Позволяет настроить отображение токена, предоставляя возможность кастомизации внешнего вида и поведения токена
|
|
113
|
+
*/
|
|
72
114
|
renderToken?: (item: T, props: Partial<TokenProps>) => ReactNode;
|
|
73
115
|
/**
|
|
74
116
|
* Вызывается при изменении текста в поле ввода,
|
|
75
117
|
*/
|
|
76
118
|
onInputValueChange?: (value: string) => void;
|
|
77
119
|
/**
|
|
78
|
-
* Функция отрисовки кнопки добавления в выпадающем
|
|
120
|
+
* Функция отрисовки кнопки добавления в выпадающем списке.
|
|
121
|
+
* Работает только когда тип инпута = `TokenInputType.Combined`
|
|
79
122
|
*/
|
|
80
123
|
renderAddButton?: (query?: string, onAddItem?: () => void) => ReactNode;
|
|
81
124
|
/**
|
|
@@ -85,6 +85,106 @@ async function getItems(query) {
|
|
|
85
85
|
/>
|
|
86
86
|
```
|
|
87
87
|
|
|
88
|
+
Показ определенного количества токенов
|
|
89
|
+
```jsx harmony
|
|
90
|
+
import { Token, MenuHeader } from '@skbkontur/react-ui';
|
|
91
|
+
import { TokenInputType } from '@skbkontur/react-ui/components/TokenInput';
|
|
92
|
+
const kladr = require('../ComboBox/__mocks__/./kladr.json');
|
|
93
|
+
|
|
94
|
+
const maxItems = 5;
|
|
95
|
+
|
|
96
|
+
const [value, setValue] = React.useState(null);
|
|
97
|
+
|
|
98
|
+
const delay = time => args => new Promise(resolve => setTimeout(resolve, time, args));
|
|
99
|
+
|
|
100
|
+
const getCities = (query) => {
|
|
101
|
+
const items = kladr.map(x => x.City).filter(x => x.toLowerCase().includes(query.toLowerCase()) || x.toString(10) === query);
|
|
102
|
+
const result = items.slice(0, maxItems);
|
|
103
|
+
return Promise.resolve({
|
|
104
|
+
foundItems: result,
|
|
105
|
+
totalCount: items.length,
|
|
106
|
+
}).then(delay(300));
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
const renderTotalCount = (foundCount, totalCount) =>
|
|
110
|
+
foundCount < totalCount ? (
|
|
111
|
+
<MenuHeader>
|
|
112
|
+
Показано {foundCount} из {totalCount} найденных городов.
|
|
113
|
+
</MenuHeader>
|
|
114
|
+
) : (
|
|
115
|
+
[]
|
|
116
|
+
);
|
|
117
|
+
|
|
118
|
+
const getItems = query =>
|
|
119
|
+
getCities(query).then(({ foundItems, totalCount }) =>
|
|
120
|
+
[].concat(
|
|
121
|
+
foundItems,
|
|
122
|
+
renderTotalCount(foundItems.length, totalCount),
|
|
123
|
+
),
|
|
124
|
+
);
|
|
125
|
+
|
|
126
|
+
<div style={{ width: '300px' }}>
|
|
127
|
+
<TokenInput
|
|
128
|
+
type={TokenInputType.Combined}
|
|
129
|
+
value={value}
|
|
130
|
+
onValueChange={setValue}
|
|
131
|
+
getItems={getItems}
|
|
132
|
+
placeholder="Начните вводить название"
|
|
133
|
+
renderToken={(item, tokenProps) => (
|
|
134
|
+
<Token key={item.toString()} {...tokenProps} >
|
|
135
|
+
{item}
|
|
136
|
+
</Token>
|
|
137
|
+
)}
|
|
138
|
+
/>
|
|
139
|
+
</div>;
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
Пример с кастомным типом элементов меню
|
|
143
|
+
```jsx harmony
|
|
144
|
+
import { Token } from '@skbkontur/react-ui';
|
|
145
|
+
import { TokenInputType } from '@skbkontur/react-ui/components/TokenInput';
|
|
146
|
+
|
|
147
|
+
const [selectedItems, setSelectedItems] = React.useState([]);
|
|
148
|
+
|
|
149
|
+
const delay = time => args => new Promise(resolve => setTimeout(resolve, time, args));
|
|
150
|
+
const getGenericItems = () => [
|
|
151
|
+
{ id: '111', value: 'aaa' },
|
|
152
|
+
{ id: '222', value: 'bbb' },
|
|
153
|
+
{ id: '333', value: 'ccc' },
|
|
154
|
+
{ id: '444', value: 'ddd' },
|
|
155
|
+
];
|
|
156
|
+
const renderItem = (item) => item.value;
|
|
157
|
+
const renderValue = (value) => value.value;
|
|
158
|
+
const valueToItem = (item) => ({
|
|
159
|
+
value: item,
|
|
160
|
+
});
|
|
161
|
+
const getModelItems = async (query) => {
|
|
162
|
+
await delay(400);
|
|
163
|
+
return getGenericItems().filter((s) => s.value.includes(query));
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
<div style={{ width: '300px' }}>
|
|
167
|
+
<TokenInput
|
|
168
|
+
selectedItems={selectedItems}
|
|
169
|
+
renderItem={renderItem}
|
|
170
|
+
renderValue={renderValue}
|
|
171
|
+
valueToItem={valueToItem}
|
|
172
|
+
getItems={getModelItems}
|
|
173
|
+
onValueChange={setSelectedItems}
|
|
174
|
+
placeholder="placeholder"
|
|
175
|
+
type={TokenInputType.Combined}
|
|
176
|
+
renderToken={(item, tokenProps) => (
|
|
177
|
+
<Token
|
|
178
|
+
key={item.id}
|
|
179
|
+
{...tokenProps}
|
|
180
|
+
>
|
|
181
|
+
{item.value}
|
|
182
|
+
</Token>
|
|
183
|
+
)}
|
|
184
|
+
/>
|
|
185
|
+
</div>;
|
|
186
|
+
```
|
|
187
|
+
|
|
88
188
|
#### Локали по умолчанию
|
|
89
189
|
|
|
90
190
|
```typescript static
|
package/index.d.ts
CHANGED
package/index.js
CHANGED
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["index.ts"],"names":["ColorFunctions","DimensionFunctions"],"mappings":"AAAA,cAAc,2BAAd;AACA,cAAc,qBAAd;AACA,cAAc,qBAAd;AACA,cAAc,uBAAd;AACA,cAAc,uBAAd;AACA,cAAc,4BAAd;AACA,cAAc,4BAAd;AACA,cAAc,wBAAd;AACA,cAAc,yBAAd;AACA,cAAc,uBAAd;AACA,cAAc,2BAAd;AACA,cAAc,2BAAd;AACA,cAAc,sBAAd;AACA,cAAc,qBAAd;AACA,cAAc,2BAAd;AACA,cAAc,oBAAd;AACA,cAAc,mBAAd;AACA,cAAc,oBAAd;AACA,cAAc,oBAAd;AACA,cAAc,mBAAd;AACA,cAAc,qBAAd;AACA,cAAc,yBAAd;AACA,cAAc,uBAAd;AACA,cAAc,4BAAd;AACA,cAAc,oBAAd;AACA,cAAc,qBAAd;AACA,cAAc,4BAAd;AACA,cAAc,oBAAd;AACA,cAAc,yBAAd;AACA,cAAc,8BAAd;AACA,cAAc,qBAAd;AACA,cAAc,uBAAd;AACA,cAAc,sBAAd;AACA,cAAc,qBAAd;AACA,cAAc,uBAAd;AACA,cAAc,mBAAd;AACA,cAAc,uBAAd;AACA,cAAc,oBAAd;AACA,cAAc,qBAAd;AACA,cAAc,oBAAd;AACA,cAAc,yBAAd;AACA,cAAc,sBAAd;AACA,cAAc,0BAAd;AACA,cAAc,+BAAd;AACA,cAAc,cAAd;AACA,cAAc,4BAAd;AACA,cAAc,4BAAd;AACA,cAAc,mCAAd;AACA,cAAc,gCAAd;AACA,cAAc,yCAAd;AACA,cAAc,sCAAd;AACA,cAAc,gCAAd;AACA,cAAc,oCAAd;AACA,cAAc,wBAAd,C;AACgC,6B,6BAApBA,c;AACwB,iC,iCAAxBC,kB","sourcesContent":["export * from './components/Autocomplete';\nexport * from './components/Button';\nexport * from './components/Center';\nexport * from './components/Checkbox';\nexport * from './components/ComboBox';\nexport * from './components/CurrencyInput';\nexport * from './components/CurrencyLabel';\nexport * from './components/DateInput';\nexport * from './components/DatePicker';\nexport * from './components/Dropdown';\nexport * from './components/DropdownMenu';\nexport * from './components/FileUploader';\nexport * from './components/FxInput';\nexport * from './components/Gapped';\nexport * from './components/GlobalLoader';\nexport * from './components/Group';\nexport * from './components/Hint';\nexport * from './components/Input';\nexport * from './components/Kebab';\nexport * from './components/Link';\nexport * from './components/Loader';\nexport * from './components/MenuHeader';\nexport * from './components/MenuItem';\nexport * from './components/MenuSeparator';\nexport * from './components/Modal';\nexport * from './components/Paging';\nexport * from './components/PasswordInput';\nexport * from './components/Radio';\nexport * from './components/RadioGroup';\nexport * from './components/ScrollContainer';\nexport * from './components/Select';\nexport * from './components/SidePage';\nexport * from './components/Spinner';\nexport * from './components/Sticky';\nexport * from './components/Switcher';\nexport * from './components/Tabs';\nexport * from './components/Textarea';\nexport * from './components/Toast';\nexport * from './components/Toggle';\nexport * from './components/Token';\nexport * from './components/TokenInput';\nexport * from './components/Tooltip';\nexport * from './components/TooltipMenu';\nexport * from './components/ResponsiveLayout';\nexport * from './lib/locale';\nexport * from './lib/theming/ThemeContext';\nexport * from './lib/theming/ThemeFactory';\nexport * from './lib/theming/themes/DefaultTheme';\nexport * from './lib/theming/themes/DarkTheme';\nexport * from './lib/theming/themes/DefaultTheme8pxOld';\nexport * from './lib/theming/themes/FlatTheme8pxOld';\nexport * from './lib/theming/themes/Theme2022';\nexport * from './lib/theming/themes/Theme2022Dark';\nexport * from './internal/Popup/types';\nexport * as ColorFunctions from './lib/styles/ColorFunctions';\nexport * as DimensionFunctions from './lib/styles/DimensionFunctions';\n"]}
|
|
1
|
+
{"version":3,"sources":["index.ts"],"names":["ColorFunctions","DimensionFunctions"],"mappings":"AAAA,cAAc,2BAAd;AACA,cAAc,qBAAd;AACA,cAAc,uBAAd;AACA,cAAc,qBAAd;AACA,cAAc,uBAAd;AACA,cAAc,uBAAd;AACA,cAAc,4BAAd;AACA,cAAc,4BAAd;AACA,cAAc,wBAAd;AACA,cAAc,yBAAd;AACA,cAAc,uBAAd;AACA,cAAc,2BAAd;AACA,cAAc,2BAAd;AACA,cAAc,sBAAd;AACA,cAAc,qBAAd;AACA,cAAc,2BAAd;AACA,cAAc,oBAAd;AACA,cAAc,mBAAd;AACA,cAAc,oBAAd;AACA,cAAc,oBAAd;AACA,cAAc,mBAAd;AACA,cAAc,qBAAd;AACA,cAAc,yBAAd;AACA,cAAc,uBAAd;AACA,cAAc,4BAAd;AACA,cAAc,oBAAd;AACA,cAAc,qBAAd;AACA,cAAc,4BAAd;AACA,cAAc,oBAAd;AACA,cAAc,yBAAd;AACA,cAAc,8BAAd;AACA,cAAc,qBAAd;AACA,cAAc,uBAAd;AACA,cAAc,sBAAd;AACA,cAAc,qBAAd;AACA,cAAc,uBAAd;AACA,cAAc,mBAAd;AACA,cAAc,uBAAd;AACA,cAAc,oBAAd;AACA,cAAc,qBAAd;AACA,cAAc,oBAAd;AACA,cAAc,yBAAd;AACA,cAAc,sBAAd;AACA,cAAc,0BAAd;AACA,cAAc,+BAAd;AACA,cAAc,cAAd;AACA,cAAc,4BAAd;AACA,cAAc,4BAAd;AACA,cAAc,mCAAd;AACA,cAAc,gCAAd;AACA,cAAc,yCAAd;AACA,cAAc,sCAAd;AACA,cAAc,gCAAd;AACA,cAAc,oCAAd;AACA,cAAc,wBAAd,C;AACgC,6B,6BAApBA,c;AACwB,iC,iCAAxBC,kB","sourcesContent":["export * from './components/Autocomplete';\nexport * from './components/Button';\nexport * from './components/Calendar';\nexport * from './components/Center';\nexport * from './components/Checkbox';\nexport * from './components/ComboBox';\nexport * from './components/CurrencyInput';\nexport * from './components/CurrencyLabel';\nexport * from './components/DateInput';\nexport * from './components/DatePicker';\nexport * from './components/Dropdown';\nexport * from './components/DropdownMenu';\nexport * from './components/FileUploader';\nexport * from './components/FxInput';\nexport * from './components/Gapped';\nexport * from './components/GlobalLoader';\nexport * from './components/Group';\nexport * from './components/Hint';\nexport * from './components/Input';\nexport * from './components/Kebab';\nexport * from './components/Link';\nexport * from './components/Loader';\nexport * from './components/MenuHeader';\nexport * from './components/MenuItem';\nexport * from './components/MenuSeparator';\nexport * from './components/Modal';\nexport * from './components/Paging';\nexport * from './components/PasswordInput';\nexport * from './components/Radio';\nexport * from './components/RadioGroup';\nexport * from './components/ScrollContainer';\nexport * from './components/Select';\nexport * from './components/SidePage';\nexport * from './components/Spinner';\nexport * from './components/Sticky';\nexport * from './components/Switcher';\nexport * from './components/Tabs';\nexport * from './components/Textarea';\nexport * from './components/Toast';\nexport * from './components/Toggle';\nexport * from './components/Token';\nexport * from './components/TokenInput';\nexport * from './components/Tooltip';\nexport * from './components/TooltipMenu';\nexport * from './components/ResponsiveLayout';\nexport * from './lib/locale';\nexport * from './lib/theming/ThemeContext';\nexport * from './lib/theming/ThemeFactory';\nexport * from './lib/theming/themes/DefaultTheme';\nexport * from './lib/theming/themes/DarkTheme';\nexport * from './lib/theming/themes/DefaultTheme8pxOld';\nexport * from './lib/theming/themes/FlatTheme8pxOld';\nexport * from './lib/theming/themes/Theme2022';\nexport * from './lib/theming/themes/Theme2022Dark';\nexport * from './internal/Popup/types';\nexport * as ColorFunctions from './lib/styles/ColorFunctions';\nexport * as DimensionFunctions from './lib/styles/DimensionFunctions';\n"]}
|
|
@@ -7,6 +7,7 @@ var _class, _class2, _temp;
|
|
|
7
7
|
|
|
8
8
|
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
9
9
|
import React from 'react';
|
|
10
|
+
import ReactDOM from 'react-dom';
|
|
10
11
|
import { CancelationError, taskWithDelay } from "../../../lib/utils";
|
|
11
12
|
import { fixClickFocusIE } from "../../../lib/events/fixClickFocusIE";
|
|
12
13
|
import { CommonWrapper } from "../../../internal/CommonWrapper";
|
|
@@ -84,21 +85,39 @@ export var CustomComboBox = responsiveLayout(_class = rootNode(_class = (_temp =
|
|
|
84
85
|
_this.handleBlur();
|
|
85
86
|
};
|
|
86
87
|
|
|
87
|
-
_this.dispatch = function (action) {
|
|
88
|
-
|
|
89
|
-
|
|
88
|
+
_this.dispatch = function (action, sync) {
|
|
89
|
+
if (sync === void 0) {
|
|
90
|
+
sync = true;
|
|
91
|
+
}
|
|
90
92
|
|
|
91
|
-
|
|
92
|
-
var
|
|
93
|
+
var updateState = function updateState(action) {
|
|
94
|
+
var effects;
|
|
95
|
+
var nextState;
|
|
93
96
|
|
|
94
|
-
|
|
97
|
+
_this.setState(function (state) {
|
|
98
|
+
var stateAndEffect = _this.reducer(state, _this.props, action);
|
|
95
99
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
100
|
+
var _ref = stateAndEffect instanceof Array ? stateAndEffect : [stateAndEffect, []];
|
|
101
|
+
|
|
102
|
+
nextState = _ref[0];
|
|
103
|
+
effects = _ref[1];
|
|
104
|
+
return nextState;
|
|
105
|
+
}, function () {
|
|
106
|
+
effects.forEach(_this.handleEffect);
|
|
107
|
+
});
|
|
108
|
+
};
|
|
109
|
+
|
|
110
|
+
var isReact18 = React.version.search('18') === 0;
|
|
111
|
+
|
|
112
|
+
if (sync && isReact18) {
|
|
113
|
+
return setTimeout(function () {
|
|
114
|
+
return ReactDOM.flushSync(function () {
|
|
115
|
+
updateState(action);
|
|
116
|
+
});
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
return updateState(action);
|
|
102
121
|
};
|
|
103
122
|
|
|
104
123
|
_this.handleEffect = function (effect) {
|
|
@@ -414,7 +433,7 @@ export var CustomComboBox = responsiveLayout(_class = rootNode(_class = (_temp =
|
|
|
414
433
|
_proto.componentDidMount = function componentDidMount() {
|
|
415
434
|
this.dispatch({
|
|
416
435
|
type: 'Mount'
|
|
417
|
-
});
|
|
436
|
+
}, false);
|
|
418
437
|
|
|
419
438
|
if (this.props.autoFocus) {
|
|
420
439
|
this.focus();
|
|
@@ -430,7 +449,7 @@ export var CustomComboBox = responsiveLayout(_class = rootNode(_class = (_temp =
|
|
|
430
449
|
type: 'DidUpdate',
|
|
431
450
|
prevProps: prevProps,
|
|
432
451
|
prevState: prevState
|
|
433
|
-
});
|
|
452
|
+
}, false);
|
|
434
453
|
}
|
|
435
454
|
/**
|
|
436
455
|
* @public
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["CustomComboBox.tsx"],"names":["React","CancelationError","taskWithDelay","fixClickFocusIE","CommonWrapper","responsiveLayout","rootNode","ComboBoxRequestStatus","reducer","ComboBoxView","DELAY_BEFORE_SHOW_LOADER","LOADER_SHOW_TIME","DefaultState","inputChanged","editing","items","loading","opened","focused","textValue","repeatRequest","undefined","requestStatus","Unknown","CustomComboBoxDataTids","comboBoxView","CustomComboBox","state","requestId","cancelationToken","cancelLoaderDelay","focus","props","disabled","input","inputLikeText","selectInputText","selectAll","blur","handleBlur","dispatch","action","effects","nextState","setState","stateAndEffect","Array","forEach","handleEffect","effect","getState","getProps","handleValueChange","value","type","keepFocus","isMobileLayout","handleFocus","handleClickOutside","e","close","setTimeout","handleInputBlur","handleInputClick","search","query","getItems","cancelPromise","Promise","_","reject","expectingId","loaderShowDelay","resolve","cancelLoader","race","code","cancelSearch","open","render","viewProps","align","borderless","disablePortal","error","menuAlign","drawArrow","menuPos","placeholder","size","totalCount","warning","width","maxLength","maxMenuHeight","leftIcon","rightIcon","inputMode","onValueChange","onClickOutside","onFocus","onFocusOutside","onInputBlur","onInputValueChange","onInputFocus","onInputClick","onInputKeyDown","event","persist","onMouseEnter","onMouseOver","onMouseLeave","renderItem","renderNotFound","itemWrapper","renderValue","renderTotalCount","renderAddButton","refInput","refMenu","menu","refInputLikeText","setRootNode","componentDidMount","autoFocus","componentDidUpdate","prevProps","prevState","reset","PureComponent","__KONTUR_REACT_UI__"],"mappings":"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","sourcesContent":["import React, { AriaAttributes } from 'react';\n\nimport { Nullable } from '../../typings/utility-types';\nimport { Input, InputIconType } from '../../components/Input';\nimport { Menu } from '../Menu';\nimport { InputLikeText } from '../InputLikeText';\nimport { MenuItemState } from '../../components/MenuItem';\nimport { CancelationError, taskWithDelay } from '../../lib/utils';\nimport { fixClickFocusIE } from '../../lib/events/fixClickFocusIE';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { responsiveLayout } from '../../components/ResponsiveLayout/decorator';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { DropdownContainerProps } from '../DropdownContainer';\n\nimport { ComboBoxRequestStatus } from './CustomComboBoxTypes';\nimport { CustomComboBoxAction, CustomComboBoxEffect, reducer } from './CustomComboBoxReducer';\nimport { ComboBoxView } from './ComboBoxView';\n\nexport interface CustomComboBoxProps<T> extends Pick<DropdownContainerProps, 'menuPos'>, CommonProps {\n align?: 'left' | 'center' | 'right';\n autoFocus?: boolean;\n borderless?: boolean;\n disablePortal?: boolean;\n disabled?: boolean;\n /**\n * Cостояние валидации при ошибке.\n */\n error?: boolean;\n maxLength?: number;\n menuAlign?: 'left' | 'right';\n drawArrow?: boolean;\n leftIcon?: InputIconType;\n rightIcon?: InputIconType;\n searchOnFocus?: boolean;\n onValueChange?: (value: T) => void;\n onInputValueChange?: (value: string) => Nullable<string> | void;\n onUnexpectedInput?: (value: string) => void | null | T;\n onFocus?: () => void;\n onBlur?: () => void;\n onMouseEnter?: (e: React.MouseEvent) => void;\n onMouseOver?: (e: React.MouseEvent) => void;\n onMouseLeave?: (e: React.MouseEvent) => void;\n onInputKeyDown?: (e: React.KeyboardEvent<HTMLElement>) => void;\n placeholder?: string;\n size?: 'small' | 'medium' | 'large';\n totalCount?: number;\n value?: Nullable<T>;\n /**\n * Cостояние валидации при предупреждении.\n */\n warning?: boolean;\n 'aria-describedby'?: AriaAttributes['aria-describedby'];\n width?: string | number;\n maxMenuHeight?: number | string;\n renderNotFound?: () => React.ReactNode;\n renderTotalCount?: (found: number, total: number) => React.ReactNode;\n renderItem: (item: T, state?: MenuItemState) => React.ReactNode;\n itemWrapper?: (item?: T) => React.ComponentType<unknown>;\n renderValue: (value: T) => React.ReactNode;\n renderAddButton?: (query?: string) => React.ReactNode;\n valueToString: (value: T) => string;\n itemToValue: (item: T) => string | number;\n getItems: (query: string) => Promise<T[]>;\n inputMode?: React.HTMLAttributes<HTMLInputElement>['inputMode'];\n}\n\nexport interface CustomComboBoxState<T> {\n editing: boolean;\n loading: boolean;\n opened: boolean;\n textValue: string;\n items: Nullable<T[]>;\n inputChanged: boolean;\n focused: boolean;\n repeatRequest: () => void;\n requestStatus: ComboBoxRequestStatus;\n}\n\nexport const DELAY_BEFORE_SHOW_LOADER = 300;\nexport const LOADER_SHOW_TIME = 1000;\n\nexport const DefaultState = {\n inputChanged: false,\n editing: false,\n items: null,\n loading: false,\n opened: false,\n focused: false,\n textValue: '',\n repeatRequest: () => undefined,\n requestStatus: ComboBoxRequestStatus.Unknown,\n};\n\nexport const CustomComboBoxDataTids = {\n comboBoxView: 'ComboBoxView__root',\n} as const;\n\n@responsiveLayout\n@rootNode\nexport class CustomComboBox<T> extends React.PureComponent<CustomComboBoxProps<T>, CustomComboBoxState<T>> {\n public static __KONTUR_REACT_UI__ = 'CustomComboBox';\n\n public state: CustomComboBoxState<T> = DefaultState;\n public input: Nullable<Input>;\n public menu: Nullable<Menu>;\n public inputLikeText: Nullable<InputLikeText>;\n public requestId = 0;\n public loaderShowDelay: Nullable<Promise<void>>;\n private focused = false;\n private cancelationToken: Nullable<(reason?: Error) => void> = null;\n private isMobileLayout!: boolean;\n\n private reducer = reducer;\n public cancelLoaderDelay: () => void = () => null;\n\n /**\n * @public\n */\n public focus = () => {\n if (this.props.disabled) {\n return;\n }\n\n if (this.input) {\n this.input.focus();\n } else if (this.inputLikeText) {\n this.inputLikeText.focus();\n }\n };\n\n /**\n * @public\n */\n public selectInputText = () => {\n if (this.props.disabled) {\n return;\n }\n if (this.input) {\n this.input.selectAll();\n }\n };\n\n /**\n * @public\n */\n public blur = () => {\n if (this.props.disabled) {\n return;\n }\n\n this.handleBlur();\n };\n private setRootNode!: TSetRootNode;\n\n /**\n * @public\n */\n public async search(query: string = this.state.textValue) {\n const { getItems } = this.props;\n\n const cancelPromise: Promise<never> = new Promise((_, reject) => (this.cancelationToken = reject));\n this.requestId += 1;\n const expectingId = this.requestId;\n\n if (!this.loaderShowDelay) {\n this.loaderShowDelay = new Promise<void>((resolve) => {\n const cancelLoader = taskWithDelay(() => {\n this.dispatch({ type: 'RequestItems' });\n setTimeout(resolve, LOADER_SHOW_TIME);\n }, DELAY_BEFORE_SHOW_LOADER);\n\n cancelPromise.catch(() => cancelLoader());\n\n this.cancelLoaderDelay = () => {\n cancelLoader();\n resolve();\n };\n });\n }\n\n try {\n const items = await Promise.race([getItems(query), cancelPromise]);\n if (this.state.loading) {\n await Promise.race([this.loaderShowDelay, cancelPromise]);\n }\n if (expectingId === this.requestId) {\n this.dispatch({\n type: 'ReceiveItems',\n items,\n });\n }\n } catch (error) {\n if (error && error.code === 'CancelationError') {\n this.dispatch({ type: 'CancelRequest' });\n } else if (expectingId === this.requestId) {\n this.dispatch({\n type: 'RequestFailure',\n repeatRequest: () => {\n this.search(query);\n if (this.input) {\n this.input.focus();\n }\n },\n });\n }\n } finally {\n if (expectingId === this.requestId) {\n if (!this.state.loading) {\n this.cancelLoaderDelay();\n }\n this.cancelationToken = null;\n this.loaderShowDelay = null;\n }\n }\n }\n\n /**\n * @public\n */\n public cancelSearch() {\n if (this.cancelationToken) {\n this.cancelationToken(new CancelationError());\n }\n }\n\n /**\n * @public\n */\n public open() {\n this.dispatch({ type: 'Open' });\n }\n\n /**\n * @public\n */\n public close() {\n this.dispatch({ type: 'Close' });\n }\n\n public render() {\n const viewProps = {\n align: this.props.align,\n borderless: this.props.borderless,\n disabled: this.props.disabled,\n disablePortal: this.props.disablePortal,\n editing: this.state.editing,\n error: this.props.error,\n items: this.state.items,\n loading: this.state.loading,\n menuAlign: this.props.menuAlign,\n opened: this.state.opened,\n drawArrow: this.props.drawArrow,\n menuPos: this.props.menuPos,\n placeholder: this.props.placeholder,\n size: this.props.size,\n textValue: this.state.textValue,\n totalCount: this.props.totalCount,\n value: this.props.value,\n warning: this.props.warning,\n 'aria-describedby': this.props['aria-describedby'],\n width: this.props.width,\n maxLength: this.props.maxLength,\n maxMenuHeight: this.props.maxMenuHeight,\n leftIcon: this.props.leftIcon,\n rightIcon: this.props.rightIcon,\n inputMode: this.props.inputMode,\n\n onValueChange: this.handleValueChange,\n onClickOutside: this.handleClickOutside,\n onFocus: this.handleFocus,\n onFocusOutside: this.handleBlur,\n onInputBlur: this.handleInputBlur,\n onInputValueChange: (value: string) => this.dispatch({ type: 'TextChange', value }),\n onInputFocus: this.handleFocus,\n onInputClick: this.handleInputClick,\n onInputKeyDown: (event: React.KeyboardEvent) => {\n event.persist();\n this.dispatch({ type: 'KeyPress', event });\n },\n onMouseEnter: this.props.onMouseEnter,\n onMouseOver: this.props.onMouseOver,\n onMouseLeave: this.props.onMouseLeave,\n renderItem: this.props.renderItem,\n renderNotFound: this.props.renderNotFound,\n itemWrapper: this.props.itemWrapper,\n renderValue: this.props.renderValue,\n renderTotalCount: this.props.renderTotalCount,\n renderAddButton: this.props.renderAddButton,\n repeatRequest: this.state.repeatRequest,\n requestStatus: this.state.requestStatus,\n\n refInput: (input: Nullable<Input>) => {\n this.input = input;\n },\n refMenu: (menu: Nullable<Menu>) => {\n this.menu = menu;\n },\n refInputLikeText: (inputLikeText: Nullable<InputLikeText>) => {\n this.inputLikeText = inputLikeText;\n },\n };\n\n return (\n <CommonWrapper {...this.props}>\n <ComboBoxView {...viewProps} ref={this.setRootNode} />\n </CommonWrapper>\n );\n }\n\n public componentDidMount() {\n this.dispatch({ type: 'Mount' });\n if (this.props.autoFocus) {\n this.focus();\n }\n }\n\n public componentDidUpdate(prevProps: CustomComboBoxProps<T>, prevState: CustomComboBoxState<T>) {\n if (prevState.editing && !this.state.editing) {\n this.handleBlur();\n }\n this.dispatch({ type: 'DidUpdate', prevProps, prevState });\n }\n\n /**\n * @public\n */\n public reset() {\n this.dispatch({ type: 'Reset' });\n }\n\n private dispatch = (action: CustomComboBoxAction<T>) => {\n let effects: Array<CustomComboBoxEffect<T>>;\n let nextState: Pick<CustomComboBoxState<T>, never>;\n\n this.setState(\n (state) => {\n const stateAndEffect = this.reducer(state, this.props, action);\n\n [nextState, effects] = stateAndEffect instanceof Array ? stateAndEffect : [stateAndEffect, []];\n\n return nextState;\n },\n () => {\n effects.forEach(this.handleEffect);\n },\n );\n };\n\n private handleEffect = (effect: CustomComboBoxEffect<T>) => {\n effect(this.dispatch, this.getState, this.getProps, () => this);\n };\n\n private getProps = () => this.props;\n\n private getState = () => this.state;\n\n private handleValueChange = (value: T) => {\n this.dispatch({\n type: 'ValueChange',\n value,\n keepFocus: !this.isMobileLayout,\n });\n };\n\n private handleFocus = () => {\n if (this.focused) {\n return;\n }\n this.focused = true;\n this.dispatch({ type: 'Focus' });\n };\n\n private handleClickOutside = (e: Event) => {\n fixClickFocusIE(e);\n this.handleBlur();\n };\n\n private handleBlur = () => {\n if (!this.focused) {\n if (this.state.opened) {\n this.close();\n }\n return;\n }\n\n this.focused = false;\n // workaround for the similar bug with focusout\n // in Firefox, Chrome and IE\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1363964\n setTimeout(() => {\n this.dispatch({ type: 'Blur' });\n });\n };\n\n private handleInputBlur = () => {\n // If menu opened, RenderLayer is active and\n // it would call handleFocusOutside\n // In that way handleBlur would be called\n\n // TODO: add check for mobile layout, to call `handleBlur`\n\n if (this.state.opened) {\n return;\n }\n this.handleBlur();\n };\n\n private handleInputClick = () => {\n if (!this.cancelationToken) {\n this.dispatch({ type: 'InputClick' });\n }\n };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["CustomComboBox.tsx"],"names":["React","ReactDOM","CancelationError","taskWithDelay","fixClickFocusIE","CommonWrapper","responsiveLayout","rootNode","ComboBoxRequestStatus","reducer","ComboBoxView","DELAY_BEFORE_SHOW_LOADER","LOADER_SHOW_TIME","DefaultState","inputChanged","editing","items","loading","opened","focused","textValue","repeatRequest","undefined","requestStatus","Unknown","CustomComboBoxDataTids","comboBoxView","CustomComboBox","state","requestId","cancelationToken","cancelLoaderDelay","focus","props","disabled","input","inputLikeText","selectInputText","selectAll","blur","handleBlur","dispatch","action","sync","updateState","effects","nextState","setState","stateAndEffect","Array","forEach","handleEffect","isReact18","version","search","setTimeout","flushSync","effect","getState","getProps","handleValueChange","value","type","keepFocus","isMobileLayout","handleFocus","handleClickOutside","e","close","handleInputBlur","handleInputClick","query","getItems","cancelPromise","Promise","_","reject","expectingId","loaderShowDelay","resolve","cancelLoader","race","code","cancelSearch","open","render","viewProps","align","borderless","disablePortal","error","menuAlign","drawArrow","menuPos","placeholder","size","totalCount","warning","width","maxLength","maxMenuHeight","leftIcon","rightIcon","inputMode","onValueChange","onClickOutside","onFocus","onFocusOutside","onInputBlur","onInputValueChange","onInputFocus","onInputClick","onInputKeyDown","event","persist","onMouseEnter","onMouseOver","onMouseLeave","renderItem","renderNotFound","itemWrapper","renderValue","renderTotalCount","renderAddButton","refInput","refMenu","menu","refInputLikeText","setRootNode","componentDidMount","autoFocus","componentDidUpdate","prevProps","prevState","reset","PureComponent","__KONTUR_REACT_UI__"],"mappings":"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","sourcesContent":["import React, { AriaAttributes } from 'react';\nimport ReactDOM from 'react-dom';\n\nimport { Nullable } from '../../typings/utility-types';\nimport { Input, InputIconType } from '../../components/Input';\nimport { Menu } from '../Menu';\nimport { InputLikeText } from '../InputLikeText';\nimport { MenuItemState } from '../../components/MenuItem';\nimport { CancelationError, taskWithDelay } from '../../lib/utils';\nimport { fixClickFocusIE } from '../../lib/events/fixClickFocusIE';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { responsiveLayout } from '../../components/ResponsiveLayout/decorator';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { DropdownContainerProps } from '../DropdownContainer';\n\nimport { ComboBoxRequestStatus } from './CustomComboBoxTypes';\nimport { CustomComboBoxAction, CustomComboBoxEffect, reducer } from './CustomComboBoxReducer';\nimport { ComboBoxView } from './ComboBoxView';\n\nexport interface CustomComboBoxProps<T> extends Pick<DropdownContainerProps, 'menuPos'>, CommonProps {\n align?: 'left' | 'center' | 'right';\n autoFocus?: boolean;\n borderless?: boolean;\n disablePortal?: boolean;\n disabled?: boolean;\n /**\n * Cостояние валидации при ошибке.\n */\n error?: boolean;\n maxLength?: number;\n menuAlign?: 'left' | 'right';\n drawArrow?: boolean;\n leftIcon?: InputIconType;\n rightIcon?: InputIconType;\n searchOnFocus?: boolean;\n onValueChange?: (value: T) => void;\n onInputValueChange?: (value: string) => Nullable<string> | void;\n onUnexpectedInput?: (value: string) => void | null | T;\n onFocus?: () => void;\n onBlur?: () => void;\n onMouseEnter?: (e: React.MouseEvent) => void;\n onMouseOver?: (e: React.MouseEvent) => void;\n onMouseLeave?: (e: React.MouseEvent) => void;\n onInputKeyDown?: (e: React.KeyboardEvent<HTMLElement>) => void;\n placeholder?: string;\n size?: 'small' | 'medium' | 'large';\n totalCount?: number;\n value?: Nullable<T>;\n /**\n * Cостояние валидации при предупреждении.\n */\n warning?: boolean;\n 'aria-describedby'?: AriaAttributes['aria-describedby'];\n width?: string | number;\n maxMenuHeight?: number | string;\n renderNotFound?: () => React.ReactNode;\n renderTotalCount?: (found: number, total: number) => React.ReactNode;\n renderItem: (item: T, state?: MenuItemState) => React.ReactNode;\n itemWrapper?: (item?: T) => React.ComponentType<unknown>;\n renderValue: (value: T) => React.ReactNode;\n renderAddButton?: (query?: string) => React.ReactNode;\n valueToString: (value: T) => string;\n itemToValue: (item: T) => string | number;\n getItems: (query: string) => Promise<T[]>;\n inputMode?: React.HTMLAttributes<HTMLInputElement>['inputMode'];\n}\n\nexport interface CustomComboBoxState<T> {\n editing: boolean;\n loading: boolean;\n opened: boolean;\n textValue: string;\n items: Nullable<T[]>;\n inputChanged: boolean;\n focused: boolean;\n repeatRequest: () => void;\n requestStatus: ComboBoxRequestStatus;\n}\n\nexport const DELAY_BEFORE_SHOW_LOADER = 300;\nexport const LOADER_SHOW_TIME = 1000;\n\nexport const DefaultState = {\n inputChanged: false,\n editing: false,\n items: null,\n loading: false,\n opened: false,\n focused: false,\n textValue: '',\n repeatRequest: () => undefined,\n requestStatus: ComboBoxRequestStatus.Unknown,\n};\n\nexport const CustomComboBoxDataTids = {\n comboBoxView: 'ComboBoxView__root',\n} as const;\n\n@responsiveLayout\n@rootNode\nexport class CustomComboBox<T> extends React.PureComponent<CustomComboBoxProps<T>, CustomComboBoxState<T>> {\n public static __KONTUR_REACT_UI__ = 'CustomComboBox';\n\n public state: CustomComboBoxState<T> = DefaultState;\n public input: Nullable<Input>;\n public menu: Nullable<Menu>;\n public inputLikeText: Nullable<InputLikeText>;\n public requestId = 0;\n public loaderShowDelay: Nullable<Promise<void>>;\n private focused = false;\n private cancelationToken: Nullable<(reason?: Error) => void> = null;\n private isMobileLayout!: boolean;\n\n private reducer = reducer;\n public cancelLoaderDelay: () => void = () => null;\n\n /**\n * @public\n */\n public focus = () => {\n if (this.props.disabled) {\n return;\n }\n\n if (this.input) {\n this.input.focus();\n } else if (this.inputLikeText) {\n this.inputLikeText.focus();\n }\n };\n\n /**\n * @public\n */\n public selectInputText = () => {\n if (this.props.disabled) {\n return;\n }\n if (this.input) {\n this.input.selectAll();\n }\n };\n\n /**\n * @public\n */\n public blur = () => {\n if (this.props.disabled) {\n return;\n }\n\n this.handleBlur();\n };\n private setRootNode!: TSetRootNode;\n\n /**\n * @public\n */\n public async search(query: string = this.state.textValue) {\n const { getItems } = this.props;\n\n const cancelPromise: Promise<never> = new Promise((_, reject) => (this.cancelationToken = reject));\n this.requestId += 1;\n const expectingId = this.requestId;\n\n if (!this.loaderShowDelay) {\n this.loaderShowDelay = new Promise<void>((resolve) => {\n const cancelLoader = taskWithDelay(() => {\n this.dispatch({ type: 'RequestItems' });\n setTimeout(resolve, LOADER_SHOW_TIME);\n }, DELAY_BEFORE_SHOW_LOADER);\n\n cancelPromise.catch(() => cancelLoader());\n\n this.cancelLoaderDelay = () => {\n cancelLoader();\n resolve();\n };\n });\n }\n\n try {\n const items = await Promise.race([getItems(query), cancelPromise]);\n if (this.state.loading) {\n await Promise.race([this.loaderShowDelay, cancelPromise]);\n }\n if (expectingId === this.requestId) {\n this.dispatch({\n type: 'ReceiveItems',\n items,\n });\n }\n } catch (error) {\n if (error && error.code === 'CancelationError') {\n this.dispatch({ type: 'CancelRequest' });\n } else if (expectingId === this.requestId) {\n this.dispatch({\n type: 'RequestFailure',\n repeatRequest: () => {\n this.search(query);\n if (this.input) {\n this.input.focus();\n }\n },\n });\n }\n } finally {\n if (expectingId === this.requestId) {\n if (!this.state.loading) {\n this.cancelLoaderDelay();\n }\n this.cancelationToken = null;\n this.loaderShowDelay = null;\n }\n }\n }\n\n /**\n * @public\n */\n public cancelSearch() {\n if (this.cancelationToken) {\n this.cancelationToken(new CancelationError());\n }\n }\n\n /**\n * @public\n */\n public open() {\n this.dispatch({ type: 'Open' });\n }\n\n /**\n * @public\n */\n public close() {\n this.dispatch({ type: 'Close' });\n }\n\n public render() {\n const viewProps = {\n align: this.props.align,\n borderless: this.props.borderless,\n disabled: this.props.disabled,\n disablePortal: this.props.disablePortal,\n editing: this.state.editing,\n error: this.props.error,\n items: this.state.items,\n loading: this.state.loading,\n menuAlign: this.props.menuAlign,\n opened: this.state.opened,\n drawArrow: this.props.drawArrow,\n menuPos: this.props.menuPos,\n placeholder: this.props.placeholder,\n size: this.props.size,\n textValue: this.state.textValue,\n totalCount: this.props.totalCount,\n value: this.props.value,\n warning: this.props.warning,\n 'aria-describedby': this.props['aria-describedby'],\n width: this.props.width,\n maxLength: this.props.maxLength,\n maxMenuHeight: this.props.maxMenuHeight,\n leftIcon: this.props.leftIcon,\n rightIcon: this.props.rightIcon,\n inputMode: this.props.inputMode,\n\n onValueChange: this.handleValueChange,\n onClickOutside: this.handleClickOutside,\n onFocus: this.handleFocus,\n onFocusOutside: this.handleBlur,\n onInputBlur: this.handleInputBlur,\n onInputValueChange: (value: string) => this.dispatch({ type: 'TextChange', value }),\n onInputFocus: this.handleFocus,\n onInputClick: this.handleInputClick,\n onInputKeyDown: (event: React.KeyboardEvent) => {\n event.persist();\n this.dispatch({ type: 'KeyPress', event });\n },\n onMouseEnter: this.props.onMouseEnter,\n onMouseOver: this.props.onMouseOver,\n onMouseLeave: this.props.onMouseLeave,\n renderItem: this.props.renderItem,\n renderNotFound: this.props.renderNotFound,\n itemWrapper: this.props.itemWrapper,\n renderValue: this.props.renderValue,\n renderTotalCount: this.props.renderTotalCount,\n renderAddButton: this.props.renderAddButton,\n repeatRequest: this.state.repeatRequest,\n requestStatus: this.state.requestStatus,\n\n refInput: (input: Nullable<Input>) => {\n this.input = input;\n },\n refMenu: (menu: Nullable<Menu>) => {\n this.menu = menu;\n },\n refInputLikeText: (inputLikeText: Nullable<InputLikeText>) => {\n this.inputLikeText = inputLikeText;\n },\n };\n\n return (\n <CommonWrapper {...this.props}>\n <ComboBoxView {...viewProps} ref={this.setRootNode} />\n </CommonWrapper>\n );\n }\n\n public componentDidMount() {\n this.dispatch({ type: 'Mount' }, false);\n if (this.props.autoFocus) {\n this.focus();\n }\n }\n\n public componentDidUpdate(prevProps: CustomComboBoxProps<T>, prevState: CustomComboBoxState<T>) {\n if (prevState.editing && !this.state.editing) {\n this.handleBlur();\n }\n this.dispatch({ type: 'DidUpdate', prevProps, prevState }, false);\n }\n\n /**\n * @public\n */\n public reset() {\n this.dispatch({ type: 'Reset' });\n }\n\n private dispatch = (action: CustomComboBoxAction<T>, sync = true) => {\n const updateState = (action: CustomComboBoxAction<T>) => {\n let effects: Array<CustomComboBoxEffect<T>>;\n let nextState: Pick<CustomComboBoxState<T>, never>;\n\n this.setState(\n (state) => {\n const stateAndEffect = this.reducer(state, this.props, action);\n [nextState, effects] = stateAndEffect instanceof Array ? stateAndEffect : [stateAndEffect, []];\n return nextState;\n },\n () => {\n effects.forEach(this.handleEffect);\n },\n );\n };\n\n const isReact18 = React.version.search('18') === 0;\n if (sync && isReact18) {\n return setTimeout(() =>\n ReactDOM.flushSync(() => {\n updateState(action);\n }),\n );\n }\n\n return updateState(action);\n };\n\n private handleEffect = (effect: CustomComboBoxEffect<T>) => {\n effect(this.dispatch, this.getState, this.getProps, () => this);\n };\n\n private getProps = () => this.props;\n\n private getState = () => this.state;\n\n private handleValueChange = (value: T) => {\n this.dispatch({\n type: 'ValueChange',\n value,\n keepFocus: !this.isMobileLayout,\n });\n };\n\n private handleFocus = () => {\n if (this.focused) {\n return;\n }\n this.focused = true;\n this.dispatch({ type: 'Focus' });\n };\n\n private handleClickOutside = (e: Event) => {\n fixClickFocusIE(e);\n this.handleBlur();\n };\n\n private handleBlur = () => {\n if (!this.focused) {\n if (this.state.opened) {\n this.close();\n }\n return;\n }\n\n this.focused = false;\n // workaround for the similar bug with focusout\n // in Firefox, Chrome and IE\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1363964\n setTimeout(() => {\n this.dispatch({ type: 'Blur' });\n });\n };\n\n private handleInputBlur = () => {\n // If menu opened, RenderLayer is active and\n // it would call handleFocusOutside\n // In that way handleBlur would be called\n\n // TODO: add check for mobile layout, to call `handleBlur`\n\n if (this.state.opened) {\n return;\n }\n this.handleBlur();\n };\n\n private handleInputClick = () => {\n if (!this.cancelationToken) {\n this.dispatch({ type: 'InputClick' });\n }\n };\n}\n"]}
|
|
@@ -46,7 +46,7 @@ export var DateSelectDataTids = {
|
|
|
46
46
|
caption: 'DateSelect__caption',
|
|
47
47
|
menuItem: 'DateSelect__menuItem'
|
|
48
48
|
};
|
|
49
|
-
export var DateSelect = (_dec = locale('
|
|
49
|
+
export var DateSelect = (_dec = locale('Calendar', DatePickerLocaleHelper), _dec(_class = (_temp = _class2 = /*#__PURE__*/function (_React$PureComponent) {
|
|
50
50
|
_inheritsLoose(DateSelect, _React$PureComponent);
|
|
51
51
|
|
|
52
52
|
function DateSelect() {
|
|
@@ -480,7 +480,9 @@ export var DateSelect = (_dec = locale('DatePicker', DatePickerLocaleHelper), _d
|
|
|
480
480
|
var value = this.props.value + index;
|
|
481
481
|
|
|
482
482
|
if (this.getProps().type === 'month') {
|
|
483
|
-
|
|
483
|
+
var _this$locale$months;
|
|
484
|
+
|
|
485
|
+
return (_this$locale$months = this.locale.months) == null ? void 0 : _this$locale$months[value];
|
|
484
486
|
}
|
|
485
487
|
|
|
486
488
|
return value;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["DateSelect.tsx"],"names":["React","PropTypes","isNonNullable","isKeyEscape","DatePickerLocaleHelper","locale","RenderLayer","DropdownContainer","LayoutEvents","ThemeContext","ArrowTriangleUpDownIcon","ArrowChevronDownIcon","ArrowChevronUpIcon","isMobile","cx","getDOMRect","createPropsGetter","isTheme2022","ArrowCollapseCVOpenIcon16Regular","ArrowCUpIcon16Regular","ArrowCDownIcon16Regular","styles","itemHeight","visibleYearsCount","itemsToMoveCount","monthsCount","defaultMinYear","defaultMaxYear","calculatePos","pos","minPos","maxPos","DateSelectDataTids","caption","menuItem","DateSelect","getProps","defaultProps","state","botCapped","current","height","opened","top","topCapped","nodeTop","Infinity","root","itemsContainer","longClickTimer","setPositionRepeatTimer","yearStep","touchStartY","open","props","disabled","setPosition","setState","close","refRoot","element","setNodeTop","timeout","clearTimeout","setTimeout","refItemsContainer","addEventListener","handleWheel","passive","removeEventListener","handleTouchStart","handleTouchMove","handleLongClickUp","event","preventDefault","window","setInterval","handleLongClickDown","handleLongClickStop","getAnchor","WheelEvent","stopPropagation","deltaY","deltaMode","TouchEvent","targetTouches","clientY","changedTouches","pixelRatio","devicePixelRatio","handleItemClick","shift","value","onValueChange","handleKey","e","handleUp","handleDown","componentDidUpdate","componentDidMount","listener","addListener","componentWillUnmount","remove","render","theme","renderMain","renderMain2022","width","rootProps","className","Boolean","style","ref","getItem","arrow","arrowDisabled","renderMenu","root2022","onClick","disableItems","index","maxValue","minValue","from","to","Math","ceil","items","i","menuItemSelected","menuItemActive","menuItemDisabled","clickHandler","onMouseDown","push","left","right","shiftStyle","position","holderClass","menuHolder","isTopCapped","isBotCapped","dropdownOffset","overflowOffsetDelta","iconUp","iconDown","menu","menuUp","itemsHolder","menuDown","type","months","getMinPos","getMaxPos","calculatedPos","PureComponent","__KONTUR_REACT_UI__","propTypes","bool","string","number","isRequired","oneOfType","func"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { isNonNullable } from '../../lib/utils';\nimport { isKeyEscape } from '../../lib/events/keyboard/identifiers';\nimport { DatePickerLocale, DatePickerLocaleHelper } from '../../components/DatePicker/locale';\nimport { locale } from '../../lib/locale/decorators';\nimport { RenderLayer } from '../RenderLayer';\nimport { DropdownContainer } from '../DropdownContainer';\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { Nullable } from '../../typings/utility-types';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { ArrowTriangleUpDownIcon, ArrowChevronDownIcon, ArrowChevronUpIcon } from '../icons/16px';\nimport { isMobile } from '../../lib/client';\nimport { cx } from '../../lib/theming/Emotion';\nimport { getDOMRect } from '../../lib/dom/getDOMRect';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { isTheme2022 } from '../../lib/theming/ThemeHelpers';\nimport { ArrowCollapseCVOpenIcon16Regular } from '../icons2022/ArrowCollapseCVOpenIcon/ArrowCollapseCVOpenIcon16Regular';\nimport { ArrowCUpIcon16Regular } from '../icons2022/ArrowCUpIcon/ArrowCUpIcon16Regular';\nimport { ArrowCDownIcon16Regular } from '../icons2022/ArrowCDownIcon/ArrowCDownIcon16Regular';\n\nimport { styles } from './DateSelect.styles';\n\nconst itemHeight = 24;\nconst visibleYearsCount = 11;\nconst itemsToMoveCount = -5;\nconst monthsCount = 12;\nconst defaultMinYear = 1900;\nconst defaultMaxYear = 2100;\n\nexport interface DateSelectProps {\n disabled?: boolean | null;\n onValueChange: (value: number) => void;\n type?: 'month' | 'year';\n value: number;\n width?: number | string;\n minValue?: number;\n maxValue?: number;\n}\n\nexport interface DateSelectState {\n botCapped: boolean;\n current: Nullable<number>;\n height: number;\n opened: boolean;\n pos: number;\n top: number;\n topCapped: boolean;\n nodeTop: number;\n}\n\nconst calculatePos = (pos: number, minPos: number, maxPos: number) => {\n if (maxPos <= pos) {\n return maxPos;\n }\n\n if (minPos >= pos) {\n return minPos;\n }\n\n return pos;\n};\n\nexport const DateSelectDataTids = {\n caption: 'DateSelect__caption',\n menuItem: 'DateSelect__menuItem',\n} as const;\n\ntype DefaultProps = Required<Pick<DateSelectProps, 'type' | 'width'>>;\n\n@locale('DatePicker', DatePickerLocaleHelper)\nexport class DateSelect extends React.PureComponent<DateSelectProps, DateSelectState> {\n public static __KONTUR_REACT_UI__ = 'DateSelect';\n\n public static propTypes = {\n disabled: PropTypes.bool,\n\n type: PropTypes.string,\n\n value: PropTypes.number.isRequired,\n\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n onValueChange: PropTypes.func,\n\n minValue: PropTypes.number,\n\n maxValue: PropTypes.number,\n };\n\n public static defaultProps: DefaultProps = {\n type: 'year',\n width: 'auto',\n };\n\n private getProps = createPropsGetter(DateSelect.defaultProps);\n\n public state = {\n botCapped: false,\n current: 0,\n height: 0,\n opened: false,\n pos: 0,\n top: 0,\n topCapped: false,\n nodeTop: Infinity,\n };\n\n private theme!: Theme;\n private readonly locale!: DatePickerLocale;\n private root: HTMLElement | null = null;\n private itemsContainer: HTMLElement | null = null;\n private listener: Nullable<ReturnType<typeof LayoutEvents.addListener>>;\n private timeout: NodeJS.Timeout | undefined;\n private longClickTimer = 0;\n private setPositionRepeatTimer = 0;\n private yearStep = 3;\n private touchStartY: Nullable<number> = null;\n\n public componentDidUpdate() {\n this.setNodeTop();\n }\n\n public componentDidMount() {\n this.listener = LayoutEvents.addListener(this.setNodeTop);\n this.setNodeTop();\n window.addEventListener('keydown', this.handleKey);\n }\n\n public componentWillUnmount() {\n if (this.listener) {\n this.listener.remove();\n }\n if (this.timeout) {\n clearTimeout(this.timeout);\n }\n if (this.longClickTimer) {\n clearTimeout(this.longClickTimer);\n }\n if (this.setPositionRepeatTimer) {\n clearTimeout(this.setPositionRepeatTimer);\n }\n window.removeEventListener('keydown', this.handleKey);\n }\n\n /**\n * @public\n */\n public open = () => {\n if (this.props.disabled) {\n return;\n }\n\n if (this.state.opened) {\n return;\n }\n\n this.setPosition(0);\n this.setState({\n opened: true,\n current: 0,\n });\n };\n\n /**\n * @public\n */\n public close = () => {\n if (!this.state.opened) {\n return;\n }\n\n this.setState({ opened: false });\n };\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n if (isTheme2022(this.theme)) {\n return this.renderMain2022();\n }\n\n const { disabled } = this.props;\n const width = this.getProps().width;\n const rootProps = {\n className: cx({\n [styles.root(this.theme)]: true,\n [styles.disabled()]: Boolean(disabled),\n }),\n style: { width },\n ref: this.refRoot,\n };\n return (\n <span {...rootProps}>\n <div data-tid={DateSelectDataTids.caption} className={styles.caption()} onClick={this.open}>\n {this.getItem(0)}\n <div\n className={cx({\n [styles.arrow(this.theme)]: true,\n [styles.arrowDisabled()]: Boolean(disabled),\n })}\n >\n <ArrowTriangleUpDownIcon size={12} />\n </div>\n </div>\n {this.state.opened && this.renderMenu()}\n </span>\n );\n }\n\n private renderMain2022() {\n const { disabled } = this.props;\n const width = this.getProps().width;\n const rootProps = {\n className: cx(styles.root(this.theme), styles.root2022(), disabled && styles.disabled()),\n style: { width },\n ref: this.refRoot,\n onClick: this.open,\n };\n\n return (\n <span {...rootProps}>\n <div data-tid={DateSelectDataTids.caption} className={styles.caption()}>\n {this.getItem(0)}\n </div>\n {!disabled && <ArrowCollapseCVOpenIcon16Regular color=\"#ADADAD\" />}\n {this.state.opened && this.renderMenu()}\n </span>\n );\n }\n\n private refRoot = (element: HTMLElement | null) => {\n this.root = element;\n };\n\n private setNodeTop = () => {\n const root = this.root;\n if (!root) {\n return;\n }\n if (this.timeout) {\n clearTimeout(this.timeout);\n }\n this.timeout = setTimeout(() =>\n this.setState({\n nodeTop: getDOMRect(root).top,\n }),\n );\n };\n\n private disableItems(index: number) {\n const value = this.props.value + index;\n if (isNonNullable(this.props.maxValue) && isNonNullable(this.props.minValue)) {\n return value > this.props.maxValue || value < this.props.minValue;\n }\n\n if (isNonNullable(this.props.minValue)) {\n return value < this.props.minValue;\n }\n\n if (isNonNullable(this.props.maxValue)) {\n return value > this.props.maxValue;\n }\n }\n\n private renderMenu(): React.ReactNode {\n const { top, height, nodeTop } = this.state;\n\n let shift = this.state.pos % itemHeight;\n if (shift < 0) {\n shift += itemHeight;\n }\n\n const from = (this.state.pos - shift + top) / itemHeight;\n const to = from + Math.ceil((height + shift) / itemHeight);\n const items = [];\n\n for (let i = from; i < to; ++i) {\n const disableItems = this.disableItems(i) || false;\n const className = cx({\n [styles.menuItem(this.theme)]: true,\n [styles.menuItemSelected(this.theme)]: i === 0,\n [styles.menuItemActive(this.theme)]: i === this.state.current,\n [styles.menuItemDisabled(this.theme)]: disableItems,\n });\n const clickHandler = {\n onMouseDown: preventDefault,\n onClick: this.handleItemClick(i),\n };\n items.push(\n <div\n data-tid={DateSelectDataTids.menuItem}\n data-prop-disabled={disableItems}\n key={i}\n className={className}\n onMouseEnter={() => this.setState({ current: i })}\n onMouseLeave={() => this.setState({ current: null })}\n {...clickHandler}\n >\n {this.getItem(i)}\n </div>,\n );\n }\n const style: {\n left?: number | string;\n right?: number | string;\n top: number;\n width?: number | string;\n } = {\n top: top - 5,\n left: 0,\n right: 0,\n };\n\n const shiftStyle: React.CSSProperties = {\n position: 'relative',\n top: -shift,\n };\n\n const holderClass = cx({\n [styles.menuHolder(this.theme)]: true,\n [styles.isTopCapped()]: this.state.topCapped,\n [styles.isBotCapped()]: this.state.botCapped,\n });\n\n let dropdownOffset = -itemHeight;\n if (nodeTop < -top) {\n const overflowOffsetDelta = this.state.topCapped ? 6 : 17;\n dropdownOffset -= nodeTop + top - overflowOffsetDelta;\n }\n\n const iconUp = isTheme2022(this.theme) ? <ArrowCUpIcon16Regular color=\"#ADADAD\" /> : <ArrowChevronUpIcon />;\n const iconDown = isTheme2022(this.theme) ? <ArrowCDownIcon16Regular color=\"#ADADAD\" /> : <ArrowChevronDownIcon />;\n\n return (\n <RenderLayer onClickOutside={this.close} onFocusOutside={this.close} active>\n <div>\n <DropdownContainer getParent={this.getAnchor} offsetY={dropdownOffset} offsetX={-10}>\n <div className={holderClass} style={style}>\n {!this.state.topCapped && (\n <div\n className={cx(styles.menu(this.theme), styles.menuUp())}\n onClick={this.handleUp}\n onMouseDown={this.handleLongClickUp}\n onMouseUp={this.handleLongClickStop}\n onMouseLeave={this.handleLongClickStop}\n onTouchStart={this.handleLongClickUp}\n onTouchEnd={this.handleLongClickStop}\n >\n <span>{iconUp}</span>\n </div>\n )}\n <div className={styles.itemsHolder()} style={{ height }}>\n <div ref={this.refItemsContainer} style={shiftStyle}>\n {items}\n </div>\n </div>\n {!this.state.botCapped && (\n <div\n className={cx(styles.menu(this.theme), styles.menuDown())}\n onClick={this.handleDown}\n onMouseDown={this.handleLongClickDown}\n onMouseUp={this.handleLongClickStop}\n onMouseLeave={this.handleLongClickStop}\n onTouchStart={this.handleLongClickDown}\n onTouchEnd={this.handleLongClickStop}\n >\n <span>{iconDown}</span>\n </div>\n )}\n </div>\n </DropdownContainer>\n </div>\n </RenderLayer>\n );\n }\n\n private refItemsContainer = (element: HTMLElement | null) => {\n if (!this.itemsContainer && element) {\n element.addEventListener('wheel', this.handleWheel, { passive: false });\n }\n if (this.itemsContainer && !element) {\n this.itemsContainer.removeEventListener('wheel', this.handleWheel);\n }\n\n if (isMobile) {\n if (!this.itemsContainer && element) {\n element.addEventListener('touchstart', this.handleTouchStart);\n element.addEventListener('touchmove', this.handleTouchMove);\n }\n if (this.itemsContainer && !element) {\n this.itemsContainer.removeEventListener('touchstart', this.handleTouchStart);\n this.itemsContainer.removeEventListener('touchmove', this.handleTouchMove);\n }\n }\n\n this.itemsContainer = element;\n };\n\n private handleLongClickUp = (event: React.MouseEvent | React.TouchEvent) => {\n event.preventDefault();\n this.longClickTimer = window.setTimeout(() => {\n this.setPositionRepeatTimer = window.setInterval(() => this.setPosition(this.state.pos - itemHeight), 100);\n }, 200);\n };\n\n private handleLongClickDown = (event: React.MouseEvent | React.TouchEvent) => {\n event.preventDefault();\n this.longClickTimer = window.setTimeout(() => {\n this.setPositionRepeatTimer = window.setInterval(() => this.setPosition(this.state.pos + itemHeight), 100);\n }, 200);\n };\n\n private handleLongClickStop = () => {\n clearTimeout(this.longClickTimer);\n clearTimeout(this.setPositionRepeatTimer);\n };\n\n private getAnchor = () => this.root;\n\n private handleWheel = (event: Event) => {\n if (!(event instanceof WheelEvent)) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n\n let deltaY = event.deltaY;\n if (event.deltaMode === 1) {\n deltaY *= itemHeight;\n } else if (event.deltaMode === 2) {\n deltaY *= itemHeight * 4;\n }\n const pos = this.state.pos + deltaY;\n this.setPosition(pos);\n };\n\n private handleTouchStart = (event: Event) => {\n if (!(event instanceof TouchEvent)) {\n return;\n }\n\n this.touchStartY = event.targetTouches[0].clientY;\n };\n\n private handleTouchMove = (event: Event) => {\n if (!(event instanceof TouchEvent)) {\n return;\n }\n\n const { clientY } = event.changedTouches[0];\n const pixelRatio = window.devicePixelRatio;\n\n const deltaY = ((this.touchStartY || 0) - clientY) / pixelRatio;\n const pos = this.state.pos + deltaY + deltaY / itemHeight;\n\n this.touchStartY = clientY;\n\n this.setPosition(pos);\n };\n\n private handleItemClick = (shift: number) => {\n return () => {\n const value = this.props.value + shift;\n if (this.props.onValueChange) {\n this.props.onValueChange(value);\n }\n this.setState({ opened: false });\n };\n };\n\n private handleKey = (e: KeyboardEvent) => {\n if (this.state.opened && isKeyEscape(e)) {\n e.preventDefault();\n this.close();\n e.stopPropagation();\n }\n };\n\n private handleUp = (event: React.MouseEvent) => {\n event.preventDefault();\n this.setPosition(this.state.pos - itemHeight * this.yearStep);\n };\n\n private handleDown = (event: React.MouseEvent) => {\n event.preventDefault();\n this.setPosition(this.state.pos + itemHeight * this.yearStep);\n };\n\n private getItem(index: number) {\n const value = this.props.value + index;\n if (this.getProps().type === 'month') {\n return this.locale.months[value];\n }\n return value;\n }\n\n private setPosition(pos: number) {\n let top = itemsToMoveCount * itemHeight;\n let height = visibleYearsCount * itemHeight;\n if (this.getProps().type === 'month') {\n top = -this.props.value * itemHeight;\n height = monthsCount * itemHeight;\n }\n\n const minPos = this.getMinPos() - top;\n const maxPos = this.getMaxPos() - top - height + itemHeight;\n\n const calculatedPos = calculatePos(pos, minPos, maxPos);\n const topCapped = calculatedPos <= minPos;\n const botCapped = calculatedPos >= maxPos;\n\n this.setState({ pos: calculatedPos, top, height, topCapped, botCapped });\n }\n\n private getMinPos() {\n const type = this.getProps().type;\n if (type === 'month') {\n return -this.props.value * itemHeight;\n } else if (type === 'year') {\n return ((this.props.minValue || defaultMinYear) - this.props.value) * itemHeight;\n }\n return -Infinity; // Be defensive.\n }\n\n private getMaxPos() {\n const type = this.getProps().type;\n if (type === 'month') {\n return (visibleYearsCount - this.props.value) * itemHeight;\n } else if (type === 'year') {\n return ((this.props.maxValue || defaultMaxYear) - this.props.value) * itemHeight;\n }\n return Infinity; // Be defensive.\n }\n}\n\nfunction preventDefault(e: React.SyntheticEvent) {\n e.preventDefault();\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["DateSelect.tsx"],"names":["React","PropTypes","isNonNullable","isKeyEscape","DatePickerLocaleHelper","locale","RenderLayer","DropdownContainer","LayoutEvents","ThemeContext","ArrowTriangleUpDownIcon","ArrowChevronDownIcon","ArrowChevronUpIcon","isMobile","cx","getDOMRect","createPropsGetter","isTheme2022","ArrowCollapseCVOpenIcon16Regular","ArrowCUpIcon16Regular","ArrowCDownIcon16Regular","styles","itemHeight","visibleYearsCount","itemsToMoveCount","monthsCount","defaultMinYear","defaultMaxYear","calculatePos","pos","minPos","maxPos","DateSelectDataTids","caption","menuItem","DateSelect","getProps","defaultProps","state","botCapped","current","height","opened","top","topCapped","nodeTop","Infinity","root","itemsContainer","longClickTimer","setPositionRepeatTimer","yearStep","touchStartY","open","props","disabled","setPosition","setState","close","refRoot","element","setNodeTop","timeout","clearTimeout","setTimeout","refItemsContainer","addEventListener","handleWheel","passive","removeEventListener","handleTouchStart","handleTouchMove","handleLongClickUp","event","preventDefault","window","setInterval","handleLongClickDown","handleLongClickStop","getAnchor","WheelEvent","stopPropagation","deltaY","deltaMode","TouchEvent","targetTouches","clientY","changedTouches","pixelRatio","devicePixelRatio","handleItemClick","shift","value","onValueChange","handleKey","e","handleUp","handleDown","componentDidUpdate","componentDidMount","listener","addListener","componentWillUnmount","remove","render","theme","renderMain","renderMain2022","width","rootProps","className","Boolean","style","ref","getItem","arrow","arrowDisabled","renderMenu","root2022","onClick","disableItems","index","maxValue","minValue","from","to","Math","ceil","items","i","menuItemSelected","menuItemActive","menuItemDisabled","clickHandler","onMouseDown","push","left","right","shiftStyle","position","holderClass","menuHolder","isTopCapped","isBotCapped","dropdownOffset","overflowOffsetDelta","iconUp","iconDown","menu","menuUp","itemsHolder","menuDown","type","months","getMinPos","getMaxPos","calculatedPos","PureComponent","__KONTUR_REACT_UI__","propTypes","bool","string","number","isRequired","oneOfType","func"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { isNonNullable } from '../../lib/utils';\nimport { isKeyEscape } from '../../lib/events/keyboard/identifiers';\nimport { DatePickerLocale, DatePickerLocaleHelper } from '../../components/DatePicker/locale';\nimport { locale } from '../../lib/locale/decorators';\nimport { RenderLayer } from '../RenderLayer';\nimport { DropdownContainer } from '../DropdownContainer';\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { Nullable } from '../../typings/utility-types';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { ArrowTriangleUpDownIcon, ArrowChevronDownIcon, ArrowChevronUpIcon } from '../icons/16px';\nimport { isMobile } from '../../lib/client';\nimport { cx } from '../../lib/theming/Emotion';\nimport { getDOMRect } from '../../lib/dom/getDOMRect';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { isTheme2022 } from '../../lib/theming/ThemeHelpers';\nimport { ArrowCollapseCVOpenIcon16Regular } from '../icons2022/ArrowCollapseCVOpenIcon/ArrowCollapseCVOpenIcon16Regular';\nimport { ArrowCUpIcon16Regular } from '../icons2022/ArrowCUpIcon/ArrowCUpIcon16Regular';\nimport { ArrowCDownIcon16Regular } from '../icons2022/ArrowCDownIcon/ArrowCDownIcon16Regular';\n\nimport { styles } from './DateSelect.styles';\n\nconst itemHeight = 24;\nconst visibleYearsCount = 11;\nconst itemsToMoveCount = -5;\nconst monthsCount = 12;\nconst defaultMinYear = 1900;\nconst defaultMaxYear = 2100;\n\nexport interface DateSelectProps {\n disabled?: boolean | null;\n onValueChange: (value: number) => void;\n type?: 'month' | 'year';\n value: number;\n width?: number | string;\n minValue?: number;\n maxValue?: number;\n}\n\nexport interface DateSelectState {\n botCapped: boolean;\n current: Nullable<number>;\n height: number;\n opened: boolean;\n pos: number;\n top: number;\n topCapped: boolean;\n nodeTop: number;\n}\n\nconst calculatePos = (pos: number, minPos: number, maxPos: number) => {\n if (maxPos <= pos) {\n return maxPos;\n }\n\n if (minPos >= pos) {\n return minPos;\n }\n\n return pos;\n};\n\nexport const DateSelectDataTids = {\n caption: 'DateSelect__caption',\n menuItem: 'DateSelect__menuItem',\n} as const;\n\ntype DefaultProps = Required<Pick<DateSelectProps, 'type' | 'width'>>;\n\n@locale('Calendar', DatePickerLocaleHelper)\nexport class DateSelect extends React.PureComponent<DateSelectProps, DateSelectState> {\n public static __KONTUR_REACT_UI__ = 'DateSelect';\n\n public static propTypes = {\n disabled: PropTypes.bool,\n\n type: PropTypes.string,\n\n value: PropTypes.number.isRequired,\n\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n onValueChange: PropTypes.func,\n\n minValue: PropTypes.number,\n\n maxValue: PropTypes.number,\n };\n\n public static defaultProps: DefaultProps = {\n type: 'year',\n width: 'auto',\n };\n\n private getProps = createPropsGetter(DateSelect.defaultProps);\n\n public state = {\n botCapped: false,\n current: 0,\n height: 0,\n opened: false,\n pos: 0,\n top: 0,\n topCapped: false,\n nodeTop: Infinity,\n };\n\n private theme!: Theme;\n private readonly locale!: DatePickerLocale;\n private root: HTMLElement | null = null;\n private itemsContainer: HTMLElement | null = null;\n private listener: Nullable<ReturnType<typeof LayoutEvents.addListener>>;\n private timeout: NodeJS.Timeout | undefined;\n private longClickTimer = 0;\n private setPositionRepeatTimer = 0;\n private yearStep = 3;\n private touchStartY: Nullable<number> = null;\n\n public componentDidUpdate() {\n this.setNodeTop();\n }\n\n public componentDidMount() {\n this.listener = LayoutEvents.addListener(this.setNodeTop);\n this.setNodeTop();\n window.addEventListener('keydown', this.handleKey);\n }\n\n public componentWillUnmount() {\n if (this.listener) {\n this.listener.remove();\n }\n if (this.timeout) {\n clearTimeout(this.timeout);\n }\n if (this.longClickTimer) {\n clearTimeout(this.longClickTimer);\n }\n if (this.setPositionRepeatTimer) {\n clearTimeout(this.setPositionRepeatTimer);\n }\n window.removeEventListener('keydown', this.handleKey);\n }\n\n /**\n * @public\n */\n public open = () => {\n if (this.props.disabled) {\n return;\n }\n\n if (this.state.opened) {\n return;\n }\n\n this.setPosition(0);\n this.setState({\n opened: true,\n current: 0,\n });\n };\n\n /**\n * @public\n */\n public close = () => {\n if (!this.state.opened) {\n return;\n }\n\n this.setState({ opened: false });\n };\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n if (isTheme2022(this.theme)) {\n return this.renderMain2022();\n }\n\n const { disabled } = this.props;\n const width = this.getProps().width;\n const rootProps = {\n className: cx({\n [styles.root(this.theme)]: true,\n [styles.disabled()]: Boolean(disabled),\n }),\n style: { width },\n ref: this.refRoot,\n };\n return (\n <span {...rootProps}>\n <div data-tid={DateSelectDataTids.caption} className={styles.caption()} onClick={this.open}>\n {this.getItem(0)}\n <div\n className={cx({\n [styles.arrow(this.theme)]: true,\n [styles.arrowDisabled()]: Boolean(disabled),\n })}\n >\n <ArrowTriangleUpDownIcon size={12} />\n </div>\n </div>\n {this.state.opened && this.renderMenu()}\n </span>\n );\n }\n\n private renderMain2022() {\n const { disabled } = this.props;\n const width = this.getProps().width;\n const rootProps = {\n className: cx(styles.root(this.theme), styles.root2022(), disabled && styles.disabled()),\n style: { width },\n ref: this.refRoot,\n onClick: this.open,\n };\n\n return (\n <span {...rootProps}>\n <div data-tid={DateSelectDataTids.caption} className={styles.caption()}>\n {this.getItem(0)}\n </div>\n {!disabled && <ArrowCollapseCVOpenIcon16Regular color=\"#ADADAD\" />}\n {this.state.opened && this.renderMenu()}\n </span>\n );\n }\n\n private refRoot = (element: HTMLElement | null) => {\n this.root = element;\n };\n\n private setNodeTop = () => {\n const root = this.root;\n if (!root) {\n return;\n }\n if (this.timeout) {\n clearTimeout(this.timeout);\n }\n this.timeout = setTimeout(() =>\n this.setState({\n nodeTop: getDOMRect(root).top,\n }),\n );\n };\n\n private disableItems(index: number) {\n const value = this.props.value + index;\n if (isNonNullable(this.props.maxValue) && isNonNullable(this.props.minValue)) {\n return value > this.props.maxValue || value < this.props.minValue;\n }\n\n if (isNonNullable(this.props.minValue)) {\n return value < this.props.minValue;\n }\n\n if (isNonNullable(this.props.maxValue)) {\n return value > this.props.maxValue;\n }\n }\n\n private renderMenu(): React.ReactNode {\n const { top, height, nodeTop } = this.state;\n\n let shift = this.state.pos % itemHeight;\n if (shift < 0) {\n shift += itemHeight;\n }\n\n const from = (this.state.pos - shift + top) / itemHeight;\n const to = from + Math.ceil((height + shift) / itemHeight);\n const items = [];\n\n for (let i = from; i < to; ++i) {\n const disableItems = this.disableItems(i) || false;\n const className = cx({\n [styles.menuItem(this.theme)]: true,\n [styles.menuItemSelected(this.theme)]: i === 0,\n [styles.menuItemActive(this.theme)]: i === this.state.current,\n [styles.menuItemDisabled(this.theme)]: disableItems,\n });\n const clickHandler = {\n onMouseDown: preventDefault,\n onClick: this.handleItemClick(i),\n };\n items.push(\n <div\n data-tid={DateSelectDataTids.menuItem}\n data-prop-disabled={disableItems}\n key={i}\n className={className}\n onMouseEnter={() => this.setState({ current: i })}\n onMouseLeave={() => this.setState({ current: null })}\n {...clickHandler}\n >\n {this.getItem(i)}\n </div>,\n );\n }\n const style: {\n left?: number | string;\n right?: number | string;\n top: number;\n width?: number | string;\n } = {\n top: top - 5,\n left: 0,\n right: 0,\n };\n\n const shiftStyle: React.CSSProperties = {\n position: 'relative',\n top: -shift,\n };\n\n const holderClass = cx({\n [styles.menuHolder(this.theme)]: true,\n [styles.isTopCapped()]: this.state.topCapped,\n [styles.isBotCapped()]: this.state.botCapped,\n });\n\n let dropdownOffset = -itemHeight;\n if (nodeTop < -top) {\n const overflowOffsetDelta = this.state.topCapped ? 6 : 17;\n dropdownOffset -= nodeTop + top - overflowOffsetDelta;\n }\n\n const iconUp = isTheme2022(this.theme) ? <ArrowCUpIcon16Regular color=\"#ADADAD\" /> : <ArrowChevronUpIcon />;\n const iconDown = isTheme2022(this.theme) ? <ArrowCDownIcon16Regular color=\"#ADADAD\" /> : <ArrowChevronDownIcon />;\n\n return (\n <RenderLayer onClickOutside={this.close} onFocusOutside={this.close} active>\n <div>\n <DropdownContainer getParent={this.getAnchor} offsetY={dropdownOffset} offsetX={-10}>\n <div className={holderClass} style={style}>\n {!this.state.topCapped && (\n <div\n className={cx(styles.menu(this.theme), styles.menuUp())}\n onClick={this.handleUp}\n onMouseDown={this.handleLongClickUp}\n onMouseUp={this.handleLongClickStop}\n onMouseLeave={this.handleLongClickStop}\n onTouchStart={this.handleLongClickUp}\n onTouchEnd={this.handleLongClickStop}\n >\n <span>{iconUp}</span>\n </div>\n )}\n <div className={styles.itemsHolder()} style={{ height }}>\n <div ref={this.refItemsContainer} style={shiftStyle}>\n {items}\n </div>\n </div>\n {!this.state.botCapped && (\n <div\n className={cx(styles.menu(this.theme), styles.menuDown())}\n onClick={this.handleDown}\n onMouseDown={this.handleLongClickDown}\n onMouseUp={this.handleLongClickStop}\n onMouseLeave={this.handleLongClickStop}\n onTouchStart={this.handleLongClickDown}\n onTouchEnd={this.handleLongClickStop}\n >\n <span>{iconDown}</span>\n </div>\n )}\n </div>\n </DropdownContainer>\n </div>\n </RenderLayer>\n );\n }\n\n private refItemsContainer = (element: HTMLElement | null) => {\n if (!this.itemsContainer && element) {\n element.addEventListener('wheel', this.handleWheel, { passive: false });\n }\n if (this.itemsContainer && !element) {\n this.itemsContainer.removeEventListener('wheel', this.handleWheel);\n }\n\n if (isMobile) {\n if (!this.itemsContainer && element) {\n element.addEventListener('touchstart', this.handleTouchStart);\n element.addEventListener('touchmove', this.handleTouchMove);\n }\n if (this.itemsContainer && !element) {\n this.itemsContainer.removeEventListener('touchstart', this.handleTouchStart);\n this.itemsContainer.removeEventListener('touchmove', this.handleTouchMove);\n }\n }\n\n this.itemsContainer = element;\n };\n\n private handleLongClickUp = (event: React.MouseEvent | React.TouchEvent) => {\n event.preventDefault();\n this.longClickTimer = window.setTimeout(() => {\n this.setPositionRepeatTimer = window.setInterval(() => this.setPosition(this.state.pos - itemHeight), 100);\n }, 200);\n };\n\n private handleLongClickDown = (event: React.MouseEvent | React.TouchEvent) => {\n event.preventDefault();\n this.longClickTimer = window.setTimeout(() => {\n this.setPositionRepeatTimer = window.setInterval(() => this.setPosition(this.state.pos + itemHeight), 100);\n }, 200);\n };\n\n private handleLongClickStop = () => {\n clearTimeout(this.longClickTimer);\n clearTimeout(this.setPositionRepeatTimer);\n };\n\n private getAnchor = () => this.root;\n\n private handleWheel = (event: Event) => {\n if (!(event instanceof WheelEvent)) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n\n let deltaY = event.deltaY;\n if (event.deltaMode === 1) {\n deltaY *= itemHeight;\n } else if (event.deltaMode === 2) {\n deltaY *= itemHeight * 4;\n }\n const pos = this.state.pos + deltaY;\n this.setPosition(pos);\n };\n\n private handleTouchStart = (event: Event) => {\n if (!(event instanceof TouchEvent)) {\n return;\n }\n\n this.touchStartY = event.targetTouches[0].clientY;\n };\n\n private handleTouchMove = (event: Event) => {\n if (!(event instanceof TouchEvent)) {\n return;\n }\n\n const { clientY } = event.changedTouches[0];\n const pixelRatio = window.devicePixelRatio;\n\n const deltaY = ((this.touchStartY || 0) - clientY) / pixelRatio;\n const pos = this.state.pos + deltaY + deltaY / itemHeight;\n\n this.touchStartY = clientY;\n\n this.setPosition(pos);\n };\n\n private handleItemClick = (shift: number) => {\n return () => {\n const value = this.props.value + shift;\n if (this.props.onValueChange) {\n this.props.onValueChange(value);\n }\n this.setState({ opened: false });\n };\n };\n\n private handleKey = (e: KeyboardEvent) => {\n if (this.state.opened && isKeyEscape(e)) {\n e.preventDefault();\n this.close();\n e.stopPropagation();\n }\n };\n\n private handleUp = (event: React.MouseEvent) => {\n event.preventDefault();\n this.setPosition(this.state.pos - itemHeight * this.yearStep);\n };\n\n private handleDown = (event: React.MouseEvent) => {\n event.preventDefault();\n this.setPosition(this.state.pos + itemHeight * this.yearStep);\n };\n\n private getItem(index: number) {\n const value = this.props.value + index;\n if (this.getProps().type === 'month') {\n return this.locale.months?.[value];\n }\n return value;\n }\n\n private setPosition(pos: number) {\n let top = itemsToMoveCount * itemHeight;\n let height = visibleYearsCount * itemHeight;\n if (this.getProps().type === 'month') {\n top = -this.props.value * itemHeight;\n height = monthsCount * itemHeight;\n }\n\n const minPos = this.getMinPos() - top;\n const maxPos = this.getMaxPos() - top - height + itemHeight;\n\n const calculatedPos = calculatePos(pos, minPos, maxPos);\n const topCapped = calculatedPos <= minPos;\n const botCapped = calculatedPos >= maxPos;\n\n this.setState({ pos: calculatedPos, top, height, topCapped, botCapped });\n }\n\n private getMinPos() {\n const type = this.getProps().type;\n if (type === 'month') {\n return -this.props.value * itemHeight;\n } else if (type === 'year') {\n return ((this.props.minValue || defaultMinYear) - this.props.value) * itemHeight;\n }\n return -Infinity; // Be defensive.\n }\n\n private getMaxPos() {\n const type = this.getProps().type;\n if (type === 'month') {\n return (visibleYearsCount - this.props.value) * itemHeight;\n } else if (type === 'year') {\n return ((this.props.maxValue || defaultMaxYear) - this.props.value) * itemHeight;\n }\n return Infinity; // Be defensive.\n }\n}\n\nfunction preventDefault(e: React.SyntheticEvent) {\n e.preventDefault();\n}\n"]}
|