@alfalab/core-components 44.5.1-beta.0 → 44.5.1-beta.1
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/bottom-sheet/cssm/index.module.css +1 -0
- package/bottom-sheet/esm/index.css +1 -0
- package/bottom-sheet/index.css +1 -0
- package/bottom-sheet/modern/index.css +1 -0
- package/confirmation/component.responsive.js +1 -1
- package/confirmation/components/base-confirmation/component.js +1 -1
- package/confirmation/components/base-confirmation/index.js +1 -1
- package/confirmation/components/index.js +1 -1
- package/confirmation/components/screens/index.js +1 -1
- package/confirmation/components/screens/initial/component.js +1 -1
- package/confirmation/components/screens/initial/countdown-section.js +1 -1
- package/confirmation/components/screens/initial/index.js +1 -1
- package/confirmation/desktop/component.desktop.js +1 -1
- package/confirmation/desktop/index.js +1 -1
- package/confirmation/esm/component.responsive.js +1 -1
- package/confirmation/esm/components/base-confirmation/component.js +1 -1
- package/confirmation/esm/components/base-confirmation/index.js +1 -1
- package/confirmation/esm/components/index.js +1 -1
- package/confirmation/esm/components/screens/index.js +1 -1
- package/confirmation/esm/components/screens/initial/component.js +1 -1
- package/confirmation/esm/components/screens/initial/countdown-section.js +1 -1
- package/confirmation/esm/components/screens/initial/index.js +1 -1
- package/confirmation/esm/desktop/component.desktop.js +1 -1
- package/confirmation/esm/desktop/index.js +1 -1
- package/confirmation/esm/index.js +1 -1
- package/confirmation/esm/mobile/component.mobile.js +1 -1
- package/confirmation/esm/mobile/index.js +1 -1
- package/confirmation/esm/shared/index.js +1 -1
- package/confirmation/index.js +1 -1
- package/confirmation/mobile/component.mobile.js +1 -1
- package/confirmation/mobile/index.js +1 -1
- package/confirmation/modern/component.responsive.js +1 -1
- package/confirmation/modern/components/base-confirmation/component.js +1 -1
- package/confirmation/modern/components/base-confirmation/index.js +1 -1
- package/confirmation/modern/components/index.js +1 -1
- package/confirmation/modern/components/screens/index.js +1 -1
- package/confirmation/modern/components/screens/initial/component.js +1 -1
- package/confirmation/modern/components/screens/initial/countdown-section.js +1 -1
- package/confirmation/modern/components/screens/initial/index.js +1 -1
- package/confirmation/modern/desktop/component.desktop.js +1 -1
- package/confirmation/modern/desktop/index.js +1 -1
- package/confirmation/modern/index.js +1 -1
- package/confirmation/modern/mobile/component.mobile.js +1 -1
- package/confirmation/modern/mobile/index.js +1 -1
- package/confirmation/modern/shared/index.js +1 -1
- package/confirmation/shared/index.js +1 -1
- package/modal/Component.responsive.js +2 -2
- package/modal/components/content/Component.js +1 -1
- package/modal/components/controls/Component.js +2 -2
- package/modal/components/controls/index.js +2 -2
- package/modal/components/footer/Component.js +2 -2
- package/modal/components/header/Component.js +1 -1
- package/modal/desktop/Component.desktop.js +2 -2
- package/modal/desktop/index.js +2 -2
- package/modal/esm/Component.responsive.js +2 -2
- package/modal/esm/components/content/Component.js +1 -1
- package/modal/esm/components/controls/Component.js +2 -2
- package/modal/esm/components/controls/index.js +2 -2
- package/modal/esm/components/footer/Component.js +2 -2
- package/modal/esm/components/header/Component.js +1 -1
- package/modal/esm/desktop/Component.desktop.js +2 -2
- package/modal/esm/desktop/index.js +2 -2
- package/modal/esm/index-a5b021bd.d.ts +1 -1
- package/modal/esm/index.js +2 -2
- package/modal/esm/mobile/Component.mobile.js +2 -2
- package/modal/esm/mobile/index.js +2 -2
- package/modal/esm/shared/index.js +1 -1
- package/modal/esm/utils.js +1 -1
- package/modal/index-a5b021bd.d.ts +1 -1
- package/modal/index.js +2 -2
- package/modal/mobile/Component.mobile.js +2 -2
- package/modal/mobile/index.js +2 -2
- package/modal/modern/Component.responsive.js +2 -2
- package/modal/modern/components/content/Component.js +1 -1
- package/modal/modern/components/controls/Component.js +2 -2
- package/modal/modern/components/controls/index.js +2 -2
- package/modal/modern/components/footer/Component.js +2 -2
- package/modal/modern/components/header/Component.js +1 -1
- package/modal/modern/desktop/Component.desktop.js +2 -2
- package/modal/modern/desktop/index.js +2 -2
- package/modal/modern/index-a5b021bd.d.ts +1 -1
- package/modal/modern/index.js +2 -2
- package/modal/modern/mobile/Component.mobile.js +2 -2
- package/modal/modern/mobile/index.js +2 -2
- package/modal/modern/shared/index.js +1 -1
- package/modal/modern/utils.js +1 -1
- package/modal/shared/index.js +1 -1
- package/modal/utils.js +1 -1
- package/package.json +2 -2
- package/pure-cell/component.js +1 -1
- package/pure-cell/components/content/component.js +1 -1
- package/pure-cell/components/content/index.d.ts +1 -1
- package/pure-cell/components/content/index.js +1 -1
- package/pure-cell/components/main/component.js +1 -1
- package/pure-cell/components/main/index.d.ts +1 -1
- package/pure-cell/components/main/index.js +1 -1
- package/pure-cell/components/text/component.js +1 -1
- package/pure-cell/components/text/index.d.ts +1 -1
- package/pure-cell/components/text/index.js +1 -1
- package/pure-cell/esm/component.js +1 -1
- package/pure-cell/esm/components/content/component.js +1 -1
- package/pure-cell/esm/components/content/index.d.ts +1 -1
- package/pure-cell/esm/components/content/index.js +1 -1
- package/pure-cell/esm/components/main/component.js +1 -1
- package/pure-cell/esm/components/main/index.d.ts +1 -1
- package/pure-cell/esm/components/main/index.js +1 -1
- package/pure-cell/esm/components/text/component.js +1 -1
- package/pure-cell/esm/components/text/index.d.ts +1 -1
- package/pure-cell/esm/components/text/index.js +1 -1
- package/pure-cell/esm/index.js +1 -1
- package/pure-cell/index.js +1 -1
- package/pure-cell/modern/component.js +1 -1
- package/pure-cell/modern/components/content/component.js +1 -1
- package/pure-cell/modern/components/content/index.d.ts +1 -1
- package/pure-cell/modern/components/content/index.js +1 -1
- package/pure-cell/modern/components/main/component.js +1 -1
- package/pure-cell/modern/components/main/index.d.ts +1 -1
- package/pure-cell/modern/components/main/index.js +1 -1
- package/pure-cell/modern/components/text/component.js +1 -1
- package/pure-cell/modern/components/text/index.d.ts +1 -1
- package/pure-cell/modern/components/text/index.js +1 -1
- package/pure-cell/modern/index.js +1 -1
- package/select/Component.responsive.js +1 -1
- package/select/components/base-select/Component.js +41 -37
- package/select/cssm/components/base-select/Component.js +41 -37
- package/select/esm/Component.responsive.js +1 -1
- package/select/esm/components/base-select/Component.js +43 -39
- package/select/esm/index.js +1 -1
- package/select/esm/mobile/Component.mobile.js +1 -1
- package/select/esm/mobile/Component.modal.mobile.js +1 -1
- package/select/esm/mobile/index.js +1 -1
- package/select/esm/presets/index.js +1 -1
- package/select/esm/presets/useSelectWithApply/hook.js +1 -1
- package/select/esm/presets/useSelectWithApply/options-list-with-apply/Component.js +1 -1
- package/select/esm/presets/useSelectWithApply/options-list-with-apply/index.d.ts +1 -1
- package/select/esm/presets/useSelectWithApply/options-list-with-apply/index.js +1 -1
- package/select/esm/shared/index.js +1 -1
- package/select/index.js +1 -1
- package/select/mobile/Component.mobile.js +1 -1
- package/select/mobile/Component.modal.mobile.js +1 -1
- package/select/mobile/index.js +1 -1
- package/select/modern/Component.responsive.js +1 -1
- package/select/modern/components/base-select/Component.js +41 -36
- package/select/modern/index.js +1 -1
- package/select/modern/mobile/Component.mobile.js +1 -1
- package/select/modern/mobile/Component.modal.mobile.js +1 -1
- package/select/modern/mobile/index.js +1 -1
- package/select/modern/presets/index.js +1 -1
- package/select/modern/presets/useSelectWithApply/hook.js +1 -1
- package/select/modern/presets/useSelectWithApply/options-list-with-apply/Component.js +1 -1
- package/select/modern/presets/useSelectWithApply/options-list-with-apply/index.d.ts +1 -1
- package/select/modern/presets/useSelectWithApply/options-list-with-apply/index.js +1 -1
- package/select/modern/shared/index.js +1 -1
- package/select/presets/index.js +1 -1
- package/select/presets/useSelectWithApply/hook.js +1 -1
- package/select/presets/useSelectWithApply/options-list-with-apply/Component.js +1 -1
- package/select/presets/useSelectWithApply/options-list-with-apply/index.d.ts +1 -1
- package/select/presets/useSelectWithApply/options-list-with-apply/index.js +1 -1
- package/select/shared/index.js +1 -1
- package/select-with-tags/Component.responsive.d.ts +1 -1
- package/select-with-tags/components/base-select-with-tags/Component.d.ts +1 -1
- package/side-panel/Component.responsive.js +1 -1
- package/side-panel/components/controls/Component.js +1 -1
- package/side-panel/components/controls/index.js +1 -1
- package/side-panel/components/footer/Component.desktop.js +1 -1
- package/side-panel/components/footer/Component.js +1 -1
- package/side-panel/components/footer/Component.mobile.js +1 -1
- package/side-panel/desktop/Component.desktop.js +1 -1
- package/side-panel/desktop/index.js +1 -1
- package/side-panel/esm/Component.responsive.js +1 -1
- package/side-panel/esm/components/controls/Component.js +1 -1
- package/side-panel/esm/components/controls/index.js +1 -1
- package/side-panel/esm/components/footer/Component.desktop.js +1 -1
- package/side-panel/esm/components/footer/Component.js +1 -1
- package/side-panel/esm/components/footer/Component.mobile.js +1 -1
- package/side-panel/esm/desktop/Component.desktop.js +1 -1
- package/side-panel/esm/desktop/index.js +1 -1
- package/side-panel/esm/index.js +1 -1
- package/side-panel/esm/mobile/Component.mobile.js +1 -1
- package/side-panel/esm/mobile/index.js +1 -1
- package/side-panel/index.js +1 -1
- package/side-panel/mobile/Component.mobile.js +1 -1
- package/side-panel/mobile/index.js +1 -1
- package/side-panel/modern/Component.responsive.js +1 -1
- package/side-panel/modern/components/controls/Component.js +1 -1
- package/side-panel/modern/components/controls/index.js +1 -1
- package/side-panel/modern/components/footer/Component.desktop.js +1 -1
- package/side-panel/modern/components/footer/Component.js +1 -1
- package/side-panel/modern/components/footer/Component.mobile.js +1 -1
- package/side-panel/modern/desktop/Component.desktop.js +1 -1
- package/side-panel/modern/desktop/index.js +1 -1
- package/side-panel/modern/index.js +1 -1
- package/side-panel/modern/mobile/Component.mobile.js +1 -1
- package/side-panel/modern/mobile/index.js +1 -1
- package/tabs/collapsible/index.js +1 -1
- package/tabs/components/primary-tablist/Component.collapsible.js +1 -1
- package/tabs/components/primary-tablist/Component.desktop.js +1 -1
- package/tabs/components/primary-tablist/Component.mobile.js +1 -1
- package/tabs/components/primary-tablist/Component.responsive.js +1 -1
- package/tabs/components/secondary-tablist/Component.desktop.js +1 -1
- package/tabs/components/secondary-tablist/Component.mobile.js +1 -1
- package/tabs/components/secondary-tablist/Component.responsive.js +1 -1
- package/tabs/components/tabs/Component.collapsible.js +1 -1
- package/tabs/components/tabs/Component.desktop.js +2 -2
- package/tabs/components/tabs/Component.mobile.js +2 -2
- package/tabs/components/tabs/Component.responsive.js +2 -2
- package/tabs/desktop/index.js +2 -2
- package/tabs/esm/collapsible/index.js +1 -1
- package/tabs/esm/components/primary-tablist/Component.collapsible.js +1 -1
- package/tabs/esm/components/primary-tablist/Component.desktop.js +1 -1
- package/tabs/esm/components/primary-tablist/Component.mobile.js +1 -1
- package/tabs/esm/components/primary-tablist/Component.responsive.js +1 -1
- package/tabs/esm/components/secondary-tablist/Component.desktop.js +1 -1
- package/tabs/esm/components/secondary-tablist/Component.mobile.js +1 -1
- package/tabs/esm/components/secondary-tablist/Component.responsive.js +1 -1
- package/tabs/esm/components/tabs/Component.collapsible.js +1 -1
- package/tabs/esm/components/tabs/Component.desktop.js +2 -2
- package/tabs/esm/components/tabs/Component.mobile.js +2 -2
- package/tabs/esm/components/tabs/Component.responsive.js +2 -2
- package/tabs/esm/desktop/index.js +2 -2
- package/tabs/esm/index.js +2 -2
- package/tabs/esm/mobile/index.js +2 -2
- package/tabs/index.js +2 -2
- package/tabs/mobile/index.js +2 -2
- package/tabs/modern/collapsible/index.js +1 -1
- package/tabs/modern/components/primary-tablist/Component.collapsible.js +1 -1
- package/tabs/modern/components/primary-tablist/Component.desktop.js +1 -1
- package/tabs/modern/components/primary-tablist/Component.mobile.js +1 -1
- package/tabs/modern/components/primary-tablist/Component.responsive.js +1 -1
- package/tabs/modern/components/secondary-tablist/Component.desktop.js +1 -1
- package/tabs/modern/components/secondary-tablist/Component.mobile.js +1 -1
- package/tabs/modern/components/secondary-tablist/Component.responsive.js +1 -1
- package/tabs/modern/components/tabs/Component.collapsible.js +1 -1
- package/tabs/modern/components/tabs/Component.desktop.js +2 -2
- package/tabs/modern/components/tabs/Component.mobile.js +2 -2
- package/tabs/modern/components/tabs/Component.responsive.js +2 -2
- package/tabs/modern/desktop/index.js +2 -2
- package/tabs/modern/index.js +2 -2
- package/tabs/modern/mobile/index.js +2 -2
- package/themes/compiled/mobile-dark-bluetint.css +14 -14
- package/themes/dist/compiled/mobile-dark-bluetint.css +439 -439
- /package/confirmation/{countdown-section-0b838cbc.d.ts → countdown-section-cb907e98.d.ts} +0 -0
- /package/confirmation/{countdown-section-0b838cbc.js → countdown-section-cb907e98.js} +0 -0
- /package/confirmation/esm/{countdown-section-1f94dc48.d.ts → countdown-section-0ecb611b.d.ts} +0 -0
- /package/confirmation/esm/{countdown-section-1f94dc48.js → countdown-section-0ecb611b.js} +0 -0
- /package/confirmation/modern/{countdown-section-0e0a4d6c.d.ts → countdown-section-57a88455.d.ts} +0 -0
- /package/confirmation/modern/{countdown-section-0e0a4d6c.js → countdown-section-57a88455.js} +0 -0
- /package/modal/esm/{getDataTestId-a1bfd5bc.d.ts → getDataTestId-464d4f26.d.ts} +0 -0
- /package/modal/esm/{getDataTestId-a1bfd5bc.js → getDataTestId-464d4f26.js} +0 -0
- /package/modal/esm/{layout.module-ae61fd9a.js → layout.module-c974a98d.js} +0 -0
- /package/modal/{getDataTestId-21513f43.d.ts → getDataTestId-9371d9b9.d.ts} +0 -0
- /package/modal/{getDataTestId-21513f43.js → getDataTestId-9371d9b9.js} +0 -0
- /package/modal/{layout.module-a368ce4e.js → layout.module-aaea4df5.js} +0 -0
- /package/modal/modern/{getDataTestId-98c1ef65.d.ts → getDataTestId-3dc618ac.d.ts} +0 -0
- /package/modal/modern/{getDataTestId-98c1ef65.js → getDataTestId-3dc618ac.js} +0 -0
- /package/modal/modern/{layout.module-9e42f1af.js → layout.module-a5301ec4.js} +0 -0
- /package/pure-cell/{component-1e7d8bed.d.ts → component-858265bf.d.ts} +0 -0
- /package/pure-cell/{component-1e7d8bed.js → component-858265bf.js} +0 -0
- /package/pure-cell/esm/{component-41f8dfa0.d.ts → component-446f8d40.d.ts} +0 -0
- /package/pure-cell/esm/{component-41f8dfa0.js → component-446f8d40.js} +0 -0
- /package/pure-cell/modern/{component-2890e342.d.ts → component-fc4a0354.d.ts} +0 -0
- /package/pure-cell/modern/{component-2890e342.js → component-fc4a0354.js} +0 -0
- /package/select/esm/{hook-432d3089.d.ts → hook-7827df3d.d.ts} +0 -0
- /package/select/esm/{hook-432d3089.js → hook-7827df3d.js} +0 -0
- /package/select/{hook-1a09de48.d.ts → hook-c2cc0737.d.ts} +0 -0
- /package/select/{hook-1a09de48.js → hook-c2cc0737.js} +0 -0
- /package/select/modern/{hook-13eac5b3.d.ts → hook-5d0d0b8f.d.ts} +0 -0
- /package/select/modern/{hook-13eac5b3.js → hook-5d0d0b8f.js} +0 -0
- /package/side-panel/esm/{layout.module-cd17a8d9.js → layout.module-9b1b1597.js} +0 -0
- /package/side-panel/{layout.module-2eab8ea4.js → layout.module-63bb425f.js} +0 -0
- /package/side-panel/modern/{layout.module-2fbef196.js → layout.module-294dd7f0.js} +0 -0
- /package/tabs/esm/{index.module-ef895b4d.js → index.module-77b9e786.js} +0 -0
- /package/tabs/esm/{index.module-35549ec1.js → index.module-89b83942.js} +0 -0
- /package/tabs/{index.module-2d0a535b.js → index.module-1622ea1b.js} +0 -0
- /package/tabs/{index.module-86eee5e4.js → index.module-85fa7c5b.js} +0 -0
- /package/tabs/modern/{index.module-abc097a2.js → index.module-01921a2b.js} +0 -0
- /package/tabs/modern/{index.module-e2852e96.js → index.module-69b838fa.js} +0 -0
|
@@ -2,7 +2,7 @@ import 'react';
|
|
|
2
2
|
import 'classnames';
|
|
3
3
|
import '../../../../shared/modern';
|
|
4
4
|
import '../../../../typography/modern';
|
|
5
|
-
export { T as Text } from '../../component-
|
|
5
|
+
export { T as Text } from '../../component-fc4a0354.js';
|
|
6
6
|
import 'react-merge-refs';
|
|
7
7
|
import '../../../../comment/modern';
|
|
8
8
|
import '@alfalab/hooks';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from "../../component-
|
|
1
|
+
export * from "../../component-fc4a0354";
|
|
@@ -43,7 +43,7 @@ require('../base-modal');
|
|
|
43
43
|
require('../button/mobile');
|
|
44
44
|
require('./components/virtual-options-list/Component.js');
|
|
45
45
|
require('react-virtual');
|
|
46
|
-
require('./hook-
|
|
46
|
+
require('./hook-c2cc0737.js');
|
|
47
47
|
require('./presets/useSelectWithApply/options-list-with-apply/footer/Component.js');
|
|
48
48
|
require('../button/desktop');
|
|
49
49
|
require('./presets/useSelectWithApply/options-list-with-apply/header/Component.js');
|
|
@@ -37,7 +37,6 @@ function (_a, ref) {
|
|
|
37
37
|
var listRef = React.useRef(null);
|
|
38
38
|
var initiatorRef = React.useRef(null);
|
|
39
39
|
var searchRef = React.useRef(null);
|
|
40
|
-
var alreadyClickedRef = React.useRef(false);
|
|
41
40
|
var scrollableContainerRef = React.useRef(null);
|
|
42
41
|
var onOpenRef = React.useRef(onOpen);
|
|
43
42
|
var _3 = React__default.default.useState(''), searchState = _3[0], setSearchState = _3[1];
|
|
@@ -98,6 +97,24 @@ function (_a, ref) {
|
|
|
98
97
|
isItemDisabled: isItemDisabled,
|
|
99
98
|
defaultHighlightedIndex: selectedItems.length === 0 ? -1 : undefined,
|
|
100
99
|
scrollIntoView: scrollIntoView,
|
|
100
|
+
onSelectedItemChange: function (changes) {
|
|
101
|
+
var selectedItem = changes.selectedItem || initiatorRef.current;
|
|
102
|
+
if (selectedItem && !selectedItem.disabled) {
|
|
103
|
+
var alreadySelected = selectedItems.includes(selectedItem);
|
|
104
|
+
var allowRemove = allowUnselect || (multiple && selectedItems.length > 1);
|
|
105
|
+
if (alreadySelected && allowRemove) {
|
|
106
|
+
removeSelectedItem(selectedItem);
|
|
107
|
+
}
|
|
108
|
+
if (!alreadySelected) {
|
|
109
|
+
if (multiple) {
|
|
110
|
+
addSelectedItem(selectedItem);
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
setSelectedItems([selectedItem]);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
},
|
|
101
118
|
onIsOpenChange: function (changes) {
|
|
102
119
|
if (onOpenRef.current) {
|
|
103
120
|
/**
|
|
@@ -126,16 +143,9 @@ function (_a, ref) {
|
|
|
126
143
|
}
|
|
127
144
|
}
|
|
128
145
|
},
|
|
129
|
-
// eslint-disable-next-line complexity
|
|
130
146
|
stateReducer: function (state, actionAndChanges) {
|
|
131
147
|
var type = actionAndChanges.type, changes = actionAndChanges.changes;
|
|
132
|
-
var selectedItem = changes.selectedItem;
|
|
133
148
|
switch (type) {
|
|
134
|
-
case downshift.useCombobox.stateChangeTypes.InputBlur:
|
|
135
|
-
if (view === 'mobile') {
|
|
136
|
-
return state;
|
|
137
|
-
}
|
|
138
|
-
return changes;
|
|
139
149
|
case downshift.useCombobox.stateChangeTypes.InputKeyDownArrowDown:
|
|
140
150
|
if (!circularNavigation && state.highlightedIndex === options.length - 1) {
|
|
141
151
|
return tslib.__assign(tslib.__assign({}, changes), { highlightedIndex: state.highlightedIndex });
|
|
@@ -147,42 +157,36 @@ function (_a, ref) {
|
|
|
147
157
|
}
|
|
148
158
|
return changes;
|
|
149
159
|
case downshift.useCombobox.stateChangeTypes.InputKeyDownEnter:
|
|
150
|
-
case downshift.useCombobox.stateChangeTypes.ItemClick:
|
|
160
|
+
case downshift.useCombobox.stateChangeTypes.ItemClick: {
|
|
161
|
+
var selectedItem = changes.selectedItem;
|
|
151
162
|
initiatorRef.current = selectedItem || null;
|
|
152
|
-
|
|
153
|
-
// TODO!!! Проблема downshift + React 18. ItemClick срабатывает дважды. См https://github.com/downshift-js/downshift/issues/1384
|
|
154
|
-
if (view === 'mobile' && React__default.default.version.indexOf('18') === 0) {
|
|
155
|
-
alreadyClickedRef.current = true;
|
|
156
|
-
setTimeout(function () {
|
|
157
|
-
alreadyClickedRef.current = false;
|
|
158
|
-
});
|
|
159
|
-
}
|
|
160
|
-
var alreadySelected = selectedItems.includes(selectedItem);
|
|
161
|
-
var allowRemove = allowUnselect || (multiple && selectedItems.length > 1);
|
|
162
|
-
if (alreadySelected && allowRemove) {
|
|
163
|
-
removeSelectedItem(selectedItem);
|
|
164
|
-
}
|
|
165
|
-
if (!alreadySelected) {
|
|
166
|
-
if (multiple) {
|
|
167
|
-
addSelectedItem(selectedItem);
|
|
168
|
-
}
|
|
169
|
-
else {
|
|
170
|
-
setSelectedItems([selectedItem]);
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
return tslib.__assign(tslib.__assign({}, changes), { isOpen: !closeOnSelect || (view === 'mobile' && multiple),
|
|
163
|
+
return tslib.__assign(tslib.__assign({}, changes), { selectedItem: state.selectedItem === selectedItem ? null : selectedItem, isOpen: !closeOnSelect || (view === 'mobile' && multiple),
|
|
175
164
|
// при closeOnSelect === false - сохраняем подсвеченный индекс
|
|
176
165
|
highlightedIndex: state.isOpen && !closeOnSelect
|
|
177
166
|
? state.highlightedIndex
|
|
178
167
|
: changes.highlightedIndex });
|
|
168
|
+
}
|
|
179
169
|
default:
|
|
180
170
|
return changes;
|
|
181
171
|
}
|
|
182
172
|
},
|
|
183
173
|
}), open = _7.isOpen, getMenuProps = _7.getMenuProps, getInputProps = _7.getInputProps, getItemProps = _7.getItemProps, getLabelProps = _7.getLabelProps, highlightedIndex = _7.highlightedIndex, toggleMenu = _7.toggleMenu, openMenu = _7.openMenu, closeMenu = _7.closeMenu, setHighlightedIndex = _7.setHighlightedIndex;
|
|
184
|
-
|
|
174
|
+
React.useEffect(function () {
|
|
175
|
+
/*
|
|
176
|
+
* При изменении openProp, состояние внутри downshift в useEnhancedReducer не меняется, поэтому меняем его таким способом
|
|
177
|
+
* Скорее всего это исправят в будущих версиях downshift
|
|
178
|
+
*/
|
|
179
|
+
if (openProp !== undefined) {
|
|
180
|
+
if (openProp) {
|
|
181
|
+
openMenu();
|
|
182
|
+
}
|
|
183
|
+
else {
|
|
184
|
+
closeMenu();
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
}, [openProp, openMenu, closeMenu]);
|
|
185
188
|
var inputProps = getInputProps(getDropdownProps({ ref: mergeRefs__default.default([ref, fieldRef]) }));
|
|
189
|
+
var _8 = getMenuProps({ ref: listRef }, { suppressRefError: true }), menuRef = _8.ref, menuProps = tslib.__rest(_8, ["ref"]);
|
|
186
190
|
var handleEntered = function (node, isAppearing) {
|
|
187
191
|
var _a, _b, _c, _d, _e;
|
|
188
192
|
if (showSearch)
|
|
@@ -333,7 +337,7 @@ function (_a, ref) {
|
|
|
333
337
|
_a[mobileStyles.search] = view === 'mobile',
|
|
334
338
|
_a)), ref: mergeRefs__default.default([searchRef, ((_c = searchProps === null || searchProps === void 0 ? void 0 : searchProps.componentProps) === null || _c === void 0 ? void 0 : _c.ref) || null]) })));
|
|
335
339
|
};
|
|
336
|
-
var
|
|
340
|
+
var _9 = optionsListProps, header = _9.header, emptyPlaceholder = _9.emptyPlaceholder;
|
|
337
341
|
var renderOptionsListHeader = function () {
|
|
338
342
|
if (header || (view === 'desktop' && showSearch)) {
|
|
339
343
|
return (React__default.default.createElement(React__default.default.Fragment, null,
|
|
@@ -356,7 +360,7 @@ function (_a, ref) {
|
|
|
356
360
|
if (flatOptions.length === 0 && !showEmptyOptionsList && !showSearch)
|
|
357
361
|
return null;
|
|
358
362
|
var listProps = optionsListProps;
|
|
359
|
-
return (React__default.default.createElement("div", tslib.__assign({}, menuProps, { className: cn__default.default(optionsListClassName, view === 'mobile' && mobileStyles.optionsListWrapper, view === 'desktop' && styles.optionsListWrapper) }),
|
|
363
|
+
return (React__default.default.createElement("div", tslib.__assign({}, menuProps, { ref: view === 'desktop' ? menuRef : undefined, className: cn__default.default(optionsListClassName, view === 'mobile' && mobileStyles.optionsListWrapper, view === 'desktop' && styles.optionsListWrapper) }),
|
|
360
364
|
React__default.default.createElement(OptionsList, tslib.__assign({}, listProps, { ref: view === 'desktop' ? listProps.ref : scrollableContainerRef, setHighlightedIndex: view === 'desktop' ? setHighlightedIndex : undefined, className: cn__default.default((_a = {}, _a[mobileStyles.optionsList] = view === 'mobile', _a)), scrollbarClassName: cn__default.default((_b = {}, _b[mobileStyles.scrollbar] = view === 'mobile', _b)), optionsListWidth: optionsListWidth, flatOptions: flatOptions, highlightedIndex: highlightedIndex, open: open, size: size, options: filteredOptions, Optgroup: Optgroup, Option: Option, selectedItems: selectedItems, setSelectedItems: setSelectedItems, toggleMenu: toggleMenu, getOptionProps: getOptionProps, visibleOptions: view === 'desktop' ? visibleOptions : 0, dataTestId: coreComponentsShared.getDataTestId(dataTestId, 'options-list'), header: renderOptionsListHeader(), optionGroupClassName: cn__default.default(optionGroupClassName, (_c = {},
|
|
361
365
|
_c[mobileStyles.optionGroup] = view === 'mobile',
|
|
362
366
|
_c)), emptyPlaceholder: renderEmptyPlaceholder(), onScroll: onScroll })),
|
|
@@ -370,7 +374,7 @@ function (_a, ref) {
|
|
|
370
374
|
};
|
|
371
375
|
var renderInBottomSheet = function () {
|
|
372
376
|
if (!nativeSelect && BottomSheet) {
|
|
373
|
-
return (React__default.default.createElement(BottomSheet, tslib.__assign({ dataTestId: coreComponentsShared.getDataTestId(dataTestId, 'bottom-sheet'), open: open, className: mobileStyles.sheet, contentClassName: mobileStyles.sheetContent, containerClassName: mobileStyles.sheetContainer, title: label || placeholder, actionButton: footer, stickyHeader: true, hasCloser: true, swipeable: swipeable, initialHeight: showSearch ? 'full' : 'default' }, bottomSheetProps, { scrollableContainerRef: scrollableContainerRef, onClose: function () {
|
|
377
|
+
return (React__default.default.createElement(BottomSheet, tslib.__assign({ dataTestId: coreComponentsShared.getDataTestId(dataTestId, 'bottom-sheet'), open: open, className: mobileStyles.sheet, contentClassName: mobileStyles.sheetContent, containerClassName: mobileStyles.sheetContainer, title: label || placeholder, actionButton: footer, stickyHeader: true, hasCloser: true, swipeable: swipeable, initialHeight: showSearch ? 'full' : 'default' }, bottomSheetProps, { sheetContainerRef: menuRef, scrollableContainerRef: scrollableContainerRef, onClose: function () {
|
|
374
378
|
var _a;
|
|
375
379
|
closeMenu();
|
|
376
380
|
(_a = bottomSheetProps === null || bottomSheetProps === void 0 ? void 0 : bottomSheetProps.onClose) === null || _a === void 0 ? void 0 : _a.call(bottomSheetProps);
|
|
@@ -382,7 +386,7 @@ function (_a, ref) {
|
|
|
382
386
|
};
|
|
383
387
|
var renderInModalMobile = function () {
|
|
384
388
|
if (!nativeSelect && ModalMobile) {
|
|
385
|
-
return (React__default.default.createElement(ModalMobile, tslib.__assign({ open: open, hasCloser: true }, modalProps, { onClose: function () {
|
|
389
|
+
return (React__default.default.createElement(ModalMobile, tslib.__assign({ open: open, hasCloser: true }, modalProps, { componentRef: menuRef, onClose: function () {
|
|
386
390
|
var _a;
|
|
387
391
|
var args = [];
|
|
388
392
|
for (var _i = 0; _i < arguments.length; _i++) {
|
|
@@ -35,7 +35,6 @@ function (_a, ref) {
|
|
|
35
35
|
var listRef = React.useRef(null);
|
|
36
36
|
var initiatorRef = React.useRef(null);
|
|
37
37
|
var searchRef = React.useRef(null);
|
|
38
|
-
var alreadyClickedRef = React.useRef(false);
|
|
39
38
|
var scrollableContainerRef = React.useRef(null);
|
|
40
39
|
var onOpenRef = React.useRef(onOpen);
|
|
41
40
|
var _3 = React__default.default.useState(''), searchState = _3[0], setSearchState = _3[1];
|
|
@@ -96,6 +95,24 @@ function (_a, ref) {
|
|
|
96
95
|
isItemDisabled: isItemDisabled,
|
|
97
96
|
defaultHighlightedIndex: selectedItems.length === 0 ? -1 : undefined,
|
|
98
97
|
scrollIntoView: scrollIntoView,
|
|
98
|
+
onSelectedItemChange: function (changes) {
|
|
99
|
+
var selectedItem = changes.selectedItem || initiatorRef.current;
|
|
100
|
+
if (selectedItem && !selectedItem.disabled) {
|
|
101
|
+
var alreadySelected = selectedItems.includes(selectedItem);
|
|
102
|
+
var allowRemove = allowUnselect || (multiple && selectedItems.length > 1);
|
|
103
|
+
if (alreadySelected && allowRemove) {
|
|
104
|
+
removeSelectedItem(selectedItem);
|
|
105
|
+
}
|
|
106
|
+
if (!alreadySelected) {
|
|
107
|
+
if (multiple) {
|
|
108
|
+
addSelectedItem(selectedItem);
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
setSelectedItems([selectedItem]);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
},
|
|
99
116
|
onIsOpenChange: function (changes) {
|
|
100
117
|
if (onOpenRef.current) {
|
|
101
118
|
/**
|
|
@@ -124,16 +141,9 @@ function (_a, ref) {
|
|
|
124
141
|
}
|
|
125
142
|
}
|
|
126
143
|
},
|
|
127
|
-
// eslint-disable-next-line complexity
|
|
128
144
|
stateReducer: function (state, actionAndChanges) {
|
|
129
145
|
var type = actionAndChanges.type, changes = actionAndChanges.changes;
|
|
130
|
-
var selectedItem = changes.selectedItem;
|
|
131
146
|
switch (type) {
|
|
132
|
-
case downshift.useCombobox.stateChangeTypes.InputBlur:
|
|
133
|
-
if (view === 'mobile') {
|
|
134
|
-
return state;
|
|
135
|
-
}
|
|
136
|
-
return changes;
|
|
137
147
|
case downshift.useCombobox.stateChangeTypes.InputKeyDownArrowDown:
|
|
138
148
|
if (!circularNavigation && state.highlightedIndex === options.length - 1) {
|
|
139
149
|
return tslib.__assign(tslib.__assign({}, changes), { highlightedIndex: state.highlightedIndex });
|
|
@@ -145,42 +155,36 @@ function (_a, ref) {
|
|
|
145
155
|
}
|
|
146
156
|
return changes;
|
|
147
157
|
case downshift.useCombobox.stateChangeTypes.InputKeyDownEnter:
|
|
148
|
-
case downshift.useCombobox.stateChangeTypes.ItemClick:
|
|
158
|
+
case downshift.useCombobox.stateChangeTypes.ItemClick: {
|
|
159
|
+
var selectedItem = changes.selectedItem;
|
|
149
160
|
initiatorRef.current = selectedItem || null;
|
|
150
|
-
|
|
151
|
-
// TODO!!! Проблема downshift + React 18. ItemClick срабатывает дважды. См https://github.com/downshift-js/downshift/issues/1384
|
|
152
|
-
if (view === 'mobile' && React__default.default.version.indexOf('18') === 0) {
|
|
153
|
-
alreadyClickedRef.current = true;
|
|
154
|
-
setTimeout(function () {
|
|
155
|
-
alreadyClickedRef.current = false;
|
|
156
|
-
});
|
|
157
|
-
}
|
|
158
|
-
var alreadySelected = selectedItems.includes(selectedItem);
|
|
159
|
-
var allowRemove = allowUnselect || (multiple && selectedItems.length > 1);
|
|
160
|
-
if (alreadySelected && allowRemove) {
|
|
161
|
-
removeSelectedItem(selectedItem);
|
|
162
|
-
}
|
|
163
|
-
if (!alreadySelected) {
|
|
164
|
-
if (multiple) {
|
|
165
|
-
addSelectedItem(selectedItem);
|
|
166
|
-
}
|
|
167
|
-
else {
|
|
168
|
-
setSelectedItems([selectedItem]);
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
return tslib.__assign(tslib.__assign({}, changes), { isOpen: !closeOnSelect || (view === 'mobile' && multiple),
|
|
161
|
+
return tslib.__assign(tslib.__assign({}, changes), { selectedItem: state.selectedItem === selectedItem ? null : selectedItem, isOpen: !closeOnSelect || (view === 'mobile' && multiple),
|
|
173
162
|
// при closeOnSelect === false - сохраняем подсвеченный индекс
|
|
174
163
|
highlightedIndex: state.isOpen && !closeOnSelect
|
|
175
164
|
? state.highlightedIndex
|
|
176
165
|
: changes.highlightedIndex });
|
|
166
|
+
}
|
|
177
167
|
default:
|
|
178
168
|
return changes;
|
|
179
169
|
}
|
|
180
170
|
},
|
|
181
171
|
}), open = _7.isOpen, getMenuProps = _7.getMenuProps, getInputProps = _7.getInputProps, getItemProps = _7.getItemProps, getLabelProps = _7.getLabelProps, highlightedIndex = _7.highlightedIndex, toggleMenu = _7.toggleMenu, openMenu = _7.openMenu, closeMenu = _7.closeMenu, setHighlightedIndex = _7.setHighlightedIndex;
|
|
182
|
-
|
|
172
|
+
React.useEffect(function () {
|
|
173
|
+
/*
|
|
174
|
+
* При изменении openProp, состояние внутри downshift в useEnhancedReducer не меняется, поэтому меняем его таким способом
|
|
175
|
+
* Скорее всего это исправят в будущих версиях downshift
|
|
176
|
+
*/
|
|
177
|
+
if (openProp !== undefined) {
|
|
178
|
+
if (openProp) {
|
|
179
|
+
openMenu();
|
|
180
|
+
}
|
|
181
|
+
else {
|
|
182
|
+
closeMenu();
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}, [openProp, openMenu, closeMenu]);
|
|
183
186
|
var inputProps = getInputProps(getDropdownProps({ ref: mergeRefs__default.default([ref, fieldRef]) }));
|
|
187
|
+
var _8 = getMenuProps({ ref: listRef }, { suppressRefError: true }), menuRef = _8.ref, menuProps = tslib.__rest(_8, ["ref"]);
|
|
184
188
|
var handleEntered = function (node, isAppearing) {
|
|
185
189
|
var _a, _b, _c, _d, _e;
|
|
186
190
|
if (showSearch)
|
|
@@ -331,7 +335,7 @@ function (_a, ref) {
|
|
|
331
335
|
_a[mobileStyles__default.default.search] = view === 'mobile',
|
|
332
336
|
_a)), ref: mergeRefs__default.default([searchRef, ((_c = searchProps === null || searchProps === void 0 ? void 0 : searchProps.componentProps) === null || _c === void 0 ? void 0 : _c.ref) || null]) })));
|
|
333
337
|
};
|
|
334
|
-
var
|
|
338
|
+
var _9 = optionsListProps, header = _9.header, emptyPlaceholder = _9.emptyPlaceholder;
|
|
335
339
|
var renderOptionsListHeader = function () {
|
|
336
340
|
if (header || (view === 'desktop' && showSearch)) {
|
|
337
341
|
return (React__default.default.createElement(React__default.default.Fragment, null,
|
|
@@ -354,7 +358,7 @@ function (_a, ref) {
|
|
|
354
358
|
if (flatOptions.length === 0 && !showEmptyOptionsList && !showSearch)
|
|
355
359
|
return null;
|
|
356
360
|
var listProps = optionsListProps;
|
|
357
|
-
return (React__default.default.createElement("div", tslib.__assign({}, menuProps, { className: cn__default.default(optionsListClassName, view === 'mobile' && mobileStyles__default.default.optionsListWrapper, view === 'desktop' && styles__default.default.optionsListWrapper) }),
|
|
361
|
+
return (React__default.default.createElement("div", tslib.__assign({}, menuProps, { ref: view === 'desktop' ? menuRef : undefined, className: cn__default.default(optionsListClassName, view === 'mobile' && mobileStyles__default.default.optionsListWrapper, view === 'desktop' && styles__default.default.optionsListWrapper) }),
|
|
358
362
|
React__default.default.createElement(OptionsList, tslib.__assign({}, listProps, { ref: view === 'desktop' ? listProps.ref : scrollableContainerRef, setHighlightedIndex: view === 'desktop' ? setHighlightedIndex : undefined, className: cn__default.default((_a = {}, _a[mobileStyles__default.default.optionsList] = view === 'mobile', _a)), scrollbarClassName: cn__default.default((_b = {}, _b[mobileStyles__default.default.scrollbar] = view === 'mobile', _b)), optionsListWidth: optionsListWidth, flatOptions: flatOptions, highlightedIndex: highlightedIndex, open: open, size: size, options: filteredOptions, Optgroup: Optgroup, Option: Option, selectedItems: selectedItems, setSelectedItems: setSelectedItems, toggleMenu: toggleMenu, getOptionProps: getOptionProps, visibleOptions: view === 'desktop' ? visibleOptions : 0, dataTestId: coreComponentsShared.getDataTestId(dataTestId, 'options-list'), header: renderOptionsListHeader(), optionGroupClassName: cn__default.default(optionGroupClassName, (_c = {},
|
|
359
363
|
_c[mobileStyles__default.default.optionGroup] = view === 'mobile',
|
|
360
364
|
_c)), emptyPlaceholder: renderEmptyPlaceholder(), onScroll: onScroll })),
|
|
@@ -368,7 +372,7 @@ function (_a, ref) {
|
|
|
368
372
|
};
|
|
369
373
|
var renderInBottomSheet = function () {
|
|
370
374
|
if (!nativeSelect && BottomSheet) {
|
|
371
|
-
return (React__default.default.createElement(BottomSheet, tslib.__assign({ dataTestId: coreComponentsShared.getDataTestId(dataTestId, 'bottom-sheet'), open: open, className: mobileStyles__default.default.sheet, contentClassName: mobileStyles__default.default.sheetContent, containerClassName: mobileStyles__default.default.sheetContainer, title: label || placeholder, actionButton: footer, stickyHeader: true, hasCloser: true, swipeable: swipeable, initialHeight: showSearch ? 'full' : 'default' }, bottomSheetProps, { scrollableContainerRef: scrollableContainerRef, onClose: function () {
|
|
375
|
+
return (React__default.default.createElement(BottomSheet, tslib.__assign({ dataTestId: coreComponentsShared.getDataTestId(dataTestId, 'bottom-sheet'), open: open, className: mobileStyles__default.default.sheet, contentClassName: mobileStyles__default.default.sheetContent, containerClassName: mobileStyles__default.default.sheetContainer, title: label || placeholder, actionButton: footer, stickyHeader: true, hasCloser: true, swipeable: swipeable, initialHeight: showSearch ? 'full' : 'default' }, bottomSheetProps, { sheetContainerRef: menuRef, scrollableContainerRef: scrollableContainerRef, onClose: function () {
|
|
372
376
|
var _a;
|
|
373
377
|
closeMenu();
|
|
374
378
|
(_a = bottomSheetProps === null || bottomSheetProps === void 0 ? void 0 : bottomSheetProps.onClose) === null || _a === void 0 ? void 0 : _a.call(bottomSheetProps);
|
|
@@ -380,7 +384,7 @@ function (_a, ref) {
|
|
|
380
384
|
};
|
|
381
385
|
var renderInModalMobile = function () {
|
|
382
386
|
if (!nativeSelect && ModalMobile) {
|
|
383
|
-
return (React__default.default.createElement(ModalMobile, tslib.__assign({ open: open, hasCloser: true }, modalProps, { onClose: function () {
|
|
387
|
+
return (React__default.default.createElement(ModalMobile, tslib.__assign({ open: open, hasCloser: true }, modalProps, { componentRef: menuRef, onClose: function () {
|
|
384
388
|
var _a;
|
|
385
389
|
var args = [];
|
|
386
390
|
for (var _i = 0; _i < arguments.length; _i++) {
|
|
@@ -39,7 +39,7 @@ import '../../base-modal/esm';
|
|
|
39
39
|
import '../../button/esm/mobile';
|
|
40
40
|
import './components/virtual-options-list/Component.js';
|
|
41
41
|
import 'react-virtual';
|
|
42
|
-
import './hook-
|
|
42
|
+
import './hook-7827df3d.js';
|
|
43
43
|
import './presets/useSelectWithApply/options-list-with-apply/footer/Component.js';
|
|
44
44
|
import '../../button/esm/desktop';
|
|
45
45
|
import './presets/useSelectWithApply/options-list-with-apply/header/Component.js';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { __assign, __spreadArray } from 'tslib';
|
|
2
|
-
import React, { forwardRef, useRef, useMemo,
|
|
1
|
+
import { __assign, __rest, __spreadArray } from 'tslib';
|
|
2
|
+
import React, { forwardRef, useRef, useMemo, useEffect, useCallback } from 'react';
|
|
3
3
|
import mergeRefs from 'react-merge-refs';
|
|
4
4
|
import { ResizeObserver } from '@juggle/resize-observer';
|
|
5
5
|
import cn from 'classnames';
|
|
@@ -29,7 +29,6 @@ function (_a, ref) {
|
|
|
29
29
|
var listRef = useRef(null);
|
|
30
30
|
var initiatorRef = useRef(null);
|
|
31
31
|
var searchRef = useRef(null);
|
|
32
|
-
var alreadyClickedRef = useRef(false);
|
|
33
32
|
var scrollableContainerRef = useRef(null);
|
|
34
33
|
var onOpenRef = useRef(onOpen);
|
|
35
34
|
var _3 = React.useState(''), searchState = _3[0], setSearchState = _3[1];
|
|
@@ -90,6 +89,24 @@ function (_a, ref) {
|
|
|
90
89
|
isItemDisabled: isItemDisabled,
|
|
91
90
|
defaultHighlightedIndex: selectedItems.length === 0 ? -1 : undefined,
|
|
92
91
|
scrollIntoView: scrollIntoView,
|
|
92
|
+
onSelectedItemChange: function (changes) {
|
|
93
|
+
var selectedItem = changes.selectedItem || initiatorRef.current;
|
|
94
|
+
if (selectedItem && !selectedItem.disabled) {
|
|
95
|
+
var alreadySelected = selectedItems.includes(selectedItem);
|
|
96
|
+
var allowRemove = allowUnselect || (multiple && selectedItems.length > 1);
|
|
97
|
+
if (alreadySelected && allowRemove) {
|
|
98
|
+
removeSelectedItem(selectedItem);
|
|
99
|
+
}
|
|
100
|
+
if (!alreadySelected) {
|
|
101
|
+
if (multiple) {
|
|
102
|
+
addSelectedItem(selectedItem);
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
setSelectedItems([selectedItem]);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
},
|
|
93
110
|
onIsOpenChange: function (changes) {
|
|
94
111
|
if (onOpenRef.current) {
|
|
95
112
|
/**
|
|
@@ -118,16 +135,9 @@ function (_a, ref) {
|
|
|
118
135
|
}
|
|
119
136
|
}
|
|
120
137
|
},
|
|
121
|
-
// eslint-disable-next-line complexity
|
|
122
138
|
stateReducer: function (state, actionAndChanges) {
|
|
123
139
|
var type = actionAndChanges.type, changes = actionAndChanges.changes;
|
|
124
|
-
var selectedItem = changes.selectedItem;
|
|
125
140
|
switch (type) {
|
|
126
|
-
case useCombobox.stateChangeTypes.InputBlur:
|
|
127
|
-
if (view === 'mobile') {
|
|
128
|
-
return state;
|
|
129
|
-
}
|
|
130
|
-
return changes;
|
|
131
141
|
case useCombobox.stateChangeTypes.InputKeyDownArrowDown:
|
|
132
142
|
if (!circularNavigation && state.highlightedIndex === options.length - 1) {
|
|
133
143
|
return __assign(__assign({}, changes), { highlightedIndex: state.highlightedIndex });
|
|
@@ -139,42 +149,36 @@ function (_a, ref) {
|
|
|
139
149
|
}
|
|
140
150
|
return changes;
|
|
141
151
|
case useCombobox.stateChangeTypes.InputKeyDownEnter:
|
|
142
|
-
case useCombobox.stateChangeTypes.ItemClick:
|
|
152
|
+
case useCombobox.stateChangeTypes.ItemClick: {
|
|
153
|
+
var selectedItem = changes.selectedItem;
|
|
143
154
|
initiatorRef.current = selectedItem || null;
|
|
144
|
-
|
|
145
|
-
// TODO!!! Проблема downshift + React 18. ItemClick срабатывает дважды. См https://github.com/downshift-js/downshift/issues/1384
|
|
146
|
-
if (view === 'mobile' && React.version.indexOf('18') === 0) {
|
|
147
|
-
alreadyClickedRef.current = true;
|
|
148
|
-
setTimeout(function () {
|
|
149
|
-
alreadyClickedRef.current = false;
|
|
150
|
-
});
|
|
151
|
-
}
|
|
152
|
-
var alreadySelected = selectedItems.includes(selectedItem);
|
|
153
|
-
var allowRemove = allowUnselect || (multiple && selectedItems.length > 1);
|
|
154
|
-
if (alreadySelected && allowRemove) {
|
|
155
|
-
removeSelectedItem(selectedItem);
|
|
156
|
-
}
|
|
157
|
-
if (!alreadySelected) {
|
|
158
|
-
if (multiple) {
|
|
159
|
-
addSelectedItem(selectedItem);
|
|
160
|
-
}
|
|
161
|
-
else {
|
|
162
|
-
setSelectedItems([selectedItem]);
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
return __assign(__assign({}, changes), { isOpen: !closeOnSelect || (view === 'mobile' && multiple),
|
|
155
|
+
return __assign(__assign({}, changes), { selectedItem: state.selectedItem === selectedItem ? null : selectedItem, isOpen: !closeOnSelect || (view === 'mobile' && multiple),
|
|
167
156
|
// при closeOnSelect === false - сохраняем подсвеченный индекс
|
|
168
157
|
highlightedIndex: state.isOpen && !closeOnSelect
|
|
169
158
|
? state.highlightedIndex
|
|
170
159
|
: changes.highlightedIndex });
|
|
160
|
+
}
|
|
171
161
|
default:
|
|
172
162
|
return changes;
|
|
173
163
|
}
|
|
174
164
|
},
|
|
175
165
|
}), open = _7.isOpen, getMenuProps = _7.getMenuProps, getInputProps = _7.getInputProps, getItemProps = _7.getItemProps, getLabelProps = _7.getLabelProps, highlightedIndex = _7.highlightedIndex, toggleMenu = _7.toggleMenu, openMenu = _7.openMenu, closeMenu = _7.closeMenu, setHighlightedIndex = _7.setHighlightedIndex;
|
|
176
|
-
|
|
166
|
+
useEffect(function () {
|
|
167
|
+
/*
|
|
168
|
+
* При изменении openProp, состояние внутри downshift в useEnhancedReducer не меняется, поэтому меняем его таким способом
|
|
169
|
+
* Скорее всего это исправят в будущих версиях downshift
|
|
170
|
+
*/
|
|
171
|
+
if (openProp !== undefined) {
|
|
172
|
+
if (openProp) {
|
|
173
|
+
openMenu();
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
closeMenu();
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
}, [openProp, openMenu, closeMenu]);
|
|
177
180
|
var inputProps = getInputProps(getDropdownProps({ ref: mergeRefs([ref, fieldRef]) }));
|
|
181
|
+
var _8 = getMenuProps({ ref: listRef }, { suppressRefError: true }), menuRef = _8.ref, menuProps = __rest(_8, ["ref"]);
|
|
178
182
|
var handleEntered = function (node, isAppearing) {
|
|
179
183
|
var _a, _b, _c, _d, _e;
|
|
180
184
|
if (showSearch)
|
|
@@ -325,7 +329,7 @@ function (_a, ref) {
|
|
|
325
329
|
_a[mobileStyles.search] = view === 'mobile',
|
|
326
330
|
_a)), ref: mergeRefs([searchRef, ((_c = searchProps === null || searchProps === void 0 ? void 0 : searchProps.componentProps) === null || _c === void 0 ? void 0 : _c.ref) || null]) })));
|
|
327
331
|
};
|
|
328
|
-
var
|
|
332
|
+
var _9 = optionsListProps, header = _9.header, emptyPlaceholder = _9.emptyPlaceholder;
|
|
329
333
|
var renderOptionsListHeader = function () {
|
|
330
334
|
if (header || (view === 'desktop' && showSearch)) {
|
|
331
335
|
return (React.createElement(React.Fragment, null,
|
|
@@ -348,7 +352,7 @@ function (_a, ref) {
|
|
|
348
352
|
if (flatOptions.length === 0 && !showEmptyOptionsList && !showSearch)
|
|
349
353
|
return null;
|
|
350
354
|
var listProps = optionsListProps;
|
|
351
|
-
return (React.createElement("div", __assign({}, menuProps, { className: cn(optionsListClassName, view === 'mobile' && mobileStyles.optionsListWrapper, view === 'desktop' && styles.optionsListWrapper) }),
|
|
355
|
+
return (React.createElement("div", __assign({}, menuProps, { ref: view === 'desktop' ? menuRef : undefined, className: cn(optionsListClassName, view === 'mobile' && mobileStyles.optionsListWrapper, view === 'desktop' && styles.optionsListWrapper) }),
|
|
352
356
|
React.createElement(OptionsList, __assign({}, listProps, { ref: view === 'desktop' ? listProps.ref : scrollableContainerRef, setHighlightedIndex: view === 'desktop' ? setHighlightedIndex : undefined, className: cn((_a = {}, _a[mobileStyles.optionsList] = view === 'mobile', _a)), scrollbarClassName: cn((_b = {}, _b[mobileStyles.scrollbar] = view === 'mobile', _b)), optionsListWidth: optionsListWidth, flatOptions: flatOptions, highlightedIndex: highlightedIndex, open: open, size: size, options: filteredOptions, Optgroup: Optgroup, Option: Option, selectedItems: selectedItems, setSelectedItems: setSelectedItems, toggleMenu: toggleMenu, getOptionProps: getOptionProps, visibleOptions: view === 'desktop' ? visibleOptions : 0, dataTestId: getDataTestId(dataTestId, 'options-list'), header: renderOptionsListHeader(), optionGroupClassName: cn(optionGroupClassName, (_c = {},
|
|
353
357
|
_c[mobileStyles.optionGroup] = view === 'mobile',
|
|
354
358
|
_c)), emptyPlaceholder: renderEmptyPlaceholder(), onScroll: onScroll })),
|
|
@@ -362,7 +366,7 @@ function (_a, ref) {
|
|
|
362
366
|
};
|
|
363
367
|
var renderInBottomSheet = function () {
|
|
364
368
|
if (!nativeSelect && BottomSheet) {
|
|
365
|
-
return (React.createElement(BottomSheet, __assign({ dataTestId: getDataTestId(dataTestId, 'bottom-sheet'), open: open, className: mobileStyles.sheet, contentClassName: mobileStyles.sheetContent, containerClassName: mobileStyles.sheetContainer, title: label || placeholder, actionButton: footer, stickyHeader: true, hasCloser: true, swipeable: swipeable, initialHeight: showSearch ? 'full' : 'default' }, bottomSheetProps, { scrollableContainerRef: scrollableContainerRef, onClose: function () {
|
|
369
|
+
return (React.createElement(BottomSheet, __assign({ dataTestId: getDataTestId(dataTestId, 'bottom-sheet'), open: open, className: mobileStyles.sheet, contentClassName: mobileStyles.sheetContent, containerClassName: mobileStyles.sheetContainer, title: label || placeholder, actionButton: footer, stickyHeader: true, hasCloser: true, swipeable: swipeable, initialHeight: showSearch ? 'full' : 'default' }, bottomSheetProps, { sheetContainerRef: menuRef, scrollableContainerRef: scrollableContainerRef, onClose: function () {
|
|
366
370
|
var _a;
|
|
367
371
|
closeMenu();
|
|
368
372
|
(_a = bottomSheetProps === null || bottomSheetProps === void 0 ? void 0 : bottomSheetProps.onClose) === null || _a === void 0 ? void 0 : _a.call(bottomSheetProps);
|
|
@@ -374,7 +378,7 @@ function (_a, ref) {
|
|
|
374
378
|
};
|
|
375
379
|
var renderInModalMobile = function () {
|
|
376
380
|
if (!nativeSelect && ModalMobile) {
|
|
377
|
-
return (React.createElement(ModalMobile, __assign({ open: open, hasCloser: true }, modalProps, { onClose: function () {
|
|
381
|
+
return (React.createElement(ModalMobile, __assign({ open: open, hasCloser: true }, modalProps, { componentRef: menuRef, onClose: function () {
|
|
378
382
|
var _a;
|
|
379
383
|
var args = [];
|
|
380
384
|
for (var _i = 0; _i < arguments.length; _i++) {
|
package/select/esm/index.js
CHANGED
|
@@ -39,7 +39,7 @@ import '../../base-modal/esm';
|
|
|
39
39
|
import '../../button/esm/mobile';
|
|
40
40
|
import './components/virtual-options-list/Component.js';
|
|
41
41
|
import 'react-virtual';
|
|
42
|
-
import './hook-
|
|
42
|
+
import './hook-7827df3d.js';
|
|
43
43
|
import './presets/useSelectWithApply/options-list-with-apply/footer/Component.js';
|
|
44
44
|
import '../../button/esm/desktop';
|
|
45
45
|
import './presets/useSelectWithApply/options-list-with-apply/header/Component.js';
|
|
@@ -12,7 +12,7 @@ import { Option } from '../components/option/Component.js';
|
|
|
12
12
|
import { OptionsList } from '../components/options-list/Component.js';
|
|
13
13
|
import { Search } from '../components/search/Component.js';
|
|
14
14
|
import { VirtualOptionsList } from '../components/virtual-options-list/Component.js';
|
|
15
|
-
import { u as useSelectWithApply } from '../hook-
|
|
15
|
+
import { u as useSelectWithApply } from '../hook-7827df3d.js';
|
|
16
16
|
import { Header } from '../presets/useSelectWithApply/options-list-with-apply/header/Component.js';
|
|
17
17
|
import 'classnames';
|
|
18
18
|
import '@alfalab/icons-glyph/ChevronDownMIcon';
|
|
@@ -35,7 +35,7 @@ import '../../../input/esm';
|
|
|
35
35
|
import '@alfalab/icons-glyph/MagnifierMIcon';
|
|
36
36
|
import '../components/virtual-options-list/Component.js';
|
|
37
37
|
import 'react-virtual';
|
|
38
|
-
import '../hook-
|
|
38
|
+
import '../hook-7827df3d.js';
|
|
39
39
|
import '../presets/useSelectWithApply/options-list-with-apply/footer/Component.js';
|
|
40
40
|
import '../../../button/esm/desktop';
|
|
41
41
|
import '../presets/useSelectWithApply/options-list-with-apply/header/Component.js';
|
|
@@ -36,7 +36,7 @@ import '../../../input/esm';
|
|
|
36
36
|
import '@alfalab/icons-glyph/MagnifierMIcon';
|
|
37
37
|
import '../components/virtual-options-list/Component.js';
|
|
38
38
|
import 'react-virtual';
|
|
39
|
-
import '../hook-
|
|
39
|
+
import '../hook-7827df3d.js';
|
|
40
40
|
import '../presets/useSelectWithApply/options-list-with-apply/footer/Component.js';
|
|
41
41
|
import '../../../button/esm/desktop';
|
|
42
42
|
import '../presets/useSelectWithApply/options-list-with-apply/header/Component.js';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { useSelectWithLoading } from './useSelectWithLoading/hook.js';
|
|
2
2
|
export { useLazyLoading } from './useLazyLoading/hook.js';
|
|
3
|
-
export { S as SELECT_ALL_KEY, u as useSelectWithApply } from '../hook-
|
|
3
|
+
export { S as SELECT_ALL_KEY, u as useSelectWithApply } from '../hook-7827df3d.js';
|
|
4
4
|
import 'tslib';
|
|
5
5
|
import 'react';
|
|
6
6
|
import '../../../skeleton/esm';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import 'tslib';
|
|
2
2
|
import 'react';
|
|
3
|
-
export { S as SELECT_ALL_KEY, u as useSelectWithApply } from '../../hook-
|
|
3
|
+
export { S as SELECT_ALL_KEY, u as useSelectWithApply } from '../../hook-7827df3d.js';
|
|
4
4
|
import '../../components/options-list/Component.js';
|
|
5
5
|
import 'react-merge-refs';
|
|
6
6
|
import 'classnames';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import 'tslib';
|
|
2
2
|
import 'react';
|
|
3
3
|
import '../../../components/options-list/Component.js';
|
|
4
|
-
export { O as OptionsListWithApply } from '../../../hook-
|
|
4
|
+
export { O as OptionsListWithApply } from '../../../hook-7827df3d.js';
|
|
5
5
|
import './footer/Component.js';
|
|
6
6
|
import './header/Component.js';
|
|
7
7
|
import 'react-merge-refs';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from "../../../hook-
|
|
1
|
+
export * from "../../../hook-7827df3d";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { useSelectWithLoading } from '../presets/useSelectWithLoading/hook.js';
|
|
2
2
|
export { useLazyLoading } from '../presets/useLazyLoading/hook.js';
|
|
3
|
-
export { S as SELECT_ALL_KEY, u as useSelectWithApply } from '../hook-
|
|
3
|
+
export { S as SELECT_ALL_KEY, u as useSelectWithApply } from '../hook-7827df3d.js';
|
|
4
4
|
export { defaultAccessor, defaultFilterFn, isGroup, isOptionShape, joinOptions, lastIndexOf, processOptions, usePrevious, useVisibleOptions } from '../utils.js';
|
|
5
5
|
export { Option } from '../components/option/Component.js';
|
|
6
6
|
export { BaseOption } from '../components/base-option/Component.js';
|
package/select/index.js
CHANGED
|
@@ -43,7 +43,7 @@ require('../base-modal');
|
|
|
43
43
|
require('../button/mobile');
|
|
44
44
|
require('./components/virtual-options-list/Component.js');
|
|
45
45
|
require('react-virtual');
|
|
46
|
-
require('./hook-
|
|
46
|
+
require('./hook-c2cc0737.js');
|
|
47
47
|
require('./presets/useSelectWithApply/options-list-with-apply/footer/Component.js');
|
|
48
48
|
require('../button/desktop');
|
|
49
49
|
require('./presets/useSelectWithApply/options-list-with-apply/header/Component.js');
|
|
@@ -14,7 +14,7 @@ var components_option_Component = require('../components/option/Component.js');
|
|
|
14
14
|
var components_optionsList_Component = require('../components/options-list/Component.js');
|
|
15
15
|
var components_search_Component = require('../components/search/Component.js');
|
|
16
16
|
var components_virtualOptionsList_Component = require('../components/virtual-options-list/Component.js');
|
|
17
|
-
var presets_useSelectWithApply_optionsListWithApply_Component = require('../hook-
|
|
17
|
+
var presets_useSelectWithApply_optionsListWithApply_Component = require('../hook-c2cc0737.js');
|
|
18
18
|
var presets_useSelectWithApply_optionsListWithApply_header_Component = require('../presets/useSelectWithApply/options-list-with-apply/header/Component.js');
|
|
19
19
|
require('classnames');
|
|
20
20
|
require('@alfalab/icons-glyph/ChevronDownMIcon');
|
|
@@ -39,7 +39,7 @@ require('../../input');
|
|
|
39
39
|
require('@alfalab/icons-glyph/MagnifierMIcon');
|
|
40
40
|
require('../components/virtual-options-list/Component.js');
|
|
41
41
|
require('react-virtual');
|
|
42
|
-
require('../hook-
|
|
42
|
+
require('../hook-c2cc0737.js');
|
|
43
43
|
require('../presets/useSelectWithApply/options-list-with-apply/footer/Component.js');
|
|
44
44
|
require('../../button/desktop');
|
|
45
45
|
require('../presets/useSelectWithApply/options-list-with-apply/header/Component.js');
|