@skbkontur/react-ui 1.6.9 → 1.6.11
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/README.md +135 -135
- package/components/Autocomplete/Autocomplete.adapter.js.flow +4 -4
- package/components/Autocomplete/Autocomplete.js.flow +37 -37
- package/components/Autocomplete/README.md +7 -7
- package/components/Autocomplete/index.js.flow +2 -2
- package/components/Button/Button.adapter.js.flow +4 -4
- package/components/Button/Button.js.flow +58 -58
- package/components/Button/Corners.js.flow +12 -12
- package/components/Button/README.md +85 -85
- package/components/Button/index.js.flow +2 -2
- package/components/Calendar/Animation.js.flow +7 -7
- package/components/Calendar/Calendar.js.flow +33 -33
- package/components/Calendar/CalendarDateShape.js.flow +26 -26
- package/components/Calendar/CalendarScrollEvents.js.flow +15 -15
- package/components/Calendar/CalendarUtils.js.flow +35 -35
- package/components/Calendar/DayCellView.js.flow +16 -16
- package/components/Calendar/DayCellViewModel.js.flow +9 -9
- package/components/Calendar/Month.js.flow +23 -23
- package/components/Calendar/MonthView.js.flow +24 -24
- package/components/Calendar/MonthViewModel.js.flow +16 -16
- package/components/Calendar/config.js.flow +11 -11
- package/components/Calendar/index.js.flow +2 -2
- package/components/Calendar/presets.js.flow +21 -21
- package/components/Calendar/stepper.js.flow +2 -2
- package/components/Calendar/utils.js.flow +2 -2
- package/components/Center/Center.js.flow +15 -15
- package/components/Center/README.md +5 -5
- package/components/Center/index.js.flow +2 -2
- package/components/Checkbox/Checkbox.adapter.js.flow +4 -4
- package/components/Checkbox/Checkbox.js.flow +27 -27
- package/components/Checkbox/README.md +61 -61
- package/components/Checkbox/index.js.flow +2 -2
- package/components/ComboBox/ComboBox.js.flow +58 -58
- package/components/ComboBox/README.md +423 -423
- package/components/ComboBox/__mocks__/getCities.js.map +1 -1
- package/components/ComboBox/__mocks__/kladr.json +20002 -20002
- package/components/ComboBox/index.js.flow +2 -2
- package/components/ComboBoxOld/ComboBoxOld.adapter.js.map +1 -1
- package/components/ComboBoxOld/ComboBoxOld.d.ts +120 -120
- package/components/ComboBoxOld/ComboBoxOld.js +45 -45
- package/components/ComboBoxOld/ComboBoxOld.js.map +1 -1
- package/components/ComboBoxOld/ComboBoxRenderer.js.map +1 -1
- package/components/ComboBoxOld/README.md +83 -83
- package/components/ComboBoxOld/index.d.ts +1 -1
- package/components/ComboBoxOld/index.js.map +1 -1
- package/components/CurrencyInput/CurrencyHelper.js.flow +44 -44
- package/components/CurrencyInput/CurrencyInput.js.flow +30 -30
- package/components/CurrencyInput/CurrencyInputHelper.js.flow +38 -38
- package/components/CurrencyInput/CurrencyInputKeyboardActions.js.flow +19 -19
- package/components/CurrencyInput/CursorHelper.js.flow +15 -15
- package/components/CurrencyInput/README.md +19 -19
- package/components/CurrencyInput/SelectionHelper.js.flow +16 -16
- package/components/CurrencyInput/index.js.flow +2 -2
- package/components/CurrencyLabel/CurrencyLabel.js.flow +10 -10
- package/components/CurrencyLabel/README.md +23 -23
- package/components/CurrencyLabel/index.js.flow +2 -2
- package/components/CustomComboBox/ComboBoxMenu.js.flow +22 -22
- package/components/CustomComboBox/ComboBoxView.js.flow +52 -52
- package/components/CustomComboBox/CustomComboBox.js.flow +130 -130
- package/components/CustomComboBox/index.js.flow +2 -2
- package/components/DateInput/DateInput.js.flow +60 -60
- package/components/DateInput/README.md +104 -104
- package/components/DateInput/helpers/DateInputKeyboardActions.js.flow +17 -17
- package/components/DateInput/helpers/SelectionHelpers.js.flow +3 -3
- package/components/DateInput/helpers/inputNumber.js.flow +4 -4
- package/components/DateInput/index.js.flow +2 -2
- package/components/DatePicker/DatePicker.js.flow +45 -45
- package/components/DatePicker/DatePickerHelpers.js.flow +7 -7
- package/components/DatePicker/DateShape.js.flow +11 -11
- package/components/DatePicker/Picker.js.flow +23 -23
- package/components/DatePicker/README.md +307 -307
- package/components/DatePicker/index.js.flow +2 -2
- package/components/DatePickerOld/Calendar.js.map +1 -1
- package/components/DatePickerOld/CalendarCell.js.map +1 -1
- package/components/DatePickerOld/DateInput.js +2 -2
- package/components/DatePickerOld/DateInput.js.map +1 -1
- package/components/DatePickerOld/DatePicker.adapter.js.map +1 -1
- package/components/DatePickerOld/DatePickerOld.d.ts +35 -35
- package/components/DatePickerOld/DatePickerOld.js +16 -16
- package/components/DatePickerOld/DatePickerOld.js.map +1 -1
- package/components/DatePickerOld/Picker.js.map +1 -1
- package/components/DatePickerOld/README.md +7 -7
- package/components/DatePickerOld/dateParser.js.map +1 -1
- package/components/DatePickerOld/index.d.ts +1 -1
- package/components/DatePickerOld/index.js.map +1 -1
- package/components/DateSelect/DateSelect.js.flow +30 -30
- package/components/DateSelect/index.js.flow +2 -2
- package/components/Dropdown/Dropdown.js.flow +41 -41
- package/components/Dropdown/README.md +14 -14
- package/components/Dropdown/index.js.flow +2 -2
- package/components/DropdownContainer/DropdownContainer.js.flow +29 -29
- package/components/DropdownMenu/DropdownMenu.js.flow +20 -20
- package/components/DropdownMenu/README.md +66 -66
- package/components/DropdownMenu/index.js.flow +2 -2
- package/components/Fias/Fias.js.flow +37 -37
- package/components/Fias/FiasModal.js.flow +12 -12
- package/components/Fias/FiasSearch/FiasSearch.js.flow +32 -32
- package/components/Fias/FiasSearch/README.md +78 -78
- package/components/Fias/Form/FiasComboBox.js.flow +25 -25
- package/components/Fias/Form/FiasForm.js.flow +21 -21
- package/components/Fias/README.md +436 -436
- package/components/Fias/api/APIResultFactory.js.flow +7 -7
- package/components/Fias/api/FiasAPI.js.flow +13 -13
- package/components/Fias/api/MockAPI.js.flow +13 -13
- package/components/Fias/api/data.json +285 -285
- package/components/Fias/constants/abbreviations.js.flow +7 -7
- package/components/Fias/index.js.flow +5 -5
- package/components/Fias/locale/types.js.flow +71 -71
- package/components/Fias/logger/Logger.js.flow +13 -13
- package/components/Fias/models/Address.js.flow +57 -57
- package/components/Fias/models/AddressElement.js.flow +15 -15
- package/components/Fias/models/FiasData.js.flow +10 -10
- package/components/Fias/types.js.flow +133 -133
- package/components/FxInput/FxInput.adapter.js.flow +4 -4
- package/components/FxInput/FxInput.js.flow +24 -24
- package/components/FxInput/README.md +13 -13
- package/components/FxInput/index.js.flow +2 -2
- package/components/Gapped/Gapped.js.flow +13 -13
- package/components/Gapped/README.md +6 -6
- package/components/Gapped/index.js.flow +2 -2
- package/components/Group/Group.js.flow +14 -14
- package/components/Group/README.md +27 -27
- package/components/Group/index.js.flow +2 -2
- package/components/HideBodyVerticalScroll/HideBodyVerticalScroll.js.flow +7 -7
- package/components/HideBodyVerticalScroll/index.js.flow +2 -2
- package/components/Hint/Hint.js.flow +37 -37
- package/components/Hint/README.md +3 -3
- package/components/Hint/index.js.flow +2 -2
- package/components/Icon/20px/Icon.js.flow +27 -27
- package/components/Icon/20px/index.js.flow +2 -2
- package/components/Icon/README.md +64 -64
- package/components/IgnoreLayerClick/IgnoreLayerClick.js.flow +12 -12
- package/components/IgnoreLayerClick/index.js.flow +2 -2
- package/components/Input/Input.adapter.js.flow +9 -9
- package/components/Input/Input.js.flow +55 -55
- package/components/Input/README.md +13 -13
- package/components/Input/index.js.flow +2 -2
- package/components/Kebab/Kebab.js.flow +23 -23
- package/components/Kebab/README.md +44 -44
- package/components/Kebab/index.js.flow +2 -2
- package/components/Kladr/AddressModal.d.ts +39 -39
- package/components/Kladr/AddressModal.js.flow +20 -20
- package/components/Kladr/AddressModal.js.map +1 -1
- package/components/Kladr/Kladr.d.ts +39 -39
- package/components/Kladr/Kladr.js +2 -2
- package/components/Kladr/Kladr.js.flow +27 -27
- package/components/Kladr/Kladr.js.map +1 -1
- package/components/Kladr/KladrAPI.d.ts +8 -8
- package/components/Kladr/KladrAPI.js +7 -2
- package/components/Kladr/KladrAPI.js.flow +8 -8
- package/components/Kladr/KladrAPI.js.map +1 -1
- package/components/Kladr/README.md +3 -3
- package/components/Kladr/Types.d.ts +40 -40
- package/components/Kladr/Types.js.flow +39 -39
- package/components/Kladr/index.d.ts +1 -1
- package/components/Kladr/index.js.flow +2 -2
- package/components/Kladr/index.js.map +1 -1
- package/components/Kladr/util.js.map +1 -1
- package/components/Kladr/utils.d.ts +4 -4
- package/components/Kladr/utils.js.flow +4 -4
- package/components/Link/Link.adapter.js.flow +4 -4
- package/components/Link/Link.js.flow +25 -25
- package/components/Link/README.md +11 -11
- package/components/Link/index.js.flow +2 -2
- package/components/Loader/Loader.js.flow +20 -20
- package/components/Loader/README.md +25 -25
- package/components/Loader/index.js.flow +2 -2
- package/components/Logotype/Logotype.js.flow +21 -21
- package/components/Logotype/ProductWidget.js.flow +7 -7
- package/components/Logotype/README.md +32 -32
- package/components/Logotype/index.js.flow +2 -2
- package/components/Menu/Menu.js.flow +24 -24
- package/components/Menu/isActiveElement.js.flow +7 -7
- package/components/MenuHeader/MenuHeader.js.flow +11 -11
- package/components/MenuHeader/index.js.flow +2 -2
- package/components/MenuItem/MenuItem.js.flow +33 -33
- package/components/MenuItem/README.md +5 -5
- package/components/MenuItem/index.js.flow +2 -2
- package/components/MenuSeparator/MenuSeparator.js.flow +7 -7
- package/components/MenuSeparator/index.js.flow +2 -2
- package/components/Modal/Modal.adapter.js.flow +4 -4
- package/components/Modal/Modal.js.flow +30 -30
- package/components/Modal/Modal.js.map +1 -1
- package/components/Modal/ModalBody.js.flow +7 -7
- package/components/Modal/ModalClose.js.flow +6 -6
- package/components/Modal/ModalContext.js.flow +15 -15
- package/components/Modal/ModalFooter.js.flow +11 -11
- package/components/Modal/ModalHeader.js.flow +11 -11
- package/components/Modal/README.md +38 -38
- package/components/Modal/index.js.flow +2 -2
- package/components/ModalStack/ModalStack.d.ts +4 -2
- package/components/ModalStack/ModalStack.js +13 -2
- package/components/ModalStack/ModalStack.js.flow +10 -10
- package/components/ModalStack/ModalStack.js.map +1 -1
- package/components/ModalStack/index.js.flow +2 -2
- package/components/Paging/NavigationHelper.js.flow +13 -13
- package/components/Paging/Paging.js.flow +38 -38
- package/components/Paging/PagingHelper.js.flow +10 -10
- package/components/Paging/README.md +43 -43
- package/components/Paging/index.js.flow +2 -2
- package/components/PasswordInput/PasswordInput.js.flow +26 -26
- package/components/PasswordInput/PasswordInputFallback.js.flow +13 -13
- package/components/PasswordInput/getCharHelper.js.flow +4 -4
- package/components/PasswordInput/index.js.flow +2 -2
- package/components/PhoneInput/PhoneInput.js +2 -2
- package/components/PhoneInput/PhoneInput.js.map +1 -1
- package/components/PhoneInput/index.js.map +1 -1
- package/components/Popup/Popup.js.flow +60 -60
- package/components/Popup/PopupHelper.js.flow +29 -29
- package/components/Popup/PopupPin.js.flow +15 -15
- package/components/Popup/index.js.flow +2 -2
- package/components/Radio/README.md +14 -14
- package/components/Radio/Radio.js.flow +33 -33
- package/components/Radio/index.js.flow +2 -2
- package/components/RadioGroup/Prevent.js.flow +9 -9
- package/components/RadioGroup/README.md +44 -44
- package/components/RadioGroup/RadioGroup.adapter.js.flow +4 -4
- package/components/RadioGroup/RadioGroup.js +1 -1
- package/components/RadioGroup/RadioGroup.js.flow +42 -42
- package/components/RadioGroup/RadioGroup.js.map +1 -1
- package/components/RadioGroup/index.js.flow +2 -2
- package/components/RenderContainer/RenderContainer.js.flow +11 -11
- package/components/RenderContainer/index.js.flow +2 -2
- package/components/RenderLayer/RenderLayer.js.flow +12 -12
- package/components/RenderLayer/index.js.flow +2 -2
- package/components/ScrollContainer/README.md +60 -60
- package/components/ScrollContainer/ScrollContainer.js.flow +24 -24
- package/components/ScrollContainer/index.js.flow +2 -2
- package/components/Select/Item.js.flow +7 -7
- package/components/Select/README.md +23 -23
- package/components/Select/Select.adapter.js.flow +4 -4
- package/components/Select/Select.js.flow +81 -81
- package/components/Select/index.js.flow +2 -2
- package/components/SidePage/README.md +46 -46
- package/components/SidePage/SidePage.js.flow +34 -34
- package/components/SidePage/SidePage.js.map +1 -1
- package/components/SidePage/SidePageBody.js.flow +13 -13
- package/components/SidePage/SidePageContainer.js.flow +9 -9
- package/components/SidePage/SidePageContext.js.flow +15 -15
- package/components/SidePage/SidePageFooter.js.flow +16 -16
- package/components/SidePage/SidePageHeader.js.flow +11 -11
- package/components/SidePage/index.js.flow +2 -2
- package/components/Spinner/README.md +33 -33
- package/components/Spinner/Spinner.js.flow +20 -20
- package/components/Spinner/SpinnerFallback.js.flow +15 -15
- package/components/Spinner/index.js.flow +2 -2
- package/components/Spinner/settings.js.flow +48 -48
- package/components/Sticky/README.md +27 -27
- package/components/Sticky/Sticky.js.flow +22 -22
- package/components/Sticky/index.js.flow +2 -2
- package/components/Switcher/README.md +10 -10
- package/components/Switcher/Switcher.js.flow +26 -26
- package/components/Switcher/index.js.flow +2 -2
- package/components/Tabs/Indicator.js.flow +21 -21
- package/components/Tabs/README.md +28 -28
- package/components/Tabs/Tab.js.flow +48 -48
- package/components/Tabs/Tabs.js.flow +28 -28
- package/components/Tabs/index.js.flow +2 -2
- package/components/Textarea/README.md +9 -9
- package/components/Textarea/Textarea.adapter.js.flow +11 -11
- package/components/Textarea/Textarea.js.flow +33 -33
- package/components/Textarea/TextareaHelpers.js.flow +6 -6
- package/components/Textarea/index.js.flow +2 -2
- package/components/ThemeProvider/Playground/README.md +7 -7
- package/components/ThemeProvider/README.md +172 -172
- package/components/ThemeShowcase/README.md +13 -13
- package/components/Toast/README.md +39 -39
- package/components/Toast/Toast.js.flow +29 -29
- package/components/Toast/ToastStatic.js.flow +10 -10
- package/components/Toast/ToastView.js.flow +16 -16
- package/components/Toast/index.js.flow +2 -2
- package/components/Toggle/README.md +9 -9
- package/components/Toggle/Toggle.js.flow +28 -28
- package/components/Toggle/index.js.flow +2 -2
- package/components/Token/README.md +109 -109
- package/components/Token/Token.js.flow +25 -25
- package/components/Token/TokenRemoveIcon.js.flow +11 -11
- package/components/Token/index.js.flow +2 -2
- package/components/TokenInput/README.md +82 -82
- package/components/TokenInput/TextWidthHelper.js.flow +10 -10
- package/components/TokenInput/TokenInput.js.flow +39 -39
- package/components/TokenInput/TokenInputMenu.js.flow +17 -17
- package/components/TokenInput/TokenInputReducer.js.flow +63 -63
- package/components/TokenInput/index.js.flow +2 -2
- package/components/Tooltip/README.md +207 -207
- package/components/Tooltip/Tooltip.js.flow +33 -33
- package/components/Tooltip/index.js.flow +2 -2
- package/components/TooltipMenu/README.md +106 -106
- package/components/TooltipMenu/TooltipMenu.js.flow +19 -19
- package/components/TooltipMenu/index.js.flow +2 -2
- package/components/TopBar/ButtonItem.js.flow +22 -22
- package/components/TopBar/Divider.js.flow +5 -5
- package/components/TopBar/Item.js.flow +19 -19
- package/components/TopBar/Organizations.js.flow +16 -16
- package/components/TopBar/README.md +112 -112
- package/components/TopBar/TopBar.js.flow +53 -53
- package/components/TopBar/TopBarDropdown.js.flow +23 -23
- package/components/TopBar/TopBarEnd.js.flow +4 -4
- package/components/TopBar/TopBarLogout.js.flow +6 -6
- package/components/TopBar/TopBarStart.js.flow +4 -4
- package/components/TopBar/User.js.flow +9 -9
- package/components/TopBar/index.js.flow +2 -2
- package/components/ZIndex/ZIndex.js.flow +11 -11
- package/components/ZIndex/index.js.flow +2 -2
- package/components/__mocks__/react-addons-css-transition-group.js.map +1 -1
- package/components/all.js.flow +36 -36
- package/components/ensureOldIEClassName.js.flow +6 -6
- package/components/eventHandlers.js.flow +9 -9
- package/components/index.js.flow +2 -2
- package/components/internal/InputLikeText/InputLikeText.js.flow +24 -24
- package/components/internal/InputLikeText/index.js.flow +2 -2
- package/components/internal/InternalMenu/InternalMenu.js.flow +23 -23
- package/components/internal/InternalMenu/isActiveElement.js.flow +7 -7
- package/components/internal/MaskedInput/MaskedInput.js.flow +24 -24
- package/components/internal/MaskedInput/index.js.flow +2 -2
- package/components/internal/MockDate.js.flow +9 -9
- package/components/internal/PopupMenu/PopupMenu.js.flow +40 -40
- package/components/internal/PopupMenu/PopupMenuPositions.js.flow +4 -4
- package/components/internal/PopupMenu/index.js.flow +2 -2
- package/components/internal/PopupMenu/validatePositions.js.flow +4 -4
- package/components/internal/ResizeDetector/ResizeDetector.js.flow +8 -8
- package/components/internal/ResizeDetector/index.js.flow +2 -2
- package/components/internal/createPropsGetter.js.flow +8 -8
- package/components/internal/cross.js.flow +4 -4
- package/components/internal/currentEnvironment.js.flow +4 -4
- package/components/internal/extractKeyboardAction.js.flow +12 -12
- package/components/polyfillPlaceholder.js.flow +4 -4
- package/package.json +1 -4
- package/typings/console.d.ts +3 -3
- package/typings/event-types.d.ts +4 -4
- package/typings/fbjs.d.ts +4 -4
- package/typings/global.d.ts +6 -6
- package/typings/images.d.ts +1 -1
- package/typings/less.d.ts +4 -4
- package/typings/mocha/index.d.ts +2 -2
- package/typings/mockdate.d.ts +1 -1
- package/typings/normalize-wheel.d.ts +1 -1
- package/typings/raf.d.ts +1 -1
- package/typings/react-addons-css-transition-group.d.ts +1 -1
- package/typings/react-testing/index.d.ts +4 -4
- package/typings/react-testing/window.d.ts +5 -5
- package/typings/react.d.ts +8 -8
- package/typings/utility-types.d.ts +17 -17
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["ComboBoxRenderer.js"],"names":["INPUT_PASS_PROPS","borderless","error","warning","width","disabled","onMouseEnter","onMouseLeave","onMouseOver","ComboBoxRenderer","element","props","context","el","_focusable","focus","ReactDOM","findDOMNode","menu","_menu","event","value","newInputValue","inputValueChanged","state","searchText","onInputChange","nextState","setState","opened","_debouncedFetchList","_ignoreRecover","onInputKeyDown","defaultPrevented","key","preventDefault","safelyCall","onOpen","up","down","handled","enter","_tryRecover","_handleBlur","_close","_setCurrentSearchText","info","_fetchList","_handleFocus","_handleValueClick","_ignoreBlur","isEditing","onFocus","onAlkoFocus","onBlur","onAlkoBlur","e","endEdit","result","setTimeout","onClose","pattern","expectingId","_fetchingId","source","then","_mounted","reset","setSelectionRange","length","selected","debounceInterval","render","_handleClickOutside","styles","root","renderInput","renderValue","renderMenu","openButton","arrow","_handleArrowClick","_handleArrowMouseDown","inputProps","input","_refFocusable","_handleInputChange","_handleInputKey","placeholder","isNotRecovered","_error","isEmptyResults","values","menuAlign","disablePortal","_refMenu","renderEmptyResults","renderResults","renderTotalCount","mapResult","i","React","isValidElement","cloneElement","onClick","_handleItemClick","renderItem","renderNotFound","isFunction","total","totalCount","componentDidMount","autoFocus","_focus","componentWillUnmount","options","_change","recover","recovered","_setError","_lastError","onError","onChange","target","valueToString","Component","children","fn","args","map","infos"],"mappings":"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","sourcesContent":["// @flow\r\n/* eslint-disable flowtype/no-weak-types */\r\nimport * as React from 'react';\r\nimport ReactDOM from 'react-dom';\r\n\r\nimport filterProps from '../filterProps';\r\n\r\nimport debounce from 'lodash.debounce';\r\n\r\nimport RenderLayer from '../RenderLayer';\r\nimport DropdownContainer from '../DropdownContainer/DropdownContainer';\r\nimport Input from '../Input';\r\nimport InputLikeText from '../internal/InputLikeText/InputLikeText';\r\nimport Menu from '../Menu/Menu';\r\nimport MenuItem from '../MenuItem/MenuItem';\r\nimport type { MenuItemState } from '../MenuItem/MenuItem';\r\nimport { fixClickFocusIE } from '../../lib/events/fixClickFocusIE';\r\n\r\nimport styles from './ComboBoxRenderer.module.less';\r\n\r\nconst INPUT_PASS_PROPS = {\r\n borderless: true,\r\n error: true,\r\n warning: true,\r\n width: true,\r\n disabled: true,\r\n onMouseEnter: true,\r\n onMouseLeave: true,\r\n onMouseOver: true,\r\n};\r\n\r\nexport type Value = any;\r\nexport type Info = any;\r\n\r\ntype SourceResult = {\r\n values: Array<Value | React.Element<any> | (() => React.Element<any>)>,\r\n infos?: Array<Info>,\r\n total?: number,\r\n};\r\n\r\ntype RecoverResult = {\r\n value: Value,\r\n info?: Info,\r\n};\r\n\r\ntype ErrorKind = null | 'not_recovered';\r\n\r\ntype RecoverFunc = (searchString: string) => RecoverResult;\r\n\r\nexport type BaseProps = {\r\n autoFocus?: boolean,\r\n borderless?: boolean,\r\n disabled?: boolean,\r\n error?: boolean,\r\n info?: Info | ((v: Value) => Promise<Info>),\r\n menuAlign: 'left' | 'right',\r\n disablePortal?: boolean,\r\n debounceInterval?: number,\r\n openButton?: boolean,\r\n placeholder: string,\r\n recover?: RecoverFunc | boolean,\r\n renderItem: (value: Value, info: Info, state: MenuItemState) => React.Node,\r\n renderValue: (value: Value, info: ?Info) => React.Element<any>,\r\n renderNotFound?: string | ((searchText: string) => React.Element<any> | string),\r\n renderTotalCount?: (f: number, total: number) => React.Element<any> | string,\r\n source: (searchText: string) => Promise<SourceResult>,\r\n warning?: boolean,\r\n value: Value | null,\r\n valueToString?: (value: Value, info: ?Info) => string,\r\n width: number | string,\r\n\r\n onBlur?: () => void,\r\n onChange?: (event: { target: { value: Value } }, value: Value) => void,\r\n onClose?: () => void,\r\n onError?: (kind: ErrorKind) => void,\r\n onFocus?: () => void,\r\n onOpen?: () => void,\r\n onInputChange?: (value: string) => ?string,\r\n onInputKeyDown?: (e: SyntheticKeyboardEvent<>) => void,\r\n\r\n alkoValueToText?: (value: Value) => string,\r\n onAlkoFocus?: () => void,\r\n onAlkoBlur?: () => void,\r\n\r\n onMouseEnter?: (e: SyntheticMouseEvent<>) => void,\r\n onMouseLeave?: (e: SyntheticMouseEvent<>) => void,\r\n onMouseOver?: (e: SyntheticMouseEvent<>) => void,\r\n};\r\n\r\ntype Props = BaseProps & {\r\n info: Info,\r\n};\r\n\r\ntype State = {\r\n opened: boolean,\r\n searchText: string,\r\n isEditing: boolean,\r\n result: ?SourceResult,\r\n selected: number,\r\n};\r\n\r\nclass ComboBoxRenderer extends React.Component<Props, State> {\r\n // eslint-disable-next-line react/no-multi-comp\r\n static Item = class Item extends React.Component<{ children?: React.Node }> {\r\n render() {\r\n return <MenuItem>{this.props.children}</MenuItem>;\r\n }\r\n };\r\n\r\n static static(element: (() => React.Element<any>) | React.Element<any>) {\r\n return element;\r\n }\r\n\r\n static defaultProps = {\r\n renderItem,\r\n renderValue,\r\n placeholder: '',\r\n width: (250: number | string),\r\n menuAlign: 'left',\r\n debounceInterval: 0,\r\n };\r\n\r\n _mounted = false;\r\n _focusable = null;\r\n _menu: ?Menu = null;\r\n _focusSubscribtion: ?{ remove: () => void } = null;\r\n _lastError: ErrorKind = null;\r\n _error: ErrorKind = null;\r\n _ignoreRecover = true;\r\n _ignoreBlur = true;\r\n _fetchingId = 0;\r\n _debouncedFetchList: Function;\r\n\r\n constructor(props: Props, context: mixed) {\r\n super(props, context);\r\n\r\n this.state = {\r\n opened: false,\r\n searchText: '',\r\n result: null,\r\n isEditing: false,\r\n selected: -1,\r\n };\r\n\r\n const { debounceInterval } = this.props;\r\n this._debouncedFetchList =\r\n debounceInterval && debounceInterval > 0 ? debounce(this._fetchList, debounceInterval) : this._fetchList;\r\n }\r\n\r\n render() {\r\n return (\r\n <RenderLayer\r\n onFocusOutside={this._handleBlur}\r\n onClickOutside={this._handleClickOutside}\r\n active={this.state.opened}\r\n >\r\n <label className={styles.root} style={{ width: this.props.width }}>\r\n {this.state.isEditing ? this.renderInput() : this.renderValue()}\r\n {this.state.opened && this.renderMenu()}\r\n {this.props.openButton && (\r\n <div className={styles.arrow} onClick={this._handleArrowClick} onMouseDown={this._handleArrowMouseDown} />\r\n )}\r\n </label>\r\n </RenderLayer>\r\n );\r\n }\r\n\r\n renderInput() {\r\n const inputProps = filterProps(this.props, INPUT_PASS_PROPS);\r\n return (\r\n <div className={styles.input}>\r\n <Input\r\n ref={this._refFocusable}\r\n {...inputProps}\r\n value={this.state.searchText}\r\n rightIcon={this.props.openButton && <span />}\r\n onChange={this._handleInputChange}\r\n onKeyDown={this._handleInputKey}\r\n />\r\n </div>\r\n );\r\n }\r\n\r\n renderValue() {\r\n const inputProps = filterProps(this.props, INPUT_PASS_PROPS);\r\n\r\n const value = this.props.value ? (\r\n this.props.renderValue(this.props.value, this.props.info)\r\n ) : (\r\n <span className={styles.placeholder}>{this.props.placeholder}</span>\r\n );\r\n\r\n const isNotRecovered = !!this._error;\r\n\r\n return (\r\n <InputLikeText\r\n ref={this._refFocusable}\r\n {...inputProps}\r\n onClick={this._handleValueClick}\r\n onFocus={this._handleValueClick}\r\n error={isNotRecovered || this.props.error}\r\n >\r\n {isNotRecovered ? this.state.searchText : value}\r\n </InputLikeText>\r\n );\r\n }\r\n\r\n renderMenu() {\r\n const { result } = this.state;\r\n if (!result) {\r\n return null;\r\n }\r\n\r\n const isEmptyResults = result.values.length === 0;\r\n\r\n return (\r\n <DropdownContainer\r\n getParent={() => ReactDOM.findDOMNode(this)}\r\n align={this.props.menuAlign}\r\n disablePortal={this.props.disablePortal}\r\n offsetY={1}\r\n >\r\n <Menu ref={this._refMenu} maxHeight={200}>\r\n {isEmptyResults ? this.renderEmptyResults() : this.renderResults(result)}\r\n {this.renderTotalCount(result)}\r\n </Menu>\r\n </DropdownContainer>\r\n );\r\n }\r\n\r\n renderResults(result: SourceResult): Array<?React.Element<Class<MenuItem>>> {\r\n return mapResult(result, (value, info, i) => {\r\n if (typeof value === 'function' || React.isValidElement(value)) {\r\n const element = typeof value === 'function' ? value() : value;\r\n return React.cloneElement(element, {\r\n key: i,\r\n onClick: event => this._handleItemClick(event, element.props),\r\n });\r\n }\r\n return (\r\n <MenuItem\r\n key={i}\r\n onClick={(event: SyntheticEvent<*>) => {\r\n this._handleItemClick(event, { value, info });\r\n }}\r\n >\r\n {state => this.props.renderItem(value, info, state)}\r\n </MenuItem>\r\n );\r\n });\r\n }\r\n\r\n renderEmptyResults(): ?React.Element<typeof MenuItem> {\r\n const { renderNotFound } = this.props;\r\n\r\n if (!renderNotFound) {\r\n return null;\r\n }\r\n\r\n const { searchText } = this.state;\r\n\r\n return (\r\n <MenuItem disabled={!isFunction(renderNotFound)}>\r\n {isFunction(renderNotFound) ? renderNotFound(searchText) : renderNotFound}\r\n </MenuItem>\r\n );\r\n }\r\n\r\n renderTotalCount(result: SourceResult) {\r\n const { renderTotalCount } = this.props;\r\n\r\n if (!renderTotalCount || !result || !result.values || !result.total) {\r\n return null;\r\n }\r\n\r\n if (result.values.length === result.total) {\r\n return null;\r\n }\r\n\r\n return (\r\n <MenuItem disabled>\r\n <div className={styles.totalCount}>{renderTotalCount(result.values.length, result.total)}</div>\r\n </MenuItem>\r\n );\r\n }\r\n\r\n componentDidMount() {\r\n this._mounted = true;\r\n if (this.props.autoFocus) {\r\n this._focus();\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n this._mounted = false;\r\n }\r\n\r\n _refFocusable = (el: Input | InputLikeText | null) => {\r\n this._focusable = el && (el.focus ? el : (ReactDOM.findDOMNode(el): any));\r\n };\r\n\r\n _refMenu = (menu: ?Menu) => {\r\n this._menu = menu;\r\n };\r\n\r\n _handleInputChange = (event: SyntheticInputEvent<HTMLInputElement>, value: string) => {\r\n let newInputValue = value;\r\n\r\n const inputValueChanged = this.state.searchText !== newInputValue;\r\n if (inputValueChanged && this.props.onInputChange) {\r\n let nextState = this.props.onInputChange(newInputValue);\r\n\r\n if (nextState != null && typeof nextState !== 'object') {\r\n newInputValue = '' + nextState;\r\n }\r\n }\r\n\r\n this.setState(() => ({\r\n searchText: newInputValue,\r\n opened: true,\r\n }));\r\n this._debouncedFetchList(newInputValue);\r\n this._ignoreRecover = false;\r\n };\r\n\r\n _handleInputKey = (event: SyntheticKeyboardEvent<>) => {\r\n if (typeof this.props.onInputKeyDown === 'function') {\r\n this.props.onInputKeyDown(event);\r\n if (event.defaultPrevented) {\r\n return;\r\n }\r\n }\r\n\r\n switch (event.key) {\r\n case 'ArrowUp':\r\n event.preventDefault();\r\n\r\n if (!this.state.opened) {\r\n this.setState({ opened: true });\r\n safelyCall(this.props.onOpen);\r\n }\r\n\r\n this._menu && this._menu.up();\r\n break;\r\n case 'ArrowDown':\r\n event.preventDefault();\r\n\r\n if (!this.state.opened) {\r\n this.setState({ opened: true });\r\n safelyCall(this.props.onOpen);\r\n }\r\n\r\n this._menu && this._menu.down();\r\n break;\r\n case 'Enter':\r\n event.preventDefault();\r\n const handled = this._menu && this._menu.enter(event);\r\n if (!handled) {\r\n this._tryRecover();\r\n\r\n // Close ComboBox only if Enter wasn't handled by the Menu.\r\n this._handleBlur();\r\n }\r\n break;\r\n case 'Escape':\r\n event.preventDefault();\r\n if (!this.state.opened) {\r\n return;\r\n }\r\n this._close();\r\n break;\r\n }\r\n };\r\n\r\n _handleValueClick = () => {\r\n this._setCurrentSearchText(this.props.value, this.props.info);\r\n this._fetchList('');\r\n this._handleFocus();\r\n };\r\n\r\n _handleItemClick(event: SyntheticEvent<*>, options: { value?: Value, info?: Info, onClick?: () => void }) {\r\n this.setState({ searchText: '', opened: false, isEditing: false });\r\n this._change(options.value, options.info);\r\n\r\n safelyCall(options.onClick);\r\n this._handleBlur();\r\n }\r\n\r\n _handleArrowMouseDown = (event: SyntheticMouseEvent<>) => {\r\n event.preventDefault();\r\n };\r\n\r\n _handleArrowClick = (event: SyntheticMouseEvent<>) => {\r\n if (!this.state.opened && !this.props.disabled) {\r\n this._handleValueClick();\r\n }\r\n };\r\n\r\n _handleFocus = () => {\r\n /* Allow blur happen only if focus occured */\r\n this._ignoreBlur = false;\r\n\r\n this.setState({ isEditing: true, opened: true });\r\n safelyCall(this.props.onOpen);\r\n\r\n if (!safelyCall(this.props.onFocus)) {\r\n safelyCall(this.props.onAlkoFocus);\r\n }\r\n };\r\n\r\n _handleBlur = () => {\r\n if (this._ignoreBlur) {\r\n return;\r\n }\r\n\r\n this._close(true);\r\n this._tryRecover();\r\n\r\n if (!safelyCall(this.props.onBlur)) {\r\n safelyCall(this.props.onAlkoBlur);\r\n }\r\n\r\n /* Blur should occure only once */\r\n this._ignoreBlur = true;\r\n };\r\n\r\n _handleClickOutside = (e: Event) => {\r\n fixClickFocusIE(e);\r\n this._handleBlur();\r\n };\r\n\r\n _close = (endEdit?: boolean) => {\r\n this.setState({ opened: false, result: null });\r\n setTimeout(() => this.setState({ isEditing: !endEdit }), 0);\r\n safelyCall(this.props.onClose);\r\n };\r\n\r\n _fetchList = (pattern: string) => {\r\n const expectingId = ++this._fetchingId;\r\n this.props.source(pattern).then(result => {\r\n if (!this._mounted) {\r\n return;\r\n }\r\n\r\n if (expectingId === this._fetchingId && this.state.opened) {\r\n this._menu && this._menu.reset();\r\n this.setState(() => ({ result }));\r\n }\r\n });\r\n };\r\n\r\n _focus = () => {\r\n if (this._focusable && this._focusable.setSelectionRange) {\r\n // $FlowIgnore\r\n this._focusable.setSelectionRange(0, this.state.searchText.length);\r\n } else if (this._focusable) {\r\n this._focusable.focus();\r\n }\r\n };\r\n\r\n _tryRecover() {\r\n if (this._ignoreRecover) {\r\n return;\r\n }\r\n this._ignoreRecover = true;\r\n\r\n if (!this.props.recover) {\r\n this._change(null);\r\n this.setState({ searchText: '' });\r\n return;\r\n }\r\n\r\n const searchText = this.state.searchText;\r\n let recovered: ?RecoverResult = null;\r\n\r\n if (typeof this.props.recover === 'function') {\r\n recovered = this.props.recover(searchText);\r\n } else if (this.props.recover === true) {\r\n recovered = { value: searchText };\r\n }\r\n\r\n if (recovered) {\r\n this._change(recovered.value, recovered.info);\r\n } else {\r\n this._change(null);\r\n this._setError(this.state.searchText ? 'not_recovered' : null);\r\n }\r\n }\r\n\r\n _setError(error: ErrorKind) {\r\n this._error = error;\r\n if (this._lastError !== error) {\r\n this._lastError = error;\r\n safelyCall(this.props.onError, error);\r\n }\r\n }\r\n\r\n _change(value: Value, info?: Info) {\r\n safelyCall(this.props.onChange, { target: { value } }, value, info);\r\n this._setError(null);\r\n\r\n /* No need in recovers after value changes */\r\n this._ignoreRecover = true;\r\n }\r\n\r\n _setCurrentSearchText(value: Value, info: ?Info) {\r\n const valueToString = this.props.valueToString;\r\n\r\n if (valueToString) {\r\n const searchText = value ? valueToString(value, info) : this.state.searchText;\r\n\r\n return this.setState({ searchText }, this._focus);\r\n }\r\n\r\n return this.setState({ searchText: '' }, this._focus);\r\n }\r\n}\r\n\r\nfunction safelyCall(fn: ?Function, ...args: any[]) {\r\n if (fn) {\r\n fn(...args);\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\nfunction mapResult(result: SourceResult, fn: (v: Value, d: Info, i: number) => any): Array<any> {\r\n return result.values.map((value, i) => {\r\n const info = result.infos && result.infos[i];\r\n return fn(value, info, i);\r\n });\r\n}\r\n\r\nfunction renderValue(value: *, info: *) {\r\n return info;\r\n}\r\n\r\nfunction renderItem(value: *, info: *, state: *) {\r\n return info;\r\n}\r\n\r\nfunction isFunction(fn) /*: boolean %checks */ {\r\n return typeof fn === 'function';\r\n}\r\n\r\nexport default ComboBoxRenderer;\r\n"]}
|
|
1
|
+
{"version":3,"sources":["ComboBoxRenderer.js"],"names":["INPUT_PASS_PROPS","borderless","error","warning","width","disabled","onMouseEnter","onMouseLeave","onMouseOver","ComboBoxRenderer","element","props","context","el","_focusable","focus","ReactDOM","findDOMNode","menu","_menu","event","value","newInputValue","inputValueChanged","state","searchText","onInputChange","nextState","setState","opened","_debouncedFetchList","_ignoreRecover","onInputKeyDown","defaultPrevented","key","preventDefault","safelyCall","onOpen","up","down","handled","enter","_tryRecover","_handleBlur","_close","_setCurrentSearchText","info","_fetchList","_handleFocus","_handleValueClick","_ignoreBlur","isEditing","onFocus","onAlkoFocus","onBlur","onAlkoBlur","e","endEdit","result","setTimeout","onClose","pattern","expectingId","_fetchingId","source","then","_mounted","reset","setSelectionRange","length","selected","debounceInterval","render","_handleClickOutside","styles","root","renderInput","renderValue","renderMenu","openButton","arrow","_handleArrowClick","_handleArrowMouseDown","inputProps","input","_refFocusable","_handleInputChange","_handleInputKey","placeholder","isNotRecovered","_error","isEmptyResults","values","menuAlign","disablePortal","_refMenu","renderEmptyResults","renderResults","renderTotalCount","mapResult","i","React","isValidElement","cloneElement","onClick","_handleItemClick","renderItem","renderNotFound","isFunction","total","totalCount","componentDidMount","autoFocus","_focus","componentWillUnmount","options","_change","recover","recovered","_setError","_lastError","onError","onChange","target","valueToString","Component","children","fn","args","map","infos"],"mappings":"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","sourcesContent":["// @flow\n/* eslint-disable flowtype/no-weak-types */\nimport * as React from 'react';\nimport ReactDOM from 'react-dom';\n\nimport filterProps from '../filterProps';\n\nimport debounce from 'lodash.debounce';\n\nimport RenderLayer from '../RenderLayer';\nimport DropdownContainer from '../DropdownContainer/DropdownContainer';\nimport Input from '../Input';\nimport InputLikeText from '../internal/InputLikeText/InputLikeText';\nimport Menu from '../Menu/Menu';\nimport MenuItem from '../MenuItem/MenuItem';\nimport type { MenuItemState } from '../MenuItem/MenuItem';\nimport { fixClickFocusIE } from '../../lib/events/fixClickFocusIE';\n\nimport styles from './ComboBoxRenderer.module.less';\n\nconst INPUT_PASS_PROPS = {\n borderless: true,\n error: true,\n warning: true,\n width: true,\n disabled: true,\n onMouseEnter: true,\n onMouseLeave: true,\n onMouseOver: true,\n};\n\nexport type Value = any;\nexport type Info = any;\n\ntype SourceResult = {\n values: Array<Value | React.Element<any> | (() => React.Element<any>)>,\n infos?: Array<Info>,\n total?: number,\n};\n\ntype RecoverResult = {\n value: Value,\n info?: Info,\n};\n\ntype ErrorKind = null | 'not_recovered';\n\ntype RecoverFunc = (searchString: string) => RecoverResult;\n\nexport type BaseProps = {\n autoFocus?: boolean,\n borderless?: boolean,\n disabled?: boolean,\n error?: boolean,\n info?: Info | ((v: Value) => Promise<Info>),\n menuAlign: 'left' | 'right',\n disablePortal?: boolean,\n debounceInterval?: number,\n openButton?: boolean,\n placeholder: string,\n recover?: RecoverFunc | boolean,\n renderItem: (value: Value, info: Info, state: MenuItemState) => React.Node,\n renderValue: (value: Value, info: ?Info) => React.Element<any>,\n renderNotFound?: string | ((searchText: string) => React.Element<any> | string),\n renderTotalCount?: (f: number, total: number) => React.Element<any> | string,\n source: (searchText: string) => Promise<SourceResult>,\n warning?: boolean,\n value: Value | null,\n valueToString?: (value: Value, info: ?Info) => string,\n width: number | string,\n\n onBlur?: () => void,\n onChange?: (event: { target: { value: Value } }, value: Value) => void,\n onClose?: () => void,\n onError?: (kind: ErrorKind) => void,\n onFocus?: () => void,\n onOpen?: () => void,\n onInputChange?: (value: string) => ?string,\n onInputKeyDown?: (e: SyntheticKeyboardEvent<>) => void,\n\n alkoValueToText?: (value: Value) => string,\n onAlkoFocus?: () => void,\n onAlkoBlur?: () => void,\n\n onMouseEnter?: (e: SyntheticMouseEvent<>) => void,\n onMouseLeave?: (e: SyntheticMouseEvent<>) => void,\n onMouseOver?: (e: SyntheticMouseEvent<>) => void,\n};\n\ntype Props = BaseProps & {\n info: Info,\n};\n\ntype State = {\n opened: boolean,\n searchText: string,\n isEditing: boolean,\n result: ?SourceResult,\n selected: number,\n};\n\nclass ComboBoxRenderer extends React.Component<Props, State> {\n // eslint-disable-next-line react/no-multi-comp\n static Item = class Item extends React.Component<{ children?: React.Node }> {\n render() {\n return <MenuItem>{this.props.children}</MenuItem>;\n }\n };\n\n static static(element: (() => React.Element<any>) | React.Element<any>) {\n return element;\n }\n\n static defaultProps = {\n renderItem,\n renderValue,\n placeholder: '',\n width: (250: number | string),\n menuAlign: 'left',\n debounceInterval: 0,\n };\n\n _mounted = false;\n _focusable = null;\n _menu: ?Menu = null;\n _focusSubscribtion: ?{ remove: () => void } = null;\n _lastError: ErrorKind = null;\n _error: ErrorKind = null;\n _ignoreRecover = true;\n _ignoreBlur = true;\n _fetchingId = 0;\n _debouncedFetchList: Function;\n\n constructor(props: Props, context: mixed) {\n super(props, context);\n\n this.state = {\n opened: false,\n searchText: '',\n result: null,\n isEditing: false,\n selected: -1,\n };\n\n const { debounceInterval } = this.props;\n this._debouncedFetchList =\n debounceInterval && debounceInterval > 0 ? debounce(this._fetchList, debounceInterval) : this._fetchList;\n }\n\n render() {\n return (\n <RenderLayer\n onFocusOutside={this._handleBlur}\n onClickOutside={this._handleClickOutside}\n active={this.state.opened}\n >\n <label className={styles.root} style={{ width: this.props.width }}>\n {this.state.isEditing ? this.renderInput() : this.renderValue()}\n {this.state.opened && this.renderMenu()}\n {this.props.openButton && (\n <div className={styles.arrow} onClick={this._handleArrowClick} onMouseDown={this._handleArrowMouseDown} />\n )}\n </label>\n </RenderLayer>\n );\n }\n\n renderInput() {\n const inputProps = filterProps(this.props, INPUT_PASS_PROPS);\n return (\n <div className={styles.input}>\n <Input\n ref={this._refFocusable}\n {...inputProps}\n value={this.state.searchText}\n rightIcon={this.props.openButton && <span />}\n onChange={this._handleInputChange}\n onKeyDown={this._handleInputKey}\n />\n </div>\n );\n }\n\n renderValue() {\n const inputProps = filterProps(this.props, INPUT_PASS_PROPS);\n\n const value = this.props.value ? (\n this.props.renderValue(this.props.value, this.props.info)\n ) : (\n <span className={styles.placeholder}>{this.props.placeholder}</span>\n );\n\n const isNotRecovered = !!this._error;\n\n return (\n <InputLikeText\n ref={this._refFocusable}\n {...inputProps}\n onClick={this._handleValueClick}\n onFocus={this._handleValueClick}\n error={isNotRecovered || this.props.error}\n >\n {isNotRecovered ? this.state.searchText : value}\n </InputLikeText>\n );\n }\n\n renderMenu() {\n const { result } = this.state;\n if (!result) {\n return null;\n }\n\n const isEmptyResults = result.values.length === 0;\n\n return (\n <DropdownContainer\n getParent={() => ReactDOM.findDOMNode(this)}\n align={this.props.menuAlign}\n disablePortal={this.props.disablePortal}\n offsetY={1}\n >\n <Menu ref={this._refMenu} maxHeight={200}>\n {isEmptyResults ? this.renderEmptyResults() : this.renderResults(result)}\n {this.renderTotalCount(result)}\n </Menu>\n </DropdownContainer>\n );\n }\n\n renderResults(result: SourceResult): Array<?React.Element<Class<MenuItem>>> {\n return mapResult(result, (value, info, i) => {\n if (typeof value === 'function' || React.isValidElement(value)) {\n const element = typeof value === 'function' ? value() : value;\n return React.cloneElement(element, {\n key: i,\n onClick: event => this._handleItemClick(event, element.props),\n });\n }\n return (\n <MenuItem\n key={i}\n onClick={(event: SyntheticEvent<*>) => {\n this._handleItemClick(event, { value, info });\n }}\n >\n {state => this.props.renderItem(value, info, state)}\n </MenuItem>\n );\n });\n }\n\n renderEmptyResults(): ?React.Element<typeof MenuItem> {\n const { renderNotFound } = this.props;\n\n if (!renderNotFound) {\n return null;\n }\n\n const { searchText } = this.state;\n\n return (\n <MenuItem disabled={!isFunction(renderNotFound)}>\n {isFunction(renderNotFound) ? renderNotFound(searchText) : renderNotFound}\n </MenuItem>\n );\n }\n\n renderTotalCount(result: SourceResult) {\n const { renderTotalCount } = this.props;\n\n if (!renderTotalCount || !result || !result.values || !result.total) {\n return null;\n }\n\n if (result.values.length === result.total) {\n return null;\n }\n\n return (\n <MenuItem disabled>\n <div className={styles.totalCount}>{renderTotalCount(result.values.length, result.total)}</div>\n </MenuItem>\n );\n }\n\n componentDidMount() {\n this._mounted = true;\n if (this.props.autoFocus) {\n this._focus();\n }\n }\n\n componentWillUnmount() {\n this._mounted = false;\n }\n\n _refFocusable = (el: Input | InputLikeText | null) => {\n this._focusable = el && (el.focus ? el : (ReactDOM.findDOMNode(el): any));\n };\n\n _refMenu = (menu: ?Menu) => {\n this._menu = menu;\n };\n\n _handleInputChange = (event: SyntheticInputEvent<HTMLInputElement>, value: string) => {\n let newInputValue = value;\n\n const inputValueChanged = this.state.searchText !== newInputValue;\n if (inputValueChanged && this.props.onInputChange) {\n let nextState = this.props.onInputChange(newInputValue);\n\n if (nextState != null && typeof nextState !== 'object') {\n newInputValue = '' + nextState;\n }\n }\n\n this.setState(() => ({\n searchText: newInputValue,\n opened: true,\n }));\n this._debouncedFetchList(newInputValue);\n this._ignoreRecover = false;\n };\n\n _handleInputKey = (event: SyntheticKeyboardEvent<>) => {\n if (typeof this.props.onInputKeyDown === 'function') {\n this.props.onInputKeyDown(event);\n if (event.defaultPrevented) {\n return;\n }\n }\n\n switch (event.key) {\n case 'ArrowUp':\n event.preventDefault();\n\n if (!this.state.opened) {\n this.setState({ opened: true });\n safelyCall(this.props.onOpen);\n }\n\n this._menu && this._menu.up();\n break;\n case 'ArrowDown':\n event.preventDefault();\n\n if (!this.state.opened) {\n this.setState({ opened: true });\n safelyCall(this.props.onOpen);\n }\n\n this._menu && this._menu.down();\n break;\n case 'Enter':\n event.preventDefault();\n const handled = this._menu && this._menu.enter(event);\n if (!handled) {\n this._tryRecover();\n\n // Close ComboBox only if Enter wasn't handled by the Menu.\n this._handleBlur();\n }\n break;\n case 'Escape':\n event.preventDefault();\n if (!this.state.opened) {\n return;\n }\n this._close();\n break;\n }\n };\n\n _handleValueClick = () => {\n this._setCurrentSearchText(this.props.value, this.props.info);\n this._fetchList('');\n this._handleFocus();\n };\n\n _handleItemClick(event: SyntheticEvent<*>, options: { value?: Value, info?: Info, onClick?: () => void }) {\n this.setState({ searchText: '', opened: false, isEditing: false });\n this._change(options.value, options.info);\n\n safelyCall(options.onClick);\n this._handleBlur();\n }\n\n _handleArrowMouseDown = (event: SyntheticMouseEvent<>) => {\n event.preventDefault();\n };\n\n _handleArrowClick = (event: SyntheticMouseEvent<>) => {\n if (!this.state.opened && !this.props.disabled) {\n this._handleValueClick();\n }\n };\n\n _handleFocus = () => {\n /* Allow blur happen only if focus occured */\n this._ignoreBlur = false;\n\n this.setState({ isEditing: true, opened: true });\n safelyCall(this.props.onOpen);\n\n if (!safelyCall(this.props.onFocus)) {\n safelyCall(this.props.onAlkoFocus);\n }\n };\n\n _handleBlur = () => {\n if (this._ignoreBlur) {\n return;\n }\n\n this._close(true);\n this._tryRecover();\n\n if (!safelyCall(this.props.onBlur)) {\n safelyCall(this.props.onAlkoBlur);\n }\n\n /* Blur should occure only once */\n this._ignoreBlur = true;\n };\n\n _handleClickOutside = (e: Event) => {\n fixClickFocusIE(e);\n this._handleBlur();\n };\n\n _close = (endEdit?: boolean) => {\n this.setState({ opened: false, result: null });\n setTimeout(() => this.setState({ isEditing: !endEdit }), 0);\n safelyCall(this.props.onClose);\n };\n\n _fetchList = (pattern: string) => {\n const expectingId = ++this._fetchingId;\n this.props.source(pattern).then(result => {\n if (!this._mounted) {\n return;\n }\n\n if (expectingId === this._fetchingId && this.state.opened) {\n this._menu && this._menu.reset();\n this.setState(() => ({ result }));\n }\n });\n };\n\n _focus = () => {\n if (this._focusable && this._focusable.setSelectionRange) {\n // $FlowIgnore\n this._focusable.setSelectionRange(0, this.state.searchText.length);\n } else if (this._focusable) {\n this._focusable.focus();\n }\n };\n\n _tryRecover() {\n if (this._ignoreRecover) {\n return;\n }\n this._ignoreRecover = true;\n\n if (!this.props.recover) {\n this._change(null);\n this.setState({ searchText: '' });\n return;\n }\n\n const searchText = this.state.searchText;\n let recovered: ?RecoverResult = null;\n\n if (typeof this.props.recover === 'function') {\n recovered = this.props.recover(searchText);\n } else if (this.props.recover === true) {\n recovered = { value: searchText };\n }\n\n if (recovered) {\n this._change(recovered.value, recovered.info);\n } else {\n this._change(null);\n this._setError(this.state.searchText ? 'not_recovered' : null);\n }\n }\n\n _setError(error: ErrorKind) {\n this._error = error;\n if (this._lastError !== error) {\n this._lastError = error;\n safelyCall(this.props.onError, error);\n }\n }\n\n _change(value: Value, info?: Info) {\n safelyCall(this.props.onChange, { target: { value } }, value, info);\n this._setError(null);\n\n /* No need in recovers after value changes */\n this._ignoreRecover = true;\n }\n\n _setCurrentSearchText(value: Value, info: ?Info) {\n const valueToString = this.props.valueToString;\n\n if (valueToString) {\n const searchText = value ? valueToString(value, info) : this.state.searchText;\n\n return this.setState({ searchText }, this._focus);\n }\n\n return this.setState({ searchText: '' }, this._focus);\n }\n}\n\nfunction safelyCall(fn: ?Function, ...args: any[]) {\n if (fn) {\n fn(...args);\n return true;\n }\n return false;\n}\n\nfunction mapResult(result: SourceResult, fn: (v: Value, d: Info, i: number) => any): Array<any> {\n return result.values.map((value, i) => {\n const info = result.infos && result.infos[i];\n return fn(value, info, i);\n });\n}\n\nfunction renderValue(value: *, info: *) {\n return info;\n}\n\nfunction renderItem(value: *, info: *, state: *) {\n return info;\n}\n\nfunction isFunction(fn) /*: boolean %checks */ {\n return typeof fn === 'function';\n}\n\nexport default ComboBoxRenderer;\n"]}
|
|
@@ -1,83 +1,83 @@
|
|
|
1
|
-
```jsx
|
|
2
|
-
var items = [
|
|
3
|
-
{ id: 1, name: 'Kappa' },
|
|
4
|
-
{ id: 2, name: 'Keepo' },
|
|
5
|
-
{ id: 3, name: 'ResidentSleeper' },
|
|
6
|
-
{ id: 4, name: 'Kestrel' },
|
|
7
|
-
{ id: 5, name: 'Kats' },
|
|
8
|
-
{ id: 6, name: 'Junior' },
|
|
9
|
-
];
|
|
10
|
-
|
|
11
|
-
function info(id) {
|
|
12
|
-
return Promise.resolve(items.find(item => item.id === id));
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
function search(query) {
|
|
16
|
-
query = query.toLowerCase();
|
|
17
|
-
var results = items.filter(item => item.name.toLowerCase().indexOf(query) !== -1);
|
|
18
|
-
return Promise.resolve({
|
|
19
|
-
values: results.map(d => d.id).slice(0, 3),
|
|
20
|
-
infos: results,
|
|
21
|
-
total: results.length,
|
|
22
|
-
});
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
function recover(query) {
|
|
26
|
-
var found = items.find(x => x.name.toLowerCase() === query.toLowerCase());
|
|
27
|
-
if (found) {
|
|
28
|
-
return { value: found.id };
|
|
29
|
-
}
|
|
30
|
-
return null;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
function renderValue(value, info) {
|
|
34
|
-
return <span>{info ? info.name : 'Loading'}</span>;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
function renderItem(value, info) {
|
|
38
|
-
return (
|
|
39
|
-
<span>
|
|
40
|
-
{value}: {info.name}
|
|
41
|
-
</span>
|
|
42
|
-
);
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
function valueToString(id) {
|
|
46
|
-
var info = items.find(x => x.id === id);
|
|
47
|
-
return info ? info.name : '';
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
function renderTotalCount(found, total) {
|
|
51
|
-
return (
|
|
52
|
-
<div style={{ maxWidth: 220 }}>
|
|
53
|
-
Displayed {found} from {total}
|
|
54
|
-
</div>
|
|
55
|
-
);
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
class Comp extends React.Component {
|
|
59
|
-
constructor(props) {
|
|
60
|
-
super(props);
|
|
61
|
-
this.state = { value: 3 };
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
render() {
|
|
65
|
-
return (
|
|
66
|
-
<ComboBoxOld
|
|
67
|
-
info={info}
|
|
68
|
-
source={search}
|
|
69
|
-
value={this.state.value}
|
|
70
|
-
recover={recover}
|
|
71
|
-
renderValue={renderValue}
|
|
72
|
-
renderItem={renderItem}
|
|
73
|
-
renderNotFound="Nothing here"
|
|
74
|
-
renderTotalCount={renderTotalCount}
|
|
75
|
-
valueToString={valueToString}
|
|
76
|
-
onChange={e => this.setState({ value: e.target.value })}
|
|
77
|
-
/>
|
|
78
|
-
);
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
<Comp />;
|
|
83
|
-
```
|
|
1
|
+
```jsx
|
|
2
|
+
var items = [
|
|
3
|
+
{ id: 1, name: 'Kappa' },
|
|
4
|
+
{ id: 2, name: 'Keepo' },
|
|
5
|
+
{ id: 3, name: 'ResidentSleeper' },
|
|
6
|
+
{ id: 4, name: 'Kestrel' },
|
|
7
|
+
{ id: 5, name: 'Kats' },
|
|
8
|
+
{ id: 6, name: 'Junior' },
|
|
9
|
+
];
|
|
10
|
+
|
|
11
|
+
function info(id) {
|
|
12
|
+
return Promise.resolve(items.find(item => item.id === id));
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
function search(query) {
|
|
16
|
+
query = query.toLowerCase();
|
|
17
|
+
var results = items.filter(item => item.name.toLowerCase().indexOf(query) !== -1);
|
|
18
|
+
return Promise.resolve({
|
|
19
|
+
values: results.map(d => d.id).slice(0, 3),
|
|
20
|
+
infos: results,
|
|
21
|
+
total: results.length,
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
function recover(query) {
|
|
26
|
+
var found = items.find(x => x.name.toLowerCase() === query.toLowerCase());
|
|
27
|
+
if (found) {
|
|
28
|
+
return { value: found.id };
|
|
29
|
+
}
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
function renderValue(value, info) {
|
|
34
|
+
return <span>{info ? info.name : 'Loading'}</span>;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
function renderItem(value, info) {
|
|
38
|
+
return (
|
|
39
|
+
<span>
|
|
40
|
+
{value}: {info.name}
|
|
41
|
+
</span>
|
|
42
|
+
);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
function valueToString(id) {
|
|
46
|
+
var info = items.find(x => x.id === id);
|
|
47
|
+
return info ? info.name : '';
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
function renderTotalCount(found, total) {
|
|
51
|
+
return (
|
|
52
|
+
<div style={{ maxWidth: 220 }}>
|
|
53
|
+
Displayed {found} from {total}
|
|
54
|
+
</div>
|
|
55
|
+
);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
class Comp extends React.Component {
|
|
59
|
+
constructor(props) {
|
|
60
|
+
super(props);
|
|
61
|
+
this.state = { value: 3 };
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
render() {
|
|
65
|
+
return (
|
|
66
|
+
<ComboBoxOld
|
|
67
|
+
info={info}
|
|
68
|
+
source={search}
|
|
69
|
+
value={this.state.value}
|
|
70
|
+
recover={recover}
|
|
71
|
+
renderValue={renderValue}
|
|
72
|
+
renderItem={renderItem}
|
|
73
|
+
renderNotFound="Nothing here"
|
|
74
|
+
renderTotalCount={renderTotalCount}
|
|
75
|
+
valueToString={valueToString}
|
|
76
|
+
onChange={e => this.setState({ value: e.target.value })}
|
|
77
|
+
/>
|
|
78
|
+
);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
<Comp />;
|
|
83
|
+
```
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { default, ComboBoxOldProps, ComboBoxOldState } from './ComboBoxOld';
|
|
1
|
+
export { default, ComboBoxOldProps, ComboBoxOldState } from './ComboBoxOld';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["index.js"],"names":["ComboBoxOld"],"mappings":"mEAAA,oE;AACeA,uB","sourcesContent":["import ComboBoxOld from './ComboBoxOld';\
|
|
1
|
+
{"version":3,"sources":["index.js"],"names":["ComboBoxOld"],"mappings":"mEAAA,oE;AACeA,uB","sourcesContent":["import ComboBoxOld from './ComboBoxOld';\nexport default ComboBoxOld;\n"]}
|
|
@@ -1,44 +1,44 @@
|
|
|
1
|
-
/* @flow */
|
|
2
|
-
import type { CursorMap } from './CursorHelper';
|
|
3
|
-
|
|
4
|
-
export type DecimalFormattingOptions = {|
|
|
5
|
-
fractionDigits?: ?number,
|
|
6
|
-
thousandsDelimiter?: string,
|
|
7
|
-
minusSign?: string,
|
|
8
|
-
|};
|
|
9
|
-
|
|
10
|
-
type DecimalFormattingOptionsInternal = {|
|
|
11
|
-
fractionDigits: ?number,
|
|
12
|
-
thousandsDelimiter: string,
|
|
13
|
-
minusSign: string,
|
|
14
|
-
|};
|
|
15
|
-
|
|
16
|
-
export type FormattingInfo = {|
|
|
17
|
-
raw: string,
|
|
18
|
-
formatted: string,
|
|
19
|
-
cursorMap: CursorMap,
|
|
20
|
-
|};
|
|
21
|
-
|
|
22
|
-
declare class CurrencyHelper {
|
|
23
|
-
static defaultOptions: DecimalFormattingOptionsInternal;
|
|
24
|
-
static getOptions(options?: ?DecimalFormattingOptions): DecimalFormattingOptionsInternal;
|
|
25
|
-
static getInfo(value: string, options?: ?DecimalFormattingOptions): FormattingInfo;
|
|
26
|
-
static getCursorMap(formatted: string, formattingOptions?: ?DecimalFormattingOptions): CursorMap;
|
|
27
|
-
static format(value: ?number, options?: ?DecimalFormattingOptions): string;
|
|
28
|
-
static parse(value: string): ?number;
|
|
29
|
-
static unformatString(value: string): string;
|
|
30
|
-
static formatForClipboard(value: string): string;
|
|
31
|
-
static formatString(value: string, formattingOptions?: ?DecimalFormattingOptions): string;
|
|
32
|
-
static isValidString(value: string, fractionDigits: ?number, unsigned?: ?boolean): boolean;
|
|
33
|
-
static extractValid(value: string, fractionDigits: ?number, unsigned: ?boolean): string;
|
|
34
|
-
static destructString(
|
|
35
|
-
value: string,
|
|
36
|
-
): {
|
|
37
|
-
sign: string,
|
|
38
|
-
integer: string,
|
|
39
|
-
delimiter: string,
|
|
40
|
-
fraction: string,
|
|
41
|
-
} | null;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
export default CurrencyHelper;
|
|
1
|
+
/* @flow */
|
|
2
|
+
import type { CursorMap } from './CursorHelper';
|
|
3
|
+
|
|
4
|
+
export type DecimalFormattingOptions = {|
|
|
5
|
+
fractionDigits?: ?number,
|
|
6
|
+
thousandsDelimiter?: string,
|
|
7
|
+
minusSign?: string,
|
|
8
|
+
|};
|
|
9
|
+
|
|
10
|
+
type DecimalFormattingOptionsInternal = {|
|
|
11
|
+
fractionDigits: ?number,
|
|
12
|
+
thousandsDelimiter: string,
|
|
13
|
+
minusSign: string,
|
|
14
|
+
|};
|
|
15
|
+
|
|
16
|
+
export type FormattingInfo = {|
|
|
17
|
+
raw: string,
|
|
18
|
+
formatted: string,
|
|
19
|
+
cursorMap: CursorMap,
|
|
20
|
+
|};
|
|
21
|
+
|
|
22
|
+
declare class CurrencyHelper {
|
|
23
|
+
static defaultOptions: DecimalFormattingOptionsInternal;
|
|
24
|
+
static getOptions(options?: ?DecimalFormattingOptions): DecimalFormattingOptionsInternal;
|
|
25
|
+
static getInfo(value: string, options?: ?DecimalFormattingOptions): FormattingInfo;
|
|
26
|
+
static getCursorMap(formatted: string, formattingOptions?: ?DecimalFormattingOptions): CursorMap;
|
|
27
|
+
static format(value: ?number, options?: ?DecimalFormattingOptions): string;
|
|
28
|
+
static parse(value: string): ?number;
|
|
29
|
+
static unformatString(value: string): string;
|
|
30
|
+
static formatForClipboard(value: string): string;
|
|
31
|
+
static formatString(value: string, formattingOptions?: ?DecimalFormattingOptions): string;
|
|
32
|
+
static isValidString(value: string, fractionDigits: ?number, unsigned?: ?boolean): boolean;
|
|
33
|
+
static extractValid(value: string, fractionDigits: ?number, unsigned: ?boolean): string;
|
|
34
|
+
static destructString(
|
|
35
|
+
value: string,
|
|
36
|
+
): {
|
|
37
|
+
sign: string,
|
|
38
|
+
integer: string,
|
|
39
|
+
delimiter: string,
|
|
40
|
+
fraction: string,
|
|
41
|
+
} | null;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export default CurrencyHelper;
|
|
@@ -1,30 +1,30 @@
|
|
|
1
|
-
/* @flow */
|
|
2
|
-
import type { Selection } from './SelectionHelper';
|
|
3
|
-
|
|
4
|
-
export type CurrencyInputProps = {
|
|
5
|
-
value: ?number,
|
|
6
|
-
fractionDigits?: ?number,
|
|
7
|
-
signed?: boolean,
|
|
8
|
-
onChange: (
|
|
9
|
-
e: {
|
|
10
|
-
target: {|
|
|
11
|
-
value: ?number,
|
|
12
|
-
|},
|
|
13
|
-
},
|
|
14
|
-
value: ?number,
|
|
15
|
-
) => void,
|
|
16
|
-
onSubmit?: () => void,
|
|
17
|
-
};
|
|
18
|
-
|
|
19
|
-
export type CurrencyInputState = {|
|
|
20
|
-
formatted: string,
|
|
21
|
-
selection: Selection,
|
|
22
|
-
focused: boolean,
|
|
23
|
-
|};
|
|
24
|
-
|
|
25
|
-
declare class CurrencyInput extends React$Component<CurrencyInputProps, CurrencyInputState> {
|
|
26
|
-
focus: () => void;
|
|
27
|
-
blur: () => void;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
export default CurrencyInput;
|
|
1
|
+
/* @flow */
|
|
2
|
+
import type { Selection } from './SelectionHelper';
|
|
3
|
+
|
|
4
|
+
export type CurrencyInputProps = {
|
|
5
|
+
value: ?number,
|
|
6
|
+
fractionDigits?: ?number,
|
|
7
|
+
signed?: boolean,
|
|
8
|
+
onChange: (
|
|
9
|
+
e: {
|
|
10
|
+
target: {|
|
|
11
|
+
value: ?number,
|
|
12
|
+
|},
|
|
13
|
+
},
|
|
14
|
+
value: ?number,
|
|
15
|
+
) => void,
|
|
16
|
+
onSubmit?: () => void,
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
export type CurrencyInputState = {|
|
|
20
|
+
formatted: string,
|
|
21
|
+
selection: Selection,
|
|
22
|
+
focused: boolean,
|
|
23
|
+
|};
|
|
24
|
+
|
|
25
|
+
declare class CurrencyInput extends React$Component<CurrencyInputProps, CurrencyInputState> {
|
|
26
|
+
focus: () => void;
|
|
27
|
+
blur: () => void;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export default CurrencyInput;
|
|
@@ -1,38 +1,38 @@
|
|
|
1
|
-
/* @flow */
|
|
2
|
-
import type { Selection } from './SelectionHelper';
|
|
3
|
-
|
|
4
|
-
declare class CurrencyInputHelper {
|
|
5
|
-
static moveCursor(value: string, selection: Selection, step: number): number;
|
|
6
|
-
static extendSelection(value: string, selection: Selection, step: number): Selection;
|
|
7
|
-
static normalizeSelection(value: string, selection: Selection): Selection;
|
|
8
|
-
static safeInsert(
|
|
9
|
-
value: string,
|
|
10
|
-
start: number,
|
|
11
|
-
end: number,
|
|
12
|
-
input: string,
|
|
13
|
-
fractionDigits: ?number,
|
|
14
|
-
unsigned: ?boolean,
|
|
15
|
-
): {
|
|
16
|
-
value: string,
|
|
17
|
-
position: number,
|
|
18
|
-
} | null;
|
|
19
|
-
static getMaximumValidSubstring(
|
|
20
|
-
value: string,
|
|
21
|
-
start: number,
|
|
22
|
-
end: number,
|
|
23
|
-
input: string,
|
|
24
|
-
fractionDigits: ?number,
|
|
25
|
-
unsigned: ?boolean,
|
|
26
|
-
): string | null;
|
|
27
|
-
static insert(
|
|
28
|
-
value: string,
|
|
29
|
-
start: number,
|
|
30
|
-
end: number,
|
|
31
|
-
input: string,
|
|
32
|
-
): {
|
|
33
|
-
value: string,
|
|
34
|
-
position: number,
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
export default CurrencyInputHelper;
|
|
1
|
+
/* @flow */
|
|
2
|
+
import type { Selection } from './SelectionHelper';
|
|
3
|
+
|
|
4
|
+
declare class CurrencyInputHelper {
|
|
5
|
+
static moveCursor(value: string, selection: Selection, step: number): number;
|
|
6
|
+
static extendSelection(value: string, selection: Selection, step: number): Selection;
|
|
7
|
+
static normalizeSelection(value: string, selection: Selection): Selection;
|
|
8
|
+
static safeInsert(
|
|
9
|
+
value: string,
|
|
10
|
+
start: number,
|
|
11
|
+
end: number,
|
|
12
|
+
input: string,
|
|
13
|
+
fractionDigits: ?number,
|
|
14
|
+
unsigned: ?boolean,
|
|
15
|
+
): {
|
|
16
|
+
value: string,
|
|
17
|
+
position: number,
|
|
18
|
+
} | null;
|
|
19
|
+
static getMaximumValidSubstring(
|
|
20
|
+
value: string,
|
|
21
|
+
start: number,
|
|
22
|
+
end: number,
|
|
23
|
+
input: string,
|
|
24
|
+
fractionDigits: ?number,
|
|
25
|
+
unsigned: ?boolean,
|
|
26
|
+
): string | null;
|
|
27
|
+
static insert(
|
|
28
|
+
value: string,
|
|
29
|
+
start: number,
|
|
30
|
+
end: number,
|
|
31
|
+
input: string,
|
|
32
|
+
): {
|
|
33
|
+
value: string,
|
|
34
|
+
position: number,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export default CurrencyInputHelper;
|
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
/* @flow */
|
|
2
|
-
declare export var CURRENCY_INPUT_ACTIONS: {|
|
|
3
|
-
Unknown: number,
|
|
4
|
-
Ignore: number,
|
|
5
|
-
MoveCursorLeft: number,
|
|
6
|
-
MoveCursorRight: number,
|
|
7
|
-
Home: number,
|
|
8
|
-
End: number,
|
|
9
|
-
ExtendSelectionLeft: number,
|
|
10
|
-
ExtendSelectionRight: number,
|
|
11
|
-
FullSelection: number,
|
|
12
|
-
ExtendSelectionToStart: number,
|
|
13
|
-
ExtendSelectionToEnd: number,
|
|
14
|
-
Backspace: number,
|
|
15
|
-
Delete: number,
|
|
16
|
-
Submit: number,
|
|
17
|
-
|};
|
|
18
|
-
|
|
19
|
-
declare export var extractAction: (x0: SyntheticKeyboardEvent<HTMLElement>) => number | {};
|
|
1
|
+
/* @flow */
|
|
2
|
+
declare export var CURRENCY_INPUT_ACTIONS: {|
|
|
3
|
+
Unknown: number,
|
|
4
|
+
Ignore: number,
|
|
5
|
+
MoveCursorLeft: number,
|
|
6
|
+
MoveCursorRight: number,
|
|
7
|
+
Home: number,
|
|
8
|
+
End: number,
|
|
9
|
+
ExtendSelectionLeft: number,
|
|
10
|
+
ExtendSelectionRight: number,
|
|
11
|
+
FullSelection: number,
|
|
12
|
+
ExtendSelectionToStart: number,
|
|
13
|
+
ExtendSelectionToEnd: number,
|
|
14
|
+
Backspace: number,
|
|
15
|
+
Delete: number,
|
|
16
|
+
Submit: number,
|
|
17
|
+
|};
|
|
18
|
+
|
|
19
|
+
declare export var extractAction: (x0: SyntheticKeyboardEvent<HTMLElement>) => number | {};
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
/* @flow */
|
|
2
|
-
import type { Selection } from './SelectionHelper';
|
|
3
|
-
|
|
4
|
-
export type CursorMap = number[];
|
|
5
|
-
|
|
6
|
-
declare class CursorHelper {
|
|
7
|
-
static normalizePosition(map: CursorMap, position: number): number;
|
|
8
|
-
static calculatePosition(map: CursorMap, position: number, step: number): number;
|
|
9
|
-
static extendSelection(map: CursorMap, selection: Selection, step: number): Selection;
|
|
10
|
-
static normalizeSelection(map: CursorMap, selection: Selection): Selection;
|
|
11
|
-
static toRawPosition(map: CursorMap, formattedPosition: number): number;
|
|
12
|
-
static toFormattedPosition(map: CursorMap, rawPosition: number): number;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
export default CursorHelper;
|
|
1
|
+
/* @flow */
|
|
2
|
+
import type { Selection } from './SelectionHelper';
|
|
3
|
+
|
|
4
|
+
export type CursorMap = number[];
|
|
5
|
+
|
|
6
|
+
declare class CursorHelper {
|
|
7
|
+
static normalizePosition(map: CursorMap, position: number): number;
|
|
8
|
+
static calculatePosition(map: CursorMap, position: number, step: number): number;
|
|
9
|
+
static extendSelection(map: CursorMap, selection: Selection, step: number): Selection;
|
|
10
|
+
static normalizeSelection(map: CursorMap, selection: Selection): Selection;
|
|
11
|
+
static toRawPosition(map: CursorMap, formattedPosition: number): number;
|
|
12
|
+
static toFormattedPosition(map: CursorMap, rawPosition: number): number;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export default CursorHelper;
|