@rescui/dropdown 0.9.6 → 0.10.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/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(); // We set isOpen this way to avoid hydration issue due to
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": "_themeLight_19cuoka_60",
3
- "themeDark": "_themeDark_19cuoka_63",
4
- "dropdown": "_dropdown_19cuoka_67",
5
- "triggerWrapper": "_triggerWrapper_19cuoka_74",
6
- "contentWrapper": "_contentWrapper_19cuoka_78",
7
- "fadeInBottomToTop": "_fadeInBottomToTop_19cuoka_1",
8
- "fadeInTopToBottom": "_fadeInTopToBottom_19cuoka_1",
9
- "fadeInLeftToRight": "_fadeInLeftToRight_19cuoka_1",
10
- "fadeInRightToLeft": "_fadeInRightToLeft_19cuoka_1",
11
- "wrapperHidden": "_wrapperHidden_19cuoka_109",
12
- "modeClassic": "_modeClassic_19cuoka_129",
13
- "modeRock": "_modeRock_19cuoka_133"
2
+ "themeLight": "_themeLight_1rn0hhb_59",
3
+ "themeDark": "_themeDark_1rn0hhb_62",
4
+ "dropdown": "_dropdown_1rn0hhb_66",
5
+ "triggerWrapper": "_triggerWrapper_1rn0hhb_73",
6
+ "contentWrapper": "_contentWrapper_1rn0hhb_77",
7
+ "fadeInBottomToTop": "_fadeInBottomToTop_1rn0hhb_1",
8
+ "fadeInTopToBottom": "_fadeInTopToBottom_1rn0hhb_1",
9
+ "fadeInLeftToRight": "_fadeInLeftToRight_1rn0hhb_1",
10
+ "fadeInRightToLeft": "_fadeInRightToLeft_1rn0hhb_1",
11
+ "wrapperHidden": "_wrapperHidden_1rn0hhb_110",
12
+ "modeClassic": "_modeClassic_1rn0hhb_130",
13
+ "modeRock": "_modeRock_1rn0hhb_134"
14
14
  };
15
15
  export { styles as default };
package/lib/index.css CHANGED
@@ -1,4 +1,4 @@
1
- @keyframes _fadeInTopToBottom_19cuoka_1{
1
+ @keyframes _fadeInTopToBottom_1rn0hhb_1{
2
2
  0%{
3
3
  opacity:0;
4
4
 
@@ -10,7 +10,7 @@
10
10
  transform:none;
11
11
  }
12
12
  }
13
- @keyframes _fadeInBottomToTop_19cuoka_1{
13
+ @keyframes _fadeInBottomToTop_1rn0hhb_1{
14
14
  0%{
15
15
  opacity:0;
16
16
 
@@ -22,7 +22,7 @@
22
22
  transform:none;
23
23
  }
24
24
  }
25
- @keyframes _fadeInLeftToRight_19cuoka_1{
25
+ @keyframes _fadeInLeftToRight_1rn0hhb_1{
26
26
  0%{
27
27
  opacity:0;
28
28
 
@@ -34,7 +34,7 @@
34
34
  transform:none;
35
35
  }
36
36
  }
37
- @keyframes _fadeInRightToLeft_19cuoka_1{
37
+ @keyframes _fadeInRightToLeft_1rn0hhb_1{
38
38
  0%{
39
39
  opacity:0;
40
40
 
@@ -46,13 +46,13 @@
46
46
  transform:none;
47
47
  }
48
48
  }
49
- ._themeLight_19cuoka_60{
49
+ ._themeLight_1rn0hhb_59{
50
50
  --rs-theme-dark:0;
51
51
  }
52
- ._themeDark_19cuoka_63{
52
+ ._themeDark_1rn0hhb_62{
53
53
  --rs-theme-dark:1;
54
54
  }
55
- ._dropdown_19cuoka_67{
55
+ ._dropdown_1rn0hhb_66{
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
- ._dropdown_19cuoka_67{
65
+ ._dropdown_1rn0hhb_66{
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
- ._dropdown_19cuoka_67{
74
+ ._dropdown_1rn0hhb_66{
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
- ._dropdown_19cuoka_67 {
82
+ ._dropdown_1rn0hhb_66 {
83
83
  display:flex;
84
84
  flex-direction:column;
85
85
  }
86
- ._triggerWrapper_19cuoka_74{
86
+ ._triggerWrapper_1rn0hhb_73{
87
87
  display:inline-block;
88
88
  }
89
- ._contentWrapper_19cuoka_78{
89
+ ._contentWrapper_1rn0hhb_77{
90
90
  position:relative;
91
91
 
92
92
  display:block;
@@ -98,64 +98,96 @@
98
98
  background-clip:padding-box;
99
99
  box-shadow:0 0 0 1px rgb(calc(209 - var(--_rs-theme-dark-coefficient, 0)*138), calc(209 - var(--_rs-theme-dark-coefficient, 0)*138), calc(210 - var(--_rs-theme-dark-coefficient, 0)*137));
100
100
 
101
- transition:opacity linear 200ms, transform linear 200ms;
101
+ transition:opacity var(--rs-transition-function, linear) 200ms, transform var(--rs-transition-function, linear) 200ms;
102
102
  }
103
- [data-popper-placement^="top" ] ._contentWrapper_19cuoka_78{
104
- animation:_fadeInBottomToTop_19cuoka_1 ease 200ms;
103
+ [data-popper-placement^='top'] ._contentWrapper_1rn0hhb_77{
104
+ animation:_fadeInBottomToTop_1rn0hhb_1 var(--rs-transition-function, ease) 200ms;
105
105
  }
106
- [data-popper-placement^="bottom" ] ._contentWrapper_19cuoka_78{
107
- animation:_fadeInTopToBottom_19cuoka_1 ease 200ms;
106
+ [data-popper-placement^='bottom'] ._contentWrapper_1rn0hhb_77{
107
+ animation:_fadeInTopToBottom_1rn0hhb_1 var(--rs-transition-function, ease) 200ms;
108
108
  }
109
- [data-popper-placement^="right"] ._contentWrapper_19cuoka_78{
110
- animation:_fadeInLeftToRight_19cuoka_1 ease 200ms;
109
+ [data-popper-placement^='right'] ._contentWrapper_1rn0hhb_77{
110
+ animation:_fadeInLeftToRight_1rn0hhb_1 var(--rs-transition-function, ease) 200ms;
111
111
  }
112
- [data-popper-placement^="left"] ._contentWrapper_19cuoka_78{
113
- animation:_fadeInRightToLeft_19cuoka_1 ease 200ms;
112
+ [data-popper-placement^='left'] ._contentWrapper_1rn0hhb_77{
113
+ animation:_fadeInRightToLeft_1rn0hhb_1 var(--rs-transition-function, ease) 200ms;
114
114
  }
115
- ._wrapperHidden_19cuoka_109{
115
+ ._wrapperHidden_1rn0hhb_110{
116
116
  opacity:0;
117
117
  }
118
- [data-popper-placement^="top" ] ._wrapperHidden_19cuoka_109{
118
+ [data-popper-placement^='top'] ._wrapperHidden_1rn0hhb_110{
119
119
  transform:translateY(10px);
120
120
  }
121
- [data-popper-placement^="bottom" ] ._wrapperHidden_19cuoka_109{
121
+ [data-popper-placement^='bottom'] ._wrapperHidden_1rn0hhb_110{
122
122
  transform:translateY(-10px);
123
123
  }
124
- [data-popper-placement^="right"] ._wrapperHidden_19cuoka_109{
124
+ [data-popper-placement^='right'] ._wrapperHidden_1rn0hhb_110{
125
125
  transform:translateX(-10px);
126
126
  }
127
- [data-popper-placement^="left"] ._wrapperHidden_19cuoka_109{
127
+ [data-popper-placement^='left'] ._wrapperHidden_1rn0hhb_110{
128
128
  transform:translateX(10px);
129
129
  }
130
- ._modeClassic_19cuoka_129 ._contentWrapper_19cuoka_78{
130
+ ._modeClassic_1rn0hhb_130 ._contentWrapper_1rn0hhb_77{
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
- ._modeRock_19cuoka_133 ._contentWrapper_19cuoka_78{
133
+ ._modeRock_1rn0hhb_134 ._contentWrapper_1rn0hhb_77{
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
- ._modeRock_19cuoka_133{
136
+ ._modeRock_1rn0hhb_134{
137
137
  --rs-parent-color-primary-light-theme:var(--rs-color-primary-light-theme);
138
- --rs-parent-color-primary-dim-light-theme:var(--rs-color-primary-dim-light-theme);
139
- --rs-parent-color-primary-fog-light-theme:var(--rs-color-primary-fog-light-theme);
140
- --rs-parent-color-primary-t-dim-light-theme:var(--rs-color-primary-t-dim-light-theme);
141
- --rs-parent-color-primary-t-fog-light-theme:var(--rs-color-primary-t-fog-light-theme);
138
+ --rs-parent-color-primary-dim-light-theme:var(
139
+ --rs-color-primary-dim-light-theme
140
+ );
141
+ --rs-parent-color-primary-fog-light-theme:var(
142
+ --rs-color-primary-fog-light-theme
143
+ );
144
+ --rs-parent-color-primary-t-dim-light-theme:var(
145
+ --rs-color-primary-t-dim-light-theme
146
+ );
147
+ --rs-parent-color-primary-t-fog-light-theme:var(
148
+ --rs-color-primary-t-fog-light-theme
149
+ );
142
150
 
143
151
  --rs-parent-color-primary-dark-theme:var(--rs-color-primary-dark-theme);
144
- --rs-parent-color-primary-dim-dark-theme:var(--rs-color-primary-dim-dark-theme);
145
- --rs-parent-color-primary-fog-dark-theme:var(--rs-color-primary-fog-dark-theme);
146
- --rs-parent-color-primary-t-dim-dark-theme:var(--rs-color-primary-t-dim-dark-theme);
147
- --rs-parent-color-primary-t-fog-dark-theme:var(--rs-color-primary-t-fog-dark-theme);
152
+ --rs-parent-color-primary-dim-dark-theme:var(
153
+ --rs-color-primary-dim-dark-theme
154
+ );
155
+ --rs-parent-color-primary-fog-dark-theme:var(
156
+ --rs-color-primary-fog-dark-theme
157
+ );
158
+ --rs-parent-color-primary-t-dim-dark-theme:var(
159
+ --rs-color-primary-t-dim-dark-theme
160
+ );
161
+ --rs-parent-color-primary-t-fog-dark-theme:var(
162
+ --rs-color-primary-t-fog-dark-theme
163
+ );
148
164
  }
149
- ._modeRock_19cuoka_133 > *{
165
+ ._modeRock_1rn0hhb_134 > *{
150
166
  --rs-color-primary-dark-theme:var(--rs-parent-color-primary-light-theme);
151
- --rs-color-primary-dim-dark-theme:var(--rs-parent-color-primary-dim-light-theme);
152
- --rs-color-primary-fog-dark-theme:var(--rs-parent-color-primary-fog-light-theme);
153
- --rs-color-primary-t-dim-dark-theme:var(--rs-parent-color-primary-t-dim-light-theme);
154
- --rs-color-primary-t-fog-dark-theme:var(--rs-parent-color-primary-t-fog-light-theme);
167
+ --rs-color-primary-dim-dark-theme:var(
168
+ --rs-parent-color-primary-dim-light-theme
169
+ );
170
+ --rs-color-primary-fog-dark-theme:var(
171
+ --rs-parent-color-primary-fog-light-theme
172
+ );
173
+ --rs-color-primary-t-dim-dark-theme:var(
174
+ --rs-parent-color-primary-t-dim-light-theme
175
+ );
176
+ --rs-color-primary-t-fog-dark-theme:var(
177
+ --rs-parent-color-primary-t-fog-light-theme
178
+ );
155
179
 
156
180
  --rs-color-primary-light-theme:var(--rs-parent-color-primary-dark-theme);
157
- --rs-color-primary-dim-light-theme:var(--rs-parent-color-primary-dim-dark-theme);
158
- --rs-color-primary-fog-light-theme:var(--rs-parent-color-primary-fog-dark-theme);
159
- --rs-color-primary-t-dim-light-theme:var(--rs-parent-color-primary-t-dim-dark-theme);
160
- --rs-color-primary-t-fog-light-theme:var(--rs-parent-color-primary-t-fog-dark-theme);
181
+ --rs-color-primary-dim-light-theme:var(
182
+ --rs-parent-color-primary-dim-dark-theme
183
+ );
184
+ --rs-color-primary-fog-light-theme:var(
185
+ --rs-parent-color-primary-fog-dark-theme
186
+ );
187
+ --rs-color-primary-t-dim-light-theme:var(
188
+ --rs-parent-color-primary-t-dim-dark-theme
189
+ );
190
+ --rs-color-primary-t-fog-light-theme:var(
191
+ --rs-parent-color-primary-t-fog-dark-theme
192
+ );
161
193
  }
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.6",
3
+ "version": "0.10.0",
4
4
  "description": "",
5
5
  "license": "Apache-2.0",
6
6
  "author": "JetBrains",
@@ -30,14 +30,14 @@
30
30
  },
31
31
  "devDependencies": {
32
32
  "@rescui/colors": "^0.3.0",
33
- "@rescui/icons": "^1.7.5",
33
+ "@rescui/icons": "^1.7.6",
34
34
  "@rescui/scripts": "^0.5.1",
35
- "@rescui/typography": "^0.26.0",
35
+ "@rescui/typography": "^0.27.0",
36
36
  "@rescui/visual-regression": "^0.1.4"
37
37
  },
38
38
  "scripts": {
39
39
  "build": "rescui-scripts build"
40
40
  },
41
41
  "nx": {},
42
- "gitHead": "faa7a838502974c16bdf773ab001002d1b8dcca8"
42
+ "gitHead": "e9aedd97a4cc372540ec8d75dda4f122baacca10"
43
43
  }