@scaleflex/ui-tw 0.0.152 → 0.0.154

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 (49) hide show
  1. package/button/button.types.d.ts +4 -4
  2. package/button/components/end-icon.js +3 -0
  3. package/button/components/start-icon.js +12 -6
  4. package/color-picker/color-picker.component.js +6 -3
  5. package/color-picker/color-picker.types.d.ts +4 -4
  6. package/combobox/combobox-multi-checkbox/combobox-multi-checkbox.component.js +8 -4
  7. package/combobox/combobox-multi-inline/combobox-multi-inline.component.js +6 -3
  8. package/combobox/combobox-multi-tag/combobox-multi-tag.component.js +1 -1
  9. package/combobox/combobox-single/combobox-single.component.js +3 -3
  10. package/combobox/combobox-users/combobox-users.component.js +9 -8
  11. package/combobox/combobox.component.js +22 -14
  12. package/combobox/combobox.types.d.ts +8 -8
  13. package/command/command.component.js +23 -12
  14. package/command/command.utils.d.ts +2 -2
  15. package/command/command.utils.js +1 -1
  16. package/dialog/dialog.component.d.ts +1 -1
  17. package/dialog/dialog.component.js +4 -2
  18. package/dialog/dialog.types.d.ts +2 -0
  19. package/dropdown-menu/dropdown-menu.component.d.ts +1 -1
  20. package/dropdown-menu/dropdown-menu.component.js +10 -4
  21. package/dropdown-menu/dropdown-menu.constants.d.ts +3 -3
  22. package/dropdown-menu/dropdown-menu.constants.js +1 -1
  23. package/form/components/form-checkbox-field.component.js +4 -2
  24. package/form/components/form-checkbox-group-field.component.js +7 -5
  25. package/form/components/form-field-group.component.js +7 -5
  26. package/form/components/form-radio-group-field.component.js +7 -5
  27. package/form/components/form-switch-field.component.js +6 -4
  28. package/form/form.types.d.ts +24 -24
  29. package/input-tags/input-tags.component.js +16 -19
  30. package/label/components/label-icon.js +8 -3
  31. package/label/label.types.d.ts +4 -4
  32. package/package.json +2 -2
  33. package/select/components/select-icon.js +3 -0
  34. package/select/components/selector.js +13 -9
  35. package/select/select.types.d.ts +5 -5
  36. package/textarea/components/textarea-with-actions.js +7 -5
  37. package/textarea/textarea.types.d.ts +2 -2
  38. package/tooltip/tooltip.component.js +3 -2
  39. package/tooltip/tooltip.types.d.ts +1 -1
  40. package/truncated-text/index.d.ts +2 -0
  41. package/truncated-text/index.js +1 -0
  42. package/truncated-text/truncated-text.component.d.ts +4 -0
  43. package/truncated-text/truncated-text.component.js +40 -0
  44. package/truncated-text/truncated-text.constants.d.ts +1 -0
  45. package/truncated-text/truncated-text.constants.js +1 -0
  46. package/truncated-text/truncated-text.types.d.ts +7 -0
  47. package/truncated-text/truncated-text.types.js +1 -0
  48. package/truncated-text/truncated-text.utils.d.ts +1 -0
  49. package/truncated-text/truncated-text.utils.js +4 -0
@@ -55,7 +55,9 @@ function TextareaWithActions(_ref) {
55
55
  }
56
56
  onBlur === null || onBlur === void 0 || onBlur(e);
57
57
  };
58
- var hasBottomArea = leftToolbar || rightToolbar || showCharCount;
58
+ var resolvedLeftToolbar = typeof leftToolbar === 'function' ? leftToolbar() : leftToolbar;
59
+ var resolvedRightToolbar = typeof rightToolbar === 'function' ? rightToolbar() : rightToolbar;
60
+ var hasBottomArea = resolvedLeftToolbar || resolvedRightToolbar || showCharCount;
59
61
  return /*#__PURE__*/React.createElement("div", {
60
62
  className: "relative"
61
63
  }, /*#__PURE__*/React.createElement(Textarea, _extends({}, textareaProps, {
@@ -73,12 +75,12 @@ function TextareaWithActions(_ref) {
73
75
  className: cn('bg-background absolute right-2.5 bottom-0.25 left-1.5', textareaBottomActionAreaPadding[size]),
74
76
  onClick: handleActionClick,
75
77
  tabIndex: -1
76
- }, leftToolbar && /*#__PURE__*/React.createElement("div", {
78
+ }, resolvedLeftToolbar && /*#__PURE__*/React.createElement("div", {
77
79
  className: "absolute bottom-1.5 left-0 flex items-center gap-0.5"
78
- }, leftToolbar), /*#__PURE__*/React.createElement("div", {
80
+ }, resolvedLeftToolbar), /*#__PURE__*/React.createElement("div", {
79
81
  className: "absolute right-0 bottom-1.5 flex items-center gap-0.5"
80
82
  }, showCharCount && /*#__PURE__*/React.createElement("span", {
81
- className: cn(textareaCharCountTextSizeOptions[size], rightToolbar && 'mr-1', charCountColorClass, disabled && 'opacity-50')
82
- }, currentLength, "/", maxCharCount), rightToolbar)));
83
+ className: cn(textareaCharCountTextSizeOptions[size], resolvedRightToolbar && 'mr-1', charCountColorClass, disabled && 'opacity-50')
84
+ }, currentLength, "/", maxCharCount), resolvedRightToolbar)));
83
85
  }
84
86
  export { TextareaWithActions };
@@ -8,8 +8,8 @@ export interface TextareaProps extends Omit<ComponentProps<'textarea'>, 'size'>
8
8
  maxCharCount?: number;
9
9
  }
10
10
  export interface TextareaWithActionsProps extends TextareaProps {
11
- leftToolbar?: ReactElement;
12
- rightToolbar?: ReactElement;
11
+ leftToolbar?: ReactElement | (() => ReactElement);
12
+ rightToolbar?: ReactElement | (() => ReactElement);
13
13
  }
14
14
  export interface RightToolbarButtonsProps {
15
15
  size?: FormSizeType;
@@ -64,7 +64,8 @@ function WithTooltip(_ref5) {
64
64
  delayDuration = _ref5.delayDuration,
65
65
  open = _ref5.open,
66
66
  otherProps = _objectWithoutProperties(_ref5, _excluded3);
67
- if (!content) return children;
67
+ var resolvedContent = typeof content === 'function' ? content() : content;
68
+ if (!resolvedContent) return children;
68
69
  return /*#__PURE__*/React.createElement(Tooltip, {
69
70
  open: open,
70
71
  delayDuration: delayDuration || 700
@@ -72,6 +73,6 @@ function WithTooltip(_ref5) {
72
73
  asChild: true
73
74
  }, children), /*#__PURE__*/React.createElement(TooltipContent, _extends({
74
75
  variant: variant
75
- }, otherProps), content));
76
+ }, otherProps), resolvedContent));
76
77
  }
77
78
  export { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider, WithTooltip };
@@ -5,7 +5,7 @@ export type TooltipVariantType = (typeof TooltipVariant)[keyof typeof TooltipVar
5
5
  export interface WithTooltipProps extends Omit<ComponentProps<typeof TooltipPrimitive.Content>, 'content'> {
6
6
  children: ReactElement;
7
7
  open?: boolean;
8
- content?: ReactElement | undefined | string;
8
+ content?: ReactElement | undefined | string | (() => ReactElement);
9
9
  variant?: TooltipVariantType;
10
10
  delayDuration?: number;
11
11
  }
@@ -0,0 +1,2 @@
1
+ export { TruncatedText } from './truncated-text.component';
2
+ export type { TruncatedTextProps } from './truncated-text.types';
@@ -0,0 +1 @@
1
+ export { TruncatedText } from './truncated-text.component';
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import type { TruncatedTextProps } from './truncated-text.types';
3
+ declare function TruncatedText({ children, className, tooltipSide }: TruncatedTextProps): React.JSX.Element;
4
+ export { TruncatedText };
@@ -0,0 +1,40 @@
1
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
+ import { WithTooltip } from '@scaleflex/ui-tw/tooltip';
3
+ import { cn } from '@scaleflex/ui-tw/utils/cn';
4
+ import React, { useEffect, useRef, useState } from 'react';
5
+ import { truncateTooltip } from './truncated-text.utils';
6
+ function TruncatedText(_ref) {
7
+ var children = _ref.children,
8
+ className = _ref.className,
9
+ _ref$tooltipSide = _ref.tooltipSide,
10
+ tooltipSide = _ref$tooltipSide === void 0 ? 'top' : _ref$tooltipSide;
11
+ var textRef = useRef(null);
12
+ var _useState = useState(false),
13
+ _useState2 = _slicedToArray(_useState, 2),
14
+ isTruncated = _useState2[0],
15
+ setIsTruncated = _useState2[1];
16
+ useEffect(function () {
17
+ var checkTruncation = function checkTruncation() {
18
+ var element = textRef.current;
19
+ if (element) {
20
+ setIsTruncated(element.scrollWidth > element.clientWidth);
21
+ }
22
+ };
23
+ checkTruncation();
24
+ var resizeObserver = new ResizeObserver(checkTruncation);
25
+ if (textRef.current) {
26
+ resizeObserver.observe(textRef.current);
27
+ }
28
+ return function () {
29
+ return resizeObserver.disconnect();
30
+ };
31
+ }, [children]);
32
+ return /*#__PURE__*/React.createElement(WithTooltip, {
33
+ side: tooltipSide,
34
+ content: isTruncated ? truncateTooltip(children) : undefined
35
+ }, /*#__PURE__*/React.createElement("span", {
36
+ ref: textRef,
37
+ className: cn('block min-w-0 truncate', className)
38
+ }, children));
39
+ }
40
+ export { TruncatedText };
@@ -0,0 +1 @@
1
+ export declare const TOOLTIP_MAX_LENGTH = 250;
@@ -0,0 +1 @@
1
+ export var TOOLTIP_MAX_LENGTH = 250;
@@ -0,0 +1,7 @@
1
+ import type * as TooltipPrimitive from '@radix-ui/react-tooltip';
2
+ import type { ComponentProps } from 'react';
3
+ export interface TruncatedTextProps {
4
+ children: string;
5
+ className?: string;
6
+ tooltipSide?: ComponentProps<typeof TooltipPrimitive.Content>['side'];
7
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export declare function truncateTooltip(text: string): string;
@@ -0,0 +1,4 @@
1
+ import { TOOLTIP_MAX_LENGTH } from './truncated-text.constants';
2
+ export function truncateTooltip(text) {
3
+ return text.length > TOOLTIP_MAX_LENGTH ? "".concat(text.slice(0, TOOLTIP_MAX_LENGTH), "\u2026") : text;
4
+ }