@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.
- package/index.js +0 -0
- package/lib/display/Alerts/Alert.d.ts +2 -0
- package/lib/display/Alerts/Alert.js +121 -0
- package/lib/display/Alerts/AlertSection.d.ts +18 -0
- package/lib/display/Alerts/AlertSection.js +64 -0
- package/lib/display/Alerts/AlertWrapper.d.ts +6 -0
- package/lib/display/Alerts/AlertWrapper.js +39 -0
- package/lib/display/Alerts/DefaultAlert.d.ts +6 -0
- package/lib/display/Alerts/DefaultAlert.js +125 -0
- package/lib/display/Alerts/LoaderAlert.d.ts +5 -0
- package/lib/display/Alerts/LoaderAlert.js +36 -0
- package/lib/display/Alerts/types.d.ts +49 -0
- package/lib/display/Alerts/types.js +24 -0
- package/lib/display/Alerts/utils.d.ts +15 -0
- package/lib/display/Alerts/utils.js +102 -0
- package/lib/display/Badge/Badge.d.ts +16 -0
- package/lib/display/Badge/Badge.js +77 -0
- package/lib/display/Badge/enums.d.ts +9 -0
- package/lib/display/Badge/enums.js +23 -0
- package/lib/display/Badge/utils.d.ts +9 -0
- package/lib/display/Badge/utils.js +49 -0
- package/lib/display/Block.d.ts +369 -0
- package/lib/display/Block.js +38 -0
- package/lib/display/CodeViewer/CodeViewer.d.ts +13 -0
- package/lib/display/CodeViewer/CodeViewer.js +96 -0
- package/lib/display/Drawer/Drawer.d.ts +25 -0
- package/lib/display/Drawer/Drawer.js +99 -0
- package/lib/display/DropdownCustomItem.d.ts +7 -0
- package/lib/display/DropdownCustomItem.js +23 -0
- package/lib/display/Filter/Buttons.d.ts +11 -0
- package/lib/display/Filter/Buttons.js +42 -0
- package/lib/display/Filter/Filter.d.ts +8 -0
- package/lib/display/Filter/Filter.js +38 -0
- package/lib/display/HelpPopover.d.ts +16 -0
- package/lib/display/HelpPopover.js +104 -0
- package/lib/display/Html.d.ts +8 -0
- package/lib/display/Html.js +29 -0
- package/lib/display/Icon/Icon.d.ts +11 -0
- package/lib/display/Icon/Icon.js +42 -0
- package/lib/display/Image/Image.d.ts +30 -0
- package/lib/display/Image/Image.js +93 -0
- package/lib/display/Image/ImageInfo.d.ts +7 -0
- package/lib/display/Image/ImageInfo.js +23 -0
- package/lib/display/InputIcon.d.ts +13 -0
- package/lib/display/InputIcon.js +33 -0
- package/lib/display/NavItemImage/NavItemImage.d.ts +9 -0
- package/lib/display/NavItemImage/NavItemImage.js +35 -0
- package/lib/display/OutputList.d.ts +12 -0
- package/lib/display/OutputList.js +46 -0
- package/lib/display/OutputListItem.d.ts +10 -0
- package/lib/display/OutputListItem.js +58 -0
- package/lib/display/OutputText.d.ts +15 -0
- package/lib/display/OutputText.js +170 -0
- package/lib/display/Pagination/Pagination.d.ts +2 -0
- package/lib/display/Pagination/Pagination.js +273 -0
- package/lib/display/Pagination/PaginationButton.d.ts +13 -0
- package/lib/display/Pagination/PaginationButton.js +53 -0
- package/lib/display/Pagination/types.d.ts +62 -0
- package/lib/display/Pagination/types.js +36 -0
- package/lib/display/PopoverConfirm/PopoverConfirm.d.ts +30 -0
- package/lib/display/PopoverConfirm/PopoverConfirm.js +87 -0
- package/lib/display/ProgressControl/ProgressControl.d.ts +17 -0
- package/lib/display/ProgressControl/ProgressControl.js +68 -0
- package/lib/display/Slider.d.ts +23 -0
- package/lib/display/Slider.js +107 -0
- package/lib/display/Status.d.ts +9 -0
- package/lib/display/Status.js +40 -0
- package/lib/display/StatusText/StatusText.d.ts +10 -0
- package/lib/display/StatusText/StatusText.js +35 -0
- package/lib/display/StatusText/types.d.ts +18 -0
- package/lib/display/StatusText/types.js +19 -0
- package/lib/display/StatusText/utils.d.ts +3 -0
- package/lib/display/StatusText/utils.js +29 -0
- package/lib/display/Text.d.ts +12 -0
- package/lib/display/Text.js +38 -0
- package/lib/display/Typography/Base.d.ts +32 -0
- package/lib/display/Typography/Base.js +259 -0
- package/lib/display/Typography/ContentEditable.d.ts +15 -0
- package/lib/display/Typography/ContentEditable.js +86 -0
- package/lib/display/Typography/Paragraph.d.ts +4 -0
- package/lib/display/Typography/Paragraph.js +23 -0
- package/lib/display/Typography/Text.d.ts +9 -0
- package/lib/display/Typography/Text.js +37 -0
- package/lib/display/Typography/Title.d.ts +7 -0
- package/lib/display/Typography/Title.js +28 -0
- package/lib/display/Typography/utils.d.ts +13 -0
- package/lib/display/Typography/utils.js +75 -0
- package/lib/helpers/HelpPopover.d.ts +9 -0
- package/lib/helpers/HelpPopover.js +46 -0
- package/lib/helpers/withRightPlaceholder.d.ts +9 -0
- package/lib/helpers/withRightPlaceholder.js +35 -0
- package/lib/inputs/Checkbox/Checkbox.d.ts +29 -0
- package/lib/inputs/Checkbox/Checkbox.js +117 -0
- package/lib/inputs/Checkbox/CheckboxControl.d.ts +7 -0
- package/lib/inputs/Checkbox/CheckboxControl.js +33 -0
- package/lib/inputs/CheckboxGroup/CheckboxGroup.d.ts +11 -0
- package/lib/inputs/CheckboxGroup/CheckboxGroup.js +84 -0
- package/lib/inputs/CodeEditor/CodeEditor.d.ts +21 -0
- package/lib/inputs/CodeEditor/CodeEditor.js +85 -0
- package/lib/inputs/DatePicker/Calendar.d.ts +65 -0
- package/lib/inputs/DatePicker/Calendar.js +556 -0
- package/lib/inputs/DatePicker/CalendarHeader.d.ts +26 -0
- package/lib/inputs/DatePicker/CalendarHeader.js +213 -0
- package/lib/inputs/DatePicker/Clock.d.ts +10 -0
- package/lib/inputs/DatePicker/Clock.js +45 -0
- package/lib/inputs/DatePicker/DateInput.d.ts +44 -0
- package/lib/inputs/DatePicker/DateInput.js +262 -0
- package/lib/inputs/DatePicker/DateInputGroup.d.ts +20 -0
- package/lib/inputs/DatePicker/DateInputGroup.js +77 -0
- package/lib/inputs/DatePicker/DateInterval.d.ts +24 -0
- package/lib/inputs/DatePicker/DateInterval.js +92 -0
- package/lib/inputs/DatePicker/DatePicker.d.ts +22 -0
- package/lib/inputs/DatePicker/DatePicker.js +36 -0
- package/lib/inputs/DatePicker/DateTimeControl.d.ts +98 -0
- package/lib/inputs/DatePicker/DateTimeControl.js +452 -0
- package/lib/inputs/DatePicker/Day.d.ts +14 -0
- package/lib/inputs/DatePicker/Day.js +50 -0
- package/lib/inputs/DatePicker/PopUp.d.ts +19 -0
- package/lib/inputs/DatePicker/PopUp.js +71 -0
- package/lib/inputs/DatePicker/types.d.ts +31 -0
- package/lib/inputs/DatePicker/types.js +25 -0
- package/lib/inputs/DatePicker/utils.d.ts +39 -0
- package/lib/inputs/DatePicker/utils.js +304 -0
- package/lib/inputs/Input.d.ts +51 -0
- package/lib/inputs/Input.js +200 -0
- package/lib/inputs/InputMask/InputMask.d.ts +23 -0
- package/lib/inputs/InputMask/InputMask.js +310 -0
- package/lib/inputs/InputMoney/InputMoney.d.ts +101 -0
- package/lib/inputs/InputMoney/InputMoney.js +258 -0
- package/lib/inputs/InputNumber/InputNumber.d.ts +29 -0
- package/lib/inputs/InputNumber/InputNumber.js +316 -0
- package/lib/inputs/InputNumber/index.d.ts +1 -0
- package/lib/inputs/InputNumber/index.js +14 -0
- package/lib/inputs/InputNumber/types.d.ts +18 -0
- package/lib/inputs/InputNumber/types.js +14 -0
- package/lib/inputs/InputNumber/utils.d.ts +6 -0
- package/lib/inputs/InputNumber/utils.js +86 -0
- package/lib/inputs/InputPassword/InputPassword.d.ts +10 -0
- package/lib/inputs/InputPassword/InputPassword.js +81 -0
- package/lib/inputs/InputSelect/InputAddon.d.ts +17 -0
- package/lib/inputs/InputSelect/InputAddon.js +31 -0
- package/lib/inputs/InputSelect/InputContent.d.ts +63 -0
- package/lib/inputs/InputSelect/InputContent.js +188 -0
- package/lib/inputs/InputSelect/InputSelect.d.ts +296 -0
- package/lib/inputs/InputSelect/InputSelect.js +795 -0
- package/lib/inputs/InputSelect/InputSelectGroup.d.ts +43 -0
- package/lib/inputs/InputSelect/InputSelectGroup.js +113 -0
- package/lib/inputs/InputSelect/PopupItems.d.ts +55 -0
- package/lib/inputs/InputSelect/PopupItems.js +357 -0
- package/lib/inputs/InputSelect/PopupList.d.ts +82 -0
- package/lib/inputs/InputSelect/PopupList.js +138 -0
- package/lib/inputs/InputSelect/SelectedItems.d.ts +17 -0
- package/lib/inputs/InputSelect/SelectedItems.js +125 -0
- package/lib/inputs/InputSelect/constants.d.ts +4 -0
- package/lib/inputs/InputSelect/constants.js +15 -0
- package/lib/inputs/InputSelect/types.d.ts +16 -0
- package/lib/inputs/InputSelect/types.js +16 -0
- package/lib/inputs/InputSelect/utils.d.ts +9 -0
- package/lib/inputs/InputSelect/utils.js +142 -0
- package/lib/inputs/InputSelectTree/InputSelectTree.d.ts +114 -0
- package/lib/inputs/InputSelectTree/InputSelectTree.js +466 -0
- package/lib/inputs/InputSelectTree/TreeSelectNode.d.ts +36 -0
- package/lib/inputs/InputSelectTree/TreeSelectNode.js +63 -0
- package/lib/inputs/InputSelectTree/allProps.d.ts +123 -0
- package/lib/inputs/InputSelectTree/allProps.js +48 -0
- package/lib/inputs/InputSelectTree/until.d.ts +4 -0
- package/lib/inputs/InputSelectTree/until.js +83 -0
- package/lib/inputs/InputText.d.ts +41 -0
- package/lib/inputs/InputText.js +170 -0
- package/lib/inputs/NumberPicker/NumberPicker.d.ts +15 -0
- package/lib/inputs/NumberPicker/NumberPicker.js +129 -0
- package/lib/inputs/NumberPicker/NumberPickerButton.d.ts +8 -0
- package/lib/inputs/NumberPicker/NumberPickerButton.js +64 -0
- package/lib/inputs/NumberPicker/index.d.ts +1 -0
- package/lib/inputs/NumberPicker/index.js +14 -0
- package/lib/inputs/NumberPicker/utils.d.ts +2 -0
- package/lib/inputs/NumberPicker/utils.js +31 -0
- package/lib/inputs/RadioGroup/default/Group.d.ts +15 -0
- package/lib/inputs/RadioGroup/default/Group.js +63 -0
- package/lib/inputs/RadioGroup/default/Input.d.ts +17 -0
- package/lib/inputs/RadioGroup/default/Input.js +77 -0
- package/lib/inputs/RadioGroup/tabs/Group.d.ts +3 -0
- package/lib/inputs/RadioGroup/tabs/Group.js +24 -0
- package/lib/inputs/RadioGroup/tabs/Input.d.ts +3 -0
- package/lib/inputs/RadioGroup/tabs/Input.js +21 -0
- package/lib/inputs/Rating/Rating.d.ts +30 -0
- package/lib/inputs/Rating/Rating.js +212 -0
- package/lib/inputs/Select/Popup.d.ts +31 -0
- package/lib/inputs/Select/Popup.js +131 -0
- package/lib/inputs/Select/Select.d.ts +225 -0
- package/lib/inputs/Select/Select.js +705 -0
- package/lib/inputs/Select/SelectInput.d.ts +19 -0
- package/lib/inputs/Select/SelectInput.js +85 -0
- package/lib/inputs/Select/utils.d.ts +1 -0
- package/lib/inputs/Select/utils.js +28 -0
- package/lib/inputs/Switch/Switch.d.ts +11 -0
- package/lib/inputs/Switch/Switch.js +41 -0
- package/lib/inputs/TextArea.d.ts +12 -0
- package/lib/inputs/TextArea.js +54 -0
- package/lib/inputs/TextEditor/TextEditor.d.ts +11 -0
- package/lib/inputs/TextEditor/TextEditor.js +89 -0
- package/lib/inputs/TimePicker/TimePicker.d.ts +50 -0
- package/lib/inputs/TimePicker/TimePicker.js +398 -0
- package/lib/inputs/utils.d.ts +5 -0
- package/lib/inputs/utils.js +39 -0
- package/lib/layouts/ScrollContainer.d.ts +218 -0
- package/lib/layouts/ScrollContainer.js +128 -0
- package/lib/layouts/Spinner/CoverSpinner.d.ts +29 -0
- package/lib/layouts/Spinner/CoverSpinner.js +153 -0
- package/lib/layouts/Spinner/InlineSpinner.d.ts +5 -0
- package/lib/layouts/Spinner/InlineSpinner.js +27 -0
- package/lib/layouts/Spinner/Spinner.d.ts +31 -0
- package/lib/layouts/Spinner/Spinner.js +178 -0
- package/lib/styles/components/Calendar.scss +125 -0
- package/lib/styles/components/CalendarHeader.scss +75 -0
- package/lib/styles/components/DateInputGroup.scss +39 -0
- package/lib/styles/components/DatePicker.scss +18 -0
- package/lib/styles/components/Day.scss +29 -0
- package/lib/styles/components/OutputList.scss +14 -0
- package/lib/styles/components/OutputText.scss +50 -0
- package/lib/styles/controls/CodeEditor.scss +4 -0
- package/lib/styles/controls/InputNumber.scss +36 -0
- package/lib/styles/controls/InputPassword.scss +17 -0
- package/lib/styles/controls/InputText.scss +59 -0
- package/lib/styles/controls/NumberPicker.scss +36 -0
- package/lib/styles/controls/ProgressControl.scss +3 -0
- package/lib/styles/controls/Slider.scss +32 -0
- package/lib/styles/controls/Switch.scss +105 -0
- package/lib/styles/controls/TextEditor.scss +23 -0
- package/lib/styles/controls/TimePicker.scss +32 -0
- package/lib/styles/n2o/variables.scss +328 -0
- package/lib/styles/theme/variables.scss +81 -0
- package/lib/styles/variables.scss +10 -0
- package/lib/types.d.ts +25 -0
- package/lib/types.js +6 -0
- package/lib/utils/id.d.ts +3 -0
- package/lib/utils/id.js +46 -0
- package/lib/utils/isEmptyModel.d.ts +1 -0
- package/lib/utils/isEmptyModel.js +21 -0
- package/lib/utils/parseFormatter.js +153 -0
- 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 {};
|