@megafon/ui-core 9.2.2 → 9.4.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/dist/es/components/Badges/PromoBadge/PromoBadge.css +1 -1
- package/dist/es/components/Badges/PromoBadge/PromoBadge.d.ts +7 -0
- package/dist/es/components/Badges/PromoBadge/PromoBadge.js +44 -4
- package/dist/es/components/Chips/Chips/Chip.css +1 -1
- package/dist/es/components/Chips/Chips/Chip.d.ts +14 -3
- package/dist/es/components/Chips/Chips/Chip.js +31 -5
- package/dist/es/components/Chips/Chips/ChipBadge.css +1 -0
- package/dist/es/components/Chips/Chips/ChipBadge.d.ts +8 -0
- package/dist/es/components/Chips/Chips/ChipBadge.js +29 -0
- package/dist/es/components/Chips/Chips/Chips.css +1 -1
- package/dist/es/components/Chips/Chips/Chips.d.ts +6 -6
- package/dist/es/components/Chips/Chips/Chips.js +2 -2
- package/dist/es/components/Chips/Chips/components/ChipsDropdown/ChipsDropdown.css +1 -1
- package/dist/es/components/Chips/Chips/components/ChipsDropdown/ChipsDropdown.d.ts +6 -6
- package/dist/es/components/Chips/Chips/components/ChipsDropdown/ChipsDropdown.js +5 -9
- package/dist/es/components/Chips/Chips/components/ChipsScrollPanel/ChipsScrollPanel.css +1 -1
- package/dist/es/components/Chips/Chips/components/ChipsScrollPanel/ChipsScrollPanel.d.ts +6 -6
- package/dist/es/components/Chips/Chips/components/ChipsScrollPanel/ChipsScrollPanel.js +2 -2
- package/dist/es/components/Modal/Modal.css +1 -1
- package/dist/es/components/Modal/Modal.js +42 -10
- package/dist/es/components/Modal/_ModalMobile/ModalMobile.css +1 -1
- package/dist/es/components/Modal/_ModalMobile/ModalMobile.d.ts +1 -0
- package/dist/es/components/Modal/_ModalMobile/ModalMobile.js +9 -4
- package/dist/es/components/Modal/utils/usePreventScroll.d.ts +17 -0
- package/dist/es/components/Modal/utils/usePreventScroll.js +252 -0
- package/dist/es/components/Modal/utils/utils.d.ts +2 -1
- package/dist/es/components/Modal/utils/utils.js +8 -3
- package/dist/es/components/MultipleSelect/MultipleSelect.css +1 -0
- package/dist/es/components/MultipleSelect/MultipleSelect.d.ts +63 -0
- package/dist/es/components/MultipleSelect/MultipleSelect.js +235 -0
- package/dist/es/components/Tooltip/Tooltip.d.ts +6 -0
- package/dist/es/components/Tooltip/Tooltip.js +19 -6
- package/dist/es/hooks/useEvent.d.ts +3 -0
- package/dist/es/hooks/useEvent.js +11 -0
- package/dist/es/hooks/useLatest.d.ts +2 -0
- package/dist/es/hooks/useLatest.js +8 -0
- package/dist/es/hooks/useVisualViewport.d.ts +10 -0
- package/dist/es/hooks/useVisualViewport.js +55 -0
- package/dist/es/index.d.ts +3 -0
- package/dist/es/index.js +3 -0
- package/dist/es/utils/browser.d.ts +7 -0
- package/dist/es/utils/browser.js +30 -0
- package/dist/es/utils/is.d.ts +19 -0
- package/dist/es/utils/is.js +70 -0
- package/dist/lib/components/Badges/PromoBadge/PromoBadge.css +1 -1
- package/dist/lib/components/Badges/PromoBadge/PromoBadge.d.ts +7 -0
- package/dist/lib/components/Badges/PromoBadge/PromoBadge.js +45 -5
- package/dist/lib/components/Chips/Chips/Chip.css +1 -1
- package/dist/lib/components/Chips/Chips/Chip.d.ts +14 -3
- package/dist/lib/components/Chips/Chips/Chip.js +32 -6
- package/dist/lib/components/Chips/Chips/ChipBadge.css +1 -0
- package/dist/lib/components/Chips/Chips/ChipBadge.d.ts +8 -0
- package/dist/lib/components/Chips/Chips/ChipBadge.js +38 -0
- package/dist/lib/components/Chips/Chips/Chips.css +1 -1
- package/dist/lib/components/Chips/Chips/Chips.d.ts +6 -6
- package/dist/lib/components/Chips/Chips/Chips.js +2 -2
- package/dist/lib/components/Chips/Chips/components/ChipsDropdown/ChipsDropdown.css +1 -1
- package/dist/lib/components/Chips/Chips/components/ChipsDropdown/ChipsDropdown.d.ts +6 -6
- package/dist/lib/components/Chips/Chips/components/ChipsDropdown/ChipsDropdown.js +5 -9
- package/dist/lib/components/Chips/Chips/components/ChipsScrollPanel/ChipsScrollPanel.css +1 -1
- package/dist/lib/components/Chips/Chips/components/ChipsScrollPanel/ChipsScrollPanel.d.ts +6 -6
- package/dist/lib/components/Chips/Chips/components/ChipsScrollPanel/ChipsScrollPanel.js +2 -2
- package/dist/lib/components/Modal/Modal.css +1 -1
- package/dist/lib/components/Modal/Modal.js +41 -9
- package/dist/lib/components/Modal/_ModalMobile/ModalMobile.css +1 -1
- package/dist/lib/components/Modal/_ModalMobile/ModalMobile.d.ts +1 -0
- package/dist/lib/components/Modal/_ModalMobile/ModalMobile.js +9 -4
- package/dist/lib/components/Modal/utils/usePreventScroll.d.ts +17 -0
- package/dist/lib/components/Modal/utils/usePreventScroll.js +263 -0
- package/dist/lib/components/Modal/utils/utils.d.ts +2 -1
- package/dist/lib/components/Modal/utils/utils.js +9 -4
- package/dist/lib/components/MultipleSelect/MultipleSelect.css +1 -0
- package/dist/lib/components/MultipleSelect/MultipleSelect.d.ts +63 -0
- package/dist/lib/components/MultipleSelect/MultipleSelect.js +244 -0
- package/dist/lib/components/Tooltip/Tooltip.d.ts +6 -0
- package/dist/lib/components/Tooltip/Tooltip.js +19 -6
- package/dist/lib/hooks/useEvent.d.ts +3 -0
- package/dist/lib/hooks/useEvent.js +17 -0
- package/dist/lib/hooks/useLatest.d.ts +2 -0
- package/dist/lib/hooks/useLatest.js +14 -0
- package/dist/lib/hooks/useVisualViewport.d.ts +10 -0
- package/dist/lib/hooks/useVisualViewport.js +62 -0
- package/dist/lib/index.d.ts +3 -0
- package/dist/lib/index.js +21 -0
- package/dist/lib/utils/browser.d.ts +7 -0
- package/dist/lib/utils/browser.js +42 -0
- package/dist/lib/utils/is.d.ts +19 -0
- package/dist/lib/utils/is.js +92 -0
- package/package.json +2 -2
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports["default"] = void 0;
|
|
8
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
9
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
10
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
11
|
+
require("core-js/modules/es.array.concat.js");
|
|
12
|
+
require("core-js/modules/es.array.filter.js");
|
|
13
|
+
require("core-js/modules/es.array.includes.js");
|
|
14
|
+
require("core-js/modules/es.array.map.js");
|
|
15
|
+
require("core-js/modules/es.array.some.js");
|
|
16
|
+
require("core-js/modules/es.object.to-string.js");
|
|
17
|
+
require("core-js/modules/es.string.includes.js");
|
|
18
|
+
var React = _interopRequireWildcard(require("react"));
|
|
19
|
+
var _uiHelpers = require("@megafon/ui-helpers");
|
|
20
|
+
var _lodash = _interopRequireDefault(require("lodash.debounce"));
|
|
21
|
+
var _Dropdown = _interopRequireDefault(require("../Dropdown/Dropdown"));
|
|
22
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
23
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
|
|
24
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
25
|
+
var ClearIcon = function ClearIcon(props) {
|
|
26
|
+
return /*#__PURE__*/React.createElement("svg", (0, _extends2["default"])({
|
|
27
|
+
viewBox: "0 0 20 20"
|
|
28
|
+
}, props), /*#__PURE__*/React.createElement("path", {
|
|
29
|
+
d: "M5.762 5.76a1 1 0 011.415 0l2.795 2.79 2.788-2.785a1.001 1.001 0 011.415 1.414l-2.788 2.785 2.789 2.787a1 1 0 01-1.414 1.414l-2.79-2.787-2.796 2.794A1 1 0 115.76 12.76l2.796-2.794-2.795-2.792a1 1 0 010-1.414z"
|
|
30
|
+
}));
|
|
31
|
+
};
|
|
32
|
+
var ArrowIcon = function ArrowIcon(props) {
|
|
33
|
+
return /*#__PURE__*/React.createElement("svg", (0, _extends2["default"])({
|
|
34
|
+
viewBox: "0 0 32 32"
|
|
35
|
+
}, props), /*#__PURE__*/React.createElement("path", {
|
|
36
|
+
d: "M16.774 18.697a1.092 1.092 0 01-1.51 0l-3.953-3.82c-.682-.66-.165-1.877.794-1.877h7.798c.96 0 1.465 1.217.783 1.876l-3.912 3.82z"
|
|
37
|
+
}));
|
|
38
|
+
};
|
|
39
|
+
var isItemSelected = function isItemSelected(item, selectedItems) {
|
|
40
|
+
return selectedItems.some(function (selectedItem) {
|
|
41
|
+
return selectedItem.value === item.value;
|
|
42
|
+
});
|
|
43
|
+
};
|
|
44
|
+
var cn = (0, _uiHelpers.cnCreate)('mfui-9-multiple-select');
|
|
45
|
+
var MultipleSelect = function MultipleSelect(_ref) {
|
|
46
|
+
var items = _ref.items,
|
|
47
|
+
_ref$selectedItems = _ref.selectedItems,
|
|
48
|
+
selectedItems = _ref$selectedItems === void 0 ? [] : _ref$selectedItems,
|
|
49
|
+
placeholder = _ref.placeholder,
|
|
50
|
+
selectLimit = _ref.selectLimit,
|
|
51
|
+
maxLength = _ref.maxLength,
|
|
52
|
+
className = _ref.className,
|
|
53
|
+
_ref$notFoundText = _ref.notFoundText,
|
|
54
|
+
notFoundText = _ref$notFoundText === void 0 ? 'Ничего не нашлось' : _ref$notFoundText,
|
|
55
|
+
noticeText = _ref.noticeText,
|
|
56
|
+
_ref$disabled = _ref.disabled,
|
|
57
|
+
disabled = _ref$disabled === void 0 ? false : _ref$disabled,
|
|
58
|
+
customSearchFilter = _ref.customSearchFilter,
|
|
59
|
+
onSelect = _ref.onSelect,
|
|
60
|
+
onBlur = _ref.onBlur,
|
|
61
|
+
onFocus = _ref.onFocus,
|
|
62
|
+
onSearch = _ref.onSearch,
|
|
63
|
+
searchDelay = _ref.searchDelay,
|
|
64
|
+
isControlled = _ref.isControlled,
|
|
65
|
+
_ref$classes = _ref.classes,
|
|
66
|
+
classes = _ref$classes === void 0 ? {} : _ref$classes,
|
|
67
|
+
dataAttrs = _ref.dataAttrs;
|
|
68
|
+
var _React$useState = React.useState(false),
|
|
69
|
+
_React$useState2 = (0, _slicedToArray2["default"])(_React$useState, 2),
|
|
70
|
+
isDropdownOpen = _React$useState2[0],
|
|
71
|
+
setIsDropdownOpen = _React$useState2[1];
|
|
72
|
+
var _React$useState3 = React.useState(selectedItems),
|
|
73
|
+
_React$useState4 = (0, _slicedToArray2["default"])(_React$useState3, 2),
|
|
74
|
+
innerSelectedItems = _React$useState4[0],
|
|
75
|
+
setInnerSelectedItems = _React$useState4[1];
|
|
76
|
+
var _React$useState5 = React.useState(items),
|
|
77
|
+
_React$useState6 = (0, _slicedToArray2["default"])(_React$useState5, 2),
|
|
78
|
+
innerCurrentItems = _React$useState6[0],
|
|
79
|
+
setInnerCurrentItems = _React$useState6[1];
|
|
80
|
+
var _React$useState7 = React.useState(''),
|
|
81
|
+
_React$useState8 = (0, _slicedToArray2["default"])(_React$useState7, 2),
|
|
82
|
+
searchQuery = _React$useState8[0],
|
|
83
|
+
setSearchQuery = _React$useState8[1];
|
|
84
|
+
var containerRef = React.useRef(null);
|
|
85
|
+
var inputRef = React.useRef(null);
|
|
86
|
+
var currentItems = isControlled ? items : innerCurrentItems;
|
|
87
|
+
var currentSelectedItems = isControlled ? selectedItems : innerSelectedItems;
|
|
88
|
+
var isSelectActive = !selectLimit || currentSelectedItems.length < selectLimit;
|
|
89
|
+
var filteredItems = currentSelectedItems.length ? currentItems.filter(function (item) {
|
|
90
|
+
return !isItemSelected(item, currentSelectedItems);
|
|
91
|
+
}) : currentItems;
|
|
92
|
+
var showItemsList = isDropdownOpen && isSelectActive;
|
|
93
|
+
var debouncedSearch = React.useMemo(function () {
|
|
94
|
+
return (0, _lodash["default"])(function (query) {
|
|
95
|
+
return onSearch === null || onSearch === void 0 ? void 0 : onSearch(query);
|
|
96
|
+
}, searchDelay);
|
|
97
|
+
}, [onSearch, searchDelay]);
|
|
98
|
+
var filterItemsBySearch = React.useCallback(function (itemsToFilter, query) {
|
|
99
|
+
if (!query) {
|
|
100
|
+
return itemsToFilter;
|
|
101
|
+
}
|
|
102
|
+
if (customSearchFilter) {
|
|
103
|
+
return itemsToFilter.filter(function (item) {
|
|
104
|
+
return customSearchFilter(item, query);
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
return itemsToFilter.filter(function (item) {
|
|
108
|
+
return item.title.toLowerCase().includes(query.toLowerCase());
|
|
109
|
+
});
|
|
110
|
+
}, [customSearchFilter]);
|
|
111
|
+
var handleInputChange = React.useCallback(function (e) {
|
|
112
|
+
var _e$target$value = e.target.value,
|
|
113
|
+
inputValue = _e$target$value === void 0 ? '' : _e$target$value;
|
|
114
|
+
setSearchQuery(inputValue);
|
|
115
|
+
if (!isControlled) {
|
|
116
|
+
var matchesItems = filterItemsBySearch(items, inputValue);
|
|
117
|
+
setInnerCurrentItems(matchesItems);
|
|
118
|
+
}
|
|
119
|
+
if (!searchDelay) {
|
|
120
|
+
onSearch === null || onSearch === void 0 ? void 0 : onSearch(inputValue);
|
|
121
|
+
} else {
|
|
122
|
+
debouncedSearch(inputValue);
|
|
123
|
+
}
|
|
124
|
+
}, [debouncedSearch, filterItemsBySearch, isControlled, items, onSearch, searchDelay]);
|
|
125
|
+
var handleSelectItem = React.useCallback(function (item) {
|
|
126
|
+
if (!isSelectActive) {
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
var newSelectedItems = [].concat((0, _toConsumableArray2["default"])(currentSelectedItems), [item]);
|
|
130
|
+
!isControlled && setInnerSelectedItems(newSelectedItems);
|
|
131
|
+
setSearchQuery('');
|
|
132
|
+
inputRef.current && inputRef.current.focus();
|
|
133
|
+
onSelect === null || onSelect === void 0 ? void 0 : onSelect(newSelectedItems);
|
|
134
|
+
}, [isControlled, isSelectActive, onSelect, currentSelectedItems]);
|
|
135
|
+
var handleSelect = function handleSelect(index) {
|
|
136
|
+
return function () {
|
|
137
|
+
var targetItem = filteredItems[index];
|
|
138
|
+
handleSelectItem(targetItem);
|
|
139
|
+
};
|
|
140
|
+
};
|
|
141
|
+
var handleFocus = React.useCallback(function (e) {
|
|
142
|
+
setIsDropdownOpen(true);
|
|
143
|
+
onFocus === null || onFocus === void 0 ? void 0 : onFocus(e);
|
|
144
|
+
}, [onFocus]);
|
|
145
|
+
var handleBlur = React.useCallback(function (e) {
|
|
146
|
+
onBlur === null || onBlur === void 0 ? void 0 : onBlur(e);
|
|
147
|
+
}, [onBlur]);
|
|
148
|
+
var removeSelectedItem = React.useCallback(function (itemToRemove) {
|
|
149
|
+
return function () {
|
|
150
|
+
var newSelectedItems = currentSelectedItems.filter(function (item) {
|
|
151
|
+
return item.value !== itemToRemove.value;
|
|
152
|
+
});
|
|
153
|
+
!isControlled && setInnerSelectedItems(newSelectedItems);
|
|
154
|
+
setIsDropdownOpen(true);
|
|
155
|
+
onSelect === null || onSelect === void 0 ? void 0 : onSelect(newSelectedItems);
|
|
156
|
+
};
|
|
157
|
+
}, [currentSelectedItems, isControlled, onSelect]);
|
|
158
|
+
var handleToggleDropdown = React.useCallback(function () {
|
|
159
|
+
setIsDropdownOpen(function (prev) {
|
|
160
|
+
return !prev;
|
|
161
|
+
});
|
|
162
|
+
}, []);
|
|
163
|
+
var handleDropdownClose = function handleDropdownClose() {
|
|
164
|
+
setIsDropdownOpen(false);
|
|
165
|
+
};
|
|
166
|
+
React.useEffect(function () {
|
|
167
|
+
if (!searchQuery && !isControlled) {
|
|
168
|
+
setInnerCurrentItems(items);
|
|
169
|
+
}
|
|
170
|
+
}, [isControlled, items, searchQuery]);
|
|
171
|
+
var renderList = function renderList() {
|
|
172
|
+
return /*#__PURE__*/React.createElement(_Dropdown["default"], {
|
|
173
|
+
isOpen: showItemsList,
|
|
174
|
+
targetRef: containerRef,
|
|
175
|
+
items: filteredItems,
|
|
176
|
+
emptyText: notFoundText,
|
|
177
|
+
onItemClick: handleSelect,
|
|
178
|
+
onClose: handleDropdownClose,
|
|
179
|
+
classes: {
|
|
180
|
+
list: classes === null || classes === void 0 ? void 0 : classes.list,
|
|
181
|
+
item: classes === null || classes === void 0 ? void 0 : classes.listItem
|
|
182
|
+
},
|
|
183
|
+
dataAttrs: {
|
|
184
|
+
list: dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.list,
|
|
185
|
+
item: dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.listItem
|
|
186
|
+
}
|
|
187
|
+
});
|
|
188
|
+
};
|
|
189
|
+
var renderItemTag = function renderItemTag(item, i) {
|
|
190
|
+
return /*#__PURE__*/React.createElement("div", (0, _extends2["default"])({
|
|
191
|
+
key: item.value,
|
|
192
|
+
className: cn('tag', [classes === null || classes === void 0 ? void 0 : classes.tag])
|
|
193
|
+
}, (0, _uiHelpers.filterDataAttrs)(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.tag, i + 1)), /*#__PURE__*/React.createElement("span", {
|
|
194
|
+
className: cn('tag-title')
|
|
195
|
+
}, item.title), /*#__PURE__*/React.createElement("button", (0, _extends2["default"])({
|
|
196
|
+
className: cn('tag-button', [classes === null || classes === void 0 ? void 0 : classes.tagButton])
|
|
197
|
+
}, (0, _uiHelpers.filterDataAttrs)(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.tagButton, i + 1), {
|
|
198
|
+
type: "button",
|
|
199
|
+
disabled: disabled,
|
|
200
|
+
onClick: removeSelectedItem(item)
|
|
201
|
+
}), /*#__PURE__*/React.createElement(ClearIcon, {
|
|
202
|
+
className: cn('tag-button-icon')
|
|
203
|
+
})));
|
|
204
|
+
};
|
|
205
|
+
return /*#__PURE__*/React.createElement("div", (0, _extends2["default"])({
|
|
206
|
+
className: cn({
|
|
207
|
+
open: showItemsList,
|
|
208
|
+
disabled: disabled
|
|
209
|
+
}, [className, classes.root])
|
|
210
|
+
}, (0, _uiHelpers.filterDataAttrs)(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.root)), /*#__PURE__*/React.createElement("div", {
|
|
211
|
+
className: cn('control', {
|
|
212
|
+
active: isSelectActive
|
|
213
|
+
}),
|
|
214
|
+
ref: containerRef
|
|
215
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
216
|
+
className: cn('input-container')
|
|
217
|
+
}, currentSelectedItems === null || currentSelectedItems === void 0 ? void 0 : currentSelectedItems.map(function (item, i) {
|
|
218
|
+
return renderItemTag(item, i);
|
|
219
|
+
}), isSelectActive && /*#__PURE__*/React.createElement("input", (0, _extends2["default"])({
|
|
220
|
+
className: cn('input', [classes.input])
|
|
221
|
+
}, (0, _uiHelpers.filterDataAttrs)(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.input), {
|
|
222
|
+
id: "search",
|
|
223
|
+
placeholder: placeholder,
|
|
224
|
+
value: searchQuery,
|
|
225
|
+
maxLength: maxLength,
|
|
226
|
+
disabled: disabled,
|
|
227
|
+
onChange: handleInputChange,
|
|
228
|
+
onFocus: handleFocus,
|
|
229
|
+
onBlur: handleBlur,
|
|
230
|
+
type: "text",
|
|
231
|
+
autoComplete: "off",
|
|
232
|
+
ref: inputRef
|
|
233
|
+
}))), /*#__PURE__*/React.createElement("button", {
|
|
234
|
+
className: cn('arrow-button'),
|
|
235
|
+
type: "button",
|
|
236
|
+
disabled: !isSelectActive || disabled,
|
|
237
|
+
onClick: handleToggleDropdown
|
|
238
|
+
}, /*#__PURE__*/React.createElement(ArrowIcon, {
|
|
239
|
+
className: cn('arrow-icon')
|
|
240
|
+
})), renderList()), noticeText && /*#__PURE__*/React.createElement("div", {
|
|
241
|
+
className: cn('notice-text')
|
|
242
|
+
}, noticeText));
|
|
243
|
+
};
|
|
244
|
+
var _default = exports["default"] = MultipleSelect;
|
|
@@ -58,6 +58,12 @@ export interface ITooltipProps {
|
|
|
58
58
|
title?: string;
|
|
59
59
|
/** Текст кнопки */
|
|
60
60
|
buttonText?: string;
|
|
61
|
+
/** Ссылка кнопки */
|
|
62
|
+
buttonHref?: string;
|
|
63
|
+
/** Target - свойство тега <a> кнопки */
|
|
64
|
+
buttonTarget?: '_self' | '_blank' | '_parent' | '_top';
|
|
65
|
+
/** Rel - атрибут тега <a> кнопки */
|
|
66
|
+
buttonRel?: string;
|
|
61
67
|
/** Текст */
|
|
62
68
|
text?: string;
|
|
63
69
|
/** Наличие кнопки-крестика "Закрыть" */
|
|
@@ -107,6 +107,10 @@ var Tooltip = function Tooltip(_ref) {
|
|
|
107
107
|
_ref$size = _ref.size,
|
|
108
108
|
size = _ref$size === void 0 ? 'big' : _ref$size,
|
|
109
109
|
buttonText = _ref.buttonText,
|
|
110
|
+
buttonHref = _ref.buttonHref,
|
|
111
|
+
_ref$buttonTarget = _ref.buttonTarget,
|
|
112
|
+
buttonTarget = _ref$buttonTarget === void 0 ? '_self' : _ref$buttonTarget,
|
|
113
|
+
buttonRel = _ref.buttonRel,
|
|
110
114
|
hasCloseButton = _ref.hasCloseButton,
|
|
111
115
|
_ref$colorTheme = _ref.colorTheme,
|
|
112
116
|
theme = _ref$colorTheme === void 0 ? 'white' : _ref$colorTheme,
|
|
@@ -325,25 +329,34 @@ var Tooltip = function Tooltip(_ref) {
|
|
|
325
329
|
var renderedFullContent = useMemo(function () {
|
|
326
330
|
var hasButtonMargin = !!title || !!text;
|
|
327
331
|
var hasChildrenMargin = hasButtonMargin || !!buttonText;
|
|
332
|
+
var isLink = !!buttonHref;
|
|
333
|
+
var ButtonElementType = isLink ? 'a' : 'button';
|
|
334
|
+
var linkProps = {
|
|
335
|
+
href: buttonHref,
|
|
336
|
+
target: buttonTarget,
|
|
337
|
+
rel: buttonRel,
|
|
338
|
+
onClick: onClick
|
|
339
|
+
};
|
|
340
|
+
var buttonProps = {
|
|
341
|
+
onClick: onClick,
|
|
342
|
+
type: 'button'
|
|
343
|
+
};
|
|
328
344
|
return /*#__PURE__*/React.createElement(React.Fragment, null, !!title && /*#__PURE__*/React.createElement(_Header["default"], {
|
|
329
345
|
className: cn('title'),
|
|
330
346
|
as: "h5",
|
|
331
347
|
space: "tight"
|
|
332
|
-
}, title), !!text && renderedText, !!buttonText && /*#__PURE__*/React.createElement(
|
|
333
|
-
type: "button",
|
|
348
|
+
}, title), !!text && renderedText, !!buttonText && /*#__PURE__*/React.createElement(ButtonElementType, (0, _extends2["default"])({
|
|
334
349
|
className: cn('button', {
|
|
335
350
|
margin: hasButtonMargin
|
|
336
351
|
}, [buttonClassName])
|
|
337
|
-
}, (0, _uiHelpers.filterDataAttrs)(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.button), {
|
|
338
|
-
onClick: onClick
|
|
339
|
-
}), buttonText, /*#__PURE__*/React.createElement(RightArrow, {
|
|
352
|
+
}, (0, _uiHelpers.filterDataAttrs)(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.button), isLink ? linkProps : buttonProps), buttonText, /*#__PURE__*/React.createElement(RightArrow, {
|
|
340
353
|
className: cn('button-arrow')
|
|
341
354
|
})), !!children && /*#__PURE__*/React.createElement("div", {
|
|
342
355
|
className: cn('addititonal-content', {
|
|
343
356
|
margin: hasChildrenMargin
|
|
344
357
|
})
|
|
345
358
|
}, children));
|
|
346
|
-
}, [title, text, buttonText,
|
|
359
|
+
}, [title, text, buttonText, buttonHref, buttonTarget, buttonRel, onClick, renderedText, buttonClassName, dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.button, children]);
|
|
347
360
|
var template = /*#__PURE__*/React.createElement("div", (0, _extends2["default"])({}, (0, _uiHelpers.filterDataAttrs)(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.root), {
|
|
348
361
|
className: cn({
|
|
349
362
|
theme: theme,
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.useEvent = void 0;
|
|
7
|
+
var _react = require("react");
|
|
8
|
+
var _useLatest = require("./useLatest");
|
|
9
|
+
var useEvent = exports.useEvent = function useEvent(fn) {
|
|
10
|
+
var ref = (0, _useLatest.useLatest)(fn);
|
|
11
|
+
return (0, _react.useMemo)(function () {
|
|
12
|
+
return function () {
|
|
13
|
+
var current = ref.current;
|
|
14
|
+
return current.apply(void 0, arguments);
|
|
15
|
+
};
|
|
16
|
+
}, [ref]);
|
|
17
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.useLatest = void 0;
|
|
7
|
+
var _react = require("react");
|
|
8
|
+
var useLatest = exports.useLatest = function useLatest(value) {
|
|
9
|
+
var valueRef = (0, _react.useRef)(value);
|
|
10
|
+
(0, _react.useInsertionEffect)(function () {
|
|
11
|
+
valueRef.current = value;
|
|
12
|
+
}, [value]);
|
|
13
|
+
return valueRef;
|
|
14
|
+
};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
type Metrics = {
|
|
2
|
+
keyboardOffset: number;
|
|
3
|
+
viewportHeight: number;
|
|
4
|
+
isKeyboardOpen: boolean;
|
|
5
|
+
};
|
|
6
|
+
declare function useVisualViewport({ enabled, onChange, }: {
|
|
7
|
+
enabled?: boolean;
|
|
8
|
+
onChange: (metrics: Metrics) => void;
|
|
9
|
+
}): Metrics;
|
|
10
|
+
export default useVisualViewport;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports["default"] = void 0;
|
|
7
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
8
|
+
var _react = require("react");
|
|
9
|
+
var _useEvent = require("./useEvent");
|
|
10
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
11
|
+
var getDefaultMetrics = function getDefaultMetrics() {
|
|
12
|
+
return {
|
|
13
|
+
keyboardOffset: 0,
|
|
14
|
+
viewportHeight: window.innerHeight,
|
|
15
|
+
isKeyboardOpen: false
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
var getMetrics = function getMetrics() {
|
|
19
|
+
var viewport = window.visualViewport;
|
|
20
|
+
if (!viewport) {
|
|
21
|
+
return getDefaultMetrics();
|
|
22
|
+
}
|
|
23
|
+
var keyboardOffset = Math.max(0, window.innerHeight - viewport.height - viewport.offsetTop);
|
|
24
|
+
var isKeyboardOpen = viewport.height < window.innerHeight && window.innerHeight - viewport.height > 150;
|
|
25
|
+
return {
|
|
26
|
+
keyboardOffset: keyboardOffset,
|
|
27
|
+
viewportHeight: viewport.height,
|
|
28
|
+
isKeyboardOpen: isKeyboardOpen
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
function useVisualViewport(_ref) {
|
|
32
|
+
var _ref$enabled = _ref.enabled,
|
|
33
|
+
enabled = _ref$enabled === void 0 ? true : _ref$enabled,
|
|
34
|
+
onChange = _ref.onChange;
|
|
35
|
+
var _useState = (0, _react.useState)(function () {
|
|
36
|
+
return getMetrics();
|
|
37
|
+
}),
|
|
38
|
+
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
39
|
+
metrics = _useState2[0],
|
|
40
|
+
setMetrics = _useState2[1];
|
|
41
|
+
var onChangeMetrics = (0, _useEvent.useEvent)(onChange);
|
|
42
|
+
(0, _react.useEffect)(function () {
|
|
43
|
+
if (!enabled) {
|
|
44
|
+
return undefined;
|
|
45
|
+
}
|
|
46
|
+
var updateMetrics = function updateMetrics() {
|
|
47
|
+
var currentMetrics = getMetrics();
|
|
48
|
+
setMetrics(currentMetrics);
|
|
49
|
+
onChangeMetrics(currentMetrics);
|
|
50
|
+
};
|
|
51
|
+
updateMetrics();
|
|
52
|
+
var viewport = window.visualViewport;
|
|
53
|
+
viewport === null || viewport === void 0 ? void 0 : viewport.addEventListener('resize', updateMetrics);
|
|
54
|
+
viewport === null || viewport === void 0 ? void 0 : viewport.addEventListener('scroll', updateMetrics);
|
|
55
|
+
return function () {
|
|
56
|
+
viewport === null || viewport === void 0 ? void 0 : viewport.removeEventListener('resize', updateMetrics);
|
|
57
|
+
viewport === null || viewport === void 0 ? void 0 : viewport.removeEventListener('scroll', updateMetrics);
|
|
58
|
+
};
|
|
59
|
+
}, [enabled, onChangeMetrics]);
|
|
60
|
+
return metrics;
|
|
61
|
+
}
|
|
62
|
+
var _default = exports["default"] = useVisualViewport;
|
package/dist/lib/index.d.ts
CHANGED
|
@@ -10,6 +10,7 @@ export { default as Carousel } from './components/Carousel/Carousel';
|
|
|
10
10
|
export { default as Checkbox } from './components/Checkbox/Checkbox';
|
|
11
11
|
export { default as checkBreakpointsPropTypes } from './components/Carousel/checkBreakpointsPropTypes';
|
|
12
12
|
export { default as Chip } from './components/Chips/Chips/Chip';
|
|
13
|
+
export { default as ChipBadge } from './components/Chips/Chips/ChipBadge';
|
|
13
14
|
export { default as Chips } from './components/Chips/Chips/Chips';
|
|
14
15
|
export { default as ChipsDropdown } from './components/Chips/Chips/components/ChipsDropdown/ChipsDropdown';
|
|
15
16
|
export { default as ChipsScrollPanel } from './components/Chips/Chips/components/ChipsScrollPanel/ChipsScrollPanel';
|
|
@@ -40,6 +41,7 @@ export { default as ModalContent } from './components/Modal/_ModalContent/ModalC
|
|
|
40
41
|
export { default as ModalDesktop } from './components/Modal/_ModalDesktop/ModalDesktop';
|
|
41
42
|
export { default as ModalMobile } from './components/Modal/_ModalMobile/ModalMobile';
|
|
42
43
|
export { default as Month } from './components/Calendar/components/_Month/Month';
|
|
44
|
+
export { default as MultipleSelect } from './components/MultipleSelect/MultipleSelect';
|
|
43
45
|
export { default as NavArrow } from './components/NavArrow/NavArrow';
|
|
44
46
|
export { default as Notification } from './components/Notification/Notification';
|
|
45
47
|
export { default as NotificationBadge } from './components/Badges/NotificationBadge/NotificationBadge';
|
|
@@ -87,5 +89,6 @@ export { default as UploadFileItemIcon } from './components/UploadForm/UploadFil
|
|
|
87
89
|
export { default as useDragAndDrop } from './components/UploadForm/UploadField/components/useDragAndDrop';
|
|
88
90
|
export { default as useGradient } from './components/Carousel/useGradient';
|
|
89
91
|
export { default as usePagination } from './components/Pagination/usePagination';
|
|
92
|
+
export { default as usePreventScroll } from './components/Modal/utils/usePreventScroll';
|
|
90
93
|
export { default as utils } from './components/Modal/utils/utils';
|
|
91
94
|
export { default as ValueField } from './components/ValueField/ValueField';
|
package/dist/lib/index.js
CHANGED
|
@@ -69,6 +69,12 @@ Object.defineProperty(exports, "Chip", {
|
|
|
69
69
|
return _Chip["default"];
|
|
70
70
|
}
|
|
71
71
|
});
|
|
72
|
+
Object.defineProperty(exports, "ChipBadge", {
|
|
73
|
+
enumerable: true,
|
|
74
|
+
get: function get() {
|
|
75
|
+
return _ChipBadge["default"];
|
|
76
|
+
}
|
|
77
|
+
});
|
|
72
78
|
Object.defineProperty(exports, "ChipSuggest", {
|
|
73
79
|
enumerable: true,
|
|
74
80
|
get: function get() {
|
|
@@ -243,6 +249,12 @@ Object.defineProperty(exports, "Month", {
|
|
|
243
249
|
return _Month["default"];
|
|
244
250
|
}
|
|
245
251
|
});
|
|
252
|
+
Object.defineProperty(exports, "MultipleSelect", {
|
|
253
|
+
enumerable: true,
|
|
254
|
+
get: function get() {
|
|
255
|
+
return _MultipleSelect["default"];
|
|
256
|
+
}
|
|
257
|
+
});
|
|
246
258
|
Object.defineProperty(exports, "NavArrow", {
|
|
247
259
|
enumerable: true,
|
|
248
260
|
get: function get() {
|
|
@@ -543,6 +555,12 @@ Object.defineProperty(exports, "usePagination", {
|
|
|
543
555
|
return _usePagination["default"];
|
|
544
556
|
}
|
|
545
557
|
});
|
|
558
|
+
Object.defineProperty(exports, "usePreventScroll", {
|
|
559
|
+
enumerable: true,
|
|
560
|
+
get: function get() {
|
|
561
|
+
return _usePreventScroll["default"];
|
|
562
|
+
}
|
|
563
|
+
});
|
|
546
564
|
Object.defineProperty(exports, "utils", {
|
|
547
565
|
enumerable: true,
|
|
548
566
|
get: function get() {
|
|
@@ -561,6 +579,7 @@ var _Carousel = _interopRequireDefault(require("./components/Carousel/Carousel")
|
|
|
561
579
|
var _Checkbox = _interopRequireDefault(require("./components/Checkbox/Checkbox"));
|
|
562
580
|
var _checkBreakpointsPropTypes = _interopRequireDefault(require("./components/Carousel/checkBreakpointsPropTypes"));
|
|
563
581
|
var _Chip = _interopRequireDefault(require("./components/Chips/Chips/Chip"));
|
|
582
|
+
var _ChipBadge = _interopRequireDefault(require("./components/Chips/Chips/ChipBadge"));
|
|
564
583
|
var _Chips = _interopRequireDefault(require("./components/Chips/Chips/Chips"));
|
|
565
584
|
var _ChipsDropdown = _interopRequireDefault(require("./components/Chips/Chips/components/ChipsDropdown/ChipsDropdown"));
|
|
566
585
|
var _ChipsScrollPanel = _interopRequireDefault(require("./components/Chips/Chips/components/ChipsScrollPanel/ChipsScrollPanel"));
|
|
@@ -591,6 +610,7 @@ var _ModalContent = _interopRequireDefault(require("./components/Modal/_ModalCon
|
|
|
591
610
|
var _ModalDesktop = _interopRequireDefault(require("./components/Modal/_ModalDesktop/ModalDesktop"));
|
|
592
611
|
var _ModalMobile = _interopRequireDefault(require("./components/Modal/_ModalMobile/ModalMobile"));
|
|
593
612
|
var _Month = _interopRequireDefault(require("./components/Calendar/components/_Month/Month"));
|
|
613
|
+
var _MultipleSelect = _interopRequireDefault(require("./components/MultipleSelect/MultipleSelect"));
|
|
594
614
|
var _NavArrow = _interopRequireDefault(require("./components/NavArrow/NavArrow"));
|
|
595
615
|
var _Notification = _interopRequireDefault(require("./components/Notification/Notification"));
|
|
596
616
|
var _NotificationBadge = _interopRequireDefault(require("./components/Badges/NotificationBadge/NotificationBadge"));
|
|
@@ -638,6 +658,7 @@ var _UploadFileItemIcon = _interopRequireDefault(require("./components/UploadFor
|
|
|
638
658
|
var _useDragAndDrop = _interopRequireDefault(require("./components/UploadForm/UploadField/components/useDragAndDrop"));
|
|
639
659
|
var _useGradient = _interopRequireDefault(require("./components/Carousel/useGradient"));
|
|
640
660
|
var _usePagination = _interopRequireDefault(require("./components/Pagination/usePagination"));
|
|
661
|
+
var _usePreventScroll = _interopRequireDefault(require("./components/Modal/utils/usePreventScroll"));
|
|
641
662
|
var _utils = _interopRequireDefault(require("./components/Modal/utils/utils"));
|
|
642
663
|
var _ValueField = _interopRequireDefault(require("./components/ValueField/ValueField"));
|
|
643
664
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare function isMobileFirefox(): boolean | undefined;
|
|
2
|
+
export declare function testPlatform(re: RegExp): boolean | undefined;
|
|
3
|
+
export declare function isMac(): boolean | undefined;
|
|
4
|
+
export declare function isIPhone(): boolean | undefined;
|
|
5
|
+
export declare function isSafari(): boolean | undefined;
|
|
6
|
+
export declare function isIPad(): boolean | undefined;
|
|
7
|
+
export declare function isIOS(): boolean | undefined;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.isIOS = isIOS;
|
|
7
|
+
exports.isIPad = isIPad;
|
|
8
|
+
exports.isIPhone = isIPhone;
|
|
9
|
+
exports.isMac = isMac;
|
|
10
|
+
exports.isMobileFirefox = isMobileFirefox;
|
|
11
|
+
exports.isSafari = isSafari;
|
|
12
|
+
exports.testPlatform = testPlatform;
|
|
13
|
+
require("core-js/modules/es.regexp.exec.js");
|
|
14
|
+
require("core-js/modules/es.regexp.test.js");
|
|
15
|
+
function isMobileFirefox() {
|
|
16
|
+
var _navigator = navigator,
|
|
17
|
+
userAgent = _navigator.userAgent;
|
|
18
|
+
return typeof window !== 'undefined' && (/Firefox/.test(userAgent) && /Mobile/.test(userAgent) ||
|
|
19
|
+
// Android Firefox
|
|
20
|
+
/FxiOS/.test(userAgent)) // iOS Firefox
|
|
21
|
+
;
|
|
22
|
+
}
|
|
23
|
+
function testPlatform(re) {
|
|
24
|
+
return typeof window !== 'undefined' && window.navigator != null ? re.test(window.navigator.platform) : undefined;
|
|
25
|
+
}
|
|
26
|
+
function isMac() {
|
|
27
|
+
return testPlatform(/^Mac/);
|
|
28
|
+
}
|
|
29
|
+
function isIPhone() {
|
|
30
|
+
return testPlatform(/^iPhone/);
|
|
31
|
+
}
|
|
32
|
+
function isSafari() {
|
|
33
|
+
return /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
|
|
34
|
+
}
|
|
35
|
+
function isIPad() {
|
|
36
|
+
return testPlatform(/^iPad/) ||
|
|
37
|
+
// iPadOS 13 lies and says it's a Mac, but we can distinguish by detecting touch support.
|
|
38
|
+
isMac() && navigator.maxTouchPoints > 1;
|
|
39
|
+
}
|
|
40
|
+
function isIOS() {
|
|
41
|
+
return isIPhone() || isIPad();
|
|
42
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export declare function isNumber(value: unknown): value is number;
|
|
2
|
+
export declare function isInteger(v: unknown): boolean;
|
|
3
|
+
export declare function isArray<T>(value: unknown): value is Array<T>;
|
|
4
|
+
export declare function isEmptyArray(value: unknown): boolean;
|
|
5
|
+
type AnyFunction = (...args: unknown[]) => unknown;
|
|
6
|
+
export declare function isFunction<T extends AnyFunction = AnyFunction>(value: unknown): value is T;
|
|
7
|
+
export declare function isDefined(value: unknown): boolean;
|
|
8
|
+
export declare function isUndefined(value: unknown): value is undefined;
|
|
9
|
+
export declare function isObject(value: unknown): value is Record<string, unknown>;
|
|
10
|
+
export declare function isEmptyObject(value: unknown): boolean;
|
|
11
|
+
export declare function isNull(value: unknown): value is null;
|
|
12
|
+
export declare function isString(value: unknown): value is string;
|
|
13
|
+
export declare function isCssVar(value: string): boolean;
|
|
14
|
+
export declare function isEmpty(value: unknown): boolean;
|
|
15
|
+
export declare const isBoolean: (value: unknown) => value is boolean;
|
|
16
|
+
type Falsy = false | 0 | '' | null | undefined | bigint;
|
|
17
|
+
export declare const isTruthy: <T>(value: T) => value is Exclude<T, Falsy>;
|
|
18
|
+
export declare const isHTMLElement: (value: unknown) => value is HTMLElement;
|
|
19
|
+
export {};
|