@seeqdev/qomponents 0.0.132 → 0.0.134

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 (156) hide show
  1. package/README.md +135 -135
  2. package/dist/Accordion/Accordion.js +8 -8
  3. package/dist/Accordion/Accordion.stories.js +114 -114
  4. package/dist/Accordion/Accordion.test.js +54 -54
  5. package/dist/Accordion/Accordion.types.js +1 -1
  6. package/dist/Accordion/index.js +1 -1
  7. package/dist/Alert/Alert.js +33 -33
  8. package/dist/Alert/Alert.stories.js +51 -51
  9. package/dist/Alert/Alert.test.js +50 -50
  10. package/dist/Alert/Alert.types.d.ts +1 -0
  11. package/dist/Alert/Alert.types.js +1 -1
  12. package/dist/Alert/index.js +1 -1
  13. package/dist/Button/Button.js +91 -91
  14. package/dist/Button/Button.stories.js +99 -99
  15. package/dist/Button/Button.test.js +48 -48
  16. package/dist/Button/Button.types.js +4 -4
  17. package/dist/Button/index.js +1 -1
  18. package/dist/ButtonGroup/ButtonGroup.js +32 -32
  19. package/dist/ButtonGroup/ButtonGroup.stories.js +384 -384
  20. package/dist/ButtonGroup/ButtonGroup.test.js +66 -66
  21. package/dist/ButtonGroup/ButtonGroup.types.d.ts +1 -0
  22. package/dist/ButtonGroup/ButtonGroup.types.js +1 -1
  23. package/dist/ButtonGroup/index.js +1 -1
  24. package/dist/ButtonWithDropdown/ButtonWithDropdown.js +59 -59
  25. package/dist/ButtonWithDropdown/ButtonWithDropdown.stories.js +142 -142
  26. package/dist/ButtonWithDropdown/ButtonWithDropdown.test.js +92 -92
  27. package/dist/ButtonWithDropdown/ButtonWithDropdown.types.d.ts +1 -0
  28. package/dist/ButtonWithDropdown/ButtonWithDropdown.types.js +1 -1
  29. package/dist/ButtonWithDropdown/index.js +1 -1
  30. package/dist/ButtonWithPopover/ButtonWithPopover.js +61 -61
  31. package/dist/ButtonWithPopover/ButtonWithPopover.stories.js +74 -74
  32. package/dist/ButtonWithPopover/ButtonWithPopover.test.js +81 -81
  33. package/dist/ButtonWithPopover/ButtonWithPopover.types.js +1 -1
  34. package/dist/ButtonWithPopover/index.js +1 -1
  35. package/dist/Carousel/Carousel.js +69 -66
  36. package/dist/Carousel/Carousel.js.map +1 -1
  37. package/dist/Carousel/Carousel.stories.js +114 -114
  38. package/dist/Carousel/Carousel.test.js +47 -47
  39. package/dist/Carousel/Carousel.types.d.ts +1 -0
  40. package/dist/Carousel/Carousel.types.js +1 -1
  41. package/dist/Carousel/index.js +1 -1
  42. package/dist/Checkbox/Checkbox.js +25 -25
  43. package/dist/Checkbox/Checkbox.stories.js +33 -33
  44. package/dist/Checkbox/Checkbox.test.js +93 -93
  45. package/dist/Checkbox/Checkbox.types.d.ts +1 -0
  46. package/dist/Checkbox/Checkbox.types.js +1 -1
  47. package/dist/Checkbox/index.js +1 -1
  48. package/dist/Collapse/Collapse.js +14 -17
  49. package/dist/Collapse/Collapse.js.map +1 -1
  50. package/dist/Collapse/Collapse.stories.js +36 -36
  51. package/dist/Collapse/Collapse.test.js +18 -18
  52. package/dist/Collapse/Collapse.types.d.ts +1 -0
  53. package/dist/Collapse/Collapse.types.js +1 -1
  54. package/dist/Collapse/index.js +1 -1
  55. package/dist/Icon/Icon.js +54 -54
  56. package/dist/Icon/Icon.stories.js +46 -46
  57. package/dist/Icon/Icon.test.js +54 -54
  58. package/dist/Icon/Icon.types.d.ts +1 -0
  59. package/dist/Icon/Icon.types.js +15 -15
  60. package/dist/Icon/index.js +1 -1
  61. package/dist/InputGroup/InputGroup.js +31 -31
  62. package/dist/InputGroup/InputGroup.stories.js +167 -167
  63. package/dist/InputGroup/InputGroup.test.js +42 -42
  64. package/dist/InputGroup/InputGroup.types.d.ts +1 -0
  65. package/dist/InputGroup/InputGroup.types.js +1 -1
  66. package/dist/InputGroup/index.js +1 -1
  67. package/dist/Modal/Modal.js +99 -99
  68. package/dist/Modal/Modal.js.map +1 -1
  69. package/dist/Modal/Modal.stories.js +126 -126
  70. package/dist/Modal/Modal.test.js +107 -107
  71. package/dist/Modal/Modal.types.js +1 -1
  72. package/dist/Modal/index.js +1 -1
  73. package/dist/ProgressBar/ProgressBar.js +49 -29
  74. package/dist/ProgressBar/ProgressBar.js.map +1 -1
  75. package/dist/ProgressBar/ProgressBar.stories.js +80 -72
  76. package/dist/ProgressBar/ProgressBar.stories.js.map +1 -1
  77. package/dist/ProgressBar/ProgressBar.test.js +43 -37
  78. package/dist/ProgressBar/ProgressBar.test.js.map +1 -1
  79. package/dist/ProgressBar/ProgressBar.types.d.ts +2 -0
  80. package/dist/ProgressBar/ProgressBar.types.js +1 -1
  81. package/dist/ProgressBar/index.js +1 -1
  82. package/dist/SeeqActionDropdown/SeeqActionDropdown.js +47 -47
  83. package/dist/SeeqActionDropdown/SeeqActionDropdown.stories.js +79 -79
  84. package/dist/SeeqActionDropdown/SeeqActionDropdown.test.js +72 -72
  85. package/dist/SeeqActionDropdown/SeeqActionDropdown.types.d.ts +1 -0
  86. package/dist/SeeqActionDropdown/SeeqActionDropdown.types.js +1 -1
  87. package/dist/SeeqActionDropdown/index.js +1 -1
  88. package/dist/SeeqActionDropdown/variants.js +22 -22
  89. package/dist/Select/Select.js +173 -173
  90. package/dist/Select/Select.stories.js +79 -79
  91. package/dist/Select/Select.test.js +181 -181
  92. package/dist/Select/Select.types.js +1 -1
  93. package/dist/Select/index.js +2 -2
  94. package/dist/Slider/Slider.js +12 -12
  95. package/dist/Slider/Slider.stories.js +57 -57
  96. package/dist/Slider/Slider.test.js +32 -32
  97. package/dist/Slider/Slider.types.d.ts +1 -0
  98. package/dist/Slider/Slider.types.js +1 -1
  99. package/dist/Slider/index.js +1 -1
  100. package/dist/Tabs/Tabs.js +21 -21
  101. package/dist/Tabs/Tabs.stories.js +90 -90
  102. package/dist/Tabs/Tabs.test.js +90 -90
  103. package/dist/Tabs/Tabs.types.d.ts +1 -0
  104. package/dist/Tabs/Tabs.types.js +1 -1
  105. package/dist/Tabs/index.js +1 -1
  106. package/dist/TextArea/TextArea.js +24 -24
  107. package/dist/TextArea/TextArea.stories.js +45 -45
  108. package/dist/TextArea/TextArea.test.js +67 -67
  109. package/dist/TextArea/TextArea.types.d.ts +1 -0
  110. package/dist/TextArea/TextArea.types.js +1 -1
  111. package/dist/TextArea/index.js +1 -1
  112. package/dist/TextField/TextField.js +78 -78
  113. package/dist/TextField/TextField.stories.js +69 -69
  114. package/dist/TextField/TextField.test.js +38 -38
  115. package/dist/TextField/TextField.types.d.ts +1 -0
  116. package/dist/TextField/TextField.types.js +1 -1
  117. package/dist/TextField/index.js +1 -1
  118. package/dist/ToolbarButton/ToolbarButton.js +74 -74
  119. package/dist/ToolbarButton/ToolbarButton.stories.js +93 -93
  120. package/dist/ToolbarButton/ToolbarButton.test.js +92 -92
  121. package/dist/ToolbarButton/ToolbarButton.types.js +1 -1
  122. package/dist/ToolbarButton/index.js +1 -1
  123. package/dist/Tooltip/QTip.stories.js +44 -44
  124. package/dist/Tooltip/QTip.types.js +1 -1
  125. package/dist/Tooltip/QTipPerformance.stories.js +29 -29
  126. package/dist/Tooltip/Qtip.js +167 -167
  127. package/dist/Tooltip/Tooltip.js +35 -35
  128. package/dist/Tooltip/Tooltip.stories.js +31 -31
  129. package/dist/Tooltip/Tooltip.types.d.ts +1 -0
  130. package/dist/Tooltip/Tooltip.types.js +2 -2
  131. package/dist/Tooltip/TooltipPerformance.stories.js +29 -29
  132. package/dist/Tooltip/index.js +2 -2
  133. package/dist/Tooltip/qTip.utilities.js +10 -10
  134. package/dist/example/.eslintrc.cjs +14 -14
  135. package/dist/example/README.md +33 -33
  136. package/dist/example/index.html +13 -13
  137. package/dist/example/package.json +30 -30
  138. package/dist/example/src/ComplexSelectExample.tsx +81 -81
  139. package/dist/example/src/Example.tsx +408 -408
  140. package/dist/example/src/index.css +102 -102
  141. package/dist/example/src/main.tsx +10 -10
  142. package/dist/example/src/vite-env.d.ts +1 -1
  143. package/dist/example/tsconfig.json +33 -33
  144. package/dist/example/tsconfig.node.json +12 -12
  145. package/dist/example/vite.config.ts +12 -12
  146. package/dist/index.esm.js +15266 -7869
  147. package/dist/index.esm.js.map +1 -1
  148. package/dist/index.js +15230 -7833
  149. package/dist/index.js.map +1 -1
  150. package/dist/styles.css +3714 -3709
  151. package/dist/types.js +1 -1
  152. package/dist/utils/browserId.js +28 -28
  153. package/dist/utils/svg.js +19 -19
  154. package/dist/utils/validateStyleDimension.js +13 -13
  155. package/dist/utils/validateStyleDimension.test.js +19 -19
  156. package/package.json +89 -86
@@ -1,93 +1,93 @@
1
- import React from 'react';
2
- import '@testing-library/jest-dom';
3
- import { render, screen } from '@testing-library/react';
4
- import userEvent from '@testing-library/user-event';
5
- import ButtonWithDropdown from './ButtonWithDropdown';
6
- import Icon from '../Icon';
7
- describe('ButtonWithDropdown', () => {
8
- const mockOnClick = jest.fn();
9
- const testId = 'trigger-icon';
10
- const tooltip = 'This is a small dropdown.';
11
- const itemTooltip = 'This is an item from the dropdown.';
12
- class Context {
13
- props = {
14
- triggerIcon: (React.createElement(Icon, { icon: "fc-more", type: "text", testId: testId, extraClassNames: "tw-text-sq-text-color dark:tw-text-sq-white tw-w-[18px]" })),
15
- containerTestId: 'basic-dropdown1',
16
- tooltip,
17
- tooltipDelay: 0,
18
- tooltipPlacement: 'top',
19
- isHtmlTooltip: false,
20
- dropdownItems: [
21
- { label: 'Orange', icon: 'fc-data-file', onClick: mockOnClick },
22
- { label: 'Mango', icon: 'fc-user-community', onClick: mockOnClick },
23
- { label: 'Guava', icon: 'fc-user-community', onClick: mockOnClick },
24
- {
25
- label: 'Banana',
26
- icon: 'fc-user-community',
27
- onClick: mockOnClick,
28
- tooltip: itemTooltip,
29
- tooltipPlacement: 'top',
30
- tooltipDelay: 0,
31
- isHtmlTooltip: false,
32
- },
33
- ],
34
- };
35
- }
36
- let tc;
37
- beforeEach(() => {
38
- tc = new Context();
39
- jest.clearAllMocks();
40
- });
41
- const renderButtonWithDropdown = (props) => render(React.createElement(ButtonWithDropdown, { ...props }));
42
- const openDropdown = async () => {
43
- const popover = screen.getByTestId(testId);
44
- await userEvent.click(popover);
45
- };
46
- test('renders trigger and opens dropdown content on trigger click', async () => {
47
- renderButtonWithDropdown(tc.props);
48
- expect(screen.getByTestId('trigger-icon')).toBeInTheDocument();
49
- await openDropdown();
50
- expect(screen.getByText('Orange')).toBeInTheDocument();
51
- });
52
- test('renders dividers correctly', async () => {
53
- tc.props.dropdownItems[1].hasDivider = true;
54
- renderButtonWithDropdown(tc.props);
55
- expect(screen.getByTestId('trigger-icon')).toBeInTheDocument();
56
- await openDropdown();
57
- expect(screen.getByText('Orange')).toBeInTheDocument();
58
- expect(screen.getByTestId('dropdown-divider-1')).toBeInTheDocument();
59
- });
60
- test('calls onClick handler when dropdown item is selected', async () => {
61
- renderButtonWithDropdown(tc.props);
62
- await openDropdown();
63
- const item1 = screen.getByText('Orange');
64
- await userEvent.click(item1);
65
- expect(mockOnClick).toHaveBeenCalledTimes(1);
66
- });
67
- test('closes dropdown when item is clicked', async () => {
68
- renderButtonWithDropdown(tc.props);
69
- await openDropdown();
70
- const item1 = screen.getByText('Orange');
71
- await userEvent.click(item1);
72
- expect(mockOnClick).toHaveBeenCalledTimes(1);
73
- expect(screen.queryByText('Orange')).not.toBeInTheDocument();
74
- });
75
- test('does not open when disabled', async () => {
76
- tc.props.disabled = true;
77
- renderButtonWithDropdown(tc.props);
78
- await openDropdown();
79
- expect(screen.queryByText('Orange')).not.toBeInTheDocument();
80
- });
81
- test('renders button tooltip correctly', async () => {
82
- renderButtonWithDropdown(tc.props);
83
- const tooltipText = document.querySelector(`[data-qtip-text="${tooltip}"]`);
84
- expect(tooltipText).toBeInTheDocument();
85
- });
86
- test('renders dropdown item tooltip correctly', async () => {
87
- renderButtonWithDropdown(tc.props);
88
- await openDropdown();
89
- const tooltipText = document.querySelector(`[data-qtip-text="${itemTooltip}"]`);
90
- expect(tooltipText).toBeInTheDocument();
91
- });
92
- });
1
+ import React from 'react';
2
+ import '@testing-library/jest-dom';
3
+ import { render, screen } from '@testing-library/react';
4
+ import userEvent from '@testing-library/user-event';
5
+ import ButtonWithDropdown from './ButtonWithDropdown';
6
+ import Icon from '../Icon';
7
+ describe('ButtonWithDropdown', () => {
8
+ const mockOnClick = jest.fn();
9
+ const testId = 'trigger-icon';
10
+ const tooltip = 'This is a small dropdown.';
11
+ const itemTooltip = 'This is an item from the dropdown.';
12
+ class Context {
13
+ props = {
14
+ triggerIcon: (React.createElement(Icon, { icon: "fc-more", type: "text", testId: testId, extraClassNames: "tw-text-sq-text-color dark:tw-text-sq-white tw-w-[18px]" })),
15
+ containerTestId: 'basic-dropdown1',
16
+ tooltip,
17
+ tooltipDelay: 0,
18
+ tooltipPlacement: 'top',
19
+ isHtmlTooltip: false,
20
+ dropdownItems: [
21
+ { label: 'Orange', icon: 'fc-data-file', onClick: mockOnClick },
22
+ { label: 'Mango', icon: 'fc-user-community', onClick: mockOnClick },
23
+ { label: 'Guava', icon: 'fc-user-community', onClick: mockOnClick },
24
+ {
25
+ label: 'Banana',
26
+ icon: 'fc-user-community',
27
+ onClick: mockOnClick,
28
+ tooltip: itemTooltip,
29
+ tooltipPlacement: 'top',
30
+ tooltipDelay: 0,
31
+ isHtmlTooltip: false,
32
+ },
33
+ ],
34
+ };
35
+ }
36
+ let tc;
37
+ beforeEach(() => {
38
+ tc = new Context();
39
+ jest.clearAllMocks();
40
+ });
41
+ const renderButtonWithDropdown = (props) => render(React.createElement(ButtonWithDropdown, { ...props }));
42
+ const openDropdown = async () => {
43
+ const popover = screen.getByTestId(testId);
44
+ await userEvent.click(popover);
45
+ };
46
+ test('renders trigger and opens dropdown content on trigger click', async () => {
47
+ renderButtonWithDropdown(tc.props);
48
+ expect(screen.getByTestId('trigger-icon')).toBeInTheDocument();
49
+ await openDropdown();
50
+ expect(screen.getByText('Orange')).toBeInTheDocument();
51
+ });
52
+ test('renders dividers correctly', async () => {
53
+ tc.props.dropdownItems[1].hasDivider = true;
54
+ renderButtonWithDropdown(tc.props);
55
+ expect(screen.getByTestId('trigger-icon')).toBeInTheDocument();
56
+ await openDropdown();
57
+ expect(screen.getByText('Orange')).toBeInTheDocument();
58
+ expect(screen.getByTestId('dropdown-divider-1')).toBeInTheDocument();
59
+ });
60
+ test('calls onClick handler when dropdown item is selected', async () => {
61
+ renderButtonWithDropdown(tc.props);
62
+ await openDropdown();
63
+ const item1 = screen.getByText('Orange');
64
+ await userEvent.click(item1);
65
+ expect(mockOnClick).toHaveBeenCalledTimes(1);
66
+ });
67
+ test('closes dropdown when item is clicked', async () => {
68
+ renderButtonWithDropdown(tc.props);
69
+ await openDropdown();
70
+ const item1 = screen.getByText('Orange');
71
+ await userEvent.click(item1);
72
+ expect(mockOnClick).toHaveBeenCalledTimes(1);
73
+ expect(screen.queryByText('Orange')).not.toBeInTheDocument();
74
+ });
75
+ test('does not open when disabled', async () => {
76
+ tc.props.disabled = true;
77
+ renderButtonWithDropdown(tc.props);
78
+ await openDropdown();
79
+ expect(screen.queryByText('Orange')).not.toBeInTheDocument();
80
+ });
81
+ test('renders button tooltip correctly', async () => {
82
+ renderButtonWithDropdown(tc.props);
83
+ const tooltipText = document.querySelector(`[data-qtip-text="${tooltip}"]`);
84
+ expect(tooltipText).toBeInTheDocument();
85
+ });
86
+ test('renders dropdown item tooltip correctly', async () => {
87
+ renderButtonWithDropdown(tc.props);
88
+ await openDropdown();
89
+ const tooltipText = document.querySelector(`[data-qtip-text="${itemTooltip}"]`);
90
+ expect(tooltipText).toBeInTheDocument();
91
+ });
92
+ });
93
93
  //# sourceMappingURL=ButtonWithDropdown.test.js.map
@@ -1,3 +1,4 @@
1
+ /// <reference types="react" />
1
2
  import { TooltipComponentProps } from '../Tooltip/Tooltip.types';
2
3
  interface DropdownSubItem {
3
4
  /** icon class to be used with the dropdown subitems - if available (i.e. 'fc-zoom') */
@@ -1,2 +1,2 @@
1
- export {};
1
+ export {};
2
2
  //# sourceMappingURL=ButtonWithDropdown.types.js.map
@@ -1,2 +1,2 @@
1
- export { default } from './ButtonWithDropdown';
1
+ export { default } from './ButtonWithDropdown';
2
2
  //# sourceMappingURL=index.js.map
@@ -1,62 +1,62 @@
1
- import * as React from 'react';
2
- import { useRef } from 'react';
3
- import * as PopoverPrimitive from '@radix-ui/react-popover';
4
- import { getQTipData } from '../Tooltip/qTip.utilities';
5
- const bgStyles = ['tw-bg-sq-white', 'dark:tw-bg-sq-dark-background'].join(' ');
6
- const borderStyles = [
7
- 'tw-border-solid',
8
- 'tw-border',
9
- 'tw-rounded-sm',
10
- 'tw-border-sq-disabled-gray',
11
- 'dark:tw-border-gray-500',
12
- ].join(' ');
13
- const disabledClasses = ['tw-opacity-50', 'tw-cursor-not-allowed'].join(' ');
14
- const ButtonWithPopover = ({ children, trigger, id, hasArrow, extraTriggerClassNames, extraPopoverClassNames, containerTestId, onInteractOutside, onPointerDownOutside, isTriggerAsChild = false, shouldTriggerFullWidth = false, disabled = false, align = 'end', alignOffset = -35, placement = 'bottom', placementOffset = 2, isHoverEnabled = false, hoverOpenDelay = 300, onOpenChange, isOpen, isCloseOnContentClick = false, isPortal = false, ...tooltipProps }) => {
15
- const tooltipData = getQTipData(tooltipProps);
16
- const timeout = useRef(null);
17
- const [isHoveredOpen, setIsHoveredOpen] = React.useState(false);
18
- const clearHoverTimeout = () => {
19
- if (timeout.current) {
20
- clearTimeout(timeout.current);
21
- timeout.current = null;
22
- }
23
- };
24
- const onHoverStart = () => {
25
- if (isHoverEnabled) {
26
- clearHoverTimeout();
27
- timeout.current = setTimeout(() => {
28
- setIsHoveredOpen(true);
29
- onOpenChange && onOpenChange(true);
30
- }, hoverOpenDelay);
31
- }
32
- };
33
- const onHoverEnd = () => {
34
- if (isHoverEnabled) {
35
- clearHoverTimeout();
36
- timeout.current = setTimeout(() => {
37
- setIsHoveredOpen(false);
38
- onOpenChange && onOpenChange(false);
39
- }, 200);
40
- }
41
- };
42
- React.useEffect(() => clearHoverTimeout, []);
43
- const renderContent = () => {
44
- return (React.createElement(PopoverPrimitive.Content, { sideOffset: placementOffset, align: align, side: placement, onInteractOutside: onInteractOutside, onPointerDownOutside: onPointerDownOutside, alignOffset: isHoverEnabled ? -10 : alignOffset, asChild: true, onClick: () => isCloseOnContentClick && onOpenChange && onOpenChange(false), className: "focus-visible:tw-outline-none tw-outline-none tw-w-full tw-h-full" },
45
- React.createElement("div", { "data-testid": containerTestId, className: `${bgStyles} ${borderStyles} tw-relative tw-z-[1200] tw-min-w-6 focus-visible:tw-outline-none tw-outline-none data-[state=open]:tw-animate-in data-[state=closed]:tw-animate-out
46
- data-[side=top]:tw-animate-slideDownAndFade data-[side=right]:tw-animate-slideLeftAndFade data-[side=bottom]:tw-animate-slideUpAndFade data-[side=left]:tw-animate-slideRightAndFade tw-text-sq-text-color
47
- ${extraPopoverClassNames || ''}` },
48
- hasArrow && (React.createElement(PopoverPrimitive.Arrow, { asChild: true },
49
- React.createElement("div", { className: "tw-fill-transparent tw-bg-white tw-w-[15px] tw-h-[15px] tw-mt-[-7px] tw-rotate-45 dark:tw-bg-sq-dark-background tw-border-b tw-border-r tw-border-sq-disabled-gray dark:tw-border-gray-500" }))),
50
- children)));
51
- };
52
- const renderPopover = (popoverOpenState) => {
53
- return (React.createElement(PopoverPrimitive.Root, { open: popoverOpenState, defaultOpen: false, onOpenChange: onOpenChange },
54
- trigger ? (React.createElement(PopoverPrimitive.Trigger, { id: id, asChild: isTriggerAsChild, className: `focus-visible:tw-outline-none tw-outline-none ${shouldTriggerFullWidth ? 'tw-w-full tw-h-full' : ''}`, disabled: disabled },
55
- React.createElement("div", { ...tooltipData, onMouseOver: onHoverStart, onMouseOut: onHoverEnd, className: `tw-bg-transparent focus-visible:tw-outline-none tw-outline-none ${disabled ? disabledClasses : ''} ${shouldTriggerFullWidth ? 'tw-flex tw-flex-col tw-items-center tw-justify-center' : 'tw-inline'} ${extraTriggerClassNames || ''}` }, trigger))) : (React.createElement(PopoverPrimitive.Trigger, { asChild: true },
56
- React.createElement("div", null))),
57
- isPortal ? React.createElement(PopoverPrimitive.Portal, null, renderContent()) : renderContent()));
58
- };
59
- return isHoverEnabled ? renderPopover(isHoveredOpen) : renderPopover(isOpen);
60
- };
61
- export default ButtonWithPopover;
1
+ import * as React from 'react';
2
+ import { useRef } from 'react';
3
+ import * as PopoverPrimitive from '@radix-ui/react-popover';
4
+ import { getQTipData } from '../Tooltip/qTip.utilities';
5
+ const bgStyles = ['tw-bg-sq-white', 'dark:tw-bg-sq-dark-background'].join(' ');
6
+ const borderStyles = [
7
+ 'tw-border-solid',
8
+ 'tw-border',
9
+ 'tw-rounded-sm',
10
+ 'tw-border-sq-disabled-gray',
11
+ 'dark:tw-border-gray-500',
12
+ ].join(' ');
13
+ const disabledClasses = ['tw-opacity-50', 'tw-cursor-not-allowed'].join(' ');
14
+ const ButtonWithPopover = ({ children, trigger, id, hasArrow, extraTriggerClassNames, extraPopoverClassNames, containerTestId, onInteractOutside, onPointerDownOutside, isTriggerAsChild = false, shouldTriggerFullWidth = false, disabled = false, align = 'end', alignOffset = -35, placement = 'bottom', placementOffset = 2, isHoverEnabled = false, hoverOpenDelay = 300, onOpenChange, isOpen, isCloseOnContentClick = false, isPortal = false, ...tooltipProps }) => {
15
+ const tooltipData = getQTipData(tooltipProps);
16
+ const timeout = useRef(null);
17
+ const [isHoveredOpen, setIsHoveredOpen] = React.useState(false);
18
+ const clearHoverTimeout = () => {
19
+ if (timeout.current) {
20
+ clearTimeout(timeout.current);
21
+ timeout.current = null;
22
+ }
23
+ };
24
+ const onHoverStart = () => {
25
+ if (isHoverEnabled) {
26
+ clearHoverTimeout();
27
+ timeout.current = setTimeout(() => {
28
+ setIsHoveredOpen(true);
29
+ onOpenChange && onOpenChange(true);
30
+ }, hoverOpenDelay);
31
+ }
32
+ };
33
+ const onHoverEnd = () => {
34
+ if (isHoverEnabled) {
35
+ clearHoverTimeout();
36
+ timeout.current = setTimeout(() => {
37
+ setIsHoveredOpen(false);
38
+ onOpenChange && onOpenChange(false);
39
+ }, 200);
40
+ }
41
+ };
42
+ React.useEffect(() => clearHoverTimeout, []);
43
+ const renderContent = () => {
44
+ return (React.createElement(PopoverPrimitive.Content, { sideOffset: placementOffset, align: align, side: placement, onInteractOutside: onInteractOutside, onPointerDownOutside: onPointerDownOutside, alignOffset: isHoverEnabled ? -10 : alignOffset, asChild: true, onClick: () => isCloseOnContentClick && onOpenChange && onOpenChange(false), className: "focus-visible:tw-outline-none tw-outline-none tw-w-full tw-h-full" },
45
+ React.createElement("div", { "data-testid": containerTestId, className: `${bgStyles} ${borderStyles} tw-relative tw-z-[1200] tw-min-w-6 focus-visible:tw-outline-none tw-outline-none data-[state=open]:tw-animate-in data-[state=closed]:tw-animate-out
46
+ data-[side=top]:tw-animate-slideDownAndFade data-[side=right]:tw-animate-slideLeftAndFade data-[side=bottom]:tw-animate-slideUpAndFade data-[side=left]:tw-animate-slideRightAndFade tw-text-sq-text-color
47
+ ${extraPopoverClassNames || ''}` },
48
+ hasArrow && (React.createElement(PopoverPrimitive.Arrow, { asChild: true },
49
+ React.createElement("div", { className: "tw-fill-transparent tw-bg-white tw-w-[15px] tw-h-[15px] tw-mt-[-7px] tw-rotate-45 dark:tw-bg-sq-dark-background tw-border-b tw-border-r tw-border-sq-disabled-gray dark:tw-border-gray-500" }))),
50
+ children)));
51
+ };
52
+ const renderPopover = (popoverOpenState) => {
53
+ return (React.createElement(PopoverPrimitive.Root, { open: popoverOpenState, defaultOpen: false, onOpenChange: onOpenChange },
54
+ trigger ? (React.createElement(PopoverPrimitive.Trigger, { id: id, asChild: isTriggerAsChild, className: `focus-visible:tw-outline-none tw-outline-none ${shouldTriggerFullWidth ? 'tw-w-full tw-h-full' : ''}`, disabled: disabled },
55
+ React.createElement("div", { ...tooltipData, onMouseOver: onHoverStart, onMouseOut: onHoverEnd, className: `tw-bg-transparent focus-visible:tw-outline-none tw-outline-none ${disabled ? disabledClasses : ''} ${shouldTriggerFullWidth ? 'tw-flex tw-flex-col tw-items-center tw-justify-center' : 'tw-inline'} ${extraTriggerClassNames || ''}` }, trigger))) : (React.createElement(PopoverPrimitive.Trigger, { asChild: true },
56
+ React.createElement("div", null))),
57
+ isPortal ? React.createElement(PopoverPrimitive.Portal, null, renderContent()) : renderContent()));
58
+ };
59
+ return isHoverEnabled ? renderPopover(isHoveredOpen) : renderPopover(isOpen);
60
+ };
61
+ export default ButtonWithPopover;
62
62
  //# sourceMappingURL=ButtonWithPopover.js.map
@@ -1,75 +1,75 @@
1
- import React from 'react';
2
- import ButtonWithPopover from './ButtonWithPopover';
3
- import Icon from '../Icon';
4
- import { QTip } from '../Tooltip/Qtip';
5
- export default {
6
- title: 'Button with Popover',
7
- };
8
- export const AllButtonWithPopoverVariants = () => {
9
- const options = ['Chocolate', 'Strawberry', 'Vanilla', 'Rocky Road', 'Crazy Cow', 'Almond Joy'];
10
- const renderFlavours = () => (React.createElement("div", { className: "tw-text-sm dark:tw-text-white tw-w-72 tw-p-4" },
11
- React.createElement("p", { className: "tw-font-bold" }, "Flavors"),
12
- React.createElement("div", { className: "tw-w-full tw-flex tw-flex-wrap tw-gap-1" }, options.map((option) => (React.createElement("div", { key: option, className: "tw-flex tw-items-center tw-px-2 tw-py-1 tw-mt-2 tw tw-rounded-full tw-border-sq-color-dark-dark tw-border" },
13
- React.createElement(Icon, { type: "color", color: "rgb(var(--sq-color-dark-dark))", icon: "fc-check", extraClassNames: "tw-mr-2" }),
14
- React.createElement("span", null, option)))))));
15
- const renderInputFields = () => {
16
- const [name, setName] = React.useState('');
17
- const [email, setEmail] = React.useState('');
18
- return (React.createElement("div", { className: "tw-w-72 tw-p-4" },
19
- React.createElement("div", { className: "tw-flex tw-flex-col tw-gap-2" },
20
- React.createElement("input", { type: "text", value: name, onChange: (e) => setName(e.target.value), placeholder: "Enter your name", className: "tw-p-2 tw-rounded tw-border tw-border-sq-color-dark-dark dark:tw-border-sq-dark-background tw-bg-transparent" }),
21
- React.createElement("input", { type: "text", value: email, onChange: (e) => setEmail(e.target.value), placeholder: "Enter your email", className: "tw-p-2 tw-rounded tw-border tw-border-sq-color-dark-dark dark:tw-border-sq-dark-background tw-bg-transparent" }),
22
- React.createElement("button", { className: "tw-p-2 tw-rounded tw-border tw-border-sq-color-dark-dark dark:tw-border-sq-dark-background tw-bg-transparent tw-text-sq-color" }, "Submit"))));
23
- };
24
- const [openPopver, setOpenPopover] = React.useState('');
25
- const iconRef = React.useRef(null);
26
- const allButtonWithPopovers = (isDark = false, topic) => (React.createElement("div", { className: isDark ? 'tw-dark tw-bg-sq-dark-background ' : '' },
27
- React.createElement("div", { className: "tw-p-5 " },
28
- React.createElement(ButtonWithPopover, { trigger: React.createElement(Icon, { type: "color", color: "rgb(var(--sq-color-dark-dark))", icon: "fc-more" }), containerTestId: `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-1`, tooltip: "This is a small popover.", tooltipDelay: 0, tooltipPlacement: "top", isHtmlTooltip: false }, renderFlavours())),
29
- React.createElement("div", { className: "tw-p-5 " },
30
- React.createElement(ButtonWithPopover, { trigger: React.createElement(Icon, { type: "color", color: "rgb(var(--sq-color-dark-dark))", icon: "fc-more" }), containerTestId: `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-2`, isOpen: openPopver === `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-2`, onOpenChange: (isOpen) => setOpenPopover(isOpen ? `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-2` : ''), tooltip: "This is a normal popover.", tooltipDelay: 0, tooltipPlacement: "top", isHtmlTooltip: false }, renderFlavours())),
31
- React.createElement("div", { className: "tw-p-5 " },
32
- React.createElement("p", { className: "dark:tw-text-sq-white tw-text-sm tw-mb-4" }, "Close popover on content click"),
33
- React.createElement(ButtonWithPopover, { trigger: React.createElement(Icon, { type: "color", color: "rgb(var(--sq-color-dark-dark))", icon: "fc-more" }), containerTestId: `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-3`, isOpen: openPopver === `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-3`, onOpenChange: (isOpen) => setOpenPopover(isOpen ? `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-3` : ''), tooltip: "This is a normal popover.", tooltipDelay: 0, tooltipPlacement: "top", isCloseOnContentClick: true, isHtmlTooltip: false }, renderFlavours())),
34
- React.createElement("div", { className: "tw-p-5 " },
35
- React.createElement(ButtonWithPopover, { trigger: React.createElement(Icon, { type: "color", color: "rgb(var(--sq-color-dark-dark))", icon: "fc-more" }), containerTestId: `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-4`, isOpen: openPopver === `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-4`, onOpenChange: (isOpen) => setOpenPopover(isOpen ? `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-4` : ''), tooltip: "This is a disabled popover.", tooltipDelay: 0, tooltipPlacement: "top", isHtmlTooltip: false, disabled: true }, renderFlavours())),
36
- React.createElement("div", { className: "tw-p-5 " },
37
- React.createElement("div", { className: "dark:tw-text-white tw-text-xs" }, "Popover with arrow"),
38
- React.createElement(ButtonWithPopover, { trigger: React.createElement(Icon, { type: "color", color: "rgb(var(--sq-color-dark-dark))", icon: "fc-more" }), containerTestId: `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-5`, isOpen: openPopver === `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-5`, onOpenChange: (isOpen) => setOpenPopover(isOpen ? `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-5` : ''), tooltip: "This is a normal popover with arrow.", tooltipDelay: 0, tooltipPlacement: "top", hasArrow: true, isHtmlTooltip: false }, renderFlavours())),
39
- React.createElement("div", { className: "tw-p-5 " },
40
- React.createElement("div", { className: "dark:tw-text-white tw-text-xs" }, "Popover aligned at center"),
41
- React.createElement(ButtonWithPopover, { trigger: React.createElement(Icon, { type: "color", color: "rgb(var(--sq-color-dark-dark))", icon: "fc-more" }), containerTestId: `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-6`, isOpen: openPopver === `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-6`, onOpenChange: (isOpen) => setOpenPopover(isOpen ? `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-6` : ''), tooltip: "This is a normal popover with arrow.", tooltipDelay: 0, tooltipPlacement: "top", align: "center", hasArrow: true, isHtmlTooltip: false }, renderFlavours())),
42
- React.createElement("div", { className: "tw-p-5 " },
43
- React.createElement("div", { className: "dark:tw-text-white tw-text-xs" }, "Popover aligned at start"),
44
- React.createElement(ButtonWithPopover, { trigger: React.createElement(Icon, { type: "color", color: "rgb(var(--sq-color-dark-dark))", icon: "fc-more" }), containerTestId: `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-7`, isOpen: openPopver === `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-7`, onOpenChange: (isOpen) => setOpenPopover(isOpen ? `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-7` : ''), tooltip: "This is a normal popover with arrow.", tooltipDelay: 0, align: "start", tooltipPlacement: "top", hasArrow: true, isHtmlTooltip: false }, renderFlavours())),
45
- React.createElement("div", { className: "tw-p-5 " },
46
- React.createElement("div", { className: "dark:tw-text-white tw-text-xs" }, "Popover triggered by hover"),
47
- React.createElement(ButtonWithPopover, { trigger: React.createElement(Icon, { type: "color", color: "rgb(var(--sq-color-dark-dark))", icon: "fc-more" }), containerTestId: `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-8`, isOpen: openPopver === `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-8`, onOpenChange: (isOpen) => setOpenPopover(isOpen ? `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-8` : ''), isHoverEnabled: true, align: "start", tooltipPlacement: "top", hasArrow: true, isHtmlTooltip: false }, renderFlavours())),
48
- React.createElement("div", { className: "tw-p-5 " },
49
- React.createElement(ButtonWithPopover, { trigger: React.createElement("div", { className: "dark:tw-text-white tw-text-xs" }, "Popover triggered by another element"), containerTestId: `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-9`, isOpen: openPopver === `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-9`, onInteractOutside: () => setOpenPopover(''), align: "start", tooltipPlacement: "top", hasArrow: true, isHtmlTooltip: false }, renderFlavours()),
50
- openPopver != `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-9` && (React.createElement("div", { ref: iconRef, onClick: () => {
51
- setOpenPopover(`basic-popover-${isDark ? 'dark' : 'light'}-${topic}-9`);
52
- } },
53
- React.createElement(Icon, { type: "text", icon: "fc-all-items" })))),
54
- React.createElement("div", { className: "tw-p-5 " },
55
- React.createElement("div", { className: "dark:tw-text-white tw-text-xs" }, "Popover with input fields"),
56
- React.createElement(ButtonWithPopover, { trigger: React.createElement(Icon, { type: "color", color: "rgb(var(--sq-color-dark-dark))", icon: "fc-more" }), containerTestId: `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-10`, isOpen: openPopver === `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-10`, onOpenChange: (isOpen) => setOpenPopover(isOpen ? `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-10` : ''), tooltip: "This is a normal popover with arrow.", tooltipDelay: 0, tooltipPlacement: "top", align: "center", hasArrow: true, isHtmlTooltip: false }, renderInputFields()))));
57
- const renderAllVariations = (color) => (React.createElement("div", { className: "tw-grid tw-grid-cols-2 tw-gap-4 tw-p-4" },
58
- allButtonWithPopovers(false, color),
59
- allButtonWithPopovers(true, color)));
60
- return (React.createElement("div", { className: "tw-grid tw-grid-cols-4 tw-gap-4" },
61
- React.createElement(QTip, null),
62
- React.createElement("div", { className: "color_topic" },
63
- React.createElement("b", null, "Topic Colors"),
64
- renderAllVariations('topic')),
65
- React.createElement("div", { className: "color_analysis" },
66
- React.createElement("b", null, "Analysis Colors"),
67
- renderAllVariations('analysis')),
68
- React.createElement("div", { className: "color_datalab" },
69
- React.createElement("b", null, "Datalab Colors"),
70
- renderAllVariations('datalab')),
71
- React.createElement("div", { className: "color_vantage" },
72
- React.createElement("b", null, "Vantage Colors"),
73
- renderAllVariations('vantage'))));
74
- };
1
+ import React from 'react';
2
+ import ButtonWithPopover from './ButtonWithPopover';
3
+ import Icon from '../Icon';
4
+ import { QTip } from '../Tooltip/Qtip';
5
+ export default {
6
+ title: 'Button with Popover',
7
+ };
8
+ export const AllButtonWithPopoverVariants = () => {
9
+ const options = ['Chocolate', 'Strawberry', 'Vanilla', 'Rocky Road', 'Crazy Cow', 'Almond Joy'];
10
+ const renderFlavours = () => (React.createElement("div", { className: "tw-text-sm dark:tw-text-white tw-w-72 tw-p-4" },
11
+ React.createElement("p", { className: "tw-font-bold" }, "Flavors"),
12
+ React.createElement("div", { className: "tw-w-full tw-flex tw-flex-wrap tw-gap-1" }, options.map((option) => (React.createElement("div", { key: option, className: "tw-flex tw-items-center tw-px-2 tw-py-1 tw-mt-2 tw tw-rounded-full tw-border-sq-color-dark-dark tw-border" },
13
+ React.createElement(Icon, { type: "color", color: "rgb(var(--sq-color-dark-dark))", icon: "fc-check", extraClassNames: "tw-mr-2" }),
14
+ React.createElement("span", null, option)))))));
15
+ const renderInputFields = () => {
16
+ const [name, setName] = React.useState('');
17
+ const [email, setEmail] = React.useState('');
18
+ return (React.createElement("div", { className: "tw-w-72 tw-p-4" },
19
+ React.createElement("div", { className: "tw-flex tw-flex-col tw-gap-2" },
20
+ React.createElement("input", { type: "text", value: name, onChange: (e) => setName(e.target.value), placeholder: "Enter your name", className: "tw-p-2 tw-rounded tw-border tw-border-sq-color-dark-dark dark:tw-border-sq-dark-background tw-bg-transparent" }),
21
+ React.createElement("input", { type: "text", value: email, onChange: (e) => setEmail(e.target.value), placeholder: "Enter your email", className: "tw-p-2 tw-rounded tw-border tw-border-sq-color-dark-dark dark:tw-border-sq-dark-background tw-bg-transparent" }),
22
+ React.createElement("button", { className: "tw-p-2 tw-rounded tw-border tw-border-sq-color-dark-dark dark:tw-border-sq-dark-background tw-bg-transparent tw-text-sq-color" }, "Submit"))));
23
+ };
24
+ const [openPopver, setOpenPopover] = React.useState('');
25
+ const iconRef = React.useRef(null);
26
+ const allButtonWithPopovers = (isDark = false, topic) => (React.createElement("div", { className: isDark ? 'tw-dark tw-bg-sq-dark-background ' : '' },
27
+ React.createElement("div", { className: "tw-p-5 " },
28
+ React.createElement(ButtonWithPopover, { trigger: React.createElement(Icon, { type: "color", color: "rgb(var(--sq-color-dark-dark))", icon: "fc-more" }), containerTestId: `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-1`, tooltip: "This is a small popover.", tooltipDelay: 0, tooltipPlacement: "top", isHtmlTooltip: false }, renderFlavours())),
29
+ React.createElement("div", { className: "tw-p-5 " },
30
+ React.createElement(ButtonWithPopover, { trigger: React.createElement(Icon, { type: "color", color: "rgb(var(--sq-color-dark-dark))", icon: "fc-more" }), containerTestId: `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-2`, isOpen: openPopver === `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-2`, onOpenChange: (isOpen) => setOpenPopover(isOpen ? `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-2` : ''), tooltip: "This is a normal popover.", tooltipDelay: 0, tooltipPlacement: "top", isHtmlTooltip: false }, renderFlavours())),
31
+ React.createElement("div", { className: "tw-p-5 " },
32
+ React.createElement("p", { className: "dark:tw-text-sq-white tw-text-sm tw-mb-4" }, "Close popover on content click"),
33
+ React.createElement(ButtonWithPopover, { trigger: React.createElement(Icon, { type: "color", color: "rgb(var(--sq-color-dark-dark))", icon: "fc-more" }), containerTestId: `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-3`, isOpen: openPopver === `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-3`, onOpenChange: (isOpen) => setOpenPopover(isOpen ? `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-3` : ''), tooltip: "This is a normal popover.", tooltipDelay: 0, tooltipPlacement: "top", isCloseOnContentClick: true, isHtmlTooltip: false }, renderFlavours())),
34
+ React.createElement("div", { className: "tw-p-5 " },
35
+ React.createElement(ButtonWithPopover, { trigger: React.createElement(Icon, { type: "color", color: "rgb(var(--sq-color-dark-dark))", icon: "fc-more" }), containerTestId: `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-4`, isOpen: openPopver === `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-4`, onOpenChange: (isOpen) => setOpenPopover(isOpen ? `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-4` : ''), tooltip: "This is a disabled popover.", tooltipDelay: 0, tooltipPlacement: "top", isHtmlTooltip: false, disabled: true }, renderFlavours())),
36
+ React.createElement("div", { className: "tw-p-5 " },
37
+ React.createElement("div", { className: "dark:tw-text-white tw-text-xs" }, "Popover with arrow"),
38
+ React.createElement(ButtonWithPopover, { trigger: React.createElement(Icon, { type: "color", color: "rgb(var(--sq-color-dark-dark))", icon: "fc-more" }), containerTestId: `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-5`, isOpen: openPopver === `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-5`, onOpenChange: (isOpen) => setOpenPopover(isOpen ? `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-5` : ''), tooltip: "This is a normal popover with arrow.", tooltipDelay: 0, tooltipPlacement: "top", hasArrow: true, isHtmlTooltip: false }, renderFlavours())),
39
+ React.createElement("div", { className: "tw-p-5 " },
40
+ React.createElement("div", { className: "dark:tw-text-white tw-text-xs" }, "Popover aligned at center"),
41
+ React.createElement(ButtonWithPopover, { trigger: React.createElement(Icon, { type: "color", color: "rgb(var(--sq-color-dark-dark))", icon: "fc-more" }), containerTestId: `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-6`, isOpen: openPopver === `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-6`, onOpenChange: (isOpen) => setOpenPopover(isOpen ? `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-6` : ''), tooltip: "This is a normal popover with arrow.", tooltipDelay: 0, tooltipPlacement: "top", align: "center", hasArrow: true, isHtmlTooltip: false }, renderFlavours())),
42
+ React.createElement("div", { className: "tw-p-5 " },
43
+ React.createElement("div", { className: "dark:tw-text-white tw-text-xs" }, "Popover aligned at start"),
44
+ React.createElement(ButtonWithPopover, { trigger: React.createElement(Icon, { type: "color", color: "rgb(var(--sq-color-dark-dark))", icon: "fc-more" }), containerTestId: `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-7`, isOpen: openPopver === `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-7`, onOpenChange: (isOpen) => setOpenPopover(isOpen ? `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-7` : ''), tooltip: "This is a normal popover with arrow.", tooltipDelay: 0, align: "start", tooltipPlacement: "top", hasArrow: true, isHtmlTooltip: false }, renderFlavours())),
45
+ React.createElement("div", { className: "tw-p-5 " },
46
+ React.createElement("div", { className: "dark:tw-text-white tw-text-xs" }, "Popover triggered by hover"),
47
+ React.createElement(ButtonWithPopover, { trigger: React.createElement(Icon, { type: "color", color: "rgb(var(--sq-color-dark-dark))", icon: "fc-more" }), containerTestId: `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-8`, isOpen: openPopver === `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-8`, onOpenChange: (isOpen) => setOpenPopover(isOpen ? `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-8` : ''), isHoverEnabled: true, align: "start", tooltipPlacement: "top", hasArrow: true, isHtmlTooltip: false }, renderFlavours())),
48
+ React.createElement("div", { className: "tw-p-5 " },
49
+ React.createElement(ButtonWithPopover, { trigger: React.createElement("div", { className: "dark:tw-text-white tw-text-xs" }, "Popover triggered by another element"), containerTestId: `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-9`, isOpen: openPopver === `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-9`, onInteractOutside: () => setOpenPopover(''), align: "start", tooltipPlacement: "top", hasArrow: true, isHtmlTooltip: false }, renderFlavours()),
50
+ openPopver != `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-9` && (React.createElement("div", { ref: iconRef, onClick: () => {
51
+ setOpenPopover(`basic-popover-${isDark ? 'dark' : 'light'}-${topic}-9`);
52
+ } },
53
+ React.createElement(Icon, { type: "text", icon: "fc-all-items" })))),
54
+ React.createElement("div", { className: "tw-p-5 " },
55
+ React.createElement("div", { className: "dark:tw-text-white tw-text-xs" }, "Popover with input fields"),
56
+ React.createElement(ButtonWithPopover, { trigger: React.createElement(Icon, { type: "color", color: "rgb(var(--sq-color-dark-dark))", icon: "fc-more" }), containerTestId: `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-10`, isOpen: openPopver === `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-10`, onOpenChange: (isOpen) => setOpenPopover(isOpen ? `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-10` : ''), tooltip: "This is a normal popover with arrow.", tooltipDelay: 0, tooltipPlacement: "top", align: "center", hasArrow: true, isHtmlTooltip: false }, renderInputFields()))));
57
+ const renderAllVariations = (color) => (React.createElement("div", { className: "tw-grid tw-grid-cols-2 tw-gap-4 tw-p-4" },
58
+ allButtonWithPopovers(false, color),
59
+ allButtonWithPopovers(true, color)));
60
+ return (React.createElement("div", { className: "tw-grid tw-grid-cols-4 tw-gap-4" },
61
+ React.createElement(QTip, null),
62
+ React.createElement("div", { className: "color_topic" },
63
+ React.createElement("b", null, "Topic Colors"),
64
+ renderAllVariations('topic')),
65
+ React.createElement("div", { className: "color_analysis" },
66
+ React.createElement("b", null, "Analysis Colors"),
67
+ renderAllVariations('analysis')),
68
+ React.createElement("div", { className: "color_datalab" },
69
+ React.createElement("b", null, "Datalab Colors"),
70
+ renderAllVariations('datalab')),
71
+ React.createElement("div", { className: "color_vantage" },
72
+ React.createElement("b", null, "Vantage Colors"),
73
+ renderAllVariations('vantage'))));
74
+ };
75
75
  //# sourceMappingURL=ButtonWithPopover.stories.js.map