@i-novus/n2o-components 1.0.0

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.
Files changed (241) hide show
  1. package/index.js +0 -0
  2. package/lib/display/Alerts/Alert.d.ts +2 -0
  3. package/lib/display/Alerts/Alert.js +121 -0
  4. package/lib/display/Alerts/AlertSection.d.ts +18 -0
  5. package/lib/display/Alerts/AlertSection.js +64 -0
  6. package/lib/display/Alerts/AlertWrapper.d.ts +6 -0
  7. package/lib/display/Alerts/AlertWrapper.js +39 -0
  8. package/lib/display/Alerts/DefaultAlert.d.ts +6 -0
  9. package/lib/display/Alerts/DefaultAlert.js +125 -0
  10. package/lib/display/Alerts/LoaderAlert.d.ts +5 -0
  11. package/lib/display/Alerts/LoaderAlert.js +36 -0
  12. package/lib/display/Alerts/types.d.ts +49 -0
  13. package/lib/display/Alerts/types.js +24 -0
  14. package/lib/display/Alerts/utils.d.ts +15 -0
  15. package/lib/display/Alerts/utils.js +102 -0
  16. package/lib/display/Badge/Badge.d.ts +16 -0
  17. package/lib/display/Badge/Badge.js +77 -0
  18. package/lib/display/Badge/enums.d.ts +9 -0
  19. package/lib/display/Badge/enums.js +23 -0
  20. package/lib/display/Badge/utils.d.ts +9 -0
  21. package/lib/display/Badge/utils.js +49 -0
  22. package/lib/display/Block.d.ts +369 -0
  23. package/lib/display/Block.js +38 -0
  24. package/lib/display/CodeViewer/CodeViewer.d.ts +13 -0
  25. package/lib/display/CodeViewer/CodeViewer.js +96 -0
  26. package/lib/display/Drawer/Drawer.d.ts +25 -0
  27. package/lib/display/Drawer/Drawer.js +99 -0
  28. package/lib/display/DropdownCustomItem.d.ts +7 -0
  29. package/lib/display/DropdownCustomItem.js +23 -0
  30. package/lib/display/Filter/Buttons.d.ts +11 -0
  31. package/lib/display/Filter/Buttons.js +42 -0
  32. package/lib/display/Filter/Filter.d.ts +8 -0
  33. package/lib/display/Filter/Filter.js +38 -0
  34. package/lib/display/HelpPopover.d.ts +16 -0
  35. package/lib/display/HelpPopover.js +104 -0
  36. package/lib/display/Html.d.ts +8 -0
  37. package/lib/display/Html.js +29 -0
  38. package/lib/display/Icon/Icon.d.ts +11 -0
  39. package/lib/display/Icon/Icon.js +42 -0
  40. package/lib/display/Image/Image.d.ts +30 -0
  41. package/lib/display/Image/Image.js +93 -0
  42. package/lib/display/Image/ImageInfo.d.ts +7 -0
  43. package/lib/display/Image/ImageInfo.js +23 -0
  44. package/lib/display/InputIcon.d.ts +13 -0
  45. package/lib/display/InputIcon.js +33 -0
  46. package/lib/display/NavItemImage/NavItemImage.d.ts +9 -0
  47. package/lib/display/NavItemImage/NavItemImage.js +35 -0
  48. package/lib/display/OutputList.d.ts +12 -0
  49. package/lib/display/OutputList.js +46 -0
  50. package/lib/display/OutputListItem.d.ts +10 -0
  51. package/lib/display/OutputListItem.js +58 -0
  52. package/lib/display/OutputText.d.ts +15 -0
  53. package/lib/display/OutputText.js +170 -0
  54. package/lib/display/Pagination/Pagination.d.ts +2 -0
  55. package/lib/display/Pagination/Pagination.js +273 -0
  56. package/lib/display/Pagination/PaginationButton.d.ts +13 -0
  57. package/lib/display/Pagination/PaginationButton.js +53 -0
  58. package/lib/display/Pagination/types.d.ts +62 -0
  59. package/lib/display/Pagination/types.js +36 -0
  60. package/lib/display/PopoverConfirm/PopoverConfirm.d.ts +30 -0
  61. package/lib/display/PopoverConfirm/PopoverConfirm.js +87 -0
  62. package/lib/display/ProgressControl/ProgressControl.d.ts +17 -0
  63. package/lib/display/ProgressControl/ProgressControl.js +68 -0
  64. package/lib/display/Slider.d.ts +23 -0
  65. package/lib/display/Slider.js +107 -0
  66. package/lib/display/Status.d.ts +9 -0
  67. package/lib/display/Status.js +40 -0
  68. package/lib/display/StatusText/StatusText.d.ts +10 -0
  69. package/lib/display/StatusText/StatusText.js +35 -0
  70. package/lib/display/StatusText/types.d.ts +18 -0
  71. package/lib/display/StatusText/types.js +19 -0
  72. package/lib/display/StatusText/utils.d.ts +3 -0
  73. package/lib/display/StatusText/utils.js +29 -0
  74. package/lib/display/Text.d.ts +12 -0
  75. package/lib/display/Text.js +38 -0
  76. package/lib/display/Typography/Base.d.ts +32 -0
  77. package/lib/display/Typography/Base.js +259 -0
  78. package/lib/display/Typography/ContentEditable.d.ts +15 -0
  79. package/lib/display/Typography/ContentEditable.js +86 -0
  80. package/lib/display/Typography/Paragraph.d.ts +4 -0
  81. package/lib/display/Typography/Paragraph.js +23 -0
  82. package/lib/display/Typography/Text.d.ts +9 -0
  83. package/lib/display/Typography/Text.js +37 -0
  84. package/lib/display/Typography/Title.d.ts +7 -0
  85. package/lib/display/Typography/Title.js +28 -0
  86. package/lib/display/Typography/utils.d.ts +13 -0
  87. package/lib/display/Typography/utils.js +75 -0
  88. package/lib/helpers/HelpPopover.d.ts +9 -0
  89. package/lib/helpers/HelpPopover.js +46 -0
  90. package/lib/helpers/withRightPlaceholder.d.ts +9 -0
  91. package/lib/helpers/withRightPlaceholder.js +35 -0
  92. package/lib/inputs/Checkbox/Checkbox.d.ts +29 -0
  93. package/lib/inputs/Checkbox/Checkbox.js +117 -0
  94. package/lib/inputs/Checkbox/CheckboxControl.d.ts +7 -0
  95. package/lib/inputs/Checkbox/CheckboxControl.js +33 -0
  96. package/lib/inputs/CheckboxGroup/CheckboxGroup.d.ts +11 -0
  97. package/lib/inputs/CheckboxGroup/CheckboxGroup.js +84 -0
  98. package/lib/inputs/CodeEditor/CodeEditor.d.ts +21 -0
  99. package/lib/inputs/CodeEditor/CodeEditor.js +85 -0
  100. package/lib/inputs/DatePicker/Calendar.d.ts +65 -0
  101. package/lib/inputs/DatePicker/Calendar.js +556 -0
  102. package/lib/inputs/DatePicker/CalendarHeader.d.ts +26 -0
  103. package/lib/inputs/DatePicker/CalendarHeader.js +213 -0
  104. package/lib/inputs/DatePicker/Clock.d.ts +10 -0
  105. package/lib/inputs/DatePicker/Clock.js +45 -0
  106. package/lib/inputs/DatePicker/DateInput.d.ts +44 -0
  107. package/lib/inputs/DatePicker/DateInput.js +262 -0
  108. package/lib/inputs/DatePicker/DateInputGroup.d.ts +20 -0
  109. package/lib/inputs/DatePicker/DateInputGroup.js +77 -0
  110. package/lib/inputs/DatePicker/DateInterval.d.ts +24 -0
  111. package/lib/inputs/DatePicker/DateInterval.js +92 -0
  112. package/lib/inputs/DatePicker/DatePicker.d.ts +22 -0
  113. package/lib/inputs/DatePicker/DatePicker.js +36 -0
  114. package/lib/inputs/DatePicker/DateTimeControl.d.ts +98 -0
  115. package/lib/inputs/DatePicker/DateTimeControl.js +452 -0
  116. package/lib/inputs/DatePicker/Day.d.ts +14 -0
  117. package/lib/inputs/DatePicker/Day.js +50 -0
  118. package/lib/inputs/DatePicker/PopUp.d.ts +19 -0
  119. package/lib/inputs/DatePicker/PopUp.js +71 -0
  120. package/lib/inputs/DatePicker/types.d.ts +31 -0
  121. package/lib/inputs/DatePicker/types.js +25 -0
  122. package/lib/inputs/DatePicker/utils.d.ts +39 -0
  123. package/lib/inputs/DatePicker/utils.js +304 -0
  124. package/lib/inputs/Input.d.ts +51 -0
  125. package/lib/inputs/Input.js +200 -0
  126. package/lib/inputs/InputMask/InputMask.d.ts +23 -0
  127. package/lib/inputs/InputMask/InputMask.js +310 -0
  128. package/lib/inputs/InputMoney/InputMoney.d.ts +101 -0
  129. package/lib/inputs/InputMoney/InputMoney.js +258 -0
  130. package/lib/inputs/InputNumber/InputNumber.d.ts +29 -0
  131. package/lib/inputs/InputNumber/InputNumber.js +316 -0
  132. package/lib/inputs/InputNumber/index.d.ts +1 -0
  133. package/lib/inputs/InputNumber/index.js +14 -0
  134. package/lib/inputs/InputNumber/types.d.ts +18 -0
  135. package/lib/inputs/InputNumber/types.js +14 -0
  136. package/lib/inputs/InputNumber/utils.d.ts +6 -0
  137. package/lib/inputs/InputNumber/utils.js +86 -0
  138. package/lib/inputs/InputPassword/InputPassword.d.ts +10 -0
  139. package/lib/inputs/InputPassword/InputPassword.js +81 -0
  140. package/lib/inputs/InputSelect/InputAddon.d.ts +17 -0
  141. package/lib/inputs/InputSelect/InputAddon.js +31 -0
  142. package/lib/inputs/InputSelect/InputContent.d.ts +63 -0
  143. package/lib/inputs/InputSelect/InputContent.js +188 -0
  144. package/lib/inputs/InputSelect/InputSelect.d.ts +296 -0
  145. package/lib/inputs/InputSelect/InputSelect.js +795 -0
  146. package/lib/inputs/InputSelect/InputSelectGroup.d.ts +43 -0
  147. package/lib/inputs/InputSelect/InputSelectGroup.js +113 -0
  148. package/lib/inputs/InputSelect/PopupItems.d.ts +55 -0
  149. package/lib/inputs/InputSelect/PopupItems.js +357 -0
  150. package/lib/inputs/InputSelect/PopupList.d.ts +82 -0
  151. package/lib/inputs/InputSelect/PopupList.js +138 -0
  152. package/lib/inputs/InputSelect/SelectedItems.d.ts +17 -0
  153. package/lib/inputs/InputSelect/SelectedItems.js +125 -0
  154. package/lib/inputs/InputSelect/constants.d.ts +4 -0
  155. package/lib/inputs/InputSelect/constants.js +15 -0
  156. package/lib/inputs/InputSelect/types.d.ts +16 -0
  157. package/lib/inputs/InputSelect/types.js +16 -0
  158. package/lib/inputs/InputSelect/utils.d.ts +9 -0
  159. package/lib/inputs/InputSelect/utils.js +142 -0
  160. package/lib/inputs/InputSelectTree/InputSelectTree.d.ts +114 -0
  161. package/lib/inputs/InputSelectTree/InputSelectTree.js +466 -0
  162. package/lib/inputs/InputSelectTree/TreeSelectNode.d.ts +36 -0
  163. package/lib/inputs/InputSelectTree/TreeSelectNode.js +63 -0
  164. package/lib/inputs/InputSelectTree/allProps.d.ts +123 -0
  165. package/lib/inputs/InputSelectTree/allProps.js +48 -0
  166. package/lib/inputs/InputSelectTree/until.d.ts +4 -0
  167. package/lib/inputs/InputSelectTree/until.js +83 -0
  168. package/lib/inputs/InputText.d.ts +41 -0
  169. package/lib/inputs/InputText.js +170 -0
  170. package/lib/inputs/NumberPicker/NumberPicker.d.ts +15 -0
  171. package/lib/inputs/NumberPicker/NumberPicker.js +129 -0
  172. package/lib/inputs/NumberPicker/NumberPickerButton.d.ts +8 -0
  173. package/lib/inputs/NumberPicker/NumberPickerButton.js +64 -0
  174. package/lib/inputs/NumberPicker/index.d.ts +1 -0
  175. package/lib/inputs/NumberPicker/index.js +14 -0
  176. package/lib/inputs/NumberPicker/utils.d.ts +2 -0
  177. package/lib/inputs/NumberPicker/utils.js +31 -0
  178. package/lib/inputs/RadioGroup/default/Group.d.ts +15 -0
  179. package/lib/inputs/RadioGroup/default/Group.js +63 -0
  180. package/lib/inputs/RadioGroup/default/Input.d.ts +17 -0
  181. package/lib/inputs/RadioGroup/default/Input.js +77 -0
  182. package/lib/inputs/RadioGroup/tabs/Group.d.ts +3 -0
  183. package/lib/inputs/RadioGroup/tabs/Group.js +24 -0
  184. package/lib/inputs/RadioGroup/tabs/Input.d.ts +3 -0
  185. package/lib/inputs/RadioGroup/tabs/Input.js +21 -0
  186. package/lib/inputs/Rating/Rating.d.ts +30 -0
  187. package/lib/inputs/Rating/Rating.js +212 -0
  188. package/lib/inputs/Select/Popup.d.ts +31 -0
  189. package/lib/inputs/Select/Popup.js +131 -0
  190. package/lib/inputs/Select/Select.d.ts +225 -0
  191. package/lib/inputs/Select/Select.js +705 -0
  192. package/lib/inputs/Select/SelectInput.d.ts +19 -0
  193. package/lib/inputs/Select/SelectInput.js +85 -0
  194. package/lib/inputs/Select/utils.d.ts +1 -0
  195. package/lib/inputs/Select/utils.js +28 -0
  196. package/lib/inputs/Switch/Switch.d.ts +11 -0
  197. package/lib/inputs/Switch/Switch.js +41 -0
  198. package/lib/inputs/TextArea.d.ts +12 -0
  199. package/lib/inputs/TextArea.js +54 -0
  200. package/lib/inputs/TextEditor/TextEditor.d.ts +11 -0
  201. package/lib/inputs/TextEditor/TextEditor.js +89 -0
  202. package/lib/inputs/TimePicker/TimePicker.d.ts +50 -0
  203. package/lib/inputs/TimePicker/TimePicker.js +398 -0
  204. package/lib/inputs/utils.d.ts +5 -0
  205. package/lib/inputs/utils.js +39 -0
  206. package/lib/layouts/ScrollContainer.d.ts +218 -0
  207. package/lib/layouts/ScrollContainer.js +128 -0
  208. package/lib/layouts/Spinner/CoverSpinner.d.ts +29 -0
  209. package/lib/layouts/Spinner/CoverSpinner.js +153 -0
  210. package/lib/layouts/Spinner/InlineSpinner.d.ts +5 -0
  211. package/lib/layouts/Spinner/InlineSpinner.js +27 -0
  212. package/lib/layouts/Spinner/Spinner.d.ts +31 -0
  213. package/lib/layouts/Spinner/Spinner.js +178 -0
  214. package/lib/styles/components/Calendar.scss +125 -0
  215. package/lib/styles/components/CalendarHeader.scss +75 -0
  216. package/lib/styles/components/DateInputGroup.scss +39 -0
  217. package/lib/styles/components/DatePicker.scss +18 -0
  218. package/lib/styles/components/Day.scss +29 -0
  219. package/lib/styles/components/OutputList.scss +14 -0
  220. package/lib/styles/components/OutputText.scss +50 -0
  221. package/lib/styles/controls/CodeEditor.scss +4 -0
  222. package/lib/styles/controls/InputNumber.scss +36 -0
  223. package/lib/styles/controls/InputPassword.scss +17 -0
  224. package/lib/styles/controls/InputText.scss +59 -0
  225. package/lib/styles/controls/NumberPicker.scss +36 -0
  226. package/lib/styles/controls/ProgressControl.scss +3 -0
  227. package/lib/styles/controls/Slider.scss +32 -0
  228. package/lib/styles/controls/Switch.scss +105 -0
  229. package/lib/styles/controls/TextEditor.scss +23 -0
  230. package/lib/styles/controls/TimePicker.scss +32 -0
  231. package/lib/styles/n2o/variables.scss +328 -0
  232. package/lib/styles/theme/variables.scss +81 -0
  233. package/lib/styles/variables.scss +10 -0
  234. package/lib/types.d.ts +25 -0
  235. package/lib/types.js +6 -0
  236. package/lib/utils/id.d.ts +3 -0
  237. package/lib/utils/id.js +46 -0
  238. package/lib/utils/isEmptyModel.d.ts +1 -0
  239. package/lib/utils/isEmptyModel.js +21 -0
  240. package/lib/utils/parseFormatter.js +153 -0
  241. package/package.json +196 -0
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.InputAddon = InputAddon;
9
+
10
+ var _react = _interopRequireDefault(require("react"));
11
+
12
+ function InputAddon(_ref) {
13
+ var item = _ref.item,
14
+ iconFieldId = _ref.iconFieldId,
15
+ imageFieldId = _ref.imageFieldId,
16
+ setRef = _ref.setRef;
17
+
18
+ if (!item) {
19
+ return null;
20
+ }
21
+
22
+ return item[iconFieldId] || item[imageFieldId] ? /*#__PURE__*/_react["default"].createElement("span", {
23
+ className: "selected-item selected-item--single",
24
+ ref: setRef
25
+ }, iconFieldId && item[iconFieldId] && /*#__PURE__*/_react["default"].createElement("i", {
26
+ className: item[iconFieldId]
27
+ }), imageFieldId && item[imageFieldId] && /*#__PURE__*/_react["default"].createElement("img", {
28
+ src: item[imageFieldId]
29
+ })) : null;
30
+ }
31
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pbnB1dHMvSW5wdXRTZWxlY3QvSW5wdXRBZGRvbi50c3giXSwibmFtZXMiOlsiSW5wdXRBZGRvbiIsIml0ZW0iLCJpY29uRmllbGRJZCIsImltYWdlRmllbGRJZCIsInNldFJlZiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBa0JPLFNBQVNBLFVBQVQsT0FBd0U7QUFBQSxNQUFsREMsSUFBa0QsUUFBbERBLElBQWtEO0FBQUEsTUFBNUNDLFdBQTRDLFFBQTVDQSxXQUE0QztBQUFBLE1BQS9CQyxZQUErQixRQUEvQkEsWUFBK0I7QUFBQSxNQUFqQkMsTUFBaUIsUUFBakJBLE1BQWlCOztBQUMzRSxNQUFJLENBQUNILElBQUwsRUFBVztBQUFFLFdBQU8sSUFBUDtBQUFhOztBQUUxQixTQUFPQSxJQUFJLENBQUNDLFdBQUQsQ0FBSixJQUFzQ0QsSUFBSSxDQUFDRSxZQUFELENBQTFDLGdCQUNIO0FBQU0sSUFBQSxTQUFTLEVBQUMscUNBQWhCO0FBQXNELElBQUEsR0FBRyxFQUFFQztBQUEzRCxLQUNLRixXQUFXLElBQUlELElBQUksQ0FBQ0MsV0FBRCxDQUFuQixpQkFBcUQ7QUFBRyxJQUFBLFNBQVMsRUFBRUQsSUFBSSxDQUFDQyxXQUFEO0FBQWxCLElBRDFELEVBR0tDLFlBQVksSUFBSUYsSUFBSSxDQUFDRSxZQUFELENBQXBCLGlCQUF1RDtBQUFLLElBQUEsR0FBRyxFQUFFRixJQUFJLENBQUNFLFlBQUQ7QUFBZCxJQUg1RCxDQURHLEdBTUgsSUFOSjtBQU9IIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5pbXBvcnQgeyBUT3B0aW9uIH0gZnJvbSAnLi90eXBlcydcbi8qKlxuICogSW5wdXRBZGRvbiAtINC00L7Qv9C+0LvQvdC10L3QuNC1INGBINC40LrQvtC90LrQvtC5L9C60LDRgNGC0LjQvdC60L7QuSDQtNC70Y8g0LjQvdC/0YPRgtCwIHtATGluayBJbnB1dFNlbGVjdEdyb3VwfVxuICogQHJlYWN0UHJvcHMge29iamVjdH0gaXRlbSAtINCy0YvQsdGA0LDQvdC90YvQuSDRjdC70LXQvNC10L3RglxuICogQHJlYWN0UHJvcHMge3N0cmluZ30gaWNvbkZpZWxkSWQgLSDQv9C+0LvQtSDQuNC60L7QvdC60LhcbiAqIEByZWFjdFByb3BzIHtzdHJpbmd9IGltYWdlRmllbGRJZCAtINC/0L7Qu9C1INC60LDRgNGC0LjQvdC60LhcbiAqIEByZXR1cm4ge251bGx9XG4gKi9cblxudHlwZSBQcm9wcyA9IHtcbiAgICBpY29uRmllbGRJZDogc3RyaW5nLFxuICAgIGltYWdlRmllbGRJZDogc3RyaW5nLFxuICAgIGl0ZW06IFRPcHRpb24gfCBudWxsLFxuICAgIHNldFJlZj8oKTogdm9pZCxcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIElucHV0QWRkb24oeyBpdGVtLCBpY29uRmllbGRJZCwgaW1hZ2VGaWVsZElkLCBzZXRSZWYgfTogUHJvcHMpIHtcbiAgICBpZiAoIWl0ZW0pIHsgcmV0dXJuIG51bGwgfVxuXG4gICAgcmV0dXJuIGl0ZW1baWNvbkZpZWxkSWQgYXMga2V5b2YgVE9wdGlvbl0gfHwgaXRlbVtpbWFnZUZpZWxkSWQgYXMga2V5b2YgVE9wdGlvbl0gPyAoXG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInNlbGVjdGVkLWl0ZW0gc2VsZWN0ZWQtaXRlbS0tc2luZ2xlXCIgcmVmPXtzZXRSZWZ9PlxuICAgICAgICAgICAge2ljb25GaWVsZElkICYmIGl0ZW1baWNvbkZpZWxkSWQgYXMga2V5b2YgVE9wdGlvbl0gJiYgPGkgY2xhc3NOYW1lPXtpdGVtW2ljb25GaWVsZElkIGFzIGtleW9mIFRPcHRpb25dfSAvPn1cbiAgICAgICAgICAgIHsvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganN4LWExMXkvYWx0LXRleHQgKi99XG4gICAgICAgICAgICB7aW1hZ2VGaWVsZElkICYmIGl0ZW1baW1hZ2VGaWVsZElkIGFzIGtleW9mIFRPcHRpb25dICYmIDxpbWcgc3JjPXtpdGVtW2ltYWdlRmllbGRJZCBhcyBrZXlvZiBUT3B0aW9uXX0gLz59XG4gICAgICAgIDwvc3Bhbj5cbiAgICApIDogbnVsbFxufVxuIl19
@@ -0,0 +1,63 @@
1
+ /// <reference types="react" />
2
+ import { TOption } from './types';
3
+ /**
4
+ * InputSelectGroup
5
+ * @reactProps {boolean} disabled - флаг неактивности
6
+ * @reactProps {string} value - текущее значение инпута
7
+ * @reactProps {string} placeHolder - подсказка в инпуте
8
+ * @reactProps {function} onRemoveItem - callback при нажатии на удаление элемента из выбранных при мульти выборе
9
+ * @reactProps {function} onFocus - событие фокуса
10
+ * @reactProps {function} onBlur - событие потери фокуса
11
+ * @reactProps {array} selected - список выбранных элементов
12
+ * @reactProps {string} labelFieldId - значение ключа label в данных
13
+ * @reactProps {string} valueFieldId
14
+ * @reactProps {function} clearSelected - callback удаление всех выбранных элементов при мульти выборе
15
+ * @reactProps {boolean} multiSelect - фдаг мульти выбора
16
+ * @reactProps {boolean} collapseSelected - флаг сжатия выбранных элементов
17
+ * @reactProps {number} lengthToGroup - от скольки элементов сжимать выбранные элементы
18
+ * @reactProps {number} maxTagTextLength - максимальная длина текста в тэге, до усечения
19
+ * @reactProps {function} onInputChange - callback при изменение инпута
20
+ * @reactProps {function} openPopUp - открытие попапа
21
+ * @reactProps {function} closePopUp - закрытие попапа
22
+ * @reactProps {string} activeValueId
23
+ * @reactProps {function} setActiveValueId
24
+ * @reactProps {array} disabledValues
25
+ * @reactProps {object} options
26
+ * @reactProps {function} onSelect - событие выбора
27
+ * @reactProps {function} onClick - событие клика
28
+ * @reactProps {boolean} isExpanded - флаг видимости popUp
29
+ */
30
+ export declare type Props = {
31
+ activeValueId: string;
32
+ autoFocus: boolean;
33
+ clearSelected(): void;
34
+ closePopUp(arg: boolean): void;
35
+ collapseSelected: boolean;
36
+ disabled: boolean;
37
+ disabledValues: Array<Props['value']>;
38
+ isExpanded: boolean;
39
+ labelFieldId: string;
40
+ lengthToGroup: number;
41
+ maxTagTextLength: number;
42
+ mode: string;
43
+ multiSelect: boolean;
44
+ onBlur(): void;
45
+ onClick(): void;
46
+ onFocus(): void;
47
+ onInputChange(arg: string): void;
48
+ onRemoveItem(item: TOption, index?: number | null): void;
49
+ onSelect(arg?: TOption | Props['value']): void;
50
+ openPopUp(arg: boolean): void;
51
+ options: TOption[];
52
+ placeholder: string;
53
+ selected: Props['options'];
54
+ setActiveValueId(id: string | null): void;
55
+ setRef(arg: any): (arg2: any) => void;
56
+ tags: boolean;
57
+ value: string | number;
58
+ valueFieldId: string;
59
+ };
60
+ export declare function InputContent({ disabled, value, placeholder, onRemoveItem, onFocus, onBlur, onSelect, selected, labelFieldId, valueFieldId, clearSelected, multiSelect, collapseSelected, lengthToGroup, onInputChange, openPopUp, closePopUp, activeValueId, setActiveValueId, disabledValues, options, onClick, isExpanded, autoFocus, setRef, tags, mode, maxTagTextLength, }: Props): JSX.Element;
61
+ export declare namespace InputContent {
62
+ var defaultProps: Props;
63
+ }
@@ -0,0 +1,188 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.InputContent = InputContent;
9
+
10
+ var _react = _interopRequireDefault(require("react"));
11
+
12
+ var _find = _interopRequireDefault(require("lodash/find"));
13
+
14
+ var _isEqual = _interopRequireDefault(require("lodash/isEqual"));
15
+
16
+ var _isEmpty = _interopRequireDefault(require("lodash/isEmpty"));
17
+
18
+ var _classnames = _interopRequireDefault(require("classnames"));
19
+
20
+ var _SelectedItems = require("./SelectedItems");
21
+
22
+ var _utils = require("./utils");
23
+
24
+ function InputContent(_ref) {
25
+ var disabled = _ref.disabled,
26
+ value = _ref.value,
27
+ placeholder = _ref.placeholder,
28
+ onRemoveItem = _ref.onRemoveItem,
29
+ onFocus = _ref.onFocus,
30
+ onBlur = _ref.onBlur,
31
+ onSelect = _ref.onSelect,
32
+ selected = _ref.selected,
33
+ labelFieldId = _ref.labelFieldId,
34
+ valueFieldId = _ref.valueFieldId,
35
+ clearSelected = _ref.clearSelected,
36
+ multiSelect = _ref.multiSelect,
37
+ collapseSelected = _ref.collapseSelected,
38
+ lengthToGroup = _ref.lengthToGroup,
39
+ onInputChange = _ref.onInputChange,
40
+ openPopUp = _ref.openPopUp,
41
+ closePopUp = _ref.closePopUp,
42
+ activeValueId = _ref.activeValueId,
43
+ setActiveValueId = _ref.setActiveValueId,
44
+ disabledValues = _ref.disabledValues,
45
+ options = _ref.options,
46
+ onClick = _ref.onClick,
47
+ isExpanded = _ref.isExpanded,
48
+ autoFocus = _ref.autoFocus,
49
+ setRef = _ref.setRef,
50
+ tags = _ref.tags,
51
+ mode = _ref.mode,
52
+ maxTagTextLength = _ref.maxTagTextLength;
53
+
54
+ /**
55
+ * Обработчик изменения инпута при нажатии на клавишу
56
+ * @param e - событие изменения
57
+ * @private
58
+ */
59
+ var handleKeyDown = function handleKeyDown(e) {
60
+ if (e.key === 'Backspace' && selected.length && !e.target.value) {
61
+ if (!multiSelect) {
62
+ onRemoveItem(selected[0]);
63
+ setActiveValueId(null);
64
+ } else {
65
+ var endElementOfSelect = selected[selected.length - 1];
66
+ onRemoveItem(endElementOfSelect);
67
+ }
68
+ } else if (e.key === 'ArrowDown') {
69
+ e.preventDefault();
70
+
71
+ if (!isExpanded) {
72
+ openPopUp(true);
73
+ setActiveValueId((0, _utils.getFirstNotDisabledId)(options, selected, disabledValues, valueFieldId));
74
+ } else if (activeValueId) {
75
+ setActiveValueId((0, _utils.getNextId)(options, activeValueId, valueFieldId, selected, disabledValues));
76
+ } else {
77
+ setActiveValueId((0, _utils.getFirstNotDisabledId)(options, selected, disabledValues, valueFieldId));
78
+ }
79
+ } else if (e.key === 'ArrowUp') {
80
+ e.preventDefault();
81
+ setActiveValueId((0, _utils.getPrevId)(options, activeValueId, valueFieldId, selected, disabledValues));
82
+ } else if (e.key === 'Enter') {
83
+ e.preventDefault();
84
+ var findEquals = (0, _find["default"])(options, function (item) {
85
+ if (!activeValueId) {
86
+ return item[labelFieldId] === value;
87
+ }
88
+
89
+ if (mode === 'autocomplete') {
90
+ return item[valueFieldId] === activeValueId;
91
+ }
92
+
93
+ return item.id === activeValueId;
94
+ });
95
+
96
+ if (findEquals && selected.find(function (entity) {
97
+ return (0, _isEqual["default"])(entity, findEquals);
98
+ })) {
99
+ findEquals = undefined;
100
+ }
101
+
102
+ if (mode === 'autocomplete') {
103
+ var newSelected = findEquals || value;
104
+ onSelect(newSelected);
105
+ setActiveValueId(null);
106
+ } else if (!(0, _isEmpty["default"])(findEquals)) {
107
+ onSelect(findEquals);
108
+ setActiveValueId(null);
109
+ }
110
+ } else if (e.key === 'Escape') {
111
+ closePopUp(false);
112
+ }
113
+ };
114
+
115
+ var handleClick = function handleClick() {
116
+ if (onClick) {
117
+ onClick();
118
+ }
119
+ };
120
+ /**
121
+ * Обработчик изменения инпута
122
+ * @param e - событие изменения
123
+ * @private
124
+ */
125
+
126
+
127
+ var handleInputChange = function handleInputChange(e) {
128
+ onInputChange(e.target.value);
129
+
130
+ if (tags) {
131
+ setActiveValueId(null);
132
+ }
133
+ };
134
+
135
+ var getPlaceholder = selected.length > 0 ? '' : placeholder;
136
+ return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, multiSelect ? /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_SelectedItems.InputElements, {
137
+ selected: selected,
138
+ labelFieldId: labelFieldId,
139
+ onRemoveItem: onRemoveItem,
140
+ onDeleteAll: clearSelected,
141
+ disabled: disabled,
142
+ collapseSelected: collapseSelected,
143
+ lengthToGroup: lengthToGroup,
144
+ maxTagTextLength: maxTagTextLength
145
+ }), /*#__PURE__*/_react["default"].createElement("textarea", {
146
+ onKeyDown: handleKeyDown,
147
+ ref: setRef,
148
+ placeholder: getPlaceholder,
149
+ disabled: disabled,
150
+ value: value,
151
+ title: String(value),
152
+ onChange: handleInputChange,
153
+ onClick: handleClick,
154
+ onFocus: onFocus,
155
+ onBlur: onBlur,
156
+ className: (0, _classnames["default"])('form-control n2o-inp', {
157
+ 'n2o-inp--multi': multiSelect
158
+ })
159
+ /* eslint-disable-next-line jsx-a11y/no-autofocus */
160
+ ,
161
+ autoFocus: autoFocus
162
+ })) : /*#__PURE__*/_react["default"].createElement("input", {
163
+ onKeyDown: handleKeyDown,
164
+ ref: setRef,
165
+ placeholder: getPlaceholder,
166
+ disabled: disabled,
167
+ title: String(value),
168
+ value: value,
169
+ onChange: handleInputChange,
170
+ onClick: handleClick,
171
+ onFocus: onFocus,
172
+ onBlur: onBlur,
173
+ type: "text",
174
+ className: "form-control n2o-inp"
175
+ /* eslint-disable-next-line jsx-a11y/no-autofocus */
176
+ ,
177
+ autoFocus: autoFocus,
178
+ autoComplete: "nope"
179
+ }));
180
+ }
181
+
182
+ InputContent.defaultProps = {
183
+ multiSelect: false,
184
+ disabled: false,
185
+ collapseSelected: true,
186
+ autoFocus: false
187
+ };
188
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pbnB1dHMvSW5wdXRTZWxlY3QvSW5wdXRDb250ZW50LnRzeCJdLCJuYW1lcyI6WyJJbnB1dENvbnRlbnQiLCJkaXNhYmxlZCIsInZhbHVlIiwicGxhY2Vob2xkZXIiLCJvblJlbW92ZUl0ZW0iLCJvbkZvY3VzIiwib25CbHVyIiwib25TZWxlY3QiLCJzZWxlY3RlZCIsImxhYmVsRmllbGRJZCIsInZhbHVlRmllbGRJZCIsImNsZWFyU2VsZWN0ZWQiLCJtdWx0aVNlbGVjdCIsImNvbGxhcHNlU2VsZWN0ZWQiLCJsZW5ndGhUb0dyb3VwIiwib25JbnB1dENoYW5nZSIsIm9wZW5Qb3BVcCIsImNsb3NlUG9wVXAiLCJhY3RpdmVWYWx1ZUlkIiwic2V0QWN0aXZlVmFsdWVJZCIsImRpc2FibGVkVmFsdWVzIiwib3B0aW9ucyIsIm9uQ2xpY2siLCJpc0V4cGFuZGVkIiwiYXV0b0ZvY3VzIiwic2V0UmVmIiwidGFncyIsIm1vZGUiLCJtYXhUYWdUZXh0TGVuZ3RoIiwiaGFuZGxlS2V5RG93biIsImUiLCJrZXkiLCJsZW5ndGgiLCJ0YXJnZXQiLCJlbmRFbGVtZW50T2ZTZWxlY3QiLCJwcmV2ZW50RGVmYXVsdCIsImZpbmRFcXVhbHMiLCJpdGVtIiwiaWQiLCJmaW5kIiwiZW50aXR5IiwidW5kZWZpbmVkIiwibmV3U2VsZWN0ZWQiLCJoYW5kbGVDbGljayIsImhhbmRsZUlucHV0Q2hhbmdlIiwiZ2V0UGxhY2Vob2xkZXIiLCJTdHJpbmciLCJkZWZhdWx0UHJvcHMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBOztBQUNBOztBQStETyxTQUFTQSxZQUFULE9BNkJHO0FBQUEsTUE1Qk5DLFFBNEJNLFFBNUJOQSxRQTRCTTtBQUFBLE1BM0JOQyxLQTJCTSxRQTNCTkEsS0EyQk07QUFBQSxNQTFCTkMsV0EwQk0sUUExQk5BLFdBMEJNO0FBQUEsTUF6Qk5DLFlBeUJNLFFBekJOQSxZQXlCTTtB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NEJBQUcsc0JBQUgsRUFBMkI7QUFDbEMsd0JBQWtCTTtBQURnQixLQUEzQjtBQUdYO0FBZEo7QUFlSSxJQUFBLFNBQVMsRUFBRVk7QUFmZixJQVhKLENBRFEsZ0JBK0JSO0FBQ0ksSUFBQSxTQUFTLEVBQUVLLGFBRGY7QUFFSSxJQUFBLEdBQUcsRUFBRUosTUFGVDtBQUdJLElBQUEsV0FBVyxFQUFFb0IsY0FIakI7QUFJSSxJQUFBLFFBQVEsRUFBRTVDLFFBSmQ7QUFLSSxJQUFBLEtBQUssRUFBRTZDLE1BQU0sQ0FBQzVDLEtBQUQsQ0FMakI7QUFNSSxJQUFBLEtBQUssRUFBRUEsS0FOWDtBQU9JLElBQUEsUUFBUSxFQUFFMEMsaUJBUGQ7QUFRSSxJQUFBLE9BQU8sRUFBRUQsV0FSYjtBQVNJLElBQUEsT0FBTyxFQUFFdEMsT0FUYjtBQVVJLElBQUEsTUFBTSxFQUFFQyxNQVZaO0FBV0ksSUFBQSxJQUFJLEVBQUMsTUFYVDtBQVlJLElBQUEsU0FBUyxFQUFDO0FBQ1Y7QUFiSjtBQWNJLElBQUEsU0FBUyxFQUFFa0IsU0FkZjtBQWVJLElBQUEsWUFBWSxFQUFDO0FBZmpCLElBaENSLENBREo7QUFxREg7O0FBRUR4QixZQUFZLENBQUMrQyxZQUFiLEdBQTRCO0FBQ3hCbkMsRUFBQUEsV0FBVyxFQUFFLEtBRFc7QUFFeEJYLEVBQUFBLFFBQVEsRUFBRSxLQUZjO0FBR3hCWSxFQUFBQSxnQkFBZ0IsRUFBRSxJQUhNO0FBSXhCVyxFQUFBQSxTQUFTLEVBQUU7QUFKYSxDQUE1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBDaGFuZ2VFdmVudCwgS2V5Ym9hcmRFdmVudCB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IGZpbmQgZnJvbSAnbG9kYXNoL2ZpbmQnXG5pbXBvcnQgaXNFcXVhbCBmcm9tICdsb2Rhc2gvaXNFcXVhbCdcbmltcG9ydCBpc0VtcHR5IGZyb20gJ2xvZGFzaC9pc0VtcHR5J1xuaW1wb3J0IGNuIGZyb20gJ2NsYXNzbmFtZXMnXG5cbmltcG9ydCB7IElucHV0RWxlbWVudHMgYXMgU2VsZWN0ZWRJdGVtcyB9IGZyb20gJy4vU2VsZWN0ZWRJdGVtcydcbmltcG9ydCB7IGdldE5leHRJZCwgZ2V0UHJldklkLCBnZXRGaXJzdE5vdERpc2FibGVkSWQgfSBmcm9tICcuL3V0aWxzJ1xuaW1wb3J0IHsgVE9wdGlvbiB9IGZyb20gJy4vdHlwZXMnXG5cbi8qKlxuICogSW5wdXRTZWxlY3RHcm91cFxuICogQHJlYWN0UHJvcHMge2Jvb2xlYW59IGRpc2FibGVkIC0g0YTQu9Cw0LMg0L3QtdCw0LrRgtC40LLQvdC+0YHRgtC4XG4gKiBAcmVhY3RQcm9wcyB7c3RyaW5nfSB2YWx1ZSAtINGC0LXQutGD0YnQtdC1INC30L3QsNGH0LXQvdC40LUg0LjQvdC/0YPRgtCwXG4gKiBAcmVhY3RQcm9wcyB7c3RyaW5nfSBwbGFjZUhvbGRlciAtINC/0L7QtNGB0LrQsNC30LrQsCDQsiDQuNC90L/Rg9GC0LVcbiAqIEByZWFjdFByb3BzIHtmdW5jdGlvbn0gb25SZW1vdmVJdGVtIC0gY2FsbGJhY2sg0L/RgNC4INC90LDQttCw0YLQuNC4INC90LAg0YPQtNCw0LvQtdC90LjQtSDRjdC70LXQvNC10L3RgtCwINC40Lcg0LLRi9Cx0YDQsNC90L3Ri9GFINC/0YDQuCDQvNGD0LvRjNGC0Lgg0LLRi9Cx0L7RgNC1XG4gKiBAcmVhY3RQcm9wcyB7ZnVuY3Rpb259IG9uRm9jdXMgLSDRgdC+0LHRi9GC0LjQtSDRhNC+0LrRg9GB0LBcbiAqIEByZWFjdFByb3BzIHtmdW5jdGlvbn0gb25CbHVyIC0g0YHQvtCx0YvRgtC40LUg0L/QvtGC0LXRgNC4INGE0L7QutGD0YHQsFxuICogQHJlYWN0UHJvcHMge2FycmF5fSBzZWxlY3RlZCAtINGB0L/QuNGB0L7QuiDQstGL0LHRgNCw0L3QvdGL0YUg0Y3Qu9C10LzQtdC90YLQvtCyXG4gKiBAcmVhY3RQcm9wcyB7c3RyaW5nfSBsYWJlbEZpZWxkSWQgLSDQt9C90LDRh9C10L3QuNC1INC60LvRjtGH0LAgbGFiZWwg0LIg0LTQsNC90L3Ri9GFXG4gKiBAcmVhY3RQcm9wcyB7c3RyaW5nfSB2YWx1ZUZpZWxkSWRcbiAqIEByZWFjdFByb3BzIHtmdW5jdGlvbn0gY2xlYXJTZWxlY3RlZCAtIGNhbGxiYWNrINGD0LTQsNC70LXQvdC40LUg0LLRgdC10YUg0LLRi9Cx0YDQsNC90L3Ri9GFINGN0LvQtdC80LXQvdGC0L7QsiDQv9GA0Lgg0LzRg9C70YzRgtC4INCy0YvQsdC+0YDQtVxuICogQHJlYWN0UHJvcHMge2Jvb2xlYW59IG11bHRpU2VsZWN0IC0g0YTQtNCw0LMg0LzRg9C70YzRgtC4INCy0YvQsdC+0YDQsFxuICogQHJlYWN0UHJvcHMge2Jvb2xlYW59IGNvbGxhcHNlU2VsZWN0ZWQgLSDRhNC70LDQsyDRgdC20LDRgtC40Y8g0LLRi9Cx0YDQsNC90L3Ri9GFINGN0LvQtdC80LXQvdGC0L7QslxuICogQHJlYWN0UHJvcHMge251bWJlcn0gbGVuZ3RoVG9Hcm91cCAtINC+0YIg0YHQutC+0LvRjNC60Lgg0Y3Qu9C10LzQtdC90YLQvtCyINGB0LbQuNC80LDRgtGMINCy0YvQsdGA0LDQvdC90YvQtSDRjdC70LXQvNC10L3RgtGLXG4gKiBAcmVhY3RQcm9wcyB7bnVtYmVyfSBtYXhUYWdUZXh0TGVuZ3RoIC0g0LzQsNC60YHQuNC80LDQu9GM0L3QsNGPINC00LvQuNC90LAg0YLQtdC60YHRgtCwINCyINGC0Y3Qs9C1LCDQtNC+INGD0YHQtdGH0LXQvdC40Y9cbiAqIEByZWFjdFByb3BzIHtmdW5jdGlvbn0gb25JbnB1dENoYW5nZSAtIGNhbGxiYWNrINC/0YDQuCDQuNC30LzQtdC90LXQvdC40LUg0LjQvdC/0YPRgtCwXG4gKiBAcmVhY3RQcm9wcyB7ZnVuY3Rpb259IG9wZW5Qb3BVcCAtINC+0YLQutGA0YvRgtC40LUg0L/QvtC/0LDQv9CwXG4gKiBAcmVhY3RQcm9wcyB7ZnVuY3Rpb259IGNsb3NlUG9wVXAgLSDQt9Cw0LrRgNGL0YLQuNC1INC/0L7Qv9Cw0L/QsFxuICogQHJlYWN0UHJvcHMge3N0cmluZ30gYWN0aXZlVmFsdWVJZFxuICogQHJlYWN0UHJvcHMge2Z1bmN0aW9ufSBzZXRBY3RpdmVWYWx1ZUlkXG4gKiBAcmVhY3RQcm9wcyB7YXJyYXl9IGRpc2FibGVkVmFsdWVzXG4gKiBAcmVhY3RQcm9wcyB7b2JqZWN0fSBvcHRpb25zXG4gKiBAcmVhY3RQcm9wcyB7ZnVuY3Rpb259IG9uU2VsZWN0IC0g0YHQvtCx0YvRgtC40LUg0LLRi9Cx0L7RgNCwXG4gKiBAcmVhY3RQcm9wcyB7ZnVuY3Rpb259IG9uQ2xpY2sgLSDRgdC+0LHRi9GC0LjQtSDQutC70LjQutCwXG4gKiBAcmVhY3RQcm9wcyB7Ym9vbGVhbn0gaXNFeHBhbmRlZCAtINGE0LvQsNCzINCy0LjQtNC40LzQvtGB0YLQuCBwb3BVcFxuICovXG5cbmV4cG9ydCB0eXBlIFByb3BzID0ge1xuICAgIGFjdGl2ZVZhbHVlSWQ6IHN0cmluZyxcbiAgICBhdXRvRm9jdXM6IGJvb2xlYW4sXG4gICAgY2xlYXJTZWxlY3RlZCgpOiB2b2lkLFxuICAgIGNsb3NlUG9wVXAoYXJnOiBib29sZWFuKTogdm9pZCxcbiAgICBjb2xsYXBzZVNlbGVjdGVkOiBib29sZWFuLFxuICAgIGRpc2FibGVkOiBib29sZWFuLFxuICAgIGRpc2FibGVkVmFsdWVzOiBBcnJheTxQcm9wc1sndmFsdWUnXT4sXG4gICAgaXNFeHBhbmRlZDogYm9vbGVhbixcbiAgICBsYWJlbEZpZWxkSWQ6IHN0cmluZyxcbiAgICBsZW5ndGhUb0dyb3VwOiBudW1iZXIsXG4gICAgbWF4VGFnVGV4dExlbmd0aDogbnVtYmVyLFxuICAgIG1vZGU6IHN0cmluZyxcbiAgICBtdWx0aVNlbGVjdDogYm9vbGVhbixcbiAgICBvbkJsdXIoKTogdm9pZCxcbiAgICBvbkNsaWNrKCk6IHZvaWQsXG4gICAgb25Gb2N1cygpOiB2b2lkLFxuICAgIG9uSW5wdXRDaGFuZ2UoYXJnOiBzdHJpbmcpOiB2b2lkLFxuICAgIG9uUmVtb3ZlSXRlbShpdGVtOiBUT3B0aW9uLCBpbmRleD86IG51bWJlciB8IG51bGwpOiB2b2lkLFxuICAgIG9uU2VsZWN0KGFyZz86IFRPcHRpb24gfCBQcm9wc1sndmFsdWUnXSk6IHZvaWQsXG4gICAgb3BlblBvcFVwKGFyZzogYm9vbGVhbik6IHZvaWQsXG4gICAgb3B0aW9uczogVE9wdGlvbltdLFxuICAgIHBsYWNlaG9sZGVyOiBzdHJpbmcsXG4gICAgc2VsZWN0ZWQ6IFByb3BzWydvcHRpb25zJ10sXG4gICAgc2V0QWN0aXZlVmFsdWVJZChpZDogc3RyaW5nIHwgbnVsbCk6IHZvaWQsXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBzZXRSZWYoYXJnOiBhbnkpOiAoYXJnMjogYW55KSA9PiB2b2lkLFxuICAgIHRhZ3M6IGJvb2xlYW4sXG4gICAgdmFsdWU6IHN0cmluZyB8IG51bWJlcixcbiAgICB2YWx1ZUZpZWxkSWQ6IHN0cmluZ1xufVxuXG5leHBvcnQgZnVuY3Rpb24gSW5wdXRDb250ZW50KHtcbiAgICBkaXNhYmxlZCxcbiAgICB2YWx1ZSxcbiAgICBwbGFjZWhvbGRlcixcbiAgICBvblJlbW92ZUl0ZW0sXG4gICAgb25Gb2N1cyxcbiAgICBvbkJsdXIsXG4gICAgb25TZWxlY3QsXG4gICAgc2VsZWN0ZWQsXG4gICAgbGFiZWxGaWVsZElkLFxuICAgIHZhbHVlRmllbGRJZCxcbiAgICBjbGVhclNlbGVjdGVkLFxuICAgIG11bHRpU2VsZWN0LFxuICAgIGNvbGxhcHNlU2VsZWN0ZWQsXG4gICAgbGVuZ3RoVG9Hcm91cCxcbiAgICBvbklucHV0Q2hhbmdlLFxuICAgIG9wZW5Qb3BVcCxcbiAgICBjbG9zZVBvcFVwLFxuICAgIGFjdGl2ZVZhbHVlSWQsXG4gICAgc2V0QWN0aXZlVmFsdWVJZCxcbiAgICBkaXNhYmxlZFZhbHVlcyxcbiAgICBvcHRpb25zLFxuICAgIG9uQ2xpY2ssXG4gICAgaXNFeHBhbmRlZCxcbiAgICBhdXRvRm9jdXMsXG4gICAgc2V0UmVmLFxuICAgIHRhZ3MsXG4gICAgbW9kZSxcbiAgICBtYXhUYWdUZXh0TGVuZ3RoLFxufTogUHJvcHMpIHtcbiAgICAvKipcbiAgICAgKiDQntCx0YDQsNCx0L7RgtGH0LjQuiDQuNC30LzQtdC90LXQvdC40Y8g0LjQvdC/0YPRgtCwINC/0YDQuCDQvdCw0LbQsNGC0LjQuCDQvdCwINC60LvQsNCy0LjRiNGDXG4gICAgICogQHBhcmFtIGUgLSDRgdC+0LHRi9GC0LjQtSDQuNC30LzQtdC90LXQvdC40Y9cbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIGNvbnN0IGhhbmRsZUtleURvd24gPSAoZTogS2V5Ym9hcmRFdmVudDxIVE1MVGV4dEFyZWFFbGVtZW50IHwgSFRNTElucHV0RWxlbWVudD4pID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgZS5rZXkgPT09ICdCYWNrc3BhY2UnICYmXG4gICAgICAgICAgICBzZWxlY3RlZC5sZW5ndGggJiZcbiAgICAgICAgICAgICEoZS50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWVcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBpZiAoIW11bHRpU2VsZWN0KSB7XG4gICAgICAgICAgICAgICAgb25SZW1vdmVJdGVtKHNlbGVjdGVkWzBdKVxuICAgICAgICAgICAgICAgIHNldEFjdGl2ZVZhbHVlSWQobnVsbClcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZW5kRWxlbWVudE9mU2VsZWN0ID0gc2VsZWN0ZWRbc2VsZWN0ZWQubGVuZ3RoIC0gMV1cblxuICAgICAgICAgICAgICAgIG9uUmVtb3ZlSXRlbShlbmRFbGVtZW50T2ZTZWxlY3QpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZS5rZXkgPT09ICdBcnJvd0Rvd24nKSB7XG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgIGlmICghaXNFeHBhbmRlZCkge1xuICAgICAgICAgICAgICAgIG9wZW5Qb3BVcCh0cnVlKVxuICAgICAgICAgICAgICAgIHNldEFjdGl2ZVZhbHVlSWQoXG4gICAgICAgICAgICAgICAgICAgIGdldEZpcnN0Tm90RGlzYWJsZWRJZChcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkVmFsdWVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVGaWVsZElkLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoYWN0aXZlVmFsdWVJZCkge1xuICAgICAgICAgICAgICAgIHNldEFjdGl2ZVZhbHVlSWQoXG4gICAgICAgICAgICAgICAgICAgIGdldE5leHRJZChcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmVWYWx1ZUlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVGaWVsZElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZFZhbHVlcyxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHNldEFjdGl2ZVZhbHVlSWQoXG4gICAgICAgICAgICAgICAgICAgIGdldEZpcnN0Tm90RGlzYWJsZWRJZChcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkVmFsdWVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVGaWVsZElkLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChlLmtleSA9PT0gJ0Fycm93VXAnKSB7XG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgIHNldEFjdGl2ZVZhbHVlSWQoXG4gICAgICAgICAgICAgICAgZ2V0UHJldklkKFxuICAgICAgICAgICAgICAgICAgICBvcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICBhY3RpdmVWYWx1ZUlkLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZUZpZWxkSWQsXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkLFxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZFZhbHVlcyxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKVxuICAgICAgICB9IGVsc2UgaWYgKGUua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KClcblxuICAgICAgICAgICAgbGV0IGZpbmRFcXVhbHMgPSBmaW5kKG9wdGlvbnMsIChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFhY3RpdmVWYWx1ZUlkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtW2xhYmVsRmllbGRJZCBhcyBrZXlvZiBUT3B0aW9uXSA9PT0gdmFsdWVcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAobW9kZSA9PT0gJ2F1dG9jb21wbGV0ZScpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW1bdmFsdWVGaWVsZElkIGFzIGtleW9mIFRPcHRpb25dID09PSBhY3RpdmVWYWx1ZUlkXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW0uaWQgPT09IGFjdGl2ZVZhbHVlSWRcbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgIGlmIChmaW5kRXF1YWxzICYmIHNlbGVjdGVkLmZpbmQoZW50aXR5ID0+IGlzRXF1YWwoZW50aXR5LCBmaW5kRXF1YWxzKSkpIHsgZmluZEVxdWFscyA9IHVuZGVmaW5lZCB9XG5cbiAgICAgICAgICAgIGlmIChtb2RlID09PSAnYXV0b2NvbXBsZXRlJykge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld1NlbGVjdGVkID0gZmluZEVxdWFscyB8fCB2YWx1ZVxuXG4gICAgICAgICAgICAgICAgb25TZWxlY3QobmV3U2VsZWN0ZWQpXG4gICAgICAgICAgICAgICAgc2V0QWN0aXZlVmFsdWVJZChudWxsKVxuICAgICAgICAgICAgfSBlbHNlIGlmICghaXNFbXB0eShmaW5kRXF1YWxzKSkge1xuICAgICAgICAgICAgICAgIG9uU2VsZWN0KGZpbmRFcXVhbHMpXG4gICAgICAgICAgICAgICAgc2V0QWN0aXZlVmFsdWVJZChudWxsKVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGUua2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgICAgICAgY2xvc2VQb3BVcChmYWxzZSlcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGhhbmRsZUNsaWNrID0gKCkgPT4ge1xuICAgICAgICBpZiAob25DbGljaykge1xuICAgICAgICAgICAgb25DbGljaygpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQntCx0YDQsNCx0L7RgtGH0LjQuiDQuNC30LzQtdC90LXQvdC40Y8g0LjQvdC/0YPRgtCwXG4gICAgICogQHBhcmFtIGUgLSDRgdC+0LHRi9GC0LjQtSDQuNC30LzQtdC90LXQvdC40Y9cbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuXG4gICAgY29uc3QgaGFuZGxlSW5wdXRDaGFuZ2UgPSAoZTogQ2hhbmdlRXZlbnQpID0+IHtcbiAgICAgICAgb25JbnB1dENoYW5nZSgoZS50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWUpXG5cbiAgICAgICAgaWYgKHRhZ3MpIHtcbiAgICAgICAgICAgIHNldEFjdGl2ZVZhbHVlSWQobnVsbClcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGdldFBsYWNlaG9sZGVyID0gc2VsZWN0ZWQubGVuZ3RoID4gMCA/ICcnIDogcGxhY2Vob2xkZXJcblxuICAgIHJldHVybiAoXG4gICAgICAgIDw+XG4gICAgICAgICAgICB7bXVsdGlTZWxlY3QgPyAoXG4gICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgPFNlbGVjdGVkSXRlbXNcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkPXtzZWxlY3RlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsRmllbGRJZD17bGFiZWxGaWVsZElkfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25SZW1vdmVJdGVtPXtvblJlbW92ZUl0ZW19XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkRlbGV0ZUFsbD17Y2xlYXJTZWxlY3RlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxhcHNlU2VsZWN0ZWQ9e2NvbGxhcHNlU2VsZWN0ZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGhUb0dyb3VwPXtsZW5ndGhUb0dyb3VwfVxuICAgICAgICAgICAgICAgICAgICAgICAgbWF4VGFnVGV4dExlbmd0aD17bWF4VGFnVGV4dExlbmd0aH1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhXG4gICAgICAgICAgICAgICAgICAgICAgICBvbktleURvd249e2hhbmRsZUtleURvd259XG4gICAgICAgICAgICAgICAgICAgICAgICByZWY9e3NldFJlZn1cbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtnZXRQbGFjZWhvbGRlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXtTdHJpbmcodmFsdWUpfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUlucHV0Q2hhbmdlfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlQ2xpY2t9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkZvY3VzPXtvbkZvY3VzfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyPXtvbkJsdXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NuKCdmb3JtLWNvbnRyb2wgbjJvLWlucCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbjJvLWlucC0tbXVsdGknOiBtdWx0aVNlbGVjdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzeC1hMTF5L25vLWF1dG9mb2N1cyAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgYXV0b0ZvY3VzPXthdXRvRm9jdXN9XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICBvbktleURvd249e2hhbmRsZUtleURvd259XG4gICAgICAgICAgICAgICAgICAgIHJlZj17c2V0UmVmfVxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17Z2V0UGxhY2Vob2xkZXJ9XG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9e1N0cmluZyh2YWx1ZSl9XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUlucHV0Q2hhbmdlfVxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVDbGlja31cbiAgICAgICAgICAgICAgICAgICAgb25Gb2N1cz17b25Gb2N1c31cbiAgICAgICAgICAgICAgICAgICAgb25CbHVyPXtvbkJsdXJ9XG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiZm9ybS1jb250cm9sIG4yby1pbnBcIlxuICAgICAgICAgICAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganN4LWExMXkvbm8tYXV0b2ZvY3VzICovXG4gICAgICAgICAgICAgICAgICAgIGF1dG9Gb2N1cz17YXV0b0ZvY3VzfVxuICAgICAgICAgICAgICAgICAgICBhdXRvQ29tcGxldGU9XCJub3BlXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgPC8+XG4gICAgKVxufVxuXG5JbnB1dENvbnRlbnQuZGVmYXVsdFByb3BzID0ge1xuICAgIG11bHRpU2VsZWN0OiBmYWxzZSxcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgY29sbGFwc2VTZWxlY3RlZDogdHJ1ZSxcbiAgICBhdXRvRm9jdXM6IGZhbHNlLFxufSBhcyBQcm9wc1xuIl19
@@ -0,0 +1,296 @@
1
+ import React from 'react';
2
+ import { BadgeType } from './PopupList';
3
+ import { Filter, Ref, TOption } from './types';
4
+ /**
5
+ * InputSelect
6
+ * @reactProps {object} style - css стили
7
+ * @reactProps {boolean} loading - флаг анимации загрузки
8
+ * @reactProps {array} options - данные
9
+ * @reactProps {string} valueFieldId - значение ключа value в данных
10
+ * @reactProps {string} labelFieldId - значение ключа label в данных
11
+ * @reactProps {string} iconFieldId - поле для иконки
12
+ * @reactProps {string} imageFieldId - поле для картинки
13
+ * @reactProps {object} badge - данные для баджа
14
+ * @reactProps {string} statusFieldId - поле для статуса
15
+ * @reactProps {string} descriptionFieldId - поле для описания
16
+ * @reactProps {boolean} disabled - флаг неактивности
17
+ * @reactProps {array} disabledValues - неактивные данные
18
+ * @reactProps {string} filter - варианты фильтрации
19
+ * @reactProps {string} value - текущее значение
20
+ * @reactProps {function} onToggle
21
+ * @reactProps {function} onInput - callback при вводе в инпут
22
+ * @reactProps {function} onChange - callback при выборе значения или вводе
23
+ * @reactProps {function} onSelect
24
+ * @reactProps {function} onScrollENd - callback при прокрутке скролла popup
25
+ * @reactProps {string} placeHolder - подсказка в инпуте
26
+ * @reactProps {boolean} resetOnBlur - фича, при которой: (значение - true) - сбрасывается значение контрола, если оно
27
+ * не выбрано из popup, (значение - false) - создает объект в текущем value
28
+ * @reactProps {function} onClose - callback на закрытие попапа
29
+ * @reactProps {boolean} multiSelect - флаг мульти выбора
30
+ * @reactProps {string} groupFieldId - поле для группировки
31
+ * @reactProps {boolean} closePopupOnSelect - флаг закрытия попапа при выборе
32
+ * @reactProps {boolean} hasCheckboxes - флаг наличия чекбоксов
33
+ * @reactProps {string} format - формат
34
+ * @reactProps {function} onSearch
35
+ * @reactProps {boolean} expandPopUp
36
+ * @reactProps {array} alerts
37
+ * @reactProps {boolean} popupAutoSize - флаг включения автоматическиого расчета длины PopUp
38
+ * @reactProps {number} size - кол-во запрашиваемых записей
39
+ * @reactProps {number} count - всего записей
40
+ */
41
+ export declare class InputSelect extends React.Component<Props, State> {
42
+ inputHeightRef: Ref;
43
+ popUpItemRef: Ref;
44
+ textAreaRef: Ref;
45
+ inputRef: Ref | undefined;
46
+ constructor(props: Props);
47
+ componentWillReceiveProps(nextProps: Props): void;
48
+ componentDidUpdate(prevProps: Props): void;
49
+ /**
50
+ * установить акстивный элемент дропдауна
51
+ * @param activeValueId
52
+ * @private
53
+ */
54
+ setActiveValueId: (activeValueId: State['activeValueId']) => void;
55
+ /**
56
+ * обработка изменения значения при потери фокуса(считаем, что при потере фокуса пользователь закончил вводить
57
+ * новое значение)
58
+ * @private
59
+ */
60
+ handleValueChangeOnBlur: () => void;
61
+ /**
62
+ * Обработка клика на инпут
63
+ * @private
64
+ */
65
+ handleClick: () => void;
66
+ /**
67
+ * Обработка изменения значения при выборе из дропдауна
68
+ * @param item
69
+ * @private
70
+ */
71
+ handleValueChangeOnSelect: (item: TOption) => void;
72
+ /**
73
+ * Возвращает текущее значение (массив - если ипут селект, объект - если нет)
74
+ * или null если пусто
75
+ * @returns {*}
76
+ * @private
77
+ */
78
+ getValue: () => any;
79
+ /**
80
+ * Удаляет элемент из списка выбранных
81
+ * @param item - элемент
82
+ * @private
83
+ */
84
+ removeSelectedItem: (item: TOption) => void;
85
+ /**
86
+ * Скрывает popUp
87
+ * @private
88
+ */
89
+ hidePopUp: () => void;
90
+ /**
91
+ * Очищает выбранный элемент
92
+ * @private
93
+ */
94
+ clearSelected: () => void;
95
+ /**
96
+ * установить / сбросить фокус
97
+ * @param inputFocus
98
+ * @private
99
+ */
100
+ setInputFocus: (inputFocus: State['inputFocus']) => void;
101
+ /**
102
+ * скрыть / показать попап
103
+ * @param isExpanded
104
+ * @private
105
+ */
106
+ setIsExpanded: (isExpanded: Props['isExpanded']) => null;
107
+ /**
108
+ * Выполняет поиск элементов для popUp, если установлен фильтр
109
+ * @private
110
+ */
111
+ handleDataSearch: (input?: State['input'], delay?: Props['throttleDelay']) => void;
112
+ /**
113
+ * новое значение инпута search)
114
+ * @param input
115
+ * @private
116
+ */
117
+ setNewInputValue: (input: State['input']) => void;
118
+ /**
119
+ * Обрабатывает выбор элемента из popUp
120
+ * @param item - элемент массива options
121
+ * @private
122
+ */
123
+ handleItemSelect: (item: TOption) => void;
124
+ /**
125
+ * Очищает инпут и результаты поиска
126
+ * @private
127
+ */
128
+ clearSearchField: () => void;
129
+ /**
130
+ * Очищениеб сброс фокуса, выделенного значения
131
+ * @private
132
+ */
133
+ handleElementClear: () => void;
134
+ /**
135
+ * Обрабатывает клик за пределы компонента
136
+ * вызывается библиотекой react-onclickoutside
137
+ */
138
+ handleClickOutside: () => void;
139
+ /**
140
+ * Добавлет объект к текущему value, при resetOnBlur = false
141
+ * @private
142
+ */
143
+ addObjectToValue: () => void;
144
+ handlePopupListMouseEnter: () => void;
145
+ handlePopupListMouseLeave: () => void;
146
+ onInputBlur: () => void;
147
+ onFocus: () => void;
148
+ setInputRef: (popperRef: any) => (r: any) => void;
149
+ toggle: () => void;
150
+ onInputSelectGroupClick: () => void;
151
+ render(): JSX.Element;
152
+ static defaultProps: Props;
153
+ }
154
+ declare type Props = {
155
+ alerts?: any[];
156
+ /**
157
+ * Авто фокусировка на селекте
158
+ */
159
+ autoFocus: boolean;
160
+ /**
161
+ * Данные для badge
162
+ */
163
+ badge?: BadgeType;
164
+ className: string;
165
+ /**
166
+ * Флаг закрытия попапа при выборе
167
+ */
168
+ closePopupOnSelect: boolean;
169
+ count?: number;
170
+ datasource?: string;
171
+ descriptionFieldId: string;
172
+ /**
173
+ * Флаг активности
174
+ */
175
+ disabled: boolean;
176
+ /**
177
+ * Неактивные данные
178
+ */
179
+ disabledValues: [];
180
+ enabledFieldId: string;
181
+ expandPopUp: boolean;
182
+ fetchData(): void;
183
+ /**
184
+ * Варианты фильтрации
185
+ */
186
+ filter: Filter | boolean;
187
+ /**
188
+ * Формат
189
+ */
190
+ format?: string;
191
+ /**
192
+ * Поле для группировки
193
+ */
194
+ groupFieldId: string;
195
+ /**
196
+ * Флаг наличия чекбоксов в селекте
197
+ */
198
+ hasCheckboxes: boolean;
199
+ /**
200
+ * Ключ icon в данных
201
+ */
202
+ iconFieldId: string;
203
+ /**
204
+ * Ключ image в данных
205
+ */
206
+ imageFieldId: string;
207
+ isExpanded?: boolean;
208
+ /**
209
+ * Ключ label в данных
210
+ */
211
+ labelFieldId: string;
212
+ /**
213
+ * Флаг загрузки
214
+ */
215
+ loading: boolean;
216
+ /**
217
+ * Максимальная длина текста в тэге, до усечения
218
+ */
219
+ maxTagTextLength?: number;
220
+ models?: any;
221
+ /**
222
+ * Мульти выбор значений
223
+ */
224
+ multiSelect: boolean;
225
+ onBlur(arg: TOption | TOption[] | null): void;
226
+ /**
227
+ * Callback на изменение
228
+ */
229
+ onChange(arg: TOption | TOption[] | null): void;
230
+ /**
231
+ * Callback на закрытие
232
+ */
233
+ onClose(): void;
234
+ onDismiss(arg: string): void;
235
+ onInput(input: State['input']): void;
236
+ /**
237
+ * Callback на поиск
238
+ */
239
+ onSearch(input: State['input'], delay: Props['throttleDelay']): void;
240
+ /**
241
+ * Callback на выбор
242
+ */
243
+ onSelect(item: TOption): void;
244
+ /**
245
+ * Callback на переключение
246
+ */
247
+ onToggle(arg: boolean): void;
248
+ openOnFocus?: boolean;
249
+ /**
250
+ * Массив данных
251
+ */
252
+ options: TOption[];
253
+ page?: number;
254
+ /**
255
+ * Placeholder контрола
256
+ */
257
+ placeholder?: string;
258
+ /**
259
+ * Флаг авто размера попапа
260
+ */
261
+ popupAutoSize: boolean;
262
+ /**
263
+ * Фича, при которой сбрасывается значение контрола, если оно не выбрано из popup
264
+ */
265
+ resetOnBlur: boolean;
266
+ setFilter(arg: Pick<any, number | symbol>): void;
267
+ size?: number;
268
+ /**
269
+ * Ключ сортировки в данных
270
+ */
271
+ sortFieldId: string;
272
+ statusFieldId: string;
273
+ style: object;
274
+ throttleDelay?: number;
275
+ /**
276
+ * Значение
277
+ */
278
+ value: any;
279
+ /**
280
+ * Ключ id в данных
281
+ */
282
+ valueFieldId: string;
283
+ };
284
+ declare type State = {
285
+ activeValueId?: string | null;
286
+ input?: string;
287
+ inputFocus?: boolean;
288
+ isExpanded?: boolean;
289
+ isInputSelected?: boolean;
290
+ isPopupFocused?: boolean;
291
+ options?: Props['options'];
292
+ popUpMaxHeight?: number;
293
+ value?: any[];
294
+ };
295
+ export declare const InputSelectComponent: import("react-onclickoutside").WrapperClass<Props, typeof InputSelect>;
296
+ export {};