@qoretechnologies/reqore 0.29.9 → 0.30.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.
Files changed (73) hide show
  1. package/__tests__/collection.test.tsx +1 -1
  2. package/__tests__/{control_group.text.tsx → control_group.test.tsx} +4 -2
  3. package/__tests__/panel.test.tsx +22 -24
  4. package/__tests__/tabs.test.tsx +32 -0
  5. package/dist/components/Button/index.d.ts.map +1 -1
  6. package/dist/components/Button/index.js +4 -1
  7. package/dist/components/Button/index.js.map +1 -1
  8. package/dist/components/Collection/index.d.ts.map +1 -1
  9. package/dist/components/Collection/index.js +14 -37
  10. package/dist/components/Collection/index.js.map +1 -1
  11. package/dist/components/Columns/column.d.ts.map +1 -1
  12. package/dist/components/Columns/column.js +1 -1
  13. package/dist/components/Columns/column.js.map +1 -1
  14. package/dist/components/ControlGroup/index.d.ts +5 -4
  15. package/dist/components/ControlGroup/index.d.ts.map +1 -1
  16. package/dist/components/ControlGroup/index.js +117 -24
  17. package/dist/components/ControlGroup/index.js.map +1 -1
  18. package/dist/components/Drawer/index.d.ts.map +1 -1
  19. package/dist/components/Drawer/index.js +6 -4
  20. package/dist/components/Drawer/index.js.map +1 -1
  21. package/dist/components/Effect/index.d.ts.map +1 -1
  22. package/dist/components/Effect/index.js +1 -1
  23. package/dist/components/Effect/index.js.map +1 -1
  24. package/dist/components/Input/index.js +2 -2
  25. package/dist/components/Input/index.js.map +1 -1
  26. package/dist/components/InternalPopover/index.d.ts.map +1 -1
  27. package/dist/components/InternalPopover/index.js +5 -3
  28. package/dist/components/InternalPopover/index.js.map +1 -1
  29. package/dist/components/MultiSelect/index.d.ts +1 -1
  30. package/dist/components/MultiSelect/index.d.ts.map +1 -1
  31. package/dist/components/MultiSelect/index.js +10 -10
  32. package/dist/components/MultiSelect/index.js.map +1 -1
  33. package/dist/components/Panel/index.d.ts +4 -1
  34. package/dist/components/Panel/index.d.ts.map +1 -1
  35. package/dist/components/Panel/index.js +39 -16
  36. package/dist/components/Panel/index.js.map +1 -1
  37. package/dist/components/Spacer/index.d.ts +2 -0
  38. package/dist/components/Spacer/index.d.ts.map +1 -1
  39. package/dist/components/Spacer/index.js +29 -7
  40. package/dist/components/Spacer/index.js.map +1 -1
  41. package/dist/components/Tabs/index.d.ts.map +1 -1
  42. package/dist/components/Tabs/index.js +2 -1
  43. package/dist/components/Tabs/index.js.map +1 -1
  44. package/dist/components/Tag/index.d.ts +2 -2
  45. package/dist/components/Tag/index.d.ts.map +1 -1
  46. package/dist/components/Tag/index.js +7 -1
  47. package/dist/components/Tag/index.js.map +1 -1
  48. package/dist/components/Tree/index.js +1 -1
  49. package/dist/components/Tree/index.js.map +1 -1
  50. package/dist/constants/animations.js +1 -1
  51. package/dist/containers/PopoverProvider.js +3 -3
  52. package/dist/containers/PopoverProvider.js.map +1 -1
  53. package/package.json +1 -1
  54. package/src/components/Button/index.tsx +1 -0
  55. package/src/components/Collection/index.tsx +14 -37
  56. package/src/components/Columns/column.tsx +1 -0
  57. package/src/components/ControlGroup/index.tsx +386 -232
  58. package/src/components/Drawer/index.tsx +6 -4
  59. package/src/components/Effect/index.tsx +1 -0
  60. package/src/components/Input/index.tsx +1 -1
  61. package/src/components/InternalPopover/index.tsx +127 -123
  62. package/src/components/MultiSelect/index.tsx +180 -188
  63. package/src/components/Panel/index.tsx +127 -42
  64. package/src/components/Spacer/index.tsx +63 -14
  65. package/src/components/Tabs/index.tsx +3 -2
  66. package/src/components/Tag/index.tsx +5 -1
  67. package/src/components/Tree/index.tsx +1 -1
  68. package/src/constants/animations.ts +1 -1
  69. package/src/containers/PopoverProvider.tsx +3 -3
  70. package/src/stories/ControlGroup/ControlGroup.stories.tsx +55 -5
  71. package/src/stories/Panel/Panel.stories.tsx +60 -17
  72. package/src/stories/Popover/Popover.stories.tsx +5 -5
  73. package/tests.json +1 -1
@@ -205,6 +205,7 @@ export const ReqoreDrawer = ({
205
205
  /* Adding a hide/show button to the drawer. */
206
206
  if (hidable) {
207
207
  actions.push({
208
+ responsive: false,
208
209
  icon: getHideShowIcon(position, _isHidden),
209
210
  onClick: () => {
210
211
  setIsHidden(!_isHidden);
@@ -219,6 +220,7 @@ export const ReqoreDrawer = ({
219
220
  /* Adding a close button to the drawer. */
220
221
  if (onClose) {
221
222
  actions.push({
223
+ responsive: false,
222
224
  icon: 'CloseLine',
223
225
  onClick: onClose,
224
226
  className: 'reqore-drawer-close-button',
@@ -269,21 +271,21 @@ export const ReqoreDrawer = ({
269
271
  }
270
272
  minHeight={
271
273
  layout === 'center'
272
- ? '140px'
274
+ ? '40px'
273
275
  : layout === 'horizontal'
274
276
  ? _isHidden
275
277
  ? 0
276
- : minSize || '140px'
278
+ : minSize || '40px'
277
279
  : undefined
278
280
  }
279
281
  maxWidth={layout === 'vertical' || layout === 'center' ? maxSize || '90vw' : undefined}
280
282
  minWidth={
281
283
  layout === 'center'
282
- ? '140px'
284
+ ? '40px'
283
285
  : layout === 'vertical'
284
286
  ? _isHidden
285
287
  ? 0
286
- : minSize || '140px'
288
+ : minSize || '40px'
287
289
  : undefined
288
290
  }
289
291
  as={StyledDrawerResizable}
@@ -269,6 +269,7 @@ export const StyledEffect = styled.span`
269
269
  white-space: nowrap;
270
270
  text-overflow: ellipsis;
271
271
  overflow: hidden;
272
+ min-width: 30px;
272
273
  `
273
274
  : undefined}
274
275
 
@@ -60,7 +60,7 @@ export interface IReqoreInputStyle extends IReqoreInputProps {
60
60
 
61
61
  export const StyledInputWrapper = styled.div<IReqoreInputStyle>`
62
62
  height: ${({ _size }) => SIZE_TO_PX[_size]}px;
63
- width: ${({ width }) => (width ? `${width}px` : 'auto')};
63
+ width: ${({ width, fluid, fixed }) => (width ? `${width}px` : fluid && !fixed ? '100%' : 'auto')};
64
64
  max-width: ${({ fluid, fixed }) => (fluid && !fixed ? '100%' : undefined)};
65
65
  min-width: 60px;
66
66
  flex: ${({ fluid, fixed }) => (fixed ? '0 auto' : fluid ? '1 auto' : '0 1 auto')};
@@ -1,6 +1,6 @@
1
1
  import { isString } from 'lodash';
2
2
  import { rgba } from 'polished';
3
- import React, { MutableRefObject, useContext, useEffect, useRef, useState } from 'react';
3
+ import React, { MutableRefObject, memo, useContext, useEffect, useRef, useState } from 'react';
4
4
  import { usePopper } from 'react-popper';
5
5
  import styled, { css } from 'styled-components';
6
6
  import { RADIUS_FROM_SIZE } from '../../constants/sizes';
@@ -139,134 +139,138 @@ const StyledPopoverContent = styled.div`
139
139
 
140
140
  export interface IReqoreInternalPopoverProps extends IPopoverData {}
141
141
 
142
- const InternalPopover: React.FC<IReqoreInternalPopoverProps> = ({
143
- targetElement,
144
- content,
145
- id,
146
- placement,
147
- noArrow,
148
- noWrapper,
149
- useTargetWidth,
150
- transparent,
151
- maxWidth,
152
- maxHeight,
153
- blur,
154
- intent,
155
- title,
156
- icon,
157
- minimal,
158
- flat = true,
159
- effect,
160
- }) => {
161
- const { removePopover, updatePopover, uiScale } = useContext(PopoverContext);
162
- const [popperElement, setPopperElement] = useState(null);
163
- const [arrowElement, setArrowElement] = useState(null);
164
- const popperRef: MutableRefObject<any> = useRef(null);
165
- const { styles, attributes } = usePopper(targetElement, popperElement, {
142
+ const InternalPopover: React.FC<IReqoreInternalPopoverProps> = memo(
143
+ ({
144
+ targetElement,
145
+ content,
146
+ id,
166
147
  placement,
167
- modifiers: [
168
- {
169
- name: 'offset',
170
- options: {
171
- offset: [0, noArrow ? 5 : 10],
148
+ noArrow,
149
+ noWrapper,
150
+ useTargetWidth,
151
+ transparent,
152
+ maxWidth,
153
+ maxHeight,
154
+ blur,
155
+ intent,
156
+ title,
157
+ icon,
158
+ minimal,
159
+ flat = true,
160
+ effect,
161
+ }) => {
162
+ const { removePopover, updatePopover, uiScale } = useContext(PopoverContext);
163
+ const [popperElement, setPopperElement] = useState(null);
164
+ const [arrowElement, setArrowElement] = useState(null);
165
+ const popperRef: MutableRefObject<any> = useRef(null);
166
+ const { styles, attributes } = usePopper(targetElement, popperElement, {
167
+ placement,
168
+ modifiers: [
169
+ {
170
+ name: 'offset',
171
+ options: {
172
+ offset: [0, noArrow ? 5 : 10],
173
+ },
172
174
  },
173
- },
174
- {
175
- name: 'arrow',
176
- options: {
177
- element: arrowElement,
175
+ {
176
+ name: 'arrow',
177
+ options: {
178
+ element: arrowElement,
179
+ },
178
180
  },
179
- },
180
- {
181
- name: 'hide',
182
- enabled: true,
183
- },
184
- ],
185
- });
186
-
187
- useEffect(() => {
188
- if (popperRef.current) {
189
- updatePopover?.(id, { popperRef });
190
- }
191
- }, [popperRef]);
181
+ {
182
+ name: 'hide',
183
+ enabled: true,
184
+ },
185
+ ],
186
+ });
192
187
 
193
- useEffect(() => {
194
- if (attributes.popper?.['data-popper-reference-hidden']) {
195
- removePopover?.(id);
196
- }
197
- }, [attributes.popper]);
188
+ useEffect(() => {
189
+ if (popperRef.current) {
190
+ updatePopover?.(id, { popperRef });
191
+ }
192
+ }, [popperRef]);
198
193
 
199
- /* Getting the x and y values from the transform property of the popper element. */
200
- const translateValues = styles.popper.transform
201
- ?.replace('translate3d(', '')
202
- .replace('translate(', '')
203
- .replace(')', '')
204
- .split(',')
205
- .map((axis) => {
206
- if (uiScale || uiScale === 0) {
207
- return parseInt(axis, 10) < 0 ? parseInt(axis, 10) * uiScale : parseInt(axis, 10) / uiScale;
194
+ useEffect(() => {
195
+ if (attributes.popper?.['data-popper-reference-hidden']) {
196
+ removePopover?.(id);
208
197
  }
209
- return parseInt(axis, 10);
210
- });
198
+ }, [attributes.popper]);
211
199
 
212
- return (
213
- <ReqoreThemeProvider>
214
- {blur > 0 ? <StyledBackdrop zIndex={999998} blur={blur} closable /> : null}
215
- <StyledPopoverWrapper
216
- maxWidth={maxWidth}
217
- maxHeight={maxHeight}
218
- transparent={transparent}
219
- effect={effect}
220
- isOpaque={!transparent && !minimal}
221
- intent={intent}
222
- flat={flat}
223
- noWrapper={noWrapper}
224
- dim={flat && !transparent && !effect && minimal}
225
- className='reqore-popover-content'
226
- ref={(el) => {
227
- setPopperElement(el);
228
- popperRef.current = el;
229
- }}
230
- style={{
231
- ...styles.popper,
232
- transform: `translate(${translateValues?.[0] || 0}px, ${translateValues?.[1] || 0}px)`,
233
- width: useTargetWidth && (targetElement?.getBoundingClientRect()?.width || undefined),
234
- }}
235
- {...attributes.popper}
236
- >
237
- {!noArrow && !transparent ? (
238
- <StyledPopoverArrow ref={setArrowElement} style={styles.arrow} data-popper-arrow />
239
- ) : null}
240
- <StyledPopoverContent>
241
- {!noWrapper || isString(content) ? (
242
- <ReqoreMessage
243
- opaque={!transparent && !minimal}
244
- className='reqore-popover-text'
245
- intent={intent}
246
- title={title}
247
- icon={icon}
248
- minimal={transparent}
249
- flat={flat || transparent}
250
- effect={effect}
251
- >
252
- {content}
253
- </ReqoreMessage>
254
- ) : (
255
- <>
256
- {React.Children.map(content, (child) =>
257
- child
258
- ? React.cloneElement(child, {
259
- _insidePopover: true,
260
- _popoverId: id,
261
- })
262
- : null
263
- )}
264
- </>
265
- )}
266
- </StyledPopoverContent>
267
- </StyledPopoverWrapper>
268
- </ReqoreThemeProvider>
269
- );
270
- };
200
+ /* Getting the x and y values from the transform property of the popper element. */
201
+ const translateValues = styles.popper.transform
202
+ ?.replace('translate3d(', '')
203
+ .replace('translate(', '')
204
+ .replace(')', '')
205
+ .split(',')
206
+ .map((axis) => {
207
+ if (uiScale || uiScale === 0) {
208
+ return parseInt(axis, 10) < 0
209
+ ? parseInt(axis, 10) * uiScale
210
+ : parseInt(axis, 10) / uiScale;
211
+ }
212
+ return parseInt(axis, 10);
213
+ });
214
+
215
+ return (
216
+ <ReqoreThemeProvider>
217
+ {blur > 0 ? <StyledBackdrop zIndex={999998} blur={blur} closable /> : null}
218
+ <StyledPopoverWrapper
219
+ maxWidth={maxWidth}
220
+ maxHeight={maxHeight}
221
+ transparent={transparent}
222
+ effect={effect}
223
+ isOpaque={!transparent && !minimal}
224
+ intent={intent}
225
+ flat={flat}
226
+ noWrapper={noWrapper}
227
+ dim={flat && !transparent && !effect && minimal}
228
+ className='reqore-popover-content'
229
+ ref={(el) => {
230
+ setPopperElement(el);
231
+ popperRef.current = el;
232
+ }}
233
+ style={{
234
+ ...styles.popper,
235
+ transform: `translate(${translateValues?.[0] || 0}px, ${translateValues?.[1] || 0}px)`,
236
+ width: useTargetWidth && (targetElement?.getBoundingClientRect()?.width || undefined),
237
+ }}
238
+ {...attributes.popper}
239
+ >
240
+ {!noArrow && !transparent ? (
241
+ <StyledPopoverArrow ref={setArrowElement} style={styles.arrow} data-popper-arrow />
242
+ ) : null}
243
+ <StyledPopoverContent>
244
+ {!noWrapper || isString(content) ? (
245
+ <ReqoreMessage
246
+ opaque={!transparent && !minimal}
247
+ className='reqore-popover-text'
248
+ intent={intent}
249
+ title={title}
250
+ icon={icon}
251
+ minimal={transparent}
252
+ flat={flat || transparent}
253
+ effect={effect}
254
+ >
255
+ {content}
256
+ </ReqoreMessage>
257
+ ) : (
258
+ <>
259
+ {React.Children.map(content, (child) =>
260
+ child
261
+ ? React.cloneElement(child, {
262
+ _insidePopover: true,
263
+ _popoverId: id,
264
+ })
265
+ : null
266
+ )}
267
+ </>
268
+ )}
269
+ </StyledPopoverContent>
270
+ </StyledPopoverWrapper>
271
+ </ReqoreThemeProvider>
272
+ );
273
+ }
274
+ );
271
275
 
272
276
  export default InternalPopover;