@rescui/dropdown 0.9.6 → 0.9.7
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/lib/dropdown.js +16 -3
- package/lib/dropdown.p.module.css.js +12 -12
- package/lib/index.css +29 -29
- package/lib/index.d.ts +1 -1
- package/package.json +2 -2
package/lib/dropdown.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import React, { useState, useEffect, useImperativeHandle, useContext, useCallback } from 'react';
|
|
2
|
+
import React, { useState, useRef, useEffect, useImperativeHandle, useContext, useCallback } from 'react';
|
|
3
3
|
import PropTypes from 'prop-types';
|
|
4
4
|
import cn from 'classnames';
|
|
5
5
|
import { usePopper } from 'react-popper';
|
|
@@ -143,7 +143,8 @@ const DropdownRender = (_ref5, externalRef) => {
|
|
|
143
143
|
const {
|
|
144
144
|
setContentEl,
|
|
145
145
|
scrollableStyles
|
|
146
|
-
} = useScrollableContainer();
|
|
146
|
+
} = useScrollableContainer();
|
|
147
|
+
const scrollableRef = useRef(null); // We set isOpen this way to avoid hydration issue due to
|
|
147
148
|
// the Portal to document.body which does not exist on the server.
|
|
148
149
|
// So even if isOpen prop is used, the tooltip will not render on the server, and
|
|
149
150
|
// it's the same on the first client render, so there is no hydration issue.
|
|
@@ -217,7 +218,18 @@ const DropdownRender = (_ref5, externalRef) => {
|
|
|
217
218
|
noProvider
|
|
218
219
|
} = useContext(ThemeContext);
|
|
219
220
|
const theme = themeFromProps || (noProvider ? themeFromCss : themeFromContext);
|
|
220
|
-
const childrenTheme = mode === 'rock' ? getInverseTheme(theme) : theme;
|
|
221
|
+
const childrenTheme = mode === 'rock' ? getInverseTheme(theme) : theme; // immediately fire handleAnimationEnd event on visibility change in case transition is disabled
|
|
222
|
+
// it may happen if the user hard-disabled all transitions in his browser
|
|
223
|
+
|
|
224
|
+
useEffect(() => {
|
|
225
|
+
if (dropdownShouldBeRendered && scrollableRef.current) {
|
|
226
|
+
const isTransitionDisabled = window.getComputedStyle(scrollableRef.current).transitionDuration === '0s';
|
|
227
|
+
|
|
228
|
+
if (isTransitionDisabled) {
|
|
229
|
+
handleAnimationEnd();
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
}, [handleAnimationEnd, dropdownShouldBeRendered]);
|
|
221
233
|
return /*#__PURE__*/React.createElement(React.Fragment, null, triggerRenderer, dropdownShouldBeRendered && /*#__PURE__*/React.createElement(Portal, {
|
|
222
234
|
target: renderInTrigger ? triggerRef : undefined
|
|
223
235
|
}, /*#__PURE__*/React.createElement("div", {
|
|
@@ -234,6 +246,7 @@ const DropdownRender = (_ref5, externalRef) => {
|
|
|
234
246
|
}, /*#__PURE__*/React.createElement(LayeringProvider, {
|
|
235
247
|
baseLayer: 'dropdown'
|
|
236
248
|
}, /*#__PURE__*/React.createElement("div", {
|
|
249
|
+
ref: scrollableRef,
|
|
237
250
|
style: scrollableStyles,
|
|
238
251
|
className: cn(styles.contentWrapper, wrapperShouldBeHidden && styles.wrapperHidden),
|
|
239
252
|
onTransitionEnd: handleAnimationEnd,
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
var styles = {
|
|
2
|
-
"themeLight": "
|
|
3
|
-
"themeDark": "
|
|
4
|
-
"dropdown": "
|
|
5
|
-
"triggerWrapper": "
|
|
6
|
-
"contentWrapper": "
|
|
7
|
-
"fadeInBottomToTop": "
|
|
8
|
-
"fadeInTopToBottom": "
|
|
9
|
-
"fadeInLeftToRight": "
|
|
10
|
-
"fadeInRightToLeft": "
|
|
11
|
-
"wrapperHidden": "
|
|
12
|
-
"modeClassic": "
|
|
13
|
-
"modeRock": "
|
|
2
|
+
"themeLight": "_themeLight_12nx94k_60",
|
|
3
|
+
"themeDark": "_themeDark_12nx94k_63",
|
|
4
|
+
"dropdown": "_dropdown_12nx94k_67",
|
|
5
|
+
"triggerWrapper": "_triggerWrapper_12nx94k_74",
|
|
6
|
+
"contentWrapper": "_contentWrapper_12nx94k_78",
|
|
7
|
+
"fadeInBottomToTop": "_fadeInBottomToTop_12nx94k_1",
|
|
8
|
+
"fadeInTopToBottom": "_fadeInTopToBottom_12nx94k_1",
|
|
9
|
+
"fadeInLeftToRight": "_fadeInLeftToRight_12nx94k_1",
|
|
10
|
+
"fadeInRightToLeft": "_fadeInRightToLeft_12nx94k_1",
|
|
11
|
+
"wrapperHidden": "_wrapperHidden_12nx94k_109",
|
|
12
|
+
"modeClassic": "_modeClassic_12nx94k_129",
|
|
13
|
+
"modeRock": "_modeRock_12nx94k_133"
|
|
14
14
|
};
|
|
15
15
|
export { styles as default };
|
package/lib/index.css
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
@keyframes
|
|
1
|
+
@keyframes _fadeInTopToBottom_12nx94k_1{
|
|
2
2
|
0%{
|
|
3
3
|
opacity:0;
|
|
4
4
|
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
transform:none;
|
|
11
11
|
}
|
|
12
12
|
}
|
|
13
|
-
@keyframes
|
|
13
|
+
@keyframes _fadeInBottomToTop_12nx94k_1{
|
|
14
14
|
0%{
|
|
15
15
|
opacity:0;
|
|
16
16
|
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
transform:none;
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
|
-
@keyframes
|
|
25
|
+
@keyframes _fadeInLeftToRight_12nx94k_1{
|
|
26
26
|
0%{
|
|
27
27
|
opacity:0;
|
|
28
28
|
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
transform:none;
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
|
-
@keyframes
|
|
37
|
+
@keyframes _fadeInRightToLeft_12nx94k_1{
|
|
38
38
|
0%{
|
|
39
39
|
opacity:0;
|
|
40
40
|
|
|
@@ -46,13 +46,13 @@
|
|
|
46
46
|
transform:none;
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
|
-
.
|
|
49
|
+
._themeLight_12nx94k_60{
|
|
50
50
|
--rs-theme-dark:0;
|
|
51
51
|
}
|
|
52
|
-
.
|
|
52
|
+
._themeDark_12nx94k_63{
|
|
53
53
|
--rs-theme-dark:1;
|
|
54
54
|
}
|
|
55
|
-
.
|
|
55
|
+
._dropdown_12nx94k_67{
|
|
56
56
|
--_rs-theme-dark:var(
|
|
57
57
|
--_rs-internal-force-theme-dark-consult-rescui-before-using,
|
|
58
58
|
var(--rs-theme-dark, 0)
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
--_rs-theme-light-coefficient:calc(1 - var(--_rs-theme-dark-coefficient));
|
|
63
63
|
}
|
|
64
64
|
@supports (color: color-mix(in srgb, #fff 50%, #000 50%)){
|
|
65
|
-
.
|
|
65
|
+
._dropdown_12nx94k_67{
|
|
66
66
|
--_rs-color-primary:color-mix(in srgb, var(--rs-color-primary-light-theme, #6B57FF) calc(100%*var(--_rs-theme-light-coefficient, 1)), var(--rs-color-primary-dark-theme, #8473FF) calc(100%*var(--_rs-theme-dark-coefficient, 0)));
|
|
67
67
|
--_rs-color-primary-dim:color-mix(in srgb, var(--rs-color-primary-dim-light-theme, #8979ff) calc(100%*var(--_rs-theme-light-coefficient, 1)), var(--rs-color-primary-dim-dark-theme, #6f61d2) calc(100%*var(--_rs-theme-dark-coefficient, 0)));
|
|
68
68
|
--_rs-color-primary-fog:color-mix(in srgb, var(--rs-color-primary-fog-light-theme, #e1ddff) calc(100%*var(--_rs-theme-light-coefficient, 1)), var(--rs-color-primary-fog-dark-theme, #2e2b49) calc(100%*var(--_rs-theme-dark-coefficient, 0)));
|
|
@@ -71,7 +71,7 @@
|
|
|
71
71
|
}
|
|
72
72
|
}
|
|
73
73
|
@supports not (color: color-mix(in srgb, #fff 50%, #000 50%)){
|
|
74
|
-
.
|
|
74
|
+
._dropdown_12nx94k_67{
|
|
75
75
|
--_rs-color-primary:rgb(calc(var(--_rs-theme-light-coefficient, 1)*107 + var(--_rs-theme-dark-coefficient, 0)*132), calc(var(--_rs-theme-light-coefficient, 1)*87 + var(--_rs-theme-dark-coefficient, 0)*115), 255);
|
|
76
76
|
--_rs-color-primary-dim:rgb(calc(var(--_rs-theme-light-coefficient, 1)*137 + var(--_rs-theme-dark-coefficient, 0)*111), calc(var(--_rs-theme-light-coefficient, 1)*121 + var(--_rs-theme-dark-coefficient, 0)*97), calc(var(--_rs-theme-light-coefficient, 1)*255 + var(--_rs-theme-dark-coefficient, 0)*210));
|
|
77
77
|
--_rs-color-primary-fog:rgb(calc(var(--_rs-theme-light-coefficient, 1)*225 + var(--_rs-theme-dark-coefficient, 0)*46), calc(var(--_rs-theme-light-coefficient, 1)*221 + var(--_rs-theme-dark-coefficient, 0)*43), calc(var(--_rs-theme-light-coefficient, 1)*255 + var(--_rs-theme-dark-coefficient, 0)*73));
|
|
@@ -79,14 +79,14 @@
|
|
|
79
79
|
--_rs-color-primary-t-fog:rgba(calc(var(--_rs-theme-light-coefficient, 1)*107 + var(--_rs-theme-dark-coefficient, 0)*132), calc(var(--_rs-theme-light-coefficient, 1)*87 + var(--_rs-theme-dark-coefficient, 0)*115), 255, calc(var(--_rs-theme-light-coefficient, 1)*0.2 + var(--_rs-theme-dark-coefficient, 0)*0.3));
|
|
80
80
|
}
|
|
81
81
|
}
|
|
82
|
-
.
|
|
82
|
+
._dropdown_12nx94k_67 {
|
|
83
83
|
display:flex;
|
|
84
84
|
flex-direction:column;
|
|
85
85
|
}
|
|
86
|
-
.
|
|
86
|
+
._triggerWrapper_12nx94k_74{
|
|
87
87
|
display:inline-block;
|
|
88
88
|
}
|
|
89
|
-
.
|
|
89
|
+
._contentWrapper_12nx94k_78{
|
|
90
90
|
position:relative;
|
|
91
91
|
|
|
92
92
|
display:block;
|
|
@@ -100,40 +100,40 @@
|
|
|
100
100
|
|
|
101
101
|
transition:opacity linear 200ms, transform linear 200ms;
|
|
102
102
|
}
|
|
103
|
-
[data-popper-placement^="top" ] .
|
|
104
|
-
animation:
|
|
103
|
+
[data-popper-placement^="top" ] ._contentWrapper_12nx94k_78{
|
|
104
|
+
animation:_fadeInBottomToTop_12nx94k_1 ease 200ms;
|
|
105
105
|
}
|
|
106
|
-
[data-popper-placement^="bottom" ] .
|
|
107
|
-
animation:
|
|
106
|
+
[data-popper-placement^="bottom" ] ._contentWrapper_12nx94k_78{
|
|
107
|
+
animation:_fadeInTopToBottom_12nx94k_1 ease 200ms;
|
|
108
108
|
}
|
|
109
|
-
[data-popper-placement^="right"] .
|
|
110
|
-
animation:
|
|
109
|
+
[data-popper-placement^="right"] ._contentWrapper_12nx94k_78{
|
|
110
|
+
animation:_fadeInLeftToRight_12nx94k_1 ease 200ms;
|
|
111
111
|
}
|
|
112
|
-
[data-popper-placement^="left"] .
|
|
113
|
-
animation:
|
|
112
|
+
[data-popper-placement^="left"] ._contentWrapper_12nx94k_78{
|
|
113
|
+
animation:_fadeInRightToLeft_12nx94k_1 ease 200ms;
|
|
114
114
|
}
|
|
115
|
-
.
|
|
115
|
+
._wrapperHidden_12nx94k_109{
|
|
116
116
|
opacity:0;
|
|
117
117
|
}
|
|
118
|
-
[data-popper-placement^="top" ] .
|
|
118
|
+
[data-popper-placement^="top" ] ._wrapperHidden_12nx94k_109{
|
|
119
119
|
transform:translateY(10px);
|
|
120
120
|
}
|
|
121
|
-
[data-popper-placement^="bottom" ] .
|
|
121
|
+
[data-popper-placement^="bottom" ] ._wrapperHidden_12nx94k_109{
|
|
122
122
|
transform:translateY(-10px);
|
|
123
123
|
}
|
|
124
|
-
[data-popper-placement^="right"] .
|
|
124
|
+
[data-popper-placement^="right"] ._wrapperHidden_12nx94k_109{
|
|
125
125
|
transform:translateX(-10px);
|
|
126
126
|
}
|
|
127
|
-
[data-popper-placement^="left"] .
|
|
127
|
+
[data-popper-placement^="left"] ._wrapperHidden_12nx94k_109{
|
|
128
128
|
transform:translateX(10px);
|
|
129
129
|
}
|
|
130
|
-
.
|
|
130
|
+
._modeClassic_12nx94k_129 ._contentWrapper_12nx94k_78{
|
|
131
131
|
background-color:rgb(calc(255 - var(--_rs-theme-dark-coefficient, 0)*230), calc(255 - var(--_rs-theme-dark-coefficient, 0)*230), calc(255 - var(--_rs-theme-dark-coefficient, 0)*227));
|
|
132
132
|
}
|
|
133
|
-
.
|
|
133
|
+
._modeRock_12nx94k_133 ._contentWrapper_12nx94k_78{
|
|
134
134
|
background-color:rgb(calc(25 + var(--_rs-theme-dark-coefficient, 0)*230), calc(25 + var(--_rs-theme-dark-coefficient, 0)*230), calc(28 + var(--_rs-theme-dark-coefficient, 0)*227));
|
|
135
135
|
}
|
|
136
|
-
.
|
|
136
|
+
._modeRock_12nx94k_133{
|
|
137
137
|
--rs-parent-color-primary-light-theme:var(--rs-color-primary-light-theme);
|
|
138
138
|
--rs-parent-color-primary-dim-light-theme:var(--rs-color-primary-dim-light-theme);
|
|
139
139
|
--rs-parent-color-primary-fog-light-theme:var(--rs-color-primary-fog-light-theme);
|
|
@@ -146,7 +146,7 @@
|
|
|
146
146
|
--rs-parent-color-primary-t-dim-dark-theme:var(--rs-color-primary-t-dim-dark-theme);
|
|
147
147
|
--rs-parent-color-primary-t-fog-dark-theme:var(--rs-color-primary-t-fog-dark-theme);
|
|
148
148
|
}
|
|
149
|
-
.
|
|
149
|
+
._modeRock_12nx94k_133 > *{
|
|
150
150
|
--rs-color-primary-dark-theme:var(--rs-parent-color-primary-light-theme);
|
|
151
151
|
--rs-color-primary-dim-dark-theme:var(--rs-parent-color-primary-dim-light-theme);
|
|
152
152
|
--rs-color-primary-fog-dark-theme:var(--rs-parent-color-primary-fog-light-theme);
|
package/lib/index.d.ts
CHANGED
|
@@ -5,4 +5,4 @@
|
|
|
5
5
|
declare const DefaultDropdown: import("react").ForwardRefExoticComponent<import("./dropdown").DropdownProps & import("react").RefAttributes<import("./dropdown").DropdownImperativeHandle>>;
|
|
6
6
|
export default DefaultDropdown;
|
|
7
7
|
export { Dropdown } from './dropdown';
|
|
8
|
-
export type { DropdownProps } from './dropdown';
|
|
8
|
+
export type { DropdownProps, DropdownImperativeHandle } from './dropdown';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rescui/dropdown",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.7",
|
|
4
4
|
"description": "",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"author": "JetBrains",
|
|
@@ -39,5 +39,5 @@
|
|
|
39
39
|
"build": "rescui-scripts build"
|
|
40
40
|
},
|
|
41
41
|
"nx": {},
|
|
42
|
-
"gitHead": "
|
|
42
|
+
"gitHead": "fcf55336342c842c02c07a178e9bacb9a033ef83"
|
|
43
43
|
}
|