@seeqdev/qomponents 0.0.141 → 0.0.143

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 (251) hide show
  1. package/dist/Accordion/Accordion.js +9 -0
  2. package/dist/Accordion/Accordion.js.map +1 -0
  3. package/dist/Accordion/Accordion.stories.js +115 -0
  4. package/dist/Accordion/Accordion.stories.js.map +1 -0
  5. package/dist/Accordion/Accordion.test.js +55 -0
  6. package/dist/Accordion/Accordion.test.js.map +1 -0
  7. package/dist/Accordion/Accordion.types.js +2 -0
  8. package/dist/Accordion/Accordion.types.js.map +1 -0
  9. package/dist/Accordion/index.js +2 -0
  10. package/dist/Accordion/index.js.map +1 -0
  11. package/dist/Alert/Alert.js +34 -0
  12. package/dist/Alert/Alert.js.map +1 -0
  13. package/dist/Alert/Alert.stories.js +52 -0
  14. package/dist/Alert/Alert.stories.js.map +1 -0
  15. package/dist/Alert/Alert.test.js +51 -0
  16. package/dist/Alert/Alert.test.js.map +1 -0
  17. package/dist/Alert/Alert.types.js +2 -0
  18. package/dist/Alert/Alert.types.js.map +1 -0
  19. package/dist/Alert/index.js +2 -0
  20. package/dist/Alert/index.js.map +1 -0
  21. package/dist/Button/Button.js +92 -0
  22. package/dist/Button/Button.js.map +1 -0
  23. package/dist/Button/Button.stories.js +100 -0
  24. package/dist/Button/Button.stories.js.map +1 -0
  25. package/dist/Button/Button.test.js +49 -0
  26. package/dist/Button/Button.test.js.map +1 -0
  27. package/dist/Button/Button.types.js +5 -0
  28. package/dist/Button/Button.types.js.map +1 -0
  29. package/dist/Button/index.js +2 -0
  30. package/dist/Button/index.js.map +1 -0
  31. package/dist/ButtonGroup/ButtonGroup.js +35 -0
  32. package/dist/ButtonGroup/ButtonGroup.js.map +1 -0
  33. package/dist/ButtonGroup/ButtonGroup.stories.js +385 -0
  34. package/dist/ButtonGroup/ButtonGroup.stories.js.map +1 -0
  35. package/dist/ButtonGroup/ButtonGroup.test.js +67 -0
  36. package/dist/ButtonGroup/ButtonGroup.test.js.map +1 -0
  37. package/dist/ButtonGroup/ButtonGroup.types.js +2 -0
  38. package/dist/ButtonGroup/ButtonGroup.types.js.map +1 -0
  39. package/dist/ButtonGroup/index.js +2 -0
  40. package/dist/ButtonGroup/index.js.map +1 -0
  41. package/dist/ButtonWithDropdown/ButtonWithDropdown.js +60 -0
  42. package/dist/ButtonWithDropdown/ButtonWithDropdown.js.map +1 -0
  43. package/dist/ButtonWithDropdown/ButtonWithDropdown.stories.js +143 -0
  44. package/dist/ButtonWithDropdown/ButtonWithDropdown.stories.js.map +1 -0
  45. package/dist/ButtonWithDropdown/ButtonWithDropdown.test.js +93 -0
  46. package/dist/ButtonWithDropdown/ButtonWithDropdown.test.js.map +1 -0
  47. package/dist/ButtonWithDropdown/ButtonWithDropdown.types.js +2 -0
  48. package/dist/ButtonWithDropdown/ButtonWithDropdown.types.js.map +1 -0
  49. package/dist/ButtonWithDropdown/index.js +2 -0
  50. package/dist/ButtonWithDropdown/index.js.map +1 -0
  51. package/dist/ButtonWithPopover/ButtonWithPopover.js +62 -0
  52. package/dist/ButtonWithPopover/ButtonWithPopover.js.map +1 -0
  53. package/dist/ButtonWithPopover/ButtonWithPopover.stories.js +75 -0
  54. package/dist/ButtonWithPopover/ButtonWithPopover.stories.js.map +1 -0
  55. package/dist/ButtonWithPopover/ButtonWithPopover.test.js +82 -0
  56. package/dist/ButtonWithPopover/ButtonWithPopover.test.js.map +1 -0
  57. package/dist/ButtonWithPopover/ButtonWithPopover.types.js +2 -0
  58. package/dist/ButtonWithPopover/ButtonWithPopover.types.js.map +1 -0
  59. package/dist/ButtonWithPopover/index.js +2 -0
  60. package/dist/ButtonWithPopover/index.js.map +1 -0
  61. package/dist/Carousel/Carousel.js +67 -0
  62. package/dist/Carousel/Carousel.js.map +1 -0
  63. package/dist/Carousel/Carousel.stories.js +115 -0
  64. package/dist/Carousel/Carousel.stories.js.map +1 -0
  65. package/dist/Carousel/Carousel.test.js +48 -0
  66. package/dist/Carousel/Carousel.test.js.map +1 -0
  67. package/dist/Carousel/Carousel.types.js +2 -0
  68. package/dist/Carousel/Carousel.types.js.map +1 -0
  69. package/dist/Carousel/index.js +2 -0
  70. package/dist/Carousel/index.js.map +1 -0
  71. package/dist/Checkbox/Checkbox.js +26 -0
  72. package/dist/Checkbox/Checkbox.js.map +1 -0
  73. package/dist/Checkbox/Checkbox.stories.js +34 -0
  74. package/dist/Checkbox/Checkbox.stories.js.map +1 -0
  75. package/dist/Checkbox/Checkbox.test.js +94 -0
  76. package/dist/Checkbox/Checkbox.test.js.map +1 -0
  77. package/dist/Checkbox/Checkbox.types.js +2 -0
  78. package/dist/Checkbox/Checkbox.types.js.map +1 -0
  79. package/dist/Checkbox/index.js +2 -0
  80. package/dist/Checkbox/index.js.map +1 -0
  81. package/dist/Collapse/Collapse.js +18 -0
  82. package/dist/Collapse/Collapse.js.map +1 -0
  83. package/dist/Collapse/Collapse.stories.js +37 -0
  84. package/dist/Collapse/Collapse.stories.js.map +1 -0
  85. package/dist/Collapse/Collapse.test.js +19 -0
  86. package/dist/Collapse/Collapse.test.js.map +1 -0
  87. package/dist/Collapse/Collapse.types.js +2 -0
  88. package/dist/Collapse/Collapse.types.js.map +1 -0
  89. package/dist/Collapse/index.js +2 -0
  90. package/dist/Collapse/index.js.map +1 -0
  91. package/dist/FontCustom.woff +0 -0
  92. package/dist/FontCustom.woff2 +0 -0
  93. package/dist/Icon/Icon.js +55 -0
  94. package/dist/Icon/Icon.js.map +1 -0
  95. package/dist/Icon/Icon.stories.js +47 -0
  96. package/dist/Icon/Icon.stories.js.map +1 -0
  97. package/dist/Icon/Icon.test.js +55 -0
  98. package/dist/Icon/Icon.test.js.map +1 -0
  99. package/dist/Icon/Icon.types.js +16 -0
  100. package/dist/Icon/Icon.types.js.map +1 -0
  101. package/dist/Icon/index.js +2 -0
  102. package/dist/Icon/index.js.map +1 -0
  103. package/dist/InputGroup/InputGroup.js +35 -0
  104. package/dist/InputGroup/InputGroup.js.map +1 -0
  105. package/dist/InputGroup/InputGroup.stories.js +176 -0
  106. package/dist/InputGroup/InputGroup.stories.js.map +1 -0
  107. package/dist/InputGroup/InputGroup.test.js +43 -0
  108. package/dist/InputGroup/InputGroup.test.js.map +1 -0
  109. package/dist/InputGroup/InputGroup.types.js +2 -0
  110. package/dist/InputGroup/InputGroup.types.js.map +1 -0
  111. package/dist/InputGroup/index.js +2 -0
  112. package/dist/InputGroup/index.js.map +1 -0
  113. package/dist/Modal/Modal.js +100 -0
  114. package/dist/Modal/Modal.js.map +1 -0
  115. package/dist/Modal/Modal.stories.js +127 -0
  116. package/dist/Modal/Modal.stories.js.map +1 -0
  117. package/dist/Modal/Modal.test.js +108 -0
  118. package/dist/Modal/Modal.test.js.map +1 -0
  119. package/dist/Modal/Modal.types.js +2 -0
  120. package/dist/Modal/Modal.types.js.map +1 -0
  121. package/dist/Modal/index.js +2 -0
  122. package/dist/Modal/index.js.map +1 -0
  123. package/dist/ProgressBar/ProgressBar.js +70 -0
  124. package/dist/ProgressBar/ProgressBar.js.map +1 -0
  125. package/dist/ProgressBar/ProgressBar.stories.js +83 -0
  126. package/dist/ProgressBar/ProgressBar.stories.js.map +1 -0
  127. package/dist/ProgressBar/ProgressBar.test.js +44 -0
  128. package/dist/ProgressBar/ProgressBar.test.js.map +1 -0
  129. package/dist/ProgressBar/ProgressBar.types.js +2 -0
  130. package/dist/ProgressBar/ProgressBar.types.js.map +1 -0
  131. package/dist/ProgressBar/index.js +2 -0
  132. package/dist/ProgressBar/index.js.map +1 -0
  133. package/dist/SeeqActionDropdown/SeeqActionDropdown.js +48 -0
  134. package/dist/SeeqActionDropdown/SeeqActionDropdown.js.map +1 -0
  135. package/dist/SeeqActionDropdown/SeeqActionDropdown.stories.js +87 -0
  136. package/dist/SeeqActionDropdown/SeeqActionDropdown.stories.js.map +1 -0
  137. package/dist/SeeqActionDropdown/SeeqActionDropdown.test.js +73 -0
  138. package/dist/SeeqActionDropdown/SeeqActionDropdown.test.js.map +1 -0
  139. package/dist/SeeqActionDropdown/SeeqActionDropdown.types.js +2 -0
  140. package/dist/SeeqActionDropdown/SeeqActionDropdown.types.js.map +1 -0
  141. package/dist/SeeqActionDropdown/index.js +2 -0
  142. package/dist/SeeqActionDropdown/index.js.map +1 -0
  143. package/dist/SeeqActionDropdown/variants.js +38 -0
  144. package/dist/SeeqActionDropdown/variants.js.map +1 -0
  145. package/dist/Select/Select.js +177 -0
  146. package/dist/Select/Select.js.map +1 -0
  147. package/dist/Select/Select.stories.js +80 -0
  148. package/dist/Select/Select.stories.js.map +1 -0
  149. package/dist/Select/Select.test.js +182 -0
  150. package/dist/Select/Select.test.js.map +1 -0
  151. package/dist/Select/Select.types.js +2 -0
  152. package/dist/Select/Select.types.js.map +1 -0
  153. package/dist/Select/index.js +3 -0
  154. package/dist/Select/index.js.map +1 -0
  155. package/dist/Slider/Slider.js +13 -0
  156. package/dist/Slider/Slider.js.map +1 -0
  157. package/dist/Slider/Slider.stories.js +58 -0
  158. package/dist/Slider/Slider.stories.js.map +1 -0
  159. package/dist/Slider/Slider.test.js +33 -0
  160. package/dist/Slider/Slider.test.js.map +1 -0
  161. package/dist/Slider/Slider.types.js +2 -0
  162. package/dist/Slider/Slider.types.js.map +1 -0
  163. package/dist/Slider/index.js +2 -0
  164. package/dist/Slider/index.js.map +1 -0
  165. package/dist/SvgIcon/SvgIcon.js +30 -0
  166. package/dist/SvgIcon/SvgIcon.js.map +1 -0
  167. package/dist/SvgIcon/SvgIcon.stories.js +42 -0
  168. package/dist/SvgIcon/SvgIcon.stories.js.map +1 -0
  169. package/dist/SvgIcon/SvgIcon.test.js +41 -0
  170. package/dist/SvgIcon/SvgIcon.test.js.map +1 -0
  171. package/dist/SvgIcon/SvgIcon.types.js +6 -0
  172. package/dist/SvgIcon/SvgIcon.types.js.map +1 -0
  173. package/dist/SvgIcon/index.js +2 -0
  174. package/dist/SvgIcon/index.js.map +1 -0
  175. package/dist/Tabs/Tabs.js +22 -0
  176. package/dist/Tabs/Tabs.js.map +1 -0
  177. package/dist/Tabs/Tabs.stories.js +91 -0
  178. package/dist/Tabs/Tabs.stories.js.map +1 -0
  179. package/dist/Tabs/Tabs.test.js +91 -0
  180. package/dist/Tabs/Tabs.test.js.map +1 -0
  181. package/dist/Tabs/Tabs.types.js +2 -0
  182. package/dist/Tabs/Tabs.types.js.map +1 -0
  183. package/dist/Tabs/index.js +2 -0
  184. package/dist/Tabs/index.js.map +1 -0
  185. package/dist/TextArea/TextArea.js +25 -0
  186. package/dist/TextArea/TextArea.js.map +1 -0
  187. package/dist/TextArea/TextArea.stories.js +46 -0
  188. package/dist/TextArea/TextArea.stories.js.map +1 -0
  189. package/dist/TextArea/TextArea.test.js +68 -0
  190. package/dist/TextArea/TextArea.test.js.map +1 -0
  191. package/dist/TextArea/TextArea.types.js +2 -0
  192. package/dist/TextArea/TextArea.types.js.map +1 -0
  193. package/dist/TextArea/index.js +2 -0
  194. package/dist/TextArea/index.js.map +1 -0
  195. package/dist/TextField/TextField.js +79 -0
  196. package/dist/TextField/TextField.js.map +1 -0
  197. package/dist/TextField/TextField.stories.js +70 -0
  198. package/dist/TextField/TextField.stories.js.map +1 -0
  199. package/dist/TextField/TextField.test.js +39 -0
  200. package/dist/TextField/TextField.test.js.map +1 -0
  201. package/dist/TextField/TextField.types.js +2 -0
  202. package/dist/TextField/TextField.types.js.map +1 -0
  203. package/dist/TextField/index.js +2 -0
  204. package/dist/TextField/index.js.map +1 -0
  205. package/dist/ToolbarButton/ToolbarButton.js +69 -0
  206. package/dist/ToolbarButton/ToolbarButton.js.map +1 -0
  207. package/dist/ToolbarButton/ToolbarButton.stories.js +97 -0
  208. package/dist/ToolbarButton/ToolbarButton.stories.js.map +1 -0
  209. package/dist/ToolbarButton/ToolbarButton.test.js +93 -0
  210. package/dist/ToolbarButton/ToolbarButton.test.js.map +1 -0
  211. package/dist/ToolbarButton/ToolbarButton.types.d.ts +1 -0
  212. package/dist/ToolbarButton/ToolbarButton.types.js +2 -0
  213. package/dist/ToolbarButton/ToolbarButton.types.js.map +1 -0
  214. package/dist/ToolbarButton/index.js +2 -0
  215. package/dist/ToolbarButton/index.js.map +1 -0
  216. package/dist/Tooltip/QTip.stories.js +45 -0
  217. package/dist/Tooltip/QTip.stories.js.map +1 -0
  218. package/dist/Tooltip/QTip.types.js +2 -0
  219. package/dist/Tooltip/QTip.types.js.map +1 -0
  220. package/dist/Tooltip/QTipPerformance.stories.js +30 -0
  221. package/dist/Tooltip/QTipPerformance.stories.js.map +1 -0
  222. package/dist/Tooltip/Qtip.js +168 -0
  223. package/dist/Tooltip/Qtip.js.map +1 -0
  224. package/dist/Tooltip/Tooltip.js +36 -0
  225. package/dist/Tooltip/Tooltip.js.map +1 -0
  226. package/dist/Tooltip/Tooltip.stories.js +32 -0
  227. package/dist/Tooltip/Tooltip.stories.js.map +1 -0
  228. package/dist/Tooltip/Tooltip.types.js +3 -0
  229. package/dist/Tooltip/Tooltip.types.js.map +1 -0
  230. package/dist/Tooltip/TooltipPerformance.stories.js +30 -0
  231. package/dist/Tooltip/TooltipPerformance.stories.js.map +1 -0
  232. package/dist/Tooltip/index.js +3 -0
  233. package/dist/Tooltip/index.js.map +1 -0
  234. package/dist/Tooltip/qTip.utilities.js +11 -0
  235. package/dist/Tooltip/qTip.utilities.js.map +1 -0
  236. package/dist/index.esm.js +30 -31
  237. package/dist/index.esm.js.map +1 -1
  238. package/dist/index.js +30 -31
  239. package/dist/index.js.map +1 -1
  240. package/dist/styles.css +47 -35
  241. package/dist/types.js +2 -0
  242. package/dist/types.js.map +1 -0
  243. package/dist/utils/browserId.js +29 -0
  244. package/dist/utils/browserId.js.map +1 -0
  245. package/dist/utils/svg.js +20 -0
  246. package/dist/utils/svg.js.map +1 -0
  247. package/dist/utils/validateStyleDimension.js +14 -0
  248. package/dist/utils/validateStyleDimension.js.map +1 -0
  249. package/dist/utils/validateStyleDimension.test.js +20 -0
  250. package/dist/utils/validateStyleDimension.test.js.map +1 -0
  251. package/package.json +1 -1
@@ -0,0 +1,168 @@
1
+ import DOMPurify from 'dompurify';
2
+ import React, { useEffect, useRef, useState } from 'react';
3
+ import { arrow, computePosition, offset } from '@floating-ui/dom';
4
+ import { useIntervalWhen } from 'rooks';
5
+ import { DEFAULT_TOOL_TIP_DELAY } from './Tooltip.types';
6
+ const getArrowStyle = (position, x, arrowWidth, tooltipHeight, tooltipWidth) => {
7
+ switch (position) {
8
+ case 'bottom':
9
+ return {
10
+ left: `${x}px`,
11
+ top: `${-arrowWidth}px`,
12
+ };
13
+ case 'left':
14
+ return {
15
+ left: `${tooltipWidth - arrowWidth}px`,
16
+ top: `${tooltipHeight / 2 - arrowWidth}px`,
17
+ };
18
+ case 'right':
19
+ return {
20
+ left: `${-arrowWidth}px`,
21
+ top: `${tooltipHeight / 2 - arrowWidth}px`,
22
+ };
23
+ default: // 'top':
24
+ return {
25
+ left: `${x}px`,
26
+ top: `${tooltipHeight - 10 + arrowWidth}px`,
27
+ };
28
+ }
29
+ };
30
+ const HTMLTip = ({ text }) => {
31
+ return React.createElement('div', {
32
+ dangerouslySetInnerHTML: { __html: DOMPurify.sanitize(text) },
33
+ });
34
+ };
35
+ /** Tooltips can cause SystemTests to be flaky, so we suppress them in Playwright and Protractor */
36
+ const suppressTooltip = () => {
37
+ return window.navigator.userAgent === 'Playwright' || window.navigator.userAgent.includes('Protractor');
38
+ };
39
+ /**
40
+ * QTip
41
+ *
42
+ * QTip is a Singleton Tooltip component that guarantees high-performance and reduces component wrappers!
43
+ *
44
+ * QTip is used by all qomponents that support the display of tooltips.
45
+ * If you want to add a Tooltip to your application you can do so by adding the following html data-attributes:
46
+ *
47
+ * 'data-qtip-text': the tooltip text to display; this can also be a string containing valid HTML
48
+ * 'data-qtip-placement': one of TooltipPosition (top, bottom, right, or left)
49
+ * 'data-qtip-is-html': set this to true if you provided a text that contains HTML,
50
+ * 'data-qtip-delay': this can be used to delay the showing of the tooltip. this should be a number representing
51
+ * the # of milliseconds you want to delay the tooltip for. If no delay is provided the DEFAULT_TOOL_TIP_DELAY is
52
+ * applied!
53
+ * 'data-qtip-testid': use this attribute to provide a value for a data-testid of your tooltip; this is useful
54
+ * for tests
55
+ *
56
+ * In order for QTip to be able to display Tooltips you must add the QTip component to your top-most component
57
+ * (often that's App or Application) - simply add:
58
+ *
59
+ * <QTip />
60
+ *
61
+ * and enjoy beautiful & performant tooltips!
62
+ */
63
+ export const QTip = () => {
64
+ const tooltipRef = useRef(null);
65
+ const tooltipTarget = useRef(null);
66
+ const tooltipArrowRef = useRef(null);
67
+ const [tooltipText, setTooltipText] = useState('');
68
+ const [tooltipTargetOriginalPosition, setTooltipTargetOriginalPosition] = useState(null);
69
+ const [show, setShow] = useState(false);
70
+ const [html, setHtml] = useState(false);
71
+ const [tooltipTestId, setTooltipTestId] = useState('');
72
+ const [overTooltip, setOverTooltip] = useState(false);
73
+ // Check every 300ms if the tooltip target position has changed and hide the tooltip if this happens.
74
+ useIntervalWhen(() => {
75
+ const currentPosition = tooltipTarget?.current?.getBoundingClientRect();
76
+ if (overTooltip) {
77
+ return;
78
+ }
79
+ if (tooltipTargetOriginalPosition?.y !== currentPosition?.y ||
80
+ tooltipTargetOriginalPosition?.x !== currentPosition?.x) {
81
+ setShow(false);
82
+ }
83
+ }, 300, show);
84
+ useEffect(() => {
85
+ !suppressTooltip() && document.body.addEventListener('mousemove', onMouseMove);
86
+ return () => {
87
+ !suppressTooltip() && document.removeEventListener('mousemove', onMouseMove);
88
+ };
89
+ }, []);
90
+ const ttTimeout = useRef();
91
+ const findTooltipData = (element) => {
92
+ // Traverse up to 8 levels to find the tooltip data
93
+ for (let i = 0; i < 8 && element; i++) {
94
+ if (!element) {
95
+ return null;
96
+ }
97
+ if (element?.dataset?.qtipText) {
98
+ return element.dataset;
99
+ }
100
+ element = element?.parentElement;
101
+ }
102
+ return null;
103
+ };
104
+ const onMouseMove = (e) => {
105
+ clearTimeout(ttTimeout.current);
106
+ // Find tooltip data on the current or parent elements
107
+ const target = e.target;
108
+ const dataset = findTooltipData(target);
109
+ if (!dataset) {
110
+ // No tooltip data found
111
+ tooltipTarget.current = null;
112
+ return;
113
+ }
114
+ tooltipTarget.current = target;
115
+ const text = dataset.qtipText;
116
+ if (text) {
117
+ const delay = parseInt(dataset.qtipDelay || `${DEFAULT_TOOL_TIP_DELAY}`, 10);
118
+ const placement = dataset.qtipPlacement || 'top';
119
+ const isHtml = dataset.qtipIsHtml === 'true';
120
+ const testId = dataset.qtipTestid;
121
+ // Debounced tooltip display
122
+ ttTimeout.current = setTimeout(() => {
123
+ makeTooltip(text, placement, isHtml, testId, delay);
124
+ }, delay);
125
+ }
126
+ };
127
+ const makeTooltip = (tooltipText, position = 'top', isHtml, dataTestId, delay) => {
128
+ if (tooltipText && tooltipTarget.current) {
129
+ setHtml(isHtml);
130
+ setTooltipText(tooltipText);
131
+ setTooltipTestId(dataTestId);
132
+ setTooltipTargetOriginalPosition(tooltipTarget.current.getBoundingClientRect());
133
+ const positionTooltip = () => {
134
+ if (tooltipRef.current && tooltipTarget.current) {
135
+ computePosition(tooltipTarget.current, tooltipRef.current, {
136
+ placement: position,
137
+ middleware: [offset(10), arrow({ element: tooltipArrowRef.current })],
138
+ }).then(({ x, y, middlewareData }) => {
139
+ Object.assign(tooltipRef.current?.style, {
140
+ left: `${x}px`,
141
+ top: `${y}px`,
142
+ });
143
+ if (middlewareData.arrow) {
144
+ const { x, y } = middlewareData.arrow;
145
+ const arrowWidth = tooltipArrowRef.current?.offsetHeight / 2;
146
+ const tooltipHeight = tooltipRef.current?.offsetHeight;
147
+ const tooltipWidth = tooltipRef.current?.offsetWidth;
148
+ const style = getArrowStyle(position, x || y, arrowWidth, tooltipHeight, tooltipWidth);
149
+ Object.assign(tooltipArrowRef.current.style, style);
150
+ }
151
+ setShow(true);
152
+ });
153
+ }
154
+ };
155
+ delay > 0
156
+ ? requestAnimationFrame(() => {
157
+ positionTooltip();
158
+ })
159
+ : positionTooltip();
160
+ }
161
+ };
162
+ return (React.createElement(React.Fragment, null,
163
+ React.createElement("div", { onMouseEnter: () => setOverTooltip(true), onMouseLeave: () => setOverTooltip(false), "data-testid": tooltipTestId, ref: tooltipRef, className: 'tw-absolute tw-rounded tw-bg-black tw-p-2 tw-text-xs tw-text-white tw-z-[9999] fade-in ' +
164
+ (show ? 'tw-visible' : 'tw-invisible tw-pointer-events-none') },
165
+ html ? React.createElement(HTMLTip, { text: tooltipText }) : tooltipText,
166
+ React.createElement("div", { className: "tw-absolute tw-w-[10px] tw-h-[10px] tw-rotate-45 tw-bg-black", ref: tooltipArrowRef }))));
167
+ };
168
+ //# sourceMappingURL=Qtip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Qtip.js","sourceRoot":"","sources":["../../src/Tooltip/Qtip.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import React from 'react';
2
+ import '../styles.css';
3
+ import { DEFAULT_TOOL_TIP_DELAY } from './Tooltip.types';
4
+ /**
5
+ * @deprecated
6
+ * Note: Tooltip has been replaced by QTip - a singleton JS tooltip that behaves well even with overflow settings :)
7
+ * See @QTip for more info!
8
+ *
9
+ * This component displays a Tooltip for the provided children. It is a CSS only tooltip that will not display
10
+ * correctly if a parent element has an overflow CSS property assigned. Please use QTip to ensure your tooltips
11
+ * display correctly.
12
+ */
13
+ export const Tooltip = ({ position = 'bottom', children, text, delay = DEFAULT_TOOL_TIP_DELAY, }) => {
14
+ const arrowBaseClasses = 'before:tw-content-[\'\'] before:tw-absolute before:tw-border-8';
15
+ const centerArrowVertically = 'before:tw-top-1/2 before:-tw-translate-y-1/2';
16
+ const centerArrowHorizontally = 'before:tw-left-1/2 before:-tw-translate-x-1/2';
17
+ const arrowRight = `${arrowBaseClasses} ${centerArrowVertically} before:tw-right-[100%] before:tw-border-y-transparent
18
+ before:tw-border-l-transparent before:tw-border-r-black`;
19
+ const arrowLeft = `${arrowBaseClasses} ${centerArrowVertically} before:tw-left-[100%] before:tw-border-y-transparent
20
+ before:tw-border-l-black before:tw-border-r-transparent`;
21
+ const arrowBottom = `${arrowBaseClasses} ${centerArrowHorizontally} before:-tw-top-4 before:tw-border-b-black
22
+ before:tw-border-r-transparent before:tw-border-l-transparent before:tw-border-t-transparent`;
23
+ const arrowTop = `${arrowBaseClasses} ${centerArrowHorizontally} before:-tw-bottom-4 before:tw-border-b-transparent
24
+ before:tw-border-t-black before:tw-border-l-transparent before:tw-border-r-transparent`;
25
+ const placements = {
26
+ top: `-tw-top-2 -tw-translate-y-full tw-left-1/2 -tw-translate-x-1/2 ${arrowTop}`,
27
+ left: `-tw-translate-x-full -tw-left-3 -tw-translate-y-1/2 tw-top-1/2 ${arrowLeft}`,
28
+ right: `tw-translate-x-full -tw-right-3 -tw-translate-y-1/2 tw-top-1/2 ${arrowRight}`,
29
+ bottom: `-tw-bottom-2 tw-translate-y-full tw-left-1/2 -tw-translate-x-1/2 ${arrowBottom}`,
30
+ };
31
+ return (React.createElement("div", { className: "tw-group tw-relative tw-inline-block" },
32
+ children,
33
+ React.createElement("div", { className: `tw-z-50 tw-whitespace-nowrap tw-hidden group-hover:tw-inline-block group-hover:tw-delay-[${delay}ms]
34
+ tw-absolute tw-opacity-0 group-hover:tw-opacity-100 tw-rounded tw-bg-black tw-p-2 tw-text-xs tw-text-white ${placements[position]}` }, text)));
35
+ };
36
+ //# sourceMappingURL=Tooltip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tooltip.js","sourceRoot":"","sources":["../../src/Tooltip/Tooltip.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,eAAe,CAAC;AACvB,OAAO,EAAE,sBAAsB,EAAgB,MAAM,iBAAiB,CAAC;AAEvE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,OAAO,GAA0C,CAAC,EAC7D,QAAQ,GAAG,QAAQ,EACnB,QAAQ,EACR,IAAI,EACJ,KAAK,GAAG,sBAAsB,GAC/B,EAAE,EAAE;IACH,MAAM,gBAAgB,GAAG,gEAAgE,CAAC;IAC1F,MAAM,qBAAqB,GAAG,8CAA8C,CAAC;IAC7E,MAAM,uBAAuB,GAAG,+CAA+C,CAAC;IAChF,MAAM,UAAU,GAAG,GAAG,gBAAgB,IAAI,qBAAqB;0DACP,CAAC;IAEzD,MAAM,SAAS,GAAG,GAAG,gBAAgB,IAAI,qBAAqB;2DACL,CAAC;IAE1D,MAAM,WAAW,GAAG,GAAG,gBAAgB,IAAI,uBAAuB;+FAC2B,CAAC;IAC9F,MAAM,QAAQ,GAAG,GAAG,gBAAgB,IAAI,uBAAuB;yFACwB,CAAC;IAExF,MAAM,UAAU,GAAG;QACjB,GAAG,EAAE,kEAAkE,QAAQ,EAAE;QACjF,IAAI,EAAE,kEAAkE,SAAS,EAAE;QACnF,KAAK,EAAE,kEAAkE,UAAU,EAAE;QACrF,MAAM,EAAE,oEAAoE,WAAW,EAAE;KAC1F,CAAC;IAEF,OAAO,CACL,6BAAK,SAAS,EAAC,sCAAsC;QAClD,QAAQ;QACT,6BACE,SAAS,EAAE,4FAA4F,KAAK;qHACC,UAAU,CAAC,QAAQ,CAAC,EAAE,IAClI,IAAI,CACD,CACF,CACP,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,32 @@
1
+ import React from 'react';
2
+ import { Tooltip } from './Tooltip';
3
+ import Icon from '../Icon';
4
+ import Button from '../Button';
5
+ import { tooltipPositions } from './Tooltip.types';
6
+ export default {
7
+ title: 'Tooltip',
8
+ };
9
+ export const AllTooltips = () => {
10
+ const renderButtonsWithTooltip = () => tooltipPositions.map((position) => (React.createElement("div", { key: `${position}_button` },
11
+ React.createElement(Tooltip, { text: `Tooltip on the ${position}`, position: position },
12
+ React.createElement(Button, { label: position })))));
13
+ const renderIconsWithHtmlTooltip = () => tooltipPositions.map((position) => (React.createElement("div", { key: `${position}_icon` },
14
+ React.createElement(Tooltip, { text: React.createElement("div", null,
15
+ React.createElement("h2", null, "Fancy Tooltip"),
16
+ " This is a special tooltip. Why?",
17
+ React.createElement("br", null),
18
+ "Because it supports ",
19
+ React.createElement("b", null, "HTML!")), position: position },
20
+ React.createElement(Icon, { icon: "fc-sun" })))));
21
+ const renderTextTooltipOnText = () => tooltipPositions.map((position) => (React.createElement("div", { key: `${position}_text` },
22
+ React.createElement(Tooltip, { text: "Helpful information provided here", position: position },
23
+ React.createElement("span", null,
24
+ "Hover for Tooltip (on the ",
25
+ position,
26
+ ")")))));
27
+ return (React.createElement("div", { className: "tw-grid tw-grid-cols-4 tw-gap-4 tw-text-center" },
28
+ renderButtonsWithTooltip(),
29
+ renderIconsWithHtmlTooltip(),
30
+ renderTextTooltipOnText()));
31
+ };
32
+ //# sourceMappingURL=Tooltip.stories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tooltip.stories.js","sourceRoot":"","sources":["../../src/Tooltip/Tooltip.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,IAAI,MAAM,SAAS,CAAC;AAC3B,OAAO,MAAM,MAAM,WAAW,CAAC;AAC/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEnD,eAAe;IACb,KAAK,EAAE,SAAS;CACjB,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,EAAE;IAC9B,MAAM,wBAAwB,GAAG,GAAG,EAAE,CACpC,gBAAgB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CACjC,6BAAK,GAAG,EAAE,GAAG,QAAQ,SAAS;QAC5B,oBAAC,OAAO,IAAC,IAAI,EAAE,kBAAkB,QAAQ,EAAE,EAAE,QAAQ,EAAE,QAAQ;YAC7D,oBAAC,MAAM,IAAC,KAAK,EAAE,QAAQ,GAAI,CACnB,CACN,CACP,CAAC,CAAC;IAEL,MAAM,0BAA0B,GAAG,GAAG,EAAE,CACtC,gBAAgB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CACjC,6BAAK,GAAG,EAAE,GAAG,QAAQ,OAAO;QAC1B,oBAAC,OAAO,IACN,IAAI,EACF;gBACE,gDAAsB;;gBACtB,+BAAM;;gBACc,uCAAY,CAC5B,EAER,QAAQ,EAAE,QAAQ;YAClB,oBAAC,IAAI,IAAC,IAAI,EAAC,QAAQ,GAAG,CACd,CACN,CACP,CAAC,CAAC;IAEL,MAAM,uBAAuB,GAAG,GAAG,EAAE,CACnC,gBAAgB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CACjC,6BAAK,GAAG,EAAE,GAAG,QAAQ,OAAO;QAC1B,oBAAC,OAAO,IAAC,IAAI,EAAC,mCAAmC,EAAC,QAAQ,EAAE,QAAQ;YAClE;;gBAAiC,QAAQ;oBAAS,CAC1C,CACN,CACP,CAAC,CAAC;IAEL,OAAO,CACL,6BAAK,SAAS,EAAC,gDAAgD;QAC5D,wBAAwB,EAAE;QAC1B,0BAA0B,EAAE;QAC5B,uBAAuB,EAAE,CACtB,CACP,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ export const DEFAULT_TOOL_TIP_DELAY = 500;
2
+ export const tooltipPositions = ['top', 'left', 'right', 'bottom'];
3
+ //# sourceMappingURL=Tooltip.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tooltip.types.js","sourceRoot":"","sources":["../../src/Tooltip/Tooltip.types.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,CAAC;AAC1C,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAU,CAAC"}
@@ -0,0 +1,30 @@
1
+ import React from 'react';
2
+ import { Tooltip } from './Tooltip';
3
+ import Icon from '../Icon';
4
+ export default {
5
+ title: 'Tooltip',
6
+ };
7
+ const renderManyTooltips = () => {
8
+ const colsCount = 100;
9
+ const rowCount = 100;
10
+ const rows = [];
11
+ const getCols = (rowId) => {
12
+ const cols = [];
13
+ for (let i = 0; i < colsCount; i++) {
14
+ cols.push(React.createElement("td", { key: 'col_' + i + '_row_' + rowId },
15
+ React.createElement(Tooltip, { text: `hello there ${i}` },
16
+ React.createElement(Icon, { icon: "fc-sun" }))));
17
+ }
18
+ return cols;
19
+ };
20
+ for (let i = 0; i < rowCount; i++) {
21
+ rows.push(React.createElement("tr", { key: 'row_' + i }, ...getCols(i)));
22
+ }
23
+ return (React.createElement("table", null,
24
+ React.createElement("tbody", null, rows.map((row) => row))));
25
+ };
26
+ export const TooltipPerformance = () => {
27
+ return (React.createElement(React.Fragment, null,
28
+ React.createElement("div", { className: "tw-grid tw-grid-cols-4 tw-gap-4 tw-text-center" }, renderManyTooltips())));
29
+ };
30
+ //# sourceMappingURL=TooltipPerformance.stories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TooltipPerformance.stories.js","sourceRoot":"","sources":["../../src/Tooltip/TooltipPerformance.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,IAAI,MAAM,SAAS,CAAC;AAE3B,eAAe;IACb,KAAK,EAAE,SAAS;CACjB,CAAC;AAEF,MAAM,kBAAkB,GAAG,GAAG,EAAE;IAC9B,MAAM,SAAS,GAAG,GAAG,CAAC;IACtB,MAAM,QAAQ,GAAG,GAAG,CAAC;IACrB,MAAM,IAAI,GAAG,EAAE,CAAC;IAEhB,MAAM,OAAO,GAAG,CAAC,KAAa,EAAE,EAAE;QAChC,MAAM,IAAI,GAAG,EAAE,CAAC;QAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE;YAClC,IAAI,CAAC,IAAI,CACP,4BAAI,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,OAAO,GAAG,KAAK;gBACnC,oBAAC,OAAO,IAAC,IAAI,EAAE,eAAe,CAAC,EAAE;oBAC/B,oBAAC,IAAI,IAAC,IAAI,EAAC,QAAQ,GAAG,CACd,CACP,CACN,CAAC;SACH;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE;QACjC,IAAI,CAAC,IAAI,CAAC,4BAAI,GAAG,EAAE,MAAM,GAAG,CAAC,OAAM,OAAO,CAAC,CAAC,CAAC,CAAM,CAAC,CAAC;KACtD;IACD,OAAO,CACL;QACE,mCAAQ,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAS,CACjC,CACT,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,EAAE;IACrC,OAAO,CACL;QACE,6BAAK,SAAS,EAAC,gDAAgD,IAAE,kBAAkB,EAAE,CAAO,CAC3F,CACJ,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { Tooltip } from './Tooltip';
2
+ export { QTip } from './Qtip';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Tooltip/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { DEFAULT_TOOL_TIP_DELAY } from './Tooltip.types';
2
+ export const getQTipData = ({ tooltip, tooltipPlacement, isHtmlTooltip, tooltipTestId, tooltipDelay = DEFAULT_TOOL_TIP_DELAY, }) => tooltip
3
+ ? {
4
+ 'data-qtip-text': tooltip,
5
+ 'data-qtip-placement': tooltipPlacement,
6
+ 'data-qtip-is-html': isHtmlTooltip,
7
+ 'data-qtip-testid': tooltipTestId,
8
+ 'data-qtip-delay': tooltipDelay,
9
+ }
10
+ : undefined;
11
+ //# sourceMappingURL=qTip.utilities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qTip.utilities.js","sourceRoot":"","sources":["../../src/Tooltip/qTip.utilities.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAyB,MAAM,iBAAiB,CAAC;AAEhF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EAC1B,OAAO,EACP,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,YAAY,GAAG,sBAAsB,GACf,EAAkC,EAAE,CAC1D,OAAO;IACL,CAAC,CAAC;QACE,gBAAgB,EAAE,OAAO;QACzB,qBAAqB,EAAE,gBAAgB;QACvC,mBAAmB,EAAE,aAAa;QAClC,kBAAkB,EAAE,aAAa;QACjC,iBAAiB,EAAE,YAAY;KAChC;IACH,CAAC,CAAC,SAAS,CAAC"}
package/dist/index.esm.js CHANGED
@@ -4539,35 +4539,29 @@ function getSvgIconPath(icon) {
4539
4539
  return isSvgIcon(icon) ? icon.substring(SVG_PATH.length) : '';
4540
4540
  }
4541
4541
 
4542
- const borderStyles$4 = [
4542
+ const popoverBorderStyles = [
4543
4543
  'tw-border-solid',
4544
4544
  'tw-border',
4545
4545
  'tw-rounded-[10px]',
4546
4546
  'tw-border-sq-disabled-gray',
4547
4547
  'dark:tw-border-gray-500',
4548
4548
  ].join(' ');
4549
- const triggerBorderStyles = [
4550
- 'tw-border-solid',
4551
- 'tw-border',
4552
- 'tw-rounded-[10px]',
4553
- 'tw-border-transparent',
4554
- 'hover:tw-border-solid',
4555
- 'hover:tw-border',
4556
- 'hover:tw-rounded-[10px]',
4557
- 'hover:tw-border-sq-darkish-gray',
4558
- 'active:tw-border-sq-color-dark',
4559
- 'dark:hover:tw-border-sq-color-dark-dark',
4560
- 'dark:focus:tw-border-sq-color-dark-dark',
4561
- 'dark:active:tw-border-sq-color-dark-dark',
4549
+ const triggerBackgroundStyles = [
4550
+ 'tw-bg-transparent',
4551
+ 'hover:tw-bg-sq-light-gray',
4552
+ 'active:tw-bg-sq-light-gray',
4553
+ 'dark:tw-bg-transparent',
4554
+ 'dark:hover:tw-bg-sq-field-disabled-gray',
4555
+ 'dark:active:tw-bg-sq-field-disabled-gray',
4562
4556
  ].join(' ');
4563
- const activeBorderStyles = [
4557
+ const activeBackgroundStyles = [
4564
4558
  'active',
4565
- 'tw-border-solid',
4566
- 'tw-border',
4567
- 'tw-rounded-[10px]',
4568
- 'tw-border-sq-color-dark',
4569
- 'active:tw-border-sq-color-dark',
4570
- 'dark:hover:tw-border-sq-color-dark-dark',
4559
+ 'tw-bg-sq-dark-gray',
4560
+ 'hover:tw-bg-sq-dark-gray',
4561
+ 'active:tw-bg-sq-dark-gray',
4562
+ 'dark:tw-bg-sq-field-disabled-gray',
4563
+ 'dark:hover:tw-border-sq-field-disabled-gray',
4564
+ 'dark:active:tw-bg-sq-field-disabled-gray',
4571
4565
  ].join(' ');
4572
4566
  const bgStyles$3 = ['tw-bg-sq-white', 'dark:tw-bg-sq-dark-background'].join(' ');
4573
4567
  const disabledClasses$4 = ['tw-opacity-50', 'tw-cursor-not-allowed'].join(' ');
@@ -4589,10 +4583,10 @@ const ToolbarButton = ({ isSmall = false, label, icon, secondIcon, forceSmallIco
4589
4583
  }
4590
4584
  };
4591
4585
  return (React.createElement($cb5cc270b50c6fcd$export$be92b6f5f03c0fe9, { defaultOpen: false, onOpenChange: onOpenChange },
4592
- React.createElement($cb5cc270b50c6fcd$export$41fb9f06171c75f4, { id: id, className: `tw-border-none ${isActive ? 'active' : ''}`, disabled: disabled, "data-testid": testId, onClick: (e) => {
4586
+ React.createElement($cb5cc270b50c6fcd$export$41fb9f06171c75f4, { id: id, className: `tw-border-none tw-mx-[1.5px] first:tw-ml-0 last:tw-mr-0 ${isActive ? 'active' : ''}`, disabled: disabled, "data-testid": testId, onClick: (e) => {
4593
4587
  onClick && onClick(e);
4594
4588
  } },
4595
- React.createElement("div", { ...tooltipData, className: `tw-bg-transparent tw-p-0 tw-flex tw-flex-col tw-items-center ${isSmall ? 'tw-py-[1px] tw-px-[5px]' : 'tw-px-2 tw-py-[5px]'} ${disabled ? disabledClasses$4 : isActive ? activeBorderStyles : triggerBorderStyles} ${extraClassNames || ''}` },
4589
+ React.createElement("div", { ...tooltipData, className: `tw-flex tw-flex-col tw-items-center tw-rounded-[10px] ${isSmall ? 'tw-py-[1px] tw-px-1' : 'tw-px-2 tw-py-[5px]'} ${disabled ? disabledClasses$4 : isActive ? activeBackgroundStyles : triggerBackgroundStyles} ${extraClassNames || ''}` },
4596
4590
  React.createElement("span", { className: "tw-nowrap" },
4597
4591
  isPrimaryAnSvg ? (React.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", className: `tw-text-sq-text-color dark:tw-text-sq-dark-text ${primaryIconExtraClassNames || ''}`, viewBox: primaryIconViewbox, height: `${iconHeight}px`, width: `${iconWidth}px`, fill: "currentColor", "data-testid": testId },
4598
4592
  React.createElement("path", { d: getSvgIconPath(icon) }))) : (React.createElement(Icon, { icon: icon, testId: "firstIcon", type: "text", large: !isSmall && !label && !secondIcon && !forceSmallIcon, extraClassNames: `tw-text-sq-text-color dark:tw-text-sq-dark-text` })),
@@ -4603,7 +4597,7 @@ const ToolbarButton = ({ isSmall = false, label, icon, secondIcon, forceSmallIco
4603
4597
  React.createElement("div", { className: bgStyles$3 +
4604
4598
  ' tw-relative tw-z-[1000] tw-min-w-6 tw-p-[0.5rem] focus-visible:tw-outline-none tw-outline-none data-[state=open]:animate-in data-[state=closed]:animate-out' +
4605
4599
  ' data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2' +
4606
- borderStyles$4 },
4600
+ popoverBorderStyles },
4607
4601
  hasArrow && (React.createElement($cb5cc270b50c6fcd$export$21b07c8f274aebd5, { asChild: true },
4608
4602
  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" }))),
4609
4603
  popoverContent))) : undefined));
@@ -13462,7 +13456,10 @@ const Select = ({ options, value, placeholder = 'select', noOptionsMessage = 'no
13462
13456
  return `${appliedClasses} ${baseClasses$3} specSelectControl ${isDisabled ? disabledClasses$3 : ''} ${small ? 'tw-pl-2 tw-pr-1' : 'tw-pl-2.5 tw-pr-1.5'}`;
13463
13457
  },
13464
13458
  placeholder: () => placeholderStyles,
13465
- container: () => `${textStyles} ${containerStyles} ${extraClassNames}`,
13459
+ container: ({ selectProps }) => {
13460
+ const containerBorderStyles = selectProps?.menuIsOpen ? 'tw-rounded-t-md' : 'tw-rounded-md';
13461
+ return `${textStyles} ${containerStyles} ${extraClassNames} ${containerBorderStyles}`;
13462
+ },
13466
13463
  input: () => textStyles + ' specSelectInput',
13467
13464
  menuList: () => menuListStyles,
13468
13465
  menu: () => menuStyles,
@@ -15985,11 +15982,11 @@ const InputGroup = React__default.forwardRef((props, ref) => {
15985
15982
  const tooltipData = getQTipData(tooltipProps);
15986
15983
  const appliedClasses = `${baseClasses$1} ${extraClassNames}`;
15987
15984
  const fieldAppliedClasses = `${fieldClasses} ${extraClassNames} ${lightTheme} ${darkTheme} ${fieldBorderRadius} ${showError ? errorClasses : borderColorClasses} `;
15985
+ const elementsToAppend = append.filter(Boolean);
15988
15986
  return (React__default.createElement("div", { id: `input-group-${id}`, className: appliedClasses },
15989
- field ? (React__default.createElement("div", { "data-testid": testId, className: `tw-flex tw-flex-1 tw-cursor-pointer active:tw-z-50 ${fieldAppliedClasses}` }, field)) : (React__default.createElement(TextField, { testId: testId, readonly: readonly, onChange: onChange, onKeyUp: onKeyUp, onFocus: onFocus, onBlur: onBlur, onKeyDown: onKeyDown, name: name, ref: ref, showError: showError, value: value, required: required, placeholder: placeholder, autoComplete: autoComplete, autoFocus: autoFocus, id: id, type: type, disabled: disabled, step: step, min: min, max: max, maxLength: maxLength, minLength: minLength, extraClassNames: `tw-flex tw-flex-1 tw-w-full tw-rounded-r-none focus:tw-z-30 ${extraClassNames}`, ...tooltipData })),
15990
- append.filter(Boolean).map((item, index, array) => {
15991
- const isLast = index === array.length - 1;
15992
- return item?.variant === 'button' ? (React__default.createElement(Button, { key: index, extraClassNames: `tw-ml-[-1px] focus:tw-z-40 focus:tw-border tw-rounded-l-none tw-rounded-r-none ${isLast ? 'tw-rounded-r-md' : ''}`, ...item.buttonProps })) : (React__default.createElement("div", { key: index, className: `${borderColorClasses} tw-flex tw-items-center tw-justify-center tw-rounded-none tw-ml-[-1px] active:tw-z-30 active:tw-border tw-border ${isLast ? 'tw-rounded-r-md' : ''}` }, item?.element));
15987
+ field ? (React__default.createElement("div", { "data-testid": testId, className: `tw-flex tw-flex-1 tw-cursor-pointer active:tw-z-50 ${fieldAppliedClasses}` }, field)) : (React__default.createElement(TextField, { testId: testId, readonly: readonly, onChange: onChange, onKeyUp: onKeyUp, onFocus: onFocus, onBlur: onBlur, onKeyDown: onKeyDown, name: name, ref: ref, showError: showError, value: value, required: required, placeholder: placeholder, autoComplete: autoComplete, autoFocus: autoFocus, id: id, type: type, disabled: disabled, step: step, min: min, max: max, maxLength: maxLength, minLength: minLength, extraClassNames: `tw-flex tw-flex-1 tw-w-full focus:tw-z-30 tw-rounded-r-none last:tw-rounded-r-md ${extraClassNames}`, ...tooltipData })),
15988
+ elementsToAppend.map((item, index) => {
15989
+ return item?.variant === 'button' ? (React__default.createElement(Button, { key: index, extraClassNames: `tw-ml-[-1px] focus:tw-z-40 focus:tw-border tw-rounded-none last:tw-rounded-r-md`, ...item.buttonProps })) : (React__default.createElement("div", { key: index, className: `${borderColorClasses} tw-flex tw-items-center tw-justify-center tw-rounded-none last:tw-rounded-r-md tw-ml-[-1px] active:tw-z-30 active:tw-border tw-border` }, item?.element));
15993
15990
  })));
15994
15991
  });
15995
15992
 
@@ -22229,9 +22226,11 @@ const ButtonGroup = (props) => {
22229
22226
  const { id, extraClassNames, testId, onChange, buttons = [], ...tooltipProps } = props;
22230
22227
  const tooltipData = getQTipData(tooltipProps);
22231
22228
  const appliedClasses = `${baseClasses} ${extraClassNames}`;
22232
- return (React__default.createElement("div", { id: id ? `button-group-${id}` : undefined, "data-testid": testId, className: appliedClasses, ...tooltipData }, buttons.filter(Boolean).map((item, index) => item?.variant === 'button' ? (React__default.createElement(Button, { key: index, ...item.buttonProps, extraClassNames: `tw-ml-[-1px] focus:tw-z-40 tw-outline-none focus:tw-border tw-rounded-none first:tw-rounded-l-md last:tw-rounded-r-md ${item.buttonProps?.isActive
22229
+ return (React__default.createElement("div", { id: id ? `button-group-${id}` : undefined, "data-testid": testId, className: appliedClasses, ...tooltipData }, buttons
22230
+ .filter(Boolean)
22231
+ .map((item, index) => item?.variant === 'button' ? (React__default.createElement(Button, { key: index, ...item.buttonProps, extraClassNames: `tw-ml-[-1px] focus:tw-z-40 tw-outline-none focus:tw-border tw-rounded-none first:tw-rounded-l-md last:tw-rounded-r-md ${item.buttonProps?.isActive
22233
22232
  ? `${activeClassesByVariantLightTheme[item?.buttonProps?.variant ?? 'outline']} ${activeClassesByVariantDarkTheme[item?.buttonProps?.variant ?? 'outline']} `
22234
- : ''} ${item.buttonProps.extraClassNames}`, onClick: () => onChange && onChange(item?.buttonProps?.value) })) : (React__default.createElement("div", { key: index, className: ` tw-flex tw-items-center tw-justify-center tw-rounded-none tw-ml-[-1px] active:tw-z-30 ${item?.extraClassNames || ''}` }, item?.element)))));
22233
+ : ''} ${item.buttonProps.extraClassNames}`, onClick: () => onChange && onChange(item?.buttonProps?.value) })) : (item?.element))));
22235
22234
  };
22236
22235
 
22237
22236
  /**