@seeqdev/qomponents 0.0.146 → 0.0.147

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 (249) 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/Icon/Icon.js +55 -0
  92. package/dist/Icon/Icon.js.map +1 -0
  93. package/dist/Icon/Icon.stories.js +47 -0
  94. package/dist/Icon/Icon.stories.js.map +1 -0
  95. package/dist/Icon/Icon.test.js +55 -0
  96. package/dist/Icon/Icon.test.js.map +1 -0
  97. package/dist/Icon/Icon.types.js +16 -0
  98. package/dist/Icon/Icon.types.js.map +1 -0
  99. package/dist/Icon/index.js +2 -0
  100. package/dist/Icon/index.js.map +1 -0
  101. package/dist/InputGroup/InputGroup.js +35 -0
  102. package/dist/InputGroup/InputGroup.js.map +1 -0
  103. package/dist/InputGroup/InputGroup.stories.js +176 -0
  104. package/dist/InputGroup/InputGroup.stories.js.map +1 -0
  105. package/dist/InputGroup/InputGroup.test.js +43 -0
  106. package/dist/InputGroup/InputGroup.test.js.map +1 -0
  107. package/dist/InputGroup/InputGroup.types.js +2 -0
  108. package/dist/InputGroup/InputGroup.types.js.map +1 -0
  109. package/dist/InputGroup/index.js +2 -0
  110. package/dist/InputGroup/index.js.map +1 -0
  111. package/dist/Modal/Modal.js +100 -0
  112. package/dist/Modal/Modal.js.map +1 -0
  113. package/dist/Modal/Modal.stories.js +127 -0
  114. package/dist/Modal/Modal.stories.js.map +1 -0
  115. package/dist/Modal/Modal.test.js +108 -0
  116. package/dist/Modal/Modal.test.js.map +1 -0
  117. package/dist/Modal/Modal.types.js +2 -0
  118. package/dist/Modal/Modal.types.js.map +1 -0
  119. package/dist/Modal/index.js +2 -0
  120. package/dist/Modal/index.js.map +1 -0
  121. package/dist/ProgressBar/ProgressBar.js +70 -0
  122. package/dist/ProgressBar/ProgressBar.js.map +1 -0
  123. package/dist/ProgressBar/ProgressBar.stories.js +83 -0
  124. package/dist/ProgressBar/ProgressBar.stories.js.map +1 -0
  125. package/dist/ProgressBar/ProgressBar.test.js +44 -0
  126. package/dist/ProgressBar/ProgressBar.test.js.map +1 -0
  127. package/dist/ProgressBar/ProgressBar.types.js +2 -0
  128. package/dist/ProgressBar/ProgressBar.types.js.map +1 -0
  129. package/dist/ProgressBar/index.js +2 -0
  130. package/dist/ProgressBar/index.js.map +1 -0
  131. package/dist/SeeqActionDropdown/SeeqActionDropdown.js +48 -0
  132. package/dist/SeeqActionDropdown/SeeqActionDropdown.js.map +1 -0
  133. package/dist/SeeqActionDropdown/SeeqActionDropdown.stories.js +87 -0
  134. package/dist/SeeqActionDropdown/SeeqActionDropdown.stories.js.map +1 -0
  135. package/dist/SeeqActionDropdown/SeeqActionDropdown.test.js +73 -0
  136. package/dist/SeeqActionDropdown/SeeqActionDropdown.test.js.map +1 -0
  137. package/dist/SeeqActionDropdown/SeeqActionDropdown.types.js +2 -0
  138. package/dist/SeeqActionDropdown/SeeqActionDropdown.types.js.map +1 -0
  139. package/dist/SeeqActionDropdown/index.js +2 -0
  140. package/dist/SeeqActionDropdown/index.js.map +1 -0
  141. package/dist/SeeqActionDropdown/variants.js +38 -0
  142. package/dist/SeeqActionDropdown/variants.js.map +1 -0
  143. package/dist/Select/Select.js +177 -0
  144. package/dist/Select/Select.js.map +1 -0
  145. package/dist/Select/Select.stories.js +82 -0
  146. package/dist/Select/Select.stories.js.map +1 -0
  147. package/dist/Select/Select.test.js +182 -0
  148. package/dist/Select/Select.test.js.map +1 -0
  149. package/dist/Select/Select.types.d.ts +3 -1
  150. package/dist/Select/Select.types.js +2 -0
  151. package/dist/Select/Select.types.js.map +1 -0
  152. package/dist/Select/index.js +3 -0
  153. package/dist/Select/index.js.map +1 -0
  154. package/dist/Slider/Slider.js +13 -0
  155. package/dist/Slider/Slider.js.map +1 -0
  156. package/dist/Slider/Slider.stories.js +58 -0
  157. package/dist/Slider/Slider.stories.js.map +1 -0
  158. package/dist/Slider/Slider.test.js +33 -0
  159. package/dist/Slider/Slider.test.js.map +1 -0
  160. package/dist/Slider/Slider.types.js +2 -0
  161. package/dist/Slider/Slider.types.js.map +1 -0
  162. package/dist/Slider/index.js +2 -0
  163. package/dist/Slider/index.js.map +1 -0
  164. package/dist/SvgIcon/SvgIcon.js +30 -0
  165. package/dist/SvgIcon/SvgIcon.js.map +1 -0
  166. package/dist/SvgIcon/SvgIcon.stories.js +42 -0
  167. package/dist/SvgIcon/SvgIcon.stories.js.map +1 -0
  168. package/dist/SvgIcon/SvgIcon.test.js +41 -0
  169. package/dist/SvgIcon/SvgIcon.test.js.map +1 -0
  170. package/dist/SvgIcon/SvgIcon.types.js +6 -0
  171. package/dist/SvgIcon/SvgIcon.types.js.map +1 -0
  172. package/dist/SvgIcon/index.js +2 -0
  173. package/dist/SvgIcon/index.js.map +1 -0
  174. package/dist/Tabs/Tabs.js +22 -0
  175. package/dist/Tabs/Tabs.js.map +1 -0
  176. package/dist/Tabs/Tabs.stories.js +91 -0
  177. package/dist/Tabs/Tabs.stories.js.map +1 -0
  178. package/dist/Tabs/Tabs.test.js +91 -0
  179. package/dist/Tabs/Tabs.test.js.map +1 -0
  180. package/dist/Tabs/Tabs.types.js +2 -0
  181. package/dist/Tabs/Tabs.types.js.map +1 -0
  182. package/dist/Tabs/index.js +2 -0
  183. package/dist/Tabs/index.js.map +1 -0
  184. package/dist/TextArea/TextArea.js +25 -0
  185. package/dist/TextArea/TextArea.js.map +1 -0
  186. package/dist/TextArea/TextArea.stories.js +46 -0
  187. package/dist/TextArea/TextArea.stories.js.map +1 -0
  188. package/dist/TextArea/TextArea.test.js +68 -0
  189. package/dist/TextArea/TextArea.test.js.map +1 -0
  190. package/dist/TextArea/TextArea.types.js +2 -0
  191. package/dist/TextArea/TextArea.types.js.map +1 -0
  192. package/dist/TextArea/index.js +2 -0
  193. package/dist/TextArea/index.js.map +1 -0
  194. package/dist/TextField/TextField.js +79 -0
  195. package/dist/TextField/TextField.js.map +1 -0
  196. package/dist/TextField/TextField.stories.js +70 -0
  197. package/dist/TextField/TextField.stories.js.map +1 -0
  198. package/dist/TextField/TextField.test.js +39 -0
  199. package/dist/TextField/TextField.test.js.map +1 -0
  200. package/dist/TextField/TextField.types.js +2 -0
  201. package/dist/TextField/TextField.types.js.map +1 -0
  202. package/dist/TextField/index.js +2 -0
  203. package/dist/TextField/index.js.map +1 -0
  204. package/dist/ToolbarButton/ToolbarButton.js +69 -0
  205. package/dist/ToolbarButton/ToolbarButton.js.map +1 -0
  206. package/dist/ToolbarButton/ToolbarButton.stories.js +97 -0
  207. package/dist/ToolbarButton/ToolbarButton.stories.js.map +1 -0
  208. package/dist/ToolbarButton/ToolbarButton.test.js +93 -0
  209. package/dist/ToolbarButton/ToolbarButton.test.js.map +1 -0
  210. package/dist/ToolbarButton/ToolbarButton.types.js +2 -0
  211. package/dist/ToolbarButton/ToolbarButton.types.js.map +1 -0
  212. package/dist/ToolbarButton/index.js +2 -0
  213. package/dist/ToolbarButton/index.js.map +1 -0
  214. package/dist/Tooltip/QTip.stories.js +45 -0
  215. package/dist/Tooltip/QTip.stories.js.map +1 -0
  216. package/dist/Tooltip/QTip.types.js +2 -0
  217. package/dist/Tooltip/QTip.types.js.map +1 -0
  218. package/dist/Tooltip/QTipPerformance.stories.js +30 -0
  219. package/dist/Tooltip/QTipPerformance.stories.js.map +1 -0
  220. package/dist/Tooltip/Qtip.js +168 -0
  221. package/dist/Tooltip/Qtip.js.map +1 -0
  222. package/dist/Tooltip/Tooltip.js +36 -0
  223. package/dist/Tooltip/Tooltip.js.map +1 -0
  224. package/dist/Tooltip/Tooltip.stories.js +32 -0
  225. package/dist/Tooltip/Tooltip.stories.js.map +1 -0
  226. package/dist/Tooltip/Tooltip.types.js +3 -0
  227. package/dist/Tooltip/Tooltip.types.js.map +1 -0
  228. package/dist/Tooltip/TooltipPerformance.stories.js +30 -0
  229. package/dist/Tooltip/TooltipPerformance.stories.js.map +1 -0
  230. package/dist/Tooltip/index.js +3 -0
  231. package/dist/Tooltip/index.js.map +1 -0
  232. package/dist/Tooltip/qTip.utilities.js +11 -0
  233. package/dist/Tooltip/qTip.utilities.js.map +1 -0
  234. package/dist/index.esm.js +10 -10
  235. package/dist/index.esm.js.map +1 -1
  236. package/dist/index.js +10 -10
  237. package/dist/index.js.map +1 -1
  238. package/dist/styles.css +46 -27
  239. package/dist/types.js +2 -0
  240. package/dist/types.js.map +1 -0
  241. package/dist/utils/browserId.js +29 -0
  242. package/dist/utils/browserId.js.map +1 -0
  243. package/dist/utils/svg.js +20 -0
  244. package/dist/utils/svg.js.map +1 -0
  245. package/dist/utils/validateStyleDimension.js +14 -0
  246. package/dist/utils/validateStyleDimension.js.map +1 -0
  247. package/dist/utils/validateStyleDimension.test.js +20 -0
  248. package/dist/utils/validateStyleDimension.test.js.map +1 -0
  249. package/package.json +1 -1
@@ -0,0 +1,22 @@
1
+ import React from 'react';
2
+ import { Content, List, Root, Trigger } from '@radix-ui/react-tabs';
3
+ import Icon from '../Icon';
4
+ const Tabs = ({ tabs, defaultActiveTab, activeTab, onTabSelect, extraClassNames, testId, id, stretchTabs = false, }) => {
5
+ const handleTabSelect = (tabId) => {
6
+ if (activeTab === tabId)
7
+ return;
8
+ onTabSelect && onTabSelect(tabId);
9
+ };
10
+ return (React.createElement(Root, { className: `tw-flex tw-flex-col tw-min-w-[300px] tw-max-w-full tw-flex-grow focus-visible:tw-outline-none ${extraClassNames || ''}`, defaultValue: defaultActiveTab, "data-testid": testId, id: id, value: activeTab, onValueChange: handleTabSelect },
11
+ React.createElement(List, { className: `tw-flex tw-flex-row tw-flex-wrap tw-z-[1001]` }, tabs.map(({ id, icon, label, tabExtraClassNames, testId: tabsTestId, disabled }, index) => (React.createElement(Trigger, { className: `tw-bg-sq-white dark:tw-bg-sq-dark-background tw-h-[25px] focus-visible:tw-outline-none tw-min-w-[100px] tw-px-4 tw-border-solid dark:tw-border-gray-700 tw-flex tw-flex-1 tw-justify-center tw-items-center tw-border-r-[2px] last:tw-border-r-0 ${stretchTabs ? '' : 'tw-max-w-max tw-min-w-fit'} ${tabExtraClassNames || ''} ${activeTab === id
12
+ ? 'tw-border-b-sq-color-dark dark:tw-border-b-sq-color-dark tw-border-b-[3px]'
13
+ : 'hover:tw-bg-sq-light-gray tw-border-b-[1px] hover:dark:tw-bg-gray-700'}`, "data-testid": tabsTestId, disabled: disabled, key: `${label}-${id}-${index}`, value: id },
14
+ React.createElement("span", { className: "tw-flex tw-items-center tw-overflow-hidden tw-pb-[3px]" },
15
+ icon && React.createElement(Icon, { icon: icon, testId: `${id}_tab-icon`, extraClassNames: "tw-text-[15px] tw-mr-[7px] tw-flex-shrink-0" }),
16
+ React.createElement("span", { className: `tw-text-[14px] tw-font-medium tw-whitespace-nowrap tw-overflow-hidden tw-text-ellipsis ${activeTab === id
17
+ ? 'dark:tw-text-sq-dark-text tw-text-gray-500'
18
+ : 'dark:tw-text-sq-color-dark-dark tw-text-sq-color-dark'}` }, label)))))),
19
+ tabs.map((tab, index) => (React.createElement(Content, { className: `tw-bg-sq-white dark:tw-bg-sq-dark-background tw-overflow-y-auto -tw-mt-[1px] tw-border-t-[1px] dark:tw-border-gray-700 tw-z-[500] tw-flex tw-flex-col tw-flex-grow focus-visible:tw-outline-none ${tab.tabContentExtraClassNames || ''}`, key: `${tab.label}_${index}_content`, value: tab.id }, tab.content)))));
20
+ };
21
+ export default Tabs;
22
+ //# sourceMappingURL=Tabs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tabs.js","sourceRoot":"","sources":["../../src/Tabs/Tabs.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,IAAI,MAAM,SAAS,CAAC;AAE3B,MAAM,IAAI,GAAuC,CAAC,EAChD,IAAI,EACJ,gBAAgB,EAChB,SAAS,EACT,WAAW,EACX,eAAe,EACf,MAAM,EACN,EAAE,EACF,WAAW,GAAG,KAAK,GACpB,EAAE,EAAE;IACH,MAAM,eAAe,GAAG,CAAC,KAAa,EAAE,EAAE;QACxC,IAAI,SAAS,KAAK,KAAK;YAAE,OAAO;QAChC,WAAW,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC,CAAC;IAEF,OAAO,CACL,oBAAC,IAAI,IACH,SAAS,EAAE,iGACT,eAAe,IAAI,EACrB,EAAE,EACF,YAAY,EAAE,gBAAgB,iBACjB,MAAM,EACnB,EAAE,EAAE,EAAE,EACN,KAAK,EAAE,SAAS,EAChB,aAAa,EAAE,eAAe;QAC9B,oBAAC,IAAI,IAAC,SAAS,EAAE,8CAA8C,IAC5D,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,kBAAkB,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAC1F,oBAAC,OAAO,IACN,SAAS,EAAE,oPACT,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,2BACrB,IAAI,kBAAkB,IAAI,EAAE,IAC1B,SAAS,KAAK,EAAE;gBACd,CAAC,CAAC,4EAA4E;gBAC9E,CAAC,CAAC,uEACN,EAAE,iBACW,UAAU,EACvB,QAAQ,EAAE,QAAQ,EAClB,GAAG,EAAE,GAAG,KAAK,IAAI,EAAE,IAAI,KAAK,EAAE,EAC9B,KAAK,EAAE,EAAE;YACT,8BAAM,SAAS,EAAC,wDAAwD;gBACrE,IAAI,IAAI,oBAAC,IAAI,IAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,eAAe,EAAC,6CAA6C,GAAG;gBACrH,8BACE,SAAS,EAAE,0FACT,SAAS,KAAK,EAAE;wBACd,CAAC,CAAC,4CAA4C;wBAC9C,CAAC,CAAC,uDACN,EAAE,IACD,KAAK,CACD,CACF,CACC,CACX,CAAC,CACG;QACN,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,CACxB,oBAAC,OAAO,IACN,SAAS,EAAE,oMACT,GAAG,CAAC,yBAAyB,IAAI,EACnC,EAAE,EACF,GAAG,EAAE,GAAG,GAAG,CAAC,KAAK,IAAI,KAAK,UAAU,EACpC,KAAK,EAAE,GAAG,CAAC,EAAE,IACZ,GAAG,CAAC,OAAO,CACJ,CACX,CAAC,CACG,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,IAAI,CAAC"}
@@ -0,0 +1,91 @@
1
+ import React from 'react';
2
+ import Tabs from './Tabs';
3
+ import Button from '../Button';
4
+ export default {
5
+ title: 'Tabs',
6
+ };
7
+ const renderData = () => (React.createElement("div", { className: "tw-text-sq-color-gray dark:tw-text-sq-white" },
8
+ React.createElement("p", { className: "tw-mb-5 tw-text-[15px] tw-leading-normal" }, "This is a data tab to show details about your data. You can make changes to your account"),
9
+ React.createElement(Button, { variant: "outline", label: "Save data" })));
10
+ const renderTools = () => (React.createElement("div", { className: "tw-text-sq-color-gray dark:tw-text-sq-white" },
11
+ React.createElement("p", { className: "tw-mb-5 tw-text-[15px] tw-leading-normal" }, "Make changes to your account here. Click save when you're done."),
12
+ React.createElement(Button, { variant: "outline", label: "Save tools" })));
13
+ const renderJournal = () => (React.createElement("div", { className: "tw-text-sq-color-gray dark:tw-text-sq-white" },
14
+ React.createElement("p", { className: "tw-mb-5 tw-text-[15px] tw-leading-normal" }, "Make changes to your account here. Click save when you're done."),
15
+ React.createElement(Button, { variant: "outline", label: "Save journal" })));
16
+ const tabsList = [
17
+ {
18
+ id: 'data',
19
+ label: 'Data',
20
+ icon: 'fc-data',
21
+ content: renderData(),
22
+ },
23
+ {
24
+ id: 'tools',
25
+ label: 'Tools',
26
+ icon: 'fc-gears-2',
27
+ content: renderTools(),
28
+ },
29
+ {
30
+ id: 'journal',
31
+ label: 'Journal',
32
+ icon: 'fc-workbook-lock',
33
+ content: renderJournal(),
34
+ },
35
+ ];
36
+ const extraTabsList = [
37
+ {
38
+ id: 'data',
39
+ label: 'Data',
40
+ icon: 'fc-data',
41
+ content: renderData(),
42
+ },
43
+ {
44
+ id: 'tools',
45
+ label: 'Tools',
46
+ icon: 'fc-gears-2',
47
+ content: renderTools(),
48
+ },
49
+ {
50
+ id: 'journal',
51
+ label: 'Journal',
52
+ icon: 'fc-workbook-lock',
53
+ content: renderJournal(),
54
+ },
55
+ {
56
+ id: 'journal2',
57
+ label: 'Journal',
58
+ icon: 'fc-workbook-lock',
59
+ disabled: true,
60
+ content: renderJournal(),
61
+ },
62
+ {
63
+ id: 'data3',
64
+ label: 'Data 2',
65
+ icon: 'fc-data',
66
+ disabled: true,
67
+ content: renderData(),
68
+ },
69
+ ];
70
+ const colors = ['topic', 'analysis', 'datalab', 'vantage'];
71
+ export const AllTabsVariants = () => {
72
+ const [activeTab, setActiveTab] = React.useState('data');
73
+ const renderAllVariations = (color) => (React.createElement("div", { key: color + '_wrapper' },
74
+ React.createElement("div", { className: "tw-p-4" },
75
+ React.createElement(Tabs, { stretchTabs: true, activeTab: activeTab, onTabSelect: setActiveTab, defaultActiveTab: "data", tabs: tabsList })),
76
+ React.createElement("div", { className: "tw-p-4" },
77
+ React.createElement(Tabs, { activeTab: activeTab, onTabSelect: (tabId) => setActiveTab(tabId), defaultActiveTab: "tool", tabs: extraTabsList.map((tab) => ({ ...tab, icon: undefined, tabExtraClassNames: 'tw-max-w-max' })) })),
78
+ React.createElement("div", { className: "tw-p-4 tw-dark tw-bg-sq-dark-background " },
79
+ React.createElement("p", { className: "tw-text-sq-color-dark dark:tw-text-sq-color-dark-dark tw-mb-8" },
80
+ color[0].toUpperCase() + color.slice(1),
81
+ " Dark mode"),
82
+ React.createElement(Tabs, { activeTab: activeTab, onTabSelect: (tabId) => setActiveTab(tabId), defaultActiveTab: "tools", tabs: tabsList.map((tab) => ({ ...tab, icon: undefined })) }))));
83
+ return (React.createElement("div", { className: "tw-grid tw-grid-cols-4 tw-gap-4" }, colors.map((color) => {
84
+ return (React.createElement("div", { key: color, className: `color_${color}` },
85
+ React.createElement("b", null,
86
+ color[0].toUpperCase() + color.slice(1),
87
+ " Colors"),
88
+ renderAllVariations(color)));
89
+ })));
90
+ };
91
+ //# sourceMappingURL=Tabs.stories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tabs.stories.js","sourceRoot":"","sources":["../../src/Tabs/Tabs.stories.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,91 @@
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 Tabs from './Tabs';
6
+ const renderData = () => (React.createElement("div", { className: "tw-text-sq-color-gray dark:tw-text-sq-white" },
7
+ React.createElement("p", { className: "tw-mb-5 tw-text-[15px] tw-leading-normal" }, "This is a data tab to show details about your data. You can make changes to your account"),
8
+ React.createElement("button", null, "save data")));
9
+ const renderTools = () => (React.createElement("div", { className: "tw-text-sq-color-gray dark:tw-text-sq-white" },
10
+ React.createElement("p", { className: "tw-mb-5 tw-text-[15px] tw-leading-normal" }, "Make changes to your account here. Click save when you're done."),
11
+ React.createElement("button", null, "save tools")));
12
+ const renderJournal = () => (React.createElement("div", { className: "tw-text-sq-color-gray dark:tw-text-sq-white" },
13
+ React.createElement("p", { className: "tw-mb-5 tw-text-[15px] tw-leading-normal" }, "Make changes to your account here. Click save when you're done."),
14
+ React.createElement("button", null, "save journal")));
15
+ const tabsList = [
16
+ {
17
+ id: 'data',
18
+ label: 'Data',
19
+ icon: 'fc-data',
20
+ content: renderData(),
21
+ },
22
+ {
23
+ id: 'tools',
24
+ label: 'Tools',
25
+ icon: 'fc-gears-2',
26
+ content: renderTools(),
27
+ },
28
+ {
29
+ id: 'journal',
30
+ label: 'Journal',
31
+ icon: 'fc-workbook-lock',
32
+ content: renderJournal(),
33
+ },
34
+ ];
35
+ const mockTabsClick = jest.fn();
36
+ const SampleComponent = (props) => {
37
+ const [activeTab, setActiveTab] = React.useState('data');
38
+ return (React.createElement(Tabs, { ...props, activeTab: activeTab, onTabSelect: (tabId) => {
39
+ setActiveTab(tabId);
40
+ mockTabsClick(tabId);
41
+ } }));
42
+ };
43
+ describe('Tabs', () => {
44
+ class Context {
45
+ props = {
46
+ tabs: tabsList,
47
+ defaultActiveTab: 'data',
48
+ activeTab: 'data',
49
+ id: 'tabs-table',
50
+ onTabSelect: jest.fn(),
51
+ };
52
+ }
53
+ let tc;
54
+ beforeEach(() => {
55
+ tc = new Context();
56
+ });
57
+ const renderTabs = (props) => render(React.createElement(SampleComponent, { ...props }));
58
+ it('renders Tabs label with correct content based on default active tab', () => {
59
+ renderTabs(tc.props);
60
+ expect(screen.getByText('Data')).toBeInTheDocument();
61
+ expect(screen.getByText('Tools')).toBeInTheDocument();
62
+ expect(screen.getByText('Journal')).toBeInTheDocument();
63
+ expect(screen.getByTestId('journal_tab-icon')).toBeInTheDocument();
64
+ expect(screen.getByText('save data')).toBeInTheDocument();
65
+ expect(screen.queryByText('save tools')).not.toBeInTheDocument();
66
+ expect(screen.queryByText('save journals')).not.toBeInTheDocument();
67
+ });
68
+ it('renders correct content after tab is selected', async () => {
69
+ renderTabs(tc.props);
70
+ expect(screen.getByText('save data')).toBeInTheDocument();
71
+ await userEvent.click(screen.getByText('Tools'));
72
+ expect(mockTabsClick).toHaveBeenCalled();
73
+ expect(screen.getByText('save tools')).toBeInTheDocument();
74
+ });
75
+ it('does not render icon if it is not provided', async () => {
76
+ renderTabs({ ...tc.props, tabs: tc.props.tabs.map((tab) => ({ ...tab, icon: undefined })) });
77
+ expect(screen.queryByText('journal_tab-icon')).not.toBeInTheDocument();
78
+ });
79
+ it('calls the onTabSelect callback when a new tab is clicked', async () => {
80
+ mockTabsClick.mockClear();
81
+ renderTabs(tc.props);
82
+ await userEvent.click(screen.getByText('Journal'));
83
+ expect(mockTabsClick).toBeCalledWith('journal');
84
+ expect(mockTabsClick).toBeCalledTimes(1);
85
+ mockTabsClick.mockClear();
86
+ await userEvent.click(screen.getByText('Tools'));
87
+ expect(mockTabsClick).toBeCalledWith('tools');
88
+ expect(mockTabsClick).toBeCalledTimes(1);
89
+ });
90
+ });
91
+ //# sourceMappingURL=Tabs.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tabs.test.js","sourceRoot":"","sources":["../../src/Tabs/Tabs.test.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Tabs.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tabs.types.js","sourceRoot":"","sources":["../../src/Tabs/Tabs.types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export { default } from './Tabs';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Tabs/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC"}
@@ -0,0 +1,25 @@
1
+ import React from 'react';
2
+ import '../styles.css';
3
+ const baseClasses = 'tw-leading-normal tw-outline-none tw-py-1 tw-px-3 tw-rounded-md tw-w-full' +
4
+ ' disabled:tw-pointer-events-none disabled:tw-bg-sq-light-gray disabled:dark:tw-bg-sq-dark-disabled-gray' +
5
+ ' disabled:tw-cursor-not-allowed tw-p-1 tw-border-solid tw-border tw-text-sm';
6
+ const darkTheme = 'dark:tw-bg-sq-dark-background dark:tw-text-sq-dark-text ' +
7
+ 'dark:tw-placeholder-sq-dark-text-lighter disabled:dark:tw-text-sq-dark-text-lighter';
8
+ const lightTheme = 'tw-text-sq-text-color tw-placeholder-gray-400 disabled:tw-text-sq-darkish-gray';
9
+ const errorClasses = 'tw-border-sq-danger-color';
10
+ const borderColorClasses = [
11
+ 'tw-border-sq-disabled-gray',
12
+ 'dark:tw-border-sq-dark-disabled-gray',
13
+ 'dark:focus:tw-border-sq-color-dark-dark',
14
+ 'dark:active:tw-border-sq-color-dark-dark',
15
+ 'focus:tw-border-sq-color-dark',
16
+ 'active:tw-border-sq-color-dark',
17
+ ].join(' ');
18
+ /**
19
+ * TextArea.
20
+ */
21
+ export const TextArea = ({ readonly = false, disabled = false, onChange, onKeyUp, onFocus, onBlur, onKeyDown, id, name, rows = 3, cols = undefined, value, placeholder, showError, extraClassNames, testId, autoFocus = false, }) => {
22
+ const appliedClasses = `${baseClasses} ${extraClassNames} ${lightTheme} ${darkTheme} ${showError ? errorClasses : borderColorClasses}`;
23
+ return (React.createElement("textarea", { "data-testid": testId, name: name, id: id, value: value, className: appliedClasses, placeholder: placeholder, disabled: disabled, readOnly: readonly, onChange: onChange, onFocus: onFocus, onBlur: onBlur, onKeyDown: onKeyDown, onKeyUp: onKeyUp, rows: rows, cols: cols, autoFocus: autoFocus }));
24
+ };
25
+ //# sourceMappingURL=TextArea.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TextArea.js","sourceRoot":"","sources":["../../src/TextArea/TextArea.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,eAAe,CAAC;AAEvB,MAAM,WAAW,GACf,2EAA2E;IAC3E,0GAA0G;IAC1G,6EAA6E,CAAC;AAEhF,MAAM,SAAS,GACb,0DAA0D;IAC1D,sFAAsF,CAAC;AACzF,MAAM,UAAU,GAAG,iFAAiF,CAAC;AAErG,MAAM,YAAY,GAAG,2BAA2B,CAAC;AAEjD,MAAM,kBAAkB,GAAG;IACzB,4BAA4B;IAC5B,sCAAsC;IACtC,yCAAyC;IACzC,0CAA0C;IAC1C,+BAA+B;IAC/B,gCAAgC;CACjC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAEZ;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAA2C,CAAC,EAC/D,QAAQ,GAAG,KAAK,EAChB,QAAQ,GAAG,KAAK,EAChB,QAAQ,EACR,OAAO,EACP,OAAO,EACP,MAAM,EACN,SAAS,EACT,EAAE,EACF,IAAI,EACJ,IAAI,GAAG,CAAC,EACR,IAAI,GAAG,SAAS,EAChB,KAAK,EACL,WAAW,EACX,SAAS,EACT,eAAe,EACf,MAAM,EACN,SAAS,GAAG,KAAK,GAClB,EAAE,EAAE;IACH,MAAM,cAAc,GAAG,GAAG,WAAW,IAAI,eAAe,IAAI,UAAU,IAAI,SAAS,IACjF,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,kBAC7B,EAAE,CAAC;IAEH,OAAO,CACL,iDACe,MAAM,EACnB,IAAI,EAAE,IAAI,EACV,EAAE,EAAE,EAAE,EACN,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,cAAc,EACzB,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,SAAS,GACpB,CACH,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,46 @@
1
+ import React from 'react';
2
+ import { TextArea } from './TextArea';
3
+ export default {
4
+ title: 'TextArea',
5
+ };
6
+ export const AllTextAreas = () => {
7
+ const renderAllVariations = () => (React.createElement(React.Fragment, null,
8
+ React.createElement("div", { className: "tw-p-4 light" },
9
+ React.createElement("div", { className: "tw-p-4" },
10
+ React.createElement(TextArea, { value: "Short text provided." })),
11
+ React.createElement("div", { className: "tw-p-4" },
12
+ React.createElement(TextArea, { value: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Odio morbi quis commodo odio aenean. Lectus sit amet est placerat in egestas erat. Dui nunc mattis enim ut tellus. Dictumst vestibulum rhoncus est pellentesque elit ullamcorper. Nibh mauris cursus mattis molestie a. Aenean vel elit scelerisque mauris pellentesque. Nunc sed id semper risus in hendrerit gravida rutrum quisque. Tortor dignissim convallis aenean et tortor at risus. Vitae congue mauris rhoncus aenean vel elit scelerisque. Tellus id interdum velit laoreet id donec ultrices. Ac turpis egestas maecenas pharetra. Commodo odio aenean sed adipiscing diam donec adipiscing tristique risus. Consequat interdum varius sit amet mattis. Lacus laoreet non curabitur gravida arcu ac tortor. Vulputate sapien nec sagittis aliquam malesuada bibendum arcu vitae elementum. Odio ut enim blandit volutpat maecenas volutpat." })),
13
+ React.createElement("div", { className: "tw-p-4" },
14
+ React.createElement(TextArea, { placeholder: "placeholder text" })),
15
+ React.createElement("div", { className: "tw-p-4" },
16
+ React.createElement(TextArea, { placeholder: "with error", showError: true })),
17
+ React.createElement("div", { className: "tw-p-4" },
18
+ React.createElement(TextArea, { value: "read-only", readonly: true, onFocus: (e) => e.currentTarget.select() })),
19
+ React.createElement("div", { className: "tw-p-4" },
20
+ React.createElement(TextArea, { value: "disabled", disabled: true }))),
21
+ React.createElement("div", { className: "tw-p-4 tw-dark tw-bg-sq-dark-background" },
22
+ React.createElement("div", { className: "tw-p-4" },
23
+ React.createElement(TextArea, { value: "value provided" })),
24
+ React.createElement("div", { className: "tw-p-4" },
25
+ React.createElement(TextArea, { placeholder: "placeholder text" })),
26
+ React.createElement("div", { className: "tw-p-4" },
27
+ React.createElement(TextArea, { placeholder: "with error", showError: true })),
28
+ React.createElement("div", { className: "tw-p-4" },
29
+ React.createElement(TextArea, { value: "read-only", readonly: true, onFocus: (e) => e.currentTarget.select() })),
30
+ React.createElement("div", { className: "tw-p-4" },
31
+ React.createElement(TextArea, { value: "disabled", disabled: true })))));
32
+ return (React.createElement("div", { className: "tw-grid tw-grid-cols-4 tw-gap-4" },
33
+ React.createElement("div", { className: "color_topic" },
34
+ React.createElement("b", null, "Topic Colors"),
35
+ renderAllVariations()),
36
+ React.createElement("div", { className: "color_analysis" },
37
+ React.createElement("b", null, "Analysis Colors"),
38
+ renderAllVariations()),
39
+ React.createElement("div", { className: "color_datalab" },
40
+ React.createElement("b", null, "Datalab Colors"),
41
+ renderAllVariations()),
42
+ React.createElement("div", { className: "color_vantage" },
43
+ React.createElement("b", null, "Vantage Colors"),
44
+ renderAllVariations())));
45
+ };
46
+ //# sourceMappingURL=TextArea.stories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TextArea.stories.js","sourceRoot":"","sources":["../../src/TextArea/TextArea.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,eAAe;IACb,KAAK,EAAE,UAAU;CAClB,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,EAAE;IAC/B,MAAM,mBAAmB,GAAG,GAAG,EAAE,CAAC,CAChC;QACE,6BAAK,SAAS,EAAC,cAAc;YAC3B,6BAAK,SAAS,EAAC,QAAQ;gBACrB,oBAAC,QAAQ,IAAC,KAAK,EAAC,sBAAsB,GAAG,CACrC;YACN,6BAAK,SAAS,EAAC,QAAQ;gBACrB,oBAAC,QAAQ,IAAC,KAAK,EAAC,q7BAAq7B,GAAG,CACp8B;YACN,6BAAK,SAAS,EAAC,QAAQ;gBACrB,oBAAC,QAAQ,IAAC,WAAW,EAAC,kBAAkB,GAAG,CACvC;YACN,6BAAK,SAAS,EAAC,QAAQ;gBACrB,oBAAC,QAAQ,IAAC,WAAW,EAAC,YAAY,EAAC,SAAS,EAAE,IAAI,GAAI,CAClD;YACN,6BAAK,SAAS,EAAC,QAAQ;gBACrB,oBAAC,QAAQ,IAAC,KAAK,EAAC,WAAW,EAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,EAAE,GAAI,CACpF;YACN,6BAAK,SAAS,EAAC,QAAQ;gBACrB,oBAAC,QAAQ,IAAC,KAAK,EAAC,UAAU,EAAC,QAAQ,EAAE,IAAI,GAAI,CACzC,CACF;QAEN,6BAAK,SAAS,EAAC,yCAAyC;YACtD,6BAAK,SAAS,EAAC,QAAQ;gBACrB,oBAAC,QAAQ,IAAC,KAAK,EAAC,gBAAgB,GAAG,CAC/B;YACN,6BAAK,SAAS,EAAC,QAAQ;gBACrB,oBAAC,QAAQ,IAAC,WAAW,EAAC,kBAAkB,GAAG,CACvC;YACN,6BAAK,SAAS,EAAC,QAAQ;gBACrB,oBAAC,QAAQ,IAAC,WAAW,EAAC,YAAY,EAAC,SAAS,EAAE,IAAI,GAAI,CAClD;YACN,6BAAK,SAAS,EAAC,QAAQ;gBACrB,oBAAC,QAAQ,IAAC,KAAK,EAAC,WAAW,EAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,EAAE,GAAI,CACpF;YACN,6BAAK,SAAS,EAAC,QAAQ;gBACrB,oBAAC,QAAQ,IAAC,KAAK,EAAC,UAAU,EAAC,QAAQ,EAAE,IAAI,GAAI,CACzC,CACF,CACL,CACJ,CAAC;IACF,OAAO,CACL,6BAAK,SAAS,EAAC,iCAAiC;QAC9C,6BAAK,SAAS,EAAC,aAAa;YAC1B,8CAAmB;YAClB,mBAAmB,EAAE,CAClB;QAEN,6BAAK,SAAS,EAAC,gBAAgB;YAC7B,iDAAsB;YACrB,mBAAmB,EAAE,CAClB;QAEN,6BAAK,SAAS,EAAC,eAAe;YAC5B,gDAAqB;YACpB,mBAAmB,EAAE,CAClB;QAEN,6BAAK,SAAS,EAAC,eAAe;YAC5B,gDAAqB;YACpB,mBAAmB,EAAE,CAClB,CACF,CACP,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,68 @@
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 { TextArea } from './TextArea';
6
+ describe('TextArea', () => {
7
+ class Context {
8
+ testId = 'textAreaTestId';
9
+ props = {
10
+ onChange: jest.fn(),
11
+ onKeyUp: jest.fn(),
12
+ testId: this.testId,
13
+ };
14
+ }
15
+ let tc;
16
+ beforeEach(() => {
17
+ tc = new Context();
18
+ });
19
+ const renderTextArea = (props) => render(React.createElement(TextArea, { ...props }));
20
+ it('renders the provided value', () => {
21
+ const value = 'hello, this is text for a text area.';
22
+ renderTextArea({ ...tc.props, value });
23
+ expect(screen.getByDisplayValue(value)).toBeInTheDocument();
24
+ });
25
+ it('renders the provided placeholder', () => {
26
+ const placeholder = 'Prompt to enter';
27
+ renderTextArea({ ...tc.props, placeholder });
28
+ expect(screen.getByPlaceholderText(placeholder)).toBeInTheDocument();
29
+ });
30
+ it('calls onChange handler', async () => {
31
+ renderTextArea({ ...tc.props });
32
+ await userEvent.type(screen.getByTestId(tc.testId), 'trigger');
33
+ expect(tc.props.onChange).toHaveBeenCalled();
34
+ });
35
+ it('calls the onKeyUp handler', async () => {
36
+ renderTextArea({ ...tc.props });
37
+ await userEvent.type(screen.getByTestId(tc.testId), 'trigger');
38
+ expect(tc.props.onKeyUp).toHaveBeenCalled();
39
+ });
40
+ it('respects readOnly', async () => {
41
+ renderTextArea({ ...tc.props, disabled: true });
42
+ expect(screen.getByTestId(tc.testId)).not.toBeEnabled();
43
+ });
44
+ it('provides rows', async () => {
45
+ renderTextArea({ ...tc.props, rows: 7 });
46
+ expect(screen.getByTestId(tc.testId)).toHaveProperty('rows', 7);
47
+ });
48
+ it('provides cols', async () => {
49
+ renderTextArea({ ...tc.props, cols: 8 });
50
+ expect(screen.getByTestId(tc.testId)).toHaveProperty('cols', 8);
51
+ });
52
+ it('provides name', async () => {
53
+ const name = 'myTextArea';
54
+ renderTextArea({ ...tc.props, name });
55
+ expect(screen.getByTestId(tc.testId)).toHaveProperty('name', name);
56
+ });
57
+ it('provides id', async () => {
58
+ const id = 'myTextId';
59
+ renderTextArea({ ...tc.props, id });
60
+ expect(screen.getByTestId(tc.testId)).toHaveProperty('id', id);
61
+ });
62
+ it('provides extraClassNames', async () => {
63
+ const extraClassNames = 'extra css';
64
+ renderTextArea({ ...tc.props, extraClassNames });
65
+ expect(screen.getByTestId(tc.testId)).toHaveClass(extraClassNames);
66
+ });
67
+ });
68
+ //# sourceMappingURL=TextArea.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TextArea.test.js","sourceRoot":"","sources":["../../src/TextArea/TextArea.test.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=TextArea.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TextArea.types.js","sourceRoot":"","sources":["../../src/TextArea/TextArea.types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export { TextArea as default } from './TextArea';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/TextArea/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,OAAO,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,79 @@
1
+ import React, { useEffect, useRef, useState } from 'react';
2
+ import '../styles.css';
3
+ import { setValidInputDimension } from '../utils/validateStyleDimension';
4
+ import { getQTipData } from '../Tooltip/qTip.utilities';
5
+ const errorClasses = 'tw-border-sq-danger-color';
6
+ const borderColorClasses = [
7
+ 'tw-border-sq-disabled-gray',
8
+ 'dark:tw-border-sq-dark-disabled-gray',
9
+ 'dark:focus:tw-border-sq-color-dark-dark',
10
+ 'dark:active:tw-border-sq-color-dark-dark',
11
+ 'focus:tw-border-sq-color-dark',
12
+ 'active:tw-border-sq-color-dark',
13
+ ].join(' ');
14
+ const baseClasses = 'tw-h-inputs tw-leading-normal tw-outline-none tw-py-1 tw-px-3' +
15
+ ' disabled:tw-pointer-events-none disabled:tw-bg-sq-light-gray disabled:dark:tw-bg-sq-dark-disabled-gray' +
16
+ ' disabled:tw-cursor-not-allowed tw-p-1 tw-border-solid tw-border tw-placeholder-gray-400' +
17
+ ' dark:tw-placeholder-sq-dark-text-lighter specTextField';
18
+ const darkTheme = 'dark:tw-bg-sq-dark-background dark:tw-text-sq-dark-text disabled:dark:tw-text-sq-dark-text-lighter';
19
+ const lightTheme = 'tw-text-sq-text-color disabled:tw-text-sq-darkish-gray';
20
+ const sizeClasses = {
21
+ sm: 'tw-text-sm',
22
+ lg: 'tw-text-xl',
23
+ };
24
+ /**
25
+ * Textfield.
26
+ */
27
+ export const TextField = React.forwardRef((props, ref) => {
28
+ const { readonly = false, disabled = false, onChange, onKeyUp, onFocus, onBlur, onKeyDown, id, name, size = 'sm', value, placeholder, extraClassNames, testId, type = 'text', inputGroup, step, showError, errorText, min, max, maxLength, minLength, required = false, autoComplete = 'off', inputWidth = undefined, inputHeight = undefined, autoFocus = false, ...tooltipProps } = props;
29
+ const internalRef = useRef(null);
30
+ const [cursor, setCursor] = useState(null);
31
+ const tooltipData = getQTipData(tooltipProps);
32
+ const setAllRefs = (receivedRef) => {
33
+ if (ref)
34
+ ref.current = receivedRef;
35
+ internalRef.current = receivedRef;
36
+ };
37
+ useEffect(() => {
38
+ const input = internalRef.current;
39
+ if (input && type !== 'number' && type !== 'email')
40
+ input.setSelectionRange(cursor, cursor);
41
+ }, [ref, cursor, value]);
42
+ const handleChange = (e) => {
43
+ setCursor(e.target.selectionStart);
44
+ onChange && onChange(e);
45
+ };
46
+ useEffect(() => {
47
+ /**
48
+ * we need to change the value only if it's different since the internal state of "input" will change it anyway
49
+ * this will only be the case when the value has been changed externally via store (undo / redo)
50
+ */
51
+ if (value !== null && value !== undefined && value !== internalRef.current?.value && internalRef.current) {
52
+ // we need to use this method because using the value props directly will switch the input to a "controlled"
53
+ // component
54
+ internalRef.current.value = `${value}`;
55
+ }
56
+ }, [value]);
57
+ let borderRadius = 'tw-rounded-md';
58
+ if (inputGroup === 'left') {
59
+ borderRadius = 'tw-rounded-l-md tw-border-r-0 focus:tw-border-r' + ' active:tw-border-r';
60
+ }
61
+ else if (inputGroup === 'right') {
62
+ borderRadius = 'tw-rounded-r-md tw-border-l-0 focus:tw-border-l active:tw-border-l';
63
+ }
64
+ const appliedClasses = `${baseClasses} ${sizeClasses[size]} ${extraClassNames} ${lightTheme} ${darkTheme} ${borderRadius} ${showError ? errorClasses : borderColorClasses} `;
65
+ const inputProp = setValidInputDimension(inputWidth, inputHeight)
66
+ ? {
67
+ style: setValidInputDimension(inputWidth, inputHeight),
68
+ }
69
+ : {};
70
+ const inputLenghtProp = {};
71
+ if (maxLength)
72
+ inputLenghtProp.maxLength = maxLength;
73
+ if (minLength)
74
+ inputLenghtProp.minLength = minLength;
75
+ return (React.createElement(React.Fragment, null,
76
+ React.createElement("input", { ref: setAllRefs, "data-testid": testId, name: name, id: id, type: type, value: value, className: appliedClasses, placeholder: placeholder, disabled: disabled, readOnly: readonly, autoComplete: autoComplete, onChange: handleChange, onFocus: onFocus, onBlur: onBlur, onKeyDown: onKeyDown, onKeyUp: onKeyUp, step: step, required: required, autoFocus: autoFocus, min: min, max: max, ...inputLenghtProp, ...inputProp, ...tooltipData }),
77
+ errorText && showError && React.createElement("div", { className: "tw-text-sq-danger-color tw-text-xs tw-mt-1" }, errorText)));
78
+ });
79
+ //# sourceMappingURL=TextField.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TextField.js","sourceRoot":"","sources":["../../src/TextField/TextField.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ import React from 'react';
2
+ import { TextField } from './TextField';
3
+ import { QTip } from '../Tooltip';
4
+ export default {
5
+ title: 'TextField',
6
+ };
7
+ export const AllTextFields = () => {
8
+ const renderAllVariations = () => (React.createElement(React.Fragment, null,
9
+ React.createElement("div", { className: "tw-p-4 light" },
10
+ React.createElement("div", { className: "tw-p-4" },
11
+ React.createElement(TextField, { value: "value provided" })),
12
+ React.createElement("div", { className: "tw-p-4" },
13
+ React.createElement(TextField, { placeholder: "placeholder text" })),
14
+ React.createElement("div", { className: "tw-p-4" },
15
+ React.createElement(TextField, { placeholder: "with error", showError: true })),
16
+ React.createElement("div", { className: "tw-p-4" },
17
+ React.createElement(TextField, { placeholder: "with error text", showError: true, errorText: "this is a major test error and it is long on purpose to see its looks" })),
18
+ React.createElement("div", { className: "tw-p-4" },
19
+ React.createElement(TextField, { value: "read-only", readonly: true, onFocus: (e) => e.currentTarget.select() })),
20
+ React.createElement("div", { className: "tw-p-4" },
21
+ React.createElement(TextField, { value: "disabled", disabled: true, onFocus: (e) => e.currentTarget.select() })),
22
+ React.createElement("div", { className: "tw-p-4" },
23
+ React.createElement("div", null, "max value = 10"),
24
+ React.createElement(TextField, { type: "number", value: 20, max: 10 })),
25
+ React.createElement("div", { className: "tw-p-4" },
26
+ React.createElement("div", null, "min value = 2"),
27
+ React.createElement(TextField, { type: "number", value: 1, min: 2 })),
28
+ React.createElement("div", { className: "tw-p-4" },
29
+ React.createElement(TextField, { value: "large", size: "lg" })),
30
+ React.createElement("div", { className: "tw-p-4" },
31
+ React.createElement(TextField, { value: "with tooltip", tooltip: "small tooltip" }))),
32
+ React.createElement("div", { className: "tw-p-4 tw-dark tw-bg-sq-dark-background" },
33
+ React.createElement("div", { className: "tw-p-4" },
34
+ React.createElement(TextField, { value: "value provided" })),
35
+ React.createElement("div", { className: "tw-p-4" },
36
+ React.createElement(TextField, { placeholder: "placeholder text" })),
37
+ React.createElement("div", { className: "tw-p-4" },
38
+ React.createElement(TextField, { placeholder: "with error", showError: true })),
39
+ React.createElement("div", { className: "tw-p-4" },
40
+ React.createElement(TextField, { placeholder: "with error text", showError: true, errorText: "this is a major test error and it is long on purpose to see its looks" })),
41
+ React.createElement("div", { className: "tw-p-4" },
42
+ React.createElement(TextField, { value: "read-only", readonly: true, onFocus: (e) => e.currentTarget.select() })),
43
+ React.createElement("div", { className: "tw-p-4" },
44
+ React.createElement(TextField, { value: "disabled", disabled: true, onFocus: (e) => e.currentTarget.select() })),
45
+ React.createElement("div", { className: "tw-p-4" },
46
+ React.createElement("div", { className: "tw-text-sq-color-dark dark:tw-text-sq-color-dark-dark" }, "max value = 10"),
47
+ React.createElement(TextField, { type: "number", value: 8, max: 10 })),
48
+ React.createElement("div", { className: "tw-p-4" },
49
+ React.createElement("div", { className: "tw-text-sq-color-dark dark:tw-text-sq-color-dark-dark" }, "min value = 2"),
50
+ React.createElement(TextField, { type: "number", value: 10, min: 2 })),
51
+ React.createElement("div", { className: "tw-p-4" },
52
+ React.createElement(TextField, { value: "large", size: "lg" })),
53
+ React.createElement("div", { className: "tw-p-4" },
54
+ React.createElement(TextField, { value: "with tooltip", tooltip: "small tooltip" })))));
55
+ return (React.createElement("div", { className: "tw-grid tw-grid-cols-4 tw-gap-4" },
56
+ React.createElement(QTip, null),
57
+ React.createElement("div", { className: "color_topic" },
58
+ React.createElement("b", null, "Topic Colors"),
59
+ renderAllVariations()),
60
+ React.createElement("div", { className: "color_analysis" },
61
+ React.createElement("b", null, "Analysis Colors"),
62
+ renderAllVariations()),
63
+ React.createElement("div", { className: "color_datalab" },
64
+ React.createElement("b", null, "Datalab Colors"),
65
+ renderAllVariations()),
66
+ React.createElement("div", { className: "color_vantage" },
67
+ React.createElement("b", null, "Vantage Colors"),
68
+ renderAllVariations())));
69
+ };
70
+ //# sourceMappingURL=TextField.stories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TextField.stories.js","sourceRoot":"","sources":["../../src/TextField/TextField.stories.tsx"],"names":[],"mappings":"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"}