@clickhouse/click-ui 0.6.2-rc3 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (460) hide show
  1. package/dist/cjs/click-ui.css +3521 -236
  2. package/dist/cjs/components/Alert/index.cjs +2 -2
  3. package/dist/cjs/components/Alert/index.cjs.map +1 -1
  4. package/dist/cjs/components/Assets/Logos/Polaris.cjs +22 -0
  5. package/dist/cjs/components/Assets/Logos/Polaris.cjs.map +1 -0
  6. package/dist/cjs/components/Assets/Logos/system/LogosDark.cjs +2 -0
  7. package/dist/cjs/components/Assets/Logos/system/LogosDark.cjs.map +1 -1
  8. package/dist/cjs/components/Assets/Logos/system/LogosLight.cjs +2 -0
  9. package/dist/cjs/components/Assets/Logos/system/LogosLight.cjs.map +1 -1
  10. package/dist/cjs/components/AutoComplete/AutoComplete.css +97 -0
  11. package/dist/cjs/components/AutoComplete/AutoComplete.module.css.cjs +18 -0
  12. package/dist/cjs/components/AutoComplete/AutoComplete.module.css.cjs.map +1 -0
  13. package/dist/cjs/components/AutoComplete/index.cjs +14 -74
  14. package/dist/cjs/components/AutoComplete/index.cjs.map +1 -1
  15. package/dist/cjs/components/BigStat/BigStat.css +77 -0
  16. package/dist/cjs/components/BigStat/BigStat.module.css.cjs +22 -0
  17. package/dist/cjs/components/BigStat/BigStat.module.css.cjs.map +1 -0
  18. package/dist/cjs/components/BigStat/index.cjs +60 -52
  19. package/dist/cjs/components/BigStat/index.cjs.map +1 -1
  20. package/dist/cjs/components/Button/BaseButton.cjs +10 -31
  21. package/dist/cjs/components/Button/BaseButton.cjs.map +1 -1
  22. package/dist/cjs/components/Button/BaseButton.css +40 -0
  23. package/dist/cjs/components/Button/BaseButton.module.css.cjs +10 -0
  24. package/dist/cjs/components/Button/BaseButton.module.css.cjs.map +1 -0
  25. package/dist/cjs/components/ButtonGroup/index.cjs +1 -1
  26. package/dist/cjs/components/ButtonGroup/index.cjs.map +1 -1
  27. package/dist/cjs/components/CardPromotion/CardPromotion.css +52 -0
  28. package/dist/cjs/components/CardPromotion/CardPromotion.module.css.cjs +21 -0
  29. package/dist/cjs/components/CardPromotion/CardPromotion.module.css.cjs.map +1 -0
  30. package/dist/cjs/components/CardPromotion/index.cjs +8 -54
  31. package/dist/cjs/components/CardPromotion/index.cjs.map +1 -1
  32. package/dist/cjs/components/CardSecondary/CardSecondary.css +99 -0
  33. package/dist/cjs/components/CardSecondary/CardSecondary.module.css.cjs +39 -0
  34. package/dist/cjs/components/CardSecondary/CardSecondary.module.css.cjs.map +1 -0
  35. package/dist/cjs/components/CardSecondary/index.cjs +35 -84
  36. package/dist/cjs/components/CardSecondary/index.cjs.map +1 -1
  37. package/dist/cjs/components/CodeBlock/CodeBlock.css +48 -0
  38. package/dist/cjs/components/CodeBlock/CodeBlock.module.css.cjs +22 -0
  39. package/dist/cjs/components/CodeBlock/CodeBlock.module.css.cjs.map +1 -0
  40. package/dist/cjs/components/CodeBlock/InlineCodeBlock.cjs +7 -14
  41. package/dist/cjs/components/CodeBlock/InlineCodeBlock.cjs.map +1 -1
  42. package/dist/cjs/components/CodeBlock/InlineCodeBlock.css +10 -0
  43. package/dist/cjs/components/CodeBlock/InlineCodeBlock.module.css.cjs +12 -0
  44. package/dist/cjs/components/CodeBlock/InlineCodeBlock.module.css.cjs.map +1 -0
  45. package/dist/cjs/components/CodeBlock/index.cjs +18 -49
  46. package/dist/cjs/components/CodeBlock/index.cjs.map +1 -1
  47. package/dist/cjs/components/CodeBlock/useColorStyle.cjs +15 -0
  48. package/dist/cjs/components/CodeBlock/useColorStyle.cjs.map +1 -1
  49. package/dist/cjs/components/ConfirmationDialog/ConfirmationDialog.css +20 -0
  50. package/dist/cjs/components/ConfirmationDialog/ConfirmationDialog.module.css.cjs +15 -0
  51. package/dist/cjs/components/ConfirmationDialog/ConfirmationDialog.module.css.cjs.map +1 -0
  52. package/dist/cjs/components/ConfirmationDialog/index.cjs +6 -11
  53. package/dist/cjs/components/ConfirmationDialog/index.cjs.map +1 -1
  54. package/dist/cjs/components/ContextMenu/ContextMenu.css +40 -0
  55. package/dist/cjs/components/ContextMenu/ContextMenu.module.css.cjs +17 -0
  56. package/dist/cjs/components/ContextMenu/ContextMenu.module.css.cjs.map +1 -0
  57. package/dist/cjs/components/ContextMenu/index.cjs +33 -47
  58. package/dist/cjs/components/ContextMenu/index.cjs.map +1 -1
  59. package/dist/cjs/components/CrossButton/CrossButton.css +12 -0
  60. package/dist/cjs/components/CrossButton/CrossButton.module.css.cjs +10 -0
  61. package/dist/cjs/components/CrossButton/CrossButton.module.css.cjs.map +1 -0
  62. package/dist/cjs/components/CrossButton/index.cjs +11 -14
  63. package/dist/cjs/components/CrossButton/index.cjs.map +1 -1
  64. package/dist/cjs/components/DatePicker/Common.cjs +1 -1
  65. package/dist/cjs/components/DatePicker/Common.cjs.map +1 -1
  66. package/dist/cjs/components/DatePicker/DateTimeRangePicker.cjs +1 -1
  67. package/dist/cjs/components/DatePicker/DateTimeRangePicker.cjs.map +1 -1
  68. package/dist/cjs/components/Dropdown/Dropdown.css +36 -0
  69. package/dist/cjs/components/Dropdown/Dropdown.module.css.cjs +13 -0
  70. package/dist/cjs/components/Dropdown/Dropdown.module.css.cjs.map +1 -0
  71. package/dist/cjs/components/Dropdown/index.cjs +28 -33
  72. package/dist/cjs/components/Dropdown/index.cjs.map +1 -1
  73. package/dist/cjs/components/EllipsisContent/EllipsisContent.css +21 -0
  74. package/dist/cjs/components/EllipsisContent/EllipsisContent.module.css.cjs +10 -0
  75. package/dist/cjs/components/EllipsisContent/EllipsisContent.module.css.cjs.map +1 -0
  76. package/dist/cjs/components/EllipsisContent/index.cjs +7 -6
  77. package/dist/cjs/components/EllipsisContent/index.cjs.map +1 -1
  78. package/dist/cjs/components/EmptyButton/EmptyButton.css +21 -0
  79. package/dist/cjs/components/EmptyButton/EmptyButton.module.css.cjs +10 -0
  80. package/dist/cjs/components/EmptyButton/EmptyButton.module.css.cjs.map +1 -0
  81. package/dist/cjs/components/EmptyButton/index.cjs +10 -4
  82. package/dist/cjs/components/EmptyButton/index.cjs.map +1 -1
  83. package/dist/cjs/components/FileTabs/FileTabs.css +167 -0
  84. package/dist/cjs/components/FileTabs/FileTabs.module.css.cjs +38 -0
  85. package/dist/cjs/components/FileTabs/FileTabs.module.css.cjs.map +1 -0
  86. package/dist/cjs/components/FileTabs/index.cjs +51 -80
  87. package/dist/cjs/components/FileTabs/index.cjs.map +1 -1
  88. package/dist/cjs/components/FileUpload/FileMultiUpload.cjs +3 -9
  89. package/dist/cjs/components/FileUpload/FileMultiUpload.cjs.map +1 -1
  90. package/dist/cjs/components/FileUpload/FileMultiUpload.css +8 -0
  91. package/dist/cjs/components/FileUpload/FileMultiUpload.module.css.cjs +10 -0
  92. package/dist/cjs/components/FileUpload/FileMultiUpload.module.css.cjs.map +1 -0
  93. package/dist/cjs/components/FileUpload/FileUpload.stories-common.css +14 -0
  94. package/dist/cjs/components/FileUpload/FileUploadArea.cjs +87 -64
  95. package/dist/cjs/components/FileUpload/FileUploadArea.cjs.map +1 -1
  96. package/dist/cjs/components/FileUpload/FileUploadArea.css +130 -0
  97. package/dist/cjs/components/FileUpload/FileUploadArea.module.css.cjs +38 -0
  98. package/dist/cjs/components/FileUpload/FileUploadArea.module.css.cjs.map +1 -0
  99. package/dist/cjs/components/FileUpload/FileUploadItem.cjs +56 -64
  100. package/dist/cjs/components/FileUpload/FileUploadItem.cjs.map +1 -1
  101. package/dist/cjs/components/FileUpload/FileUploadItem.css +82 -0
  102. package/dist/cjs/components/FileUpload/FileUploadItem.module.css.cjs +27 -0
  103. package/dist/cjs/components/FileUpload/FileUploadItem.module.css.cjs.map +1 -0
  104. package/dist/cjs/components/Flyout/Flyout.css +231 -0
  105. package/dist/cjs/components/Flyout/Flyout.module.css.cjs +93 -0
  106. package/dist/cjs/components/Flyout/Flyout.module.css.cjs.map +1 -0
  107. package/dist/cjs/components/Flyout/index.cjs +148 -126
  108. package/dist/cjs/components/Flyout/index.cjs.map +1 -1
  109. package/dist/cjs/components/FormContainer/Error.cjs +8 -9
  110. package/dist/cjs/components/FormContainer/Error.cjs.map +1 -1
  111. package/dist/cjs/components/FormContainer/Error.css +4 -0
  112. package/dist/cjs/components/FormContainer/Error.module.css.cjs +12 -0
  113. package/dist/cjs/components/FormContainer/Error.module.css.cjs.map +1 -0
  114. package/dist/cjs/components/FormContainer/FormElementContainer.cjs +8 -6
  115. package/dist/cjs/components/FormContainer/FormElementContainer.cjs.map +1 -1
  116. package/dist/cjs/components/FormContainer/FormElementContainer.css +14 -0
  117. package/dist/cjs/components/FormContainer/FormElementContainer.module.css.cjs +10 -0
  118. package/dist/cjs/components/FormContainer/FormElementContainer.module.css.cjs.map +1 -0
  119. package/dist/cjs/components/FormContainer/FormRoot.cjs +32 -18
  120. package/dist/cjs/components/FormContainer/FormRoot.cjs.map +1 -1
  121. package/dist/cjs/components/FormContainer/FormRoot.css +33 -0
  122. package/dist/cjs/components/FormContainer/FormRoot.module.css.cjs +15 -0
  123. package/dist/cjs/components/FormContainer/FormRoot.module.css.cjs.map +1 -0
  124. package/dist/cjs/components/GenericMenu/GenericMenu.css +176 -0
  125. package/dist/cjs/components/GenericMenu/GenericMenu.module.css.cjs +23 -0
  126. package/dist/cjs/components/GenericMenu/GenericMenu.module.css.cjs.map +1 -0
  127. package/dist/cjs/components/GenericMenu/index.cjs +93 -99
  128. package/dist/cjs/components/GenericMenu/index.cjs.map +1 -1
  129. package/dist/cjs/components/GridCenter/GridCenter.css +6 -0
  130. package/dist/cjs/components/GridContainer/GridContainer.css +71 -0
  131. package/dist/cjs/components/GridContainer/GridContainer.module.css.cjs +12 -0
  132. package/dist/cjs/components/GridContainer/GridContainer.module.css.cjs.map +1 -0
  133. package/dist/cjs/components/GridContainer/index.cjs +64 -64
  134. package/dist/cjs/components/GridContainer/index.cjs.map +1 -1
  135. package/dist/cjs/components/HoverCard/index.cjs +1 -1
  136. package/dist/cjs/components/HoverCard/index.cjs.map +1 -1
  137. package/dist/cjs/components/IconButton/index.cjs +2 -1
  138. package/dist/cjs/components/IconButton/index.cjs.map +1 -1
  139. package/dist/cjs/components/InputWrapper/InputWrapper.css +221 -0
  140. package/dist/cjs/components/InputWrapper/InputWrapper.module.css.cjs +39 -0
  141. package/dist/cjs/components/InputWrapper/InputWrapper.module.css.cjs.map +1 -0
  142. package/dist/cjs/components/InputWrapper/index.cjs +84 -185
  143. package/dist/cjs/components/InputWrapper/index.cjs.map +1 -1
  144. package/dist/cjs/components/MiddleTruncator/MiddleTruncator.css +22 -0
  145. package/dist/cjs/components/MiddleTruncator/MiddleTruncator.module.css.cjs +18 -0
  146. package/dist/cjs/components/MiddleTruncator/MiddleTruncator.module.css.cjs.map +1 -0
  147. package/dist/cjs/components/MiddleTruncator/index.cjs +5 -17
  148. package/dist/cjs/components/MiddleTruncator/index.cjs.map +1 -1
  149. package/dist/cjs/components/Pagination/Pagination.css +7 -0
  150. package/dist/cjs/components/Pagination/Pagination.module.css.cjs +10 -0
  151. package/dist/cjs/components/Pagination/Pagination.module.css.cjs.map +1 -0
  152. package/dist/cjs/components/Pagination/index.cjs +3 -5
  153. package/dist/cjs/components/Pagination/index.cjs.map +1 -1
  154. package/dist/cjs/components/Panel/Panel.css +116 -0
  155. package/dist/cjs/components/Panel/Panel.module.css.cjs +87 -0
  156. package/dist/cjs/components/Panel/Panel.module.css.cjs.map +1 -0
  157. package/dist/cjs/components/Panel/index.cjs +85 -35
  158. package/dist/cjs/components/Panel/index.cjs.map +1 -1
  159. package/dist/cjs/components/Popover/Popover.css +32 -0
  160. package/dist/cjs/components/Popover/Popover.module.css.cjs +15 -0
  161. package/dist/cjs/components/Popover/Popover.module.css.cjs.map +1 -0
  162. package/dist/cjs/components/Popover/index.cjs +27 -36
  163. package/dist/cjs/components/Popover/index.cjs.map +1 -1
  164. package/dist/cjs/components/RadioGroup/RadioGroup.css +99 -0
  165. package/dist/cjs/components/RadioGroup/RadioGroup.module.css.cjs +18 -0
  166. package/dist/cjs/components/RadioGroup/RadioGroup.module.css.cjs.map +1 -0
  167. package/dist/cjs/components/RadioGroup/index.cjs +28 -77
  168. package/dist/cjs/components/RadioGroup/index.cjs.map +1 -1
  169. package/dist/cjs/components/Select/MultiSelectValue.cjs +4 -9
  170. package/dist/cjs/components/Select/MultiSelectValue.cjs.map +1 -1
  171. package/dist/cjs/components/Select/MultiSelectValue.css +19 -0
  172. package/dist/cjs/components/Select/MultiSelectValue.module.css.cjs +11 -0
  173. package/dist/cjs/components/Select/MultiSelectValue.module.css.cjs.map +1 -0
  174. package/dist/cjs/components/Select/SingleSelectValue.cjs +3 -5
  175. package/dist/cjs/components/Select/SingleSelectValue.cjs.map +1 -1
  176. package/dist/cjs/components/Select/SingleSelectValue.css +10 -0
  177. package/dist/cjs/components/Select/SingleSelectValue.module.css.cjs +10 -0
  178. package/dist/cjs/components/Select/SingleSelectValue.module.css.cjs.map +1 -0
  179. package/dist/cjs/components/Select/common/InternalSelect.cjs +18 -23
  180. package/dist/cjs/components/Select/common/InternalSelect.cjs.map +1 -1
  181. package/dist/cjs/components/Select/common/SelectComponents.cjs +110 -0
  182. package/dist/cjs/components/Select/common/SelectComponents.cjs.map +1 -0
  183. package/dist/cjs/components/Select/common/SelectComponents.css +296 -0
  184. package/dist/cjs/components/Select/common/SelectComponents.module.css.cjs +31 -0
  185. package/dist/cjs/components/Select/common/SelectComponents.module.css.cjs.map +1 -0
  186. package/dist/cjs/components/SplitButton/SplitButton.css +138 -0
  187. package/dist/cjs/components/SplitButton/SplitButton.module.css.cjs +19 -0
  188. package/dist/cjs/components/SplitButton/SplitButton.module.css.cjs.map +1 -0
  189. package/dist/cjs/components/SplitButton/index.cjs +43 -88
  190. package/dist/cjs/components/SplitButton/index.cjs.map +1 -1
  191. package/dist/cjs/components/Table/Table.css +375 -0
  192. package/dist/cjs/components/Table/Table.module.css.cjs +86 -0
  193. package/dist/cjs/components/Table/Table.module.css.cjs.map +1 -0
  194. package/dist/cjs/components/Table/index.cjs +132 -214
  195. package/dist/cjs/components/Table/index.cjs.map +1 -1
  196. package/dist/cjs/components/Toast/Toast.css +142 -0
  197. package/dist/cjs/components/Toast/Toast.module.css.cjs +38 -0
  198. package/dist/cjs/components/Toast/Toast.module.css.cjs.map +1 -0
  199. package/dist/cjs/components/Toast/index.cjs +43 -96
  200. package/dist/cjs/components/Toast/index.cjs.map +1 -1
  201. package/dist/cjs/components/Tooltip/Tooltip.css +17 -0
  202. package/dist/cjs/components/Tooltip/Tooltip.module.css.cjs +15 -0
  203. package/dist/cjs/components/Tooltip/Tooltip.module.css.cjs.map +1 -0
  204. package/dist/cjs/components/Tooltip/index.cjs +12 -24
  205. package/dist/cjs/components/Tooltip/index.cjs.map +1 -1
  206. package/dist/cjs/components/VerticalStepper/VerticalStepper.css +302 -0
  207. package/dist/cjs/components/VerticalStepper/VerticalStepper.module.css.cjs +84 -0
  208. package/dist/cjs/components/VerticalStepper/VerticalStepper.module.css.cjs.map +1 -0
  209. package/dist/cjs/components/VerticalStepper/index.cjs +85 -110
  210. package/dist/cjs/components/VerticalStepper/index.cjs.map +1 -1
  211. package/dist/esm/click-ui.css +3521 -236
  212. package/dist/esm/components/Alert/index.js +2 -2
  213. package/dist/esm/components/Alert/index.js.map +1 -1
  214. package/dist/esm/components/Assets/Logos/Polaris.js +18 -0
  215. package/dist/esm/components/Assets/Logos/Polaris.js.map +1 -0
  216. package/dist/esm/components/Assets/Logos/system/LogosDark.js +2 -0
  217. package/dist/esm/components/Assets/Logos/system/LogosDark.js.map +1 -1
  218. package/dist/esm/components/Assets/Logos/system/LogosLight.js +2 -0
  219. package/dist/esm/components/Assets/Logos/system/LogosLight.js.map +1 -1
  220. package/dist/esm/components/AutoComplete/AutoComplete.css +97 -0
  221. package/dist/esm/components/AutoComplete/AutoComplete.module.css.js +14 -0
  222. package/dist/esm/components/AutoComplete/AutoComplete.module.css.js.map +1 -0
  223. package/dist/esm/components/AutoComplete/index.js +15 -75
  224. package/dist/esm/components/AutoComplete/index.js.map +1 -1
  225. package/dist/esm/components/BigStat/BigStat.css +77 -0
  226. package/dist/esm/components/BigStat/BigStat.module.css.js +18 -0
  227. package/dist/esm/components/BigStat/BigStat.module.css.js.map +1 -0
  228. package/dist/esm/components/BigStat/index.js +60 -52
  229. package/dist/esm/components/BigStat/index.js.map +1 -1
  230. package/dist/esm/components/Button/BaseButton.css +40 -0
  231. package/dist/esm/components/Button/BaseButton.js +11 -32
  232. package/dist/esm/components/Button/BaseButton.js.map +1 -1
  233. package/dist/esm/components/Button/BaseButton.module.css.js +6 -0
  234. package/dist/esm/components/Button/BaseButton.module.css.js.map +1 -0
  235. package/dist/esm/components/ButtonGroup/index.js +1 -1
  236. package/dist/esm/components/ButtonGroup/index.js.map +1 -1
  237. package/dist/esm/components/CardPromotion/CardPromotion.css +52 -0
  238. package/dist/esm/components/CardPromotion/CardPromotion.module.css.js +13 -0
  239. package/dist/esm/components/CardPromotion/CardPromotion.module.css.js.map +1 -0
  240. package/dist/esm/components/CardPromotion/index.js +8 -54
  241. package/dist/esm/components/CardPromotion/index.js.map +1 -1
  242. package/dist/esm/components/CardSecondary/CardSecondary.css +99 -0
  243. package/dist/esm/components/CardSecondary/CardSecondary.module.css.js +25 -0
  244. package/dist/esm/components/CardSecondary/CardSecondary.module.css.js.map +1 -0
  245. package/dist/esm/components/CardSecondary/index.js +35 -84
  246. package/dist/esm/components/CardSecondary/index.js.map +1 -1
  247. package/dist/esm/components/CodeBlock/CodeBlock.css +48 -0
  248. package/dist/esm/components/CodeBlock/CodeBlock.module.css.js +14 -0
  249. package/dist/esm/components/CodeBlock/CodeBlock.module.css.js.map +1 -0
  250. package/dist/esm/components/CodeBlock/InlineCodeBlock.css +10 -0
  251. package/dist/esm/components/CodeBlock/InlineCodeBlock.js +7 -14
  252. package/dist/esm/components/CodeBlock/InlineCodeBlock.js.map +1 -1
  253. package/dist/esm/components/CodeBlock/InlineCodeBlock.module.css.js +7 -0
  254. package/dist/esm/components/CodeBlock/InlineCodeBlock.module.css.js.map +1 -0
  255. package/dist/esm/components/CodeBlock/index.js +20 -51
  256. package/dist/esm/components/CodeBlock/index.js.map +1 -1
  257. package/dist/esm/components/CodeBlock/useColorStyle.js +14 -1
  258. package/dist/esm/components/CodeBlock/useColorStyle.js.map +1 -1
  259. package/dist/esm/components/ConfirmationDialog/ConfirmationDialog.css +20 -0
  260. package/dist/esm/components/ConfirmationDialog/ConfirmationDialog.module.css.js +9 -0
  261. package/dist/esm/components/ConfirmationDialog/ConfirmationDialog.module.css.js.map +1 -0
  262. package/dist/esm/components/ConfirmationDialog/index.js +6 -11
  263. package/dist/esm/components/ConfirmationDialog/index.js.map +1 -1
  264. package/dist/esm/components/ContextMenu/ContextMenu.css +40 -0
  265. package/dist/esm/components/ContextMenu/ContextMenu.module.css.js +11 -0
  266. package/dist/esm/components/ContextMenu/ContextMenu.module.css.js.map +1 -0
  267. package/dist/esm/components/ContextMenu/index.js +34 -48
  268. package/dist/esm/components/ContextMenu/index.js.map +1 -1
  269. package/dist/esm/components/CrossButton/CrossButton.css +12 -0
  270. package/dist/esm/components/CrossButton/CrossButton.module.css.js +6 -0
  271. package/dist/esm/components/CrossButton/CrossButton.module.css.js.map +1 -0
  272. package/dist/esm/components/CrossButton/index.js +11 -14
  273. package/dist/esm/components/CrossButton/index.js.map +1 -1
  274. package/dist/esm/components/DatePicker/Common.js +1 -1
  275. package/dist/esm/components/DatePicker/Common.js.map +1 -1
  276. package/dist/esm/components/DatePicker/DateTimeRangePicker.js +1 -1
  277. package/dist/esm/components/DatePicker/DateTimeRangePicker.js.map +1 -1
  278. package/dist/esm/components/Dropdown/Dropdown.css +36 -0
  279. package/dist/esm/components/Dropdown/Dropdown.module.css.js +9 -0
  280. package/dist/esm/components/Dropdown/Dropdown.module.css.js.map +1 -0
  281. package/dist/esm/components/Dropdown/index.js +28 -33
  282. package/dist/esm/components/Dropdown/index.js.map +1 -1
  283. package/dist/esm/components/EllipsisContent/EllipsisContent.css +21 -0
  284. package/dist/esm/components/EllipsisContent/EllipsisContent.module.css.js +6 -0
  285. package/dist/esm/components/EllipsisContent/EllipsisContent.module.css.js.map +1 -0
  286. package/dist/esm/components/EllipsisContent/index.js +7 -6
  287. package/dist/esm/components/EllipsisContent/index.js.map +1 -1
  288. package/dist/esm/components/EmptyButton/EmptyButton.css +21 -0
  289. package/dist/esm/components/EmptyButton/EmptyButton.module.css.js +6 -0
  290. package/dist/esm/components/EmptyButton/EmptyButton.module.css.js.map +1 -0
  291. package/dist/esm/components/EmptyButton/index.js +10 -4
  292. package/dist/esm/components/EmptyButton/index.js.map +1 -1
  293. package/dist/esm/components/FileTabs/FileTabs.css +167 -0
  294. package/dist/esm/components/FileTabs/FileTabs.module.css.js +26 -0
  295. package/dist/esm/components/FileTabs/FileTabs.module.css.js.map +1 -0
  296. package/dist/esm/components/FileTabs/index.js +51 -80
  297. package/dist/esm/components/FileTabs/index.js.map +1 -1
  298. package/dist/esm/components/FileUpload/FileMultiUpload.css +8 -0
  299. package/dist/esm/components/FileUpload/FileMultiUpload.js +3 -9
  300. package/dist/esm/components/FileUpload/FileMultiUpload.js.map +1 -1
  301. package/dist/esm/components/FileUpload/FileMultiUpload.module.css.js +6 -0
  302. package/dist/esm/components/FileUpload/FileMultiUpload.module.css.js.map +1 -0
  303. package/dist/esm/components/FileUpload/FileUpload.stories-common.css +14 -0
  304. package/dist/esm/components/FileUpload/FileUploadArea.css +130 -0
  305. package/dist/esm/components/FileUpload/FileUploadArea.js +87 -64
  306. package/dist/esm/components/FileUpload/FileUploadArea.js.map +1 -1
  307. package/dist/esm/components/FileUpload/FileUploadArea.module.css.js +32 -0
  308. package/dist/esm/components/FileUpload/FileUploadArea.module.css.js.map +1 -0
  309. package/dist/esm/components/FileUpload/FileUploadItem.css +82 -0
  310. package/dist/esm/components/FileUpload/FileUploadItem.js +56 -64
  311. package/dist/esm/components/FileUpload/FileUploadItem.js.map +1 -1
  312. package/dist/esm/components/FileUpload/FileUploadItem.module.css.js +21 -0
  313. package/dist/esm/components/FileUpload/FileUploadItem.module.css.js.map +1 -0
  314. package/dist/esm/components/Flyout/Flyout.css +231 -0
  315. package/dist/esm/components/Flyout/Flyout.module.css.js +62 -0
  316. package/dist/esm/components/Flyout/Flyout.module.css.js.map +1 -0
  317. package/dist/esm/components/Flyout/index.js +149 -127
  318. package/dist/esm/components/Flyout/index.js.map +1 -1
  319. package/dist/esm/components/FormContainer/Error.css +4 -0
  320. package/dist/esm/components/FormContainer/Error.js +8 -9
  321. package/dist/esm/components/FormContainer/Error.js.map +1 -1
  322. package/dist/esm/components/FormContainer/Error.module.css.js +7 -0
  323. package/dist/esm/components/FormContainer/Error.module.css.js.map +1 -0
  324. package/dist/esm/components/FormContainer/FormElementContainer.css +14 -0
  325. package/dist/esm/components/FormContainer/FormElementContainer.js +8 -6
  326. package/dist/esm/components/FormContainer/FormElementContainer.js.map +1 -1
  327. package/dist/esm/components/FormContainer/FormElementContainer.module.css.js +6 -0
  328. package/dist/esm/components/FormContainer/FormElementContainer.module.css.js.map +1 -0
  329. package/dist/esm/components/FormContainer/FormRoot.css +33 -0
  330. package/dist/esm/components/FormContainer/FormRoot.js +32 -18
  331. package/dist/esm/components/FormContainer/FormRoot.js.map +1 -1
  332. package/dist/esm/components/FormContainer/FormRoot.module.css.js +11 -0
  333. package/dist/esm/components/FormContainer/FormRoot.module.css.js.map +1 -0
  334. package/dist/esm/components/GenericMenu/GenericMenu.css +176 -0
  335. package/dist/esm/components/GenericMenu/GenericMenu.module.css.js +18 -0
  336. package/dist/esm/components/GenericMenu/GenericMenu.module.css.js.map +1 -0
  337. package/dist/esm/components/GenericMenu/index.js +93 -99
  338. package/dist/esm/components/GenericMenu/index.js.map +1 -1
  339. package/dist/esm/components/GridCenter/GridCenter.css +6 -0
  340. package/dist/esm/components/GridContainer/GridContainer.css +71 -0
  341. package/dist/esm/components/GridContainer/GridContainer.module.css.js +8 -0
  342. package/dist/esm/components/GridContainer/GridContainer.module.css.js.map +1 -0
  343. package/dist/esm/components/GridContainer/index.js +65 -65
  344. package/dist/esm/components/GridContainer/index.js.map +1 -1
  345. package/dist/esm/components/HoverCard/index.js +1 -1
  346. package/dist/esm/components/HoverCard/index.js.map +1 -1
  347. package/dist/esm/components/IconButton/index.js +2 -1
  348. package/dist/esm/components/IconButton/index.js.map +1 -1
  349. package/dist/esm/components/InputWrapper/InputWrapper.css +221 -0
  350. package/dist/esm/components/InputWrapper/InputWrapper.module.css.js +27 -0
  351. package/dist/esm/components/InputWrapper/InputWrapper.module.css.js.map +1 -0
  352. package/dist/esm/components/InputWrapper/index.js +84 -185
  353. package/dist/esm/components/InputWrapper/index.js.map +1 -1
  354. package/dist/esm/components/MiddleTruncator/MiddleTruncator.css +22 -0
  355. package/dist/esm/components/MiddleTruncator/MiddleTruncator.module.css.js +11 -0
  356. package/dist/esm/components/MiddleTruncator/MiddleTruncator.module.css.js.map +1 -0
  357. package/dist/esm/components/MiddleTruncator/index.js +5 -17
  358. package/dist/esm/components/MiddleTruncator/index.js.map +1 -1
  359. package/dist/esm/components/Pagination/Pagination.css +7 -0
  360. package/dist/esm/components/Pagination/Pagination.module.css.js +6 -0
  361. package/dist/esm/components/Pagination/Pagination.module.css.js.map +1 -0
  362. package/dist/esm/components/Pagination/index.js +3 -5
  363. package/dist/esm/components/Pagination/index.js.map +1 -1
  364. package/dist/esm/components/Panel/Panel.css +116 -0
  365. package/dist/esm/components/Panel/Panel.module.css.js +58 -0
  366. package/dist/esm/components/Panel/Panel.module.css.js.map +1 -0
  367. package/dist/esm/components/Panel/index.js +85 -35
  368. package/dist/esm/components/Panel/index.js.map +1 -1
  369. package/dist/esm/components/Popover/Popover.css +32 -0
  370. package/dist/esm/components/Popover/Popover.module.css.js +10 -0
  371. package/dist/esm/components/Popover/Popover.module.css.js.map +1 -0
  372. package/dist/esm/components/Popover/index.js +27 -36
  373. package/dist/esm/components/Popover/index.js.map +1 -1
  374. package/dist/esm/components/RadioGroup/RadioGroup.css +99 -0
  375. package/dist/esm/components/RadioGroup/RadioGroup.module.css.js +13 -0
  376. package/dist/esm/components/RadioGroup/RadioGroup.module.css.js.map +1 -0
  377. package/dist/esm/components/RadioGroup/index.js +28 -77
  378. package/dist/esm/components/RadioGroup/index.js.map +1 -1
  379. package/dist/esm/components/Select/MultiSelectValue.css +19 -0
  380. package/dist/esm/components/Select/MultiSelectValue.js +4 -9
  381. package/dist/esm/components/Select/MultiSelectValue.js.map +1 -1
  382. package/dist/esm/components/Select/MultiSelectValue.module.css.js +7 -0
  383. package/dist/esm/components/Select/MultiSelectValue.module.css.js.map +1 -0
  384. package/dist/esm/components/Select/SingleSelectValue.css +10 -0
  385. package/dist/esm/components/Select/SingleSelectValue.js +3 -5
  386. package/dist/esm/components/Select/SingleSelectValue.js.map +1 -1
  387. package/dist/esm/components/Select/SingleSelectValue.module.css.js +6 -0
  388. package/dist/esm/components/Select/SingleSelectValue.module.css.js.map +1 -0
  389. package/dist/esm/components/Select/common/InternalSelect.js +4 -9
  390. package/dist/esm/components/Select/common/InternalSelect.js.map +1 -1
  391. package/dist/esm/components/Select/common/SelectComponents.css +296 -0
  392. package/dist/esm/components/Select/common/SelectComponents.js +92 -0
  393. package/dist/esm/components/Select/common/SelectComponents.js.map +1 -0
  394. package/dist/esm/components/Select/common/SelectComponents.module.css.js +27 -0
  395. package/dist/esm/components/Select/common/SelectComponents.module.css.js.map +1 -0
  396. package/dist/esm/components/SplitButton/SplitButton.css +138 -0
  397. package/dist/esm/components/SplitButton/SplitButton.module.css.js +15 -0
  398. package/dist/esm/components/SplitButton/SplitButton.module.css.js.map +1 -0
  399. package/dist/esm/components/SplitButton/index.js +44 -89
  400. package/dist/esm/components/SplitButton/index.js.map +1 -1
  401. package/dist/esm/components/Table/Table.css +375 -0
  402. package/dist/esm/components/Table/Table.module.css.js +63 -0
  403. package/dist/esm/components/Table/Table.module.css.js.map +1 -0
  404. package/dist/esm/components/Table/index.js +132 -214
  405. package/dist/esm/components/Table/index.js.map +1 -1
  406. package/dist/esm/components/Toast/Toast.css +142 -0
  407. package/dist/esm/components/Toast/Toast.module.css.js +26 -0
  408. package/dist/esm/components/Toast/Toast.module.css.js.map +1 -0
  409. package/dist/esm/components/Toast/index.js +43 -96
  410. package/dist/esm/components/Toast/index.js.map +1 -1
  411. package/dist/esm/components/Tooltip/Tooltip.css +17 -0
  412. package/dist/esm/components/Tooltip/Tooltip.module.css.js +9 -0
  413. package/dist/esm/components/Tooltip/Tooltip.module.css.js.map +1 -0
  414. package/dist/esm/components/Tooltip/index.js +12 -24
  415. package/dist/esm/components/Tooltip/index.js.map +1 -1
  416. package/dist/esm/components/VerticalStepper/VerticalStepper.css +302 -0
  417. package/dist/esm/components/VerticalStepper/VerticalStepper.module.css.js +55 -0
  418. package/dist/esm/components/VerticalStepper/VerticalStepper.module.css.js.map +1 -0
  419. package/dist/esm/components/VerticalStepper/index.js +85 -110
  420. package/dist/esm/components/VerticalStepper/index.js.map +1 -1
  421. package/dist/types/components/Assets/Logos/Polaris.d.ts +3 -0
  422. package/dist/types/components/Assets/Logos/system/types.d.ts +1 -1
  423. package/dist/types/components/AutoComplete/AutoComplete.d.ts +1 -1
  424. package/dist/types/components/BigStat/BigStat.d.ts +1 -1
  425. package/dist/types/components/Button/BaseButton.d.ts +2 -1
  426. package/dist/types/components/CardPromotion/CardPromotion.d.ts +1 -1
  427. package/dist/types/components/CardSecondary/CardSecondary.d.ts +1 -1
  428. package/dist/types/components/CodeBlock/CodeBlock.d.ts +1 -1
  429. package/dist/types/components/CodeBlock/InlineCodeBlock.d.ts +1 -1
  430. package/dist/types/components/CodeBlock/useColorStyle.d.ts +6 -112
  431. package/dist/types/components/ConfirmationDialog/ConfirmationDialog.d.ts +1 -1
  432. package/dist/types/components/ContextMenu/ContextMenu.d.ts +1 -1
  433. package/dist/types/components/CrossButton/CrossButton.d.ts +2 -3
  434. package/dist/types/components/Dropdown/Dropdown.d.ts +2 -2
  435. package/dist/types/components/EmptyButton/EmptyButton.d.ts +2 -1
  436. package/dist/types/components/FileTabs/FileTabs.d.ts +3 -3
  437. package/dist/types/components/FileUpload/FileUpload.stories-common.d.ts +4 -1
  438. package/dist/types/components/Flyout/Flyout.d.ts +8 -6
  439. package/dist/types/components/Flyout/Flyout.types.d.ts +3 -0
  440. package/dist/types/components/FormContainer/Error.d.ts +2 -1
  441. package/dist/types/components/FormContainer/FormElementContainer.d.ts +2 -1
  442. package/dist/types/components/FormContainer/FormRoot.d.ts +6 -4
  443. package/dist/types/components/GenericMenu/GenericMenu.d.ts +29 -12
  444. package/dist/types/components/GridCenter/GridCenter.d.ts +9 -1
  445. package/dist/types/components/IconButton/IconButton.types.d.ts +3 -0
  446. package/dist/types/components/InputWrapper/InputWrapper.d.ts +17 -13
  447. package/dist/types/components/Panel/Panel.d.ts +2 -39
  448. package/dist/types/components/RadioGroup/RadioGroup.d.ts +2 -2
  449. package/dist/types/components/Select/common/SelectComponents.d.ts +33 -0
  450. package/dist/types/components/SplitButton/SplitButton.d.ts +1 -1
  451. package/dist/types/components/SplitButton/SplitButton.types.d.ts +3 -0
  452. package/dist/types/components/Toast/Toast.d.ts +1 -1
  453. package/dist/types/components/Tooltip/Tooltip.d.ts +1 -1
  454. package/dist/types/components/VerticalStepper/VerticalStepper.d.ts +2 -2
  455. package/package.json +1 -1
  456. package/dist/cjs/components/Select/common/SelectStyled.cjs +0 -194
  457. package/dist/cjs/components/Select/common/SelectStyled.cjs.map +0 -1
  458. package/dist/esm/components/Select/common/SelectStyled.js +0 -176
  459. package/dist/esm/components/Select/common/SelectStyled.js.map +0 -1
  460. package/dist/types/components/Select/common/SelectStyled.d.ts +0 -34
@@ -1 +1 @@
1
- {"version":3,"file":"DateTimeRangePicker.cjs","sources":["../../../../src/components/DatePicker/DateTimeRangePicker.tsx"],"sourcesContent":["import {\n Dispatch,\n KeyboardEvent,\n MouseEvent,\n SetStateAction,\n useCallback,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react';\nimport { isSameDate, UseCalendarOptions } from '@h6s/calendar';\nimport { styled } from 'styled-components';\nimport { Dropdown } from '../Dropdown/Dropdown';\nimport {\n Body,\n CalendarRenderer,\n DateTimeRangePickerInput,\n DateTableCell,\n StyledDropdownItem,\n} from './Common';\nimport { Container } from '../Container/Container';\nimport { Panel } from '../Panel/Panel';\nimport { Icon } from '../Icon/Icon';\nimport {\n DateRangeListItem,\n datesAreWithinMaxRange,\n shiftFromTimezone,\n Meridiem,\n Timezone,\n shiftToTimezone,\n dateRangeIsValid,\n} from './utils';\nimport { dayjs, Dayjs } from '@/utils/date';\nimport { Tabs } from '../Tabs/Tabs';\nimport { TextField } from '@/components/TextField';\nimport { ButtonGroup } from '../ButtonGroup/ButtonGroup';\nimport { Label } from '../Label/Label';\nimport { Text } from '../Text';\n\nconst calendarFullWidth = '258px';\n\nconst PredefinedCalendarContainer = styled(Panel)`\n align-items: start;\n background: ${({ theme }) => theme.click.panel.color.background.muted};\n`;\n\nconst PredefinedTimesContainer = styled(Container)`\n width: ${calendarFullWidth};\n`;\n\ntype OpenDirection = 'left' | 'right';\n\n// left value of 259px is the width of the PredefinedTimesContainer + 1 pixel for border\nconst CalendarRendererContainer = styled.div<{ $openDirection?: OpenDirection }>`\n background: ${({ theme }) =>\n `${theme.click.datePicker.dateOption.color.background.default}`};\n border: ${({ theme }) =>\n `${theme.click.datePicker.dateOption.stroke} solid ${theme.click.datePicker.dateOption.color.background.range}`};\n border-radius: ${({ theme }) => theme.click.datePicker.dateOption.radii.default};\n box-shadow:\n lch(6.77 0 0 / 0.15) 4px 4px 6px -1px,\n lch(6.77 0 0 / 0.15) 2px 2px 4px -1px;\n ${({ $openDirection }) => ($openDirection === 'left' ? 'right: 100%;' : 'left: 259px;')}\n position: absolute;\n top: 0;\n`;\n\nconst NoOverflowDropdownContent = styled(Dropdown.Content)`\n overflow-y: hidden;\n`;\n\n// Height of 221px is height the height the calendar needs to match the PredefinedTimesContainer\nconst StyledCalendarRenderer = styled(CalendarRenderer)`\n border-radius: ${({ theme }) => theme.click.datePicker.dateOption.radii.default};\n min-height: 221px;\n`;\n\nconst BottomPaddingTabs = styled(Tabs)`\n padding-bottom: ${({ theme }) => `${theme.sizes[3]};`};\n`;\n\nconst StyledTriggerList = styled(Tabs.TriggersList)`\n justify-content: space-around;\n`;\n\n// max-height of 210px allows the scrollable container to be a reasonble height that matches the calendar\nconst ScrollableContainer = styled(Container)`\n max-height: 210px;\n overflow-y: auto;\n`;\n\nconst TimeInputContainer = styled(Container)`\n background: ${({ theme }) =>\n theme.click.datePicker.dateOption.color.background.default};\n`;\n\nconst DateRangeTableCell = styled(DateTableCell)<{\n $shouldShowRangeIndicator?: boolean;\n}>`\n ${({ $shouldShowRangeIndicator, theme }) =>\n $shouldShowRangeIndicator &&\n `\n background: ${theme.click.datePicker.dateOption.color.background.range};\n border: ${theme.click.datePicker.dateOption.stroke} solid ${theme.click.datePicker.dateOption.color.background.range};\n border-radius: 0;\n `}\n`;\n\ntype CalendarType = 'startDate' | 'endDate';\n\ntype SetSelectedDate = (selectedDate: Date, calendarType: CalendarType) => void;\n\ntype SetDate = (date: Date) => void;\n\ninterface CalendarProps {\n calendarBody: Body;\n calendarType: CalendarType;\n futureDatesDisabled: boolean;\n futureStartDatesDisabled: boolean;\n maxRangeLength: number;\n setSelectedDate: SetSelectedDate;\n startDate?: Date;\n endDate?: Date;\n timezone: Timezone;\n}\n\nconst Calendar = ({\n calendarBody,\n calendarType,\n futureDatesDisabled,\n futureStartDatesDisabled,\n maxRangeLength,\n setSelectedDate,\n startDate,\n endDate,\n timezone,\n}: CalendarProps) => {\n const [hoveredDate, setHoveredDate] = useState<Date>();\n\n const today = shiftToTimezone(new Date(), timezone);\n const shiftedStart = startDate ? shiftToTimezone(startDate, timezone) : undefined;\n const shiftedEnd = endDate ? shiftToTimezone(endDate, timezone) : undefined;\n\n const handleMouseOut = (): void => {\n setHoveredDate(undefined);\n };\n\n return calendarBody.value.map(({ key: weekKey, value: week }) => {\n return (\n <tr key={weekKey}>\n {week.map(({ date, isCurrentMonth, key: dayKey, value: fullDate }) => {\n const isSelected =\n (shiftedStart && isSameDate(shiftedStart, fullDate)) ||\n (shiftedEnd && isSameDate(shiftedEnd, fullDate));\n\n const isCurrentDate = isSameDate(today, fullDate);\n const isBetweenStartAndEndDates = Boolean(\n shiftedStart && shiftedEnd && fullDate > shiftedStart && fullDate < shiftedEnd\n );\n\n let isDisabled = false;\n if (futureDatesDisabled && fullDate > today) {\n isDisabled = true;\n }\n\n if (\n futureStartDatesDisabled &&\n calendarType === 'startDate' &&\n fullDate > today\n ) {\n isDisabled = true;\n }\n\n if (\n maxRangeLength > 1 &&\n shiftedStart &&\n !datesAreWithinMaxRange(shiftedStart, fullDate, maxRangeLength)\n ) {\n isDisabled = true;\n }\n\n // start date is selected, end date is not; disable anything before start date\n if (\n calendarType === 'endDate' &&\n !shiftedEnd &&\n shiftedStart &&\n shiftedStart > fullDate &&\n !isSameDate(shiftedStart, fullDate)\n ) {\n isDisabled = true;\n }\n\n // start date isn't selected, but end date is; disable anything after end date\n if (\n calendarType === 'startDate' &&\n !shiftedStart &&\n shiftedEnd &&\n fullDate > shiftedEnd\n ) {\n isDisabled = true;\n }\n\n const startDateSelectedAndIsSelectingEndDate =\n calendarType === 'endDate' &&\n !shiftedEnd &&\n Boolean(\n shiftedStart &&\n hoveredDate &&\n fullDate > shiftedStart &&\n fullDate < hoveredDate\n );\n\n const endDateSelectedAndIsSelectingStartDate =\n calendarType === 'startDate' &&\n !shiftedStart &&\n Boolean(\n shiftedEnd && hoveredDate && fullDate < shiftedEnd && fullDate > hoveredDate\n );\n\n const shouldShowRangeIndicator =\n startDateSelectedAndIsSelectingEndDate ||\n endDateSelectedAndIsSelectingStartDate;\n\n const handleMouseEnter = () => {\n setHoveredDate(fullDate);\n };\n\n const handleClick = () => {\n if (isDisabled) {\n return false;\n }\n\n const originalFullDate = shiftFromTimezone(fullDate, timezone);\n\n // If the user selects a start date and changes the start date\n // use any hours, minutes, seconds they've already set\n if (calendarType === 'startDate' && startDate) {\n if (timezone === 'UTC') {\n originalFullDate.setUTCHours(startDate.getUTCHours());\n originalFullDate.setUTCMinutes(startDate.getUTCMinutes());\n originalFullDate.setUTCSeconds(startDate.getUTCSeconds());\n } else {\n originalFullDate.setHours(startDate.getHours());\n originalFullDate.setMinutes(startDate.getMinutes());\n originalFullDate.setSeconds(startDate.getSeconds());\n }\n }\n\n // If the user selects an end date and changes the end date\n // use any hours, minutes, seconds they've already set\n if (calendarType === 'endDate' && endDate) {\n if (timezone === 'UTC') {\n originalFullDate.setUTCHours(endDate.getUTCHours());\n originalFullDate.setUTCMinutes(endDate.getUTCMinutes());\n originalFullDate.setUTCSeconds(endDate.getUTCSeconds());\n } else {\n originalFullDate.setHours(endDate.getHours());\n originalFullDate.setMinutes(endDate.getMinutes());\n originalFullDate.setSeconds(endDate.getSeconds());\n }\n }\n\n setSelectedDate(originalFullDate, calendarType);\n };\n\n return (\n <DateRangeTableCell\n $shouldShowRangeIndicator={\n shouldShowRangeIndicator || isBetweenStartAndEndDates\n }\n $isCurrentMonth={isCurrentMonth}\n $isDisabled={isDisabled}\n $isSelected={isSelected}\n $isPresent={isCurrentDate}\n key={dayKey}\n onClick={handleClick}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseOut}\n >\n {date}\n </DateRangeTableCell>\n );\n })}\n </tr>\n );\n });\n};\n\ninterface PredefinedTimesProps {\n onSelectDateRange: (\n startDate: Date,\n endDate: Date,\n predefinedDateLabel?: string\n ) => void;\n predefinedTimesList: DateRangeListItem[];\n selectedEndDate: Date | undefined;\n selectedStartDate: Date | undefined;\n setEndDate: Dispatch<SetStateAction<Date | undefined>>;\n setStartDate: Dispatch<SetStateAction<Date | undefined>>;\n shouldShowCustomRange: boolean;\n showCustomDateRange: Dispatch<SetStateAction<boolean>>;\n}\n\nconst PredefinedTimes = ({\n onSelectDateRange,\n predefinedTimesList,\n selectedEndDate,\n selectedStartDate,\n setEndDate,\n setStartDate,\n shouldShowCustomRange,\n showCustomDateRange,\n}: PredefinedTimesProps) => {\n const handleCustomTimePeriodClick = (event: MouseEvent) => {\n event.preventDefault();\n showCustomDateRange(!shouldShowCustomRange);\n };\n\n return (\n <PredefinedTimesContainer\n data-testid=\"predefined-times-list\"\n isResponsive={false}\n orientation=\"vertical\"\n >\n <ScrollableContainer orientation=\"vertical\">\n {predefinedTimesList.map(({ dateRange: { startDate, endDate }, label }) => {\n const handleItemClick = () => {\n setStartDate(startDate);\n setEndDate(endDate);\n onSelectDateRange(startDate, endDate, label);\n };\n\n const rangeIsSelected =\n selectedEndDate &&\n selectedEndDate === endDate &&\n selectedStartDate &&\n selectedStartDate === startDate;\n\n return (\n <StyledDropdownItem\n data-testid={`predefined-date-${startDate.getTime()}`}\n key={startDate.toISOString()}\n onClick={handleItemClick}\n >\n <Container\n data-selected={rangeIsSelected}\n data-testid={label}\n justifyContent=\"space-between\"\n orientation=\"horizontal\"\n >\n {label}\n {rangeIsSelected && <Icon name=\"check\" />}\n </Container>\n </StyledDropdownItem>\n );\n })}\n </ScrollableContainer>\n <StyledDropdownItem onClick={handleCustomTimePeriodClick}>\n <Container\n justifyContent=\"space-between\"\n orientation=\"horizontal\"\n >\n Custom time period <Icon name=\"chevron-right\" />\n </Container>\n </StyledDropdownItem>\n </PredefinedTimesContainer>\n );\n};\n\nconst parseTimeString = (\n timeString: string\n): { isValid: boolean; parsedDate?: Dayjs } => {\n if (!validTimeRegex.test(timeString)) {\n return { isValid: false };\n }\n\n const [hours, minutes, seconds] = timeString.split(':');\n\n const hoursAsNumber = parseInt(hours, 10);\n if (Number.isNaN(hoursAsNumber)) {\n return { isValid: false };\n }\n\n if (hoursAsNumber > 23 || hoursAsNumber < 0) {\n return { isValid: false };\n }\n\n let parsedDate;\n if (!minutes) {\n parsedDate = dayjs(hours, 'h');\n } else {\n const minutesAsNumber = parseInt(minutes, 10);\n if (Number.isNaN(minutesAsNumber)) {\n return { isValid: false };\n }\n\n if (minutesAsNumber > 59 || minutesAsNumber < 0) {\n return { isValid: false };\n }\n\n if (!seconds) {\n parsedDate = dayjs(`${hours}:${minutes}`, 'h:mm');\n } else {\n const secondsAsNumber = parseInt(seconds, 10);\n\n if (Number.isNaN(secondsAsNumber)) {\n return { isValid: false };\n }\n\n if (secondsAsNumber > 59 || secondsAsNumber < 0) {\n return { isValid: false };\n }\n\n parsedDate = dayjs(`${hours}:${minutes}:${seconds}`, 'h:mm:ss');\n }\n }\n\n if (!parsedDate.isValid()) {\n return { isValid: false };\n }\n\n return { isValid: true, parsedDate };\n};\n\nconst validTimeRegex = /^\\d{1,2}(:\\d{1,2}(:\\d{1,2})?)?$/;\n\ninterface TimeInputProps {\n date: Date | undefined;\n setDate: (date: Date) => void;\n shouldShowSeconds: boolean;\n timezone: Timezone;\n}\n\nconst TimeInput = ({ date, setDate, shouldShowSeconds, timezone }: TimeInputProps) => {\n let dayjsDate = timezone === 'UTC' ? dayjs.utc(date) : dayjs(date);\n\n if (!date) {\n dayjsDate = dayjsDate.hour(12).minute(0);\n }\n\n const formattedDate = shouldShowSeconds\n ? dayjsDate.format('hh:mm:ss')\n : dayjsDate.format('hh:mm');\n const [timeString, setTimeString] = useState<string>(formattedDate);\n const [dateIsValid, setDateIsValid] = useState<boolean>(true);\n const [meridiem, setMeridiem] = useState<Meridiem>();\n const isEnabled = Boolean(date);\n\n useEffect(() => {\n if (date) {\n setMeridiem(dayjsDate.format('a') as Meridiem);\n }\n }, [date, dayjsDate]);\n\n const handleTimeChange = useCallback(\n (newTimeString: string) => {\n setTimeString(newTimeString);\n\n if (!date) {\n return;\n }\n\n const trimmedTime = newTimeString.trim();\n if (!trimmedTime) {\n return;\n }\n\n const { isValid, parsedDate } = parseTimeString(trimmedTime);\n\n if (!isValid) {\n setDateIsValid(false);\n return;\n }\n\n if (!parsedDate) {\n setDateIsValid(false);\n return;\n }\n\n setDateIsValid(true);\n\n let hour = parsedDate.hour();\n\n // If the meridiem is set to am and the user enters a time greater than 12,\n // e.g. 18:00, it's a pretty clear indication they mean afternoon, so set the\n // meridiem to pm\n if (meridiem === 'am' && hour >= 12) {\n setMeridiem('pm');\n }\n // It's not as easy to infer that a user intended 8:00 to mean 08:00 when the meridiem\n // is set to pm, so don't change the meridiem in that case\n if (meridiem === 'pm' && hour < 12) {\n hour = parsedDate.hour() + 12;\n }\n\n const newDate = shouldShowSeconds\n ? dayjsDate\n .hour(hour)\n .minute(parsedDate.minute())\n .second(parsedDate.second())\n .toDate()\n : dayjsDate.hour(hour).minute(parsedDate.minute()).toDate();\n\n setDate(newDate);\n },\n [date, dayjsDate, meridiem, setDate, shouldShowSeconds]\n );\n\n const handleMeridiemChange = useCallback(\n (newMeridiem: string) => {\n setMeridiem(newMeridiem as Meridiem);\n\n if (newMeridiem === 'pm' && dayjsDate.hour() < 12) {\n const newDate = dayjsDate.hour(dayjsDate.hour() + 12).toDate();\n\n setDate(newDate);\n\n return;\n }\n\n if (newMeridiem === 'am' && dayjsDate.hour() >= 12) {\n const newDate = dayjsDate.hour(dayjsDate.hour() - 12).toDate();\n\n setDate(newDate);\n\n return;\n }\n },\n [dayjsDate, setDate]\n );\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Enter') {\n const { isValid, parsedDate } = parseTimeString(timeString);\n\n if (!isValid) {\n return;\n }\n\n if (!parsedDate) {\n return;\n }\n\n const newDate = shouldShowSeconds\n ? dayjsDate\n .hour(parsedDate.hour())\n .minute(parsedDate.minute())\n .second(parsedDate.second())\n .toDate()\n : dayjsDate.hour(parsedDate.hour()).minute(parsedDate.minute()).toDate();\n\n setDate(newDate);\n }\n },\n [dayjsDate, setDate, shouldShowSeconds, timeString]\n );\n\n return (\n <TimeInputContainer\n gap=\"sm\"\n padding=\"xs\"\n maxWidth={`${calendarFullWidth}`}\n orientation=\"horizontal\"\n justifyContent=\"end\"\n >\n <Container maxWidth=\"8%\">\n <Label htmlFor=\"date-time-picker-time-input\">Time</Label>\n </Container>\n <Container\n justifyContent=\"space-evenly\"\n orientation=\"horizontal\"\n maxWidth=\"85%\"\n >\n <Container\n maxWidth=\"45%\"\n orientation=\"horizontal\"\n >\n <TextField\n data-testid=\"date-time-picker-time-input\"\n disabled={!isEnabled}\n error={dateIsValid ? null : true}\n id=\"date-time-picker-time-input\"\n onChange={handleTimeChange}\n onKeyDown={handleKeyDown}\n value={timeString}\n />\n </Container>\n <Container maxWidth=\"45%\">\n <ButtonGroup\n onClick={handleMeridiemChange}\n options={[\n {\n label: 'am',\n value: 'am',\n },\n {\n label: 'pm',\n value: 'pm',\n },\n ]}\n selected={meridiem}\n type=\"default\"\n />\n </Container>\n </Container>\n </TimeInputContainer>\n );\n};\n\nexport type Tab = 'startDate' | 'endDate';\n\ninterface TabbedCalendarProps {\n defaultActiveTab?: Tab;\n endDate: Date | undefined;\n futureDatesDisabled: boolean;\n futureStartDatesDisabled: boolean;\n maxRangeLength: number;\n setEndDate: SetDate;\n setSelectedDate: SetSelectedDate;\n setStartDate: SetDate;\n shouldShowSeconds: boolean;\n startDate: Date | undefined;\n timezone: Timezone;\n}\n\nconst TabbedCalendar = ({\n defaultActiveTab = 'startDate',\n endDate,\n futureDatesDisabled,\n futureStartDatesDisabled,\n maxRangeLength,\n setEndDate,\n setSelectedDate,\n setStartDate,\n shouldShowSeconds,\n startDate,\n timezone,\n}: TabbedCalendarProps) => {\n const [activeTab, setActiveTab] = useState<Tab>(defaultActiveTab);\n\n useEffect(() => {\n setActiveTab(defaultActiveTab);\n }, [defaultActiveTab]);\n\n const handleTabChange = useCallback((newTab: string) => {\n setActiveTab(newTab as Tab);\n }, []);\n\n const handleSetStartDate = useCallback(\n (startDate: Date) => {\n setStartDate(startDate);\n\n setSelectedDate(startDate, 'startDate');\n },\n [setSelectedDate, setStartDate]\n );\n\n const handleSetEndDate = useCallback(\n (endDate: Date) => {\n setEndDate(endDate);\n\n setSelectedDate(endDate, 'endDate');\n },\n [setEndDate, setSelectedDate]\n );\n\n const startDateCalendarOptions: UseCalendarOptions = {};\n const endDateCalendarOptions: UseCalendarOptions = {};\n\n // If a start date is selected, open the calendar to that date\n if (startDate) {\n startDateCalendarOptions.defaultDate = startDate;\n }\n\n // If an end date is selected, open the calendar to that date\n if (endDate) {\n endDateCalendarOptions.defaultDate = endDate;\n }\n\n const startDateIsAfterEndDate =\n startDate && endDate && !dateRangeIsValid({ startDate, endDate });\n\n return (\n <BottomPaddingTabs\n onValueChange={handleTabChange}\n value={activeTab}\n >\n <StyledTriggerList>\n <Tabs.Trigger\n value=\"startDate\"\n data-testid=\"tabbed-calendar-trigger-start\"\n >\n Start date\n </Tabs.Trigger>\n <Tabs.Trigger\n value=\"endDate\"\n data-testid=\"tabbed-calendar-trigger-end\"\n >\n End date\n </Tabs.Trigger>\n </StyledTriggerList>\n <Tabs.Content value=\"startDate\">\n <StyledCalendarRenderer\n calendarOptions={startDateCalendarOptions}\n timezone={timezone}\n >\n {(body: Body) => (\n <Calendar\n calendarBody={body}\n calendarType=\"startDate\"\n endDate={endDate}\n futureDatesDisabled={futureDatesDisabled}\n futureStartDatesDisabled={futureStartDatesDisabled}\n maxRangeLength={maxRangeLength}\n setSelectedDate={setSelectedDate}\n startDate={startDate}\n timezone={timezone}\n />\n )}\n </StyledCalendarRenderer>\n <TimeInput\n date={startDate}\n setDate={handleSetStartDate}\n shouldShowSeconds={shouldShowSeconds}\n timezone={timezone}\n />\n </Tabs.Content>\n <Tabs.Content value=\"endDate\">\n <StyledCalendarRenderer\n calendarOptions={endDateCalendarOptions}\n timezone={timezone}\n >\n {(body: Body) => (\n <Calendar\n calendarBody={body}\n calendarType=\"endDate\"\n endDate={endDate}\n futureDatesDisabled={futureDatesDisabled}\n futureStartDatesDisabled={futureStartDatesDisabled}\n maxRangeLength={maxRangeLength}\n setSelectedDate={setSelectedDate}\n startDate={startDate}\n timezone={timezone}\n />\n )}\n </StyledCalendarRenderer>\n <TimeInput\n date={endDate}\n setDate={handleSetEndDate}\n shouldShowSeconds={shouldShowSeconds}\n timezone={timezone}\n />\n </Tabs.Content>\n {startDateIsAfterEndDate && (\n <Text\n align=\"center\"\n color=\"danger\"\n fillWidth\n >\n End date and time must be after start\n </Text>\n )}\n </BottomPaddingTabs>\n );\n};\n\nexport interface DateTimeRangePickerProps {\n closeOnDateRangeSelected?: boolean;\n defaultActiveTab?: Tab;\n disabled?: boolean;\n endDate?: Date;\n futureDatesDisabled?: boolean;\n futureStartDatesDisabled?: boolean;\n onSelectDateRange: (\n startDate: Date,\n endDate: Date,\n predefinedDateLabel?: string\n ) => void;\n openDirection?: OpenDirection;\n placeholder?: string;\n predefinedTimesList?: DateRangeListItem[];\n maxRangeLength?: number;\n responsivePositioning?: boolean;\n shouldFireIfInvalid?: boolean;\n shouldShowSeconds?: boolean;\n startDate?: Date;\n timezone?: Timezone;\n}\n\nexport const DateTimeRangePicker = ({\n closeOnDateRangeSelected = false,\n defaultActiveTab,\n disabled = false,\n endDate,\n futureDatesDisabled = false,\n futureStartDatesDisabled = false,\n maxRangeLength = -1,\n onSelectDateRange,\n openDirection = 'right',\n placeholder = 'start date – end date',\n predefinedTimesList,\n responsivePositioning = true,\n shouldFireIfInvalid = true,\n shouldShowSeconds,\n startDate,\n timezone = 'system',\n}: DateTimeRangePickerProps) => {\n const [isOpen, setIsOpen] = useState<boolean>(false);\n const [selectedStartDate, setSelectedStartDate] = useState<Date>();\n const [selectedEndDate, setSelectedEndDate] = useState<Date>();\n const [shouldShowCustomRange, setShouldShowCustomRange] = useState<boolean>(false);\n const [calendarOpenDirection, setCalendarOpenDirection] =\n useState<OpenDirection>(openDirection);\n const calendarContainerRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (!startDate) {\n return;\n }\n\n const startDateCopy = new Date(startDate);\n\n const hours =\n timezone === 'UTC' ? startDateCopy.getUTCHours() : startDateCopy.getHours();\n\n if (hours === 0) {\n if (timezone === 'UTC') {\n startDateCopy.setUTCHours(12);\n } else {\n startDateCopy.setHours(12);\n }\n }\n\n setSelectedStartDate(startDateCopy);\n }, [startDate, timezone]);\n\n useEffect(() => {\n if (!endDate) {\n return;\n }\n\n const endDateCopy = new Date(endDate);\n\n const hours = timezone === 'UTC' ? endDateCopy.getUTCHours() : endDateCopy.getHours();\n if (hours === 0) {\n if (timezone === 'UTC') {\n endDateCopy.setUTCHours(12);\n } else {\n endDateCopy.setHours(12);\n }\n }\n\n setSelectedEndDate(endDateCopy);\n }, [endDate, timezone]);\n\n useLayoutEffect(() => {\n if (shouldShowCustomRange && calendarContainerRef.current) {\n const rect = calendarContainerRef.current.getBoundingClientRect();\n\n if (rect.right > window.innerWidth) {\n setCalendarOpenDirection('left');\n }\n }\n }, [shouldShowCustomRange]);\n\n const closeDatePicker = useCallback((): void => {\n setIsOpen(false);\n setShouldShowCustomRange(false);\n setCalendarOpenDirection('right');\n }, []);\n\n const handleOpenChange = useCallback((isOpen: boolean): void => {\n setIsOpen(isOpen);\n\n if (!isOpen) {\n setShouldShowCustomRange(false);\n setCalendarOpenDirection('right');\n }\n }, []);\n\n const handleSelectDate = useCallback(\n (selectedDate: Date, calendarType: CalendarType): void => {\n const isMidnight =\n timezone === 'UTC'\n ? selectedDate.getUTCHours() === 0 &&\n selectedDate.getUTCMinutes() === 0 &&\n selectedDate.getUTCSeconds() === 0\n : selectedDate.getHours() === 0 &&\n selectedDate.getMinutes() === 0 &&\n selectedDate.getSeconds() === 0;\n\n if (isMidnight) {\n // set the time to 12 noon if time hasn't been set yet\n\n if (timezone === 'UTC') {\n selectedDate.setUTCHours(12);\n } else {\n selectedDate.setHours(12);\n }\n }\n\n if (calendarType === 'startDate') {\n setSelectedStartDate(selectedDate);\n\n if (selectedEndDate) {\n if (\n !shouldFireIfInvalid &&\n !dateRangeIsValid({ startDate: selectedDate, endDate: selectedEndDate })\n ) {\n return;\n }\n\n onSelectDateRange(selectedDate, selectedEndDate);\n\n if (closeOnDateRangeSelected) {\n closeDatePicker();\n }\n }\n }\n\n if (calendarType === 'endDate') {\n setSelectedEndDate(selectedDate);\n\n if (selectedStartDate) {\n if (\n !shouldFireIfInvalid &&\n !dateRangeIsValid({ startDate: selectedStartDate, endDate: selectedDate })\n ) {\n return;\n }\n\n onSelectDateRange(selectedStartDate, selectedDate);\n\n if (closeOnDateRangeSelected) {\n closeDatePicker();\n }\n }\n }\n },\n [\n closeDatePicker,\n closeOnDateRangeSelected,\n onSelectDateRange,\n selectedEndDate,\n selectedStartDate,\n shouldFireIfInvalid,\n timezone,\n ]\n );\n\n const onTriggerKeyDown = useCallback((e: KeyboardEvent<HTMLDivElement>) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n setIsOpen(true);\n }\n }, []);\n\n const shouldShowPredefinedTimes =\n predefinedTimesList !== undefined && predefinedTimesList.length > 0;\n\n return (\n <Dropdown\n onOpenChange={handleOpenChange}\n open={isOpen}\n >\n <Dropdown.Trigger\n disabled={disabled}\n onKeyDown={onTriggerKeyDown}\n >\n <DateTimeRangePickerInput\n data-testid=\"datepicker-input-container\"\n disabled={disabled}\n isActive={isOpen}\n placeholder={placeholder}\n selectedEndDate={selectedEndDate}\n selectedStartDate={selectedStartDate}\n shouldShowSeconds={shouldShowSeconds}\n timezone={timezone}\n />\n </Dropdown.Trigger>\n <NoOverflowDropdownContent\n align=\"start\"\n responsivePositioning={responsivePositioning}\n >\n <Container orientation=\"horizontal\">\n {shouldShowPredefinedTimes ? (\n <PredefinedCalendarContainer\n gap=\"none\"\n orientation=\"horizontal\"\n padding=\"none\"\n >\n <PredefinedTimes\n onSelectDateRange={onSelectDateRange}\n predefinedTimesList={predefinedTimesList}\n selectedEndDate={selectedEndDate}\n selectedStartDate={selectedStartDate}\n setEndDate={setSelectedEndDate}\n setStartDate={setSelectedStartDate}\n shouldShowCustomRange={shouldShowCustomRange}\n showCustomDateRange={setShouldShowCustomRange}\n />\n\n {shouldShowCustomRange && (\n <CalendarRendererContainer\n $openDirection={calendarOpenDirection}\n ref={calendarContainerRef}\n >\n <TabbedCalendar\n defaultActiveTab={defaultActiveTab}\n endDate={selectedEndDate}\n futureDatesDisabled={futureDatesDisabled}\n futureStartDatesDisabled={futureStartDatesDisabled}\n maxRangeLength={maxRangeLength}\n setEndDate={setSelectedEndDate}\n setSelectedDate={handleSelectDate}\n setStartDate={setSelectedStartDate}\n shouldShowSeconds={Boolean(shouldShowSeconds)}\n startDate={selectedStartDate}\n timezone={timezone}\n />\n </CalendarRendererContainer>\n )}\n </PredefinedCalendarContainer>\n ) : (\n <>\n <TabbedCalendar\n defaultActiveTab={defaultActiveTab}\n endDate={selectedEndDate}\n futureDatesDisabled={futureDatesDisabled}\n futureStartDatesDisabled={futureStartDatesDisabled}\n maxRangeLength={maxRangeLength}\n setEndDate={setSelectedEndDate}\n setSelectedDate={handleSelectDate}\n setStartDate={setSelectedStartDate}\n shouldShowSeconds={Boolean(shouldShowSeconds)}\n startDate={selectedStartDate}\n timezone={timezone}\n />\n </>\n )}\n </Container>\n </NoOverflowDropdownContent>\n </Dropdown>\n );\n};\n"],"names":["calendarFullWidth","PredefinedCalendarContainer","styled","Panel","withConfig","componentId","theme","click","panel","color","background","muted","PredefinedTimesContainer","Container","CalendarRendererContainer","div","datePicker","dateOption","default","stroke","range","radii","$openDirection","NoOverflowDropdownContent","Dropdown","Content","StyledCalendarRenderer","CalendarRenderer","BottomPaddingTabs","Tabs","sizes","StyledTriggerList","TriggersList","ScrollableContainer","TimeInputContainer","DateRangeTableCell","DateTableCell","$shouldShowRangeIndicator","Calendar","calendarBody","calendarType","futureDatesDisabled","futureStartDatesDisabled","maxRangeLength","setSelectedDate","startDate","endDate","timezone","hoveredDate","setHoveredDate","useState","today","shiftToTimezone","Date","shiftedStart","undefined","shiftedEnd","handleMouseOut","value","map","key","weekKey","week","jsx","date","isCurrentMonth","dayKey","fullDate","isSelected","isSameDate","isCurrentDate","isBetweenStartAndEndDates","Boolean","isDisabled","datesAreWithinMaxRange","startDateSelectedAndIsSelectingEndDate","endDateSelectedAndIsSelectingStartDate","shouldShowRangeIndicator","handleMouseEnter","handleClick","originalFullDate","shiftFromTimezone","setUTCHours","getUTCHours","setUTCMinutes","getUTCMinutes","setUTCSeconds","getUTCSeconds","setHours","getHours","setMinutes","getMinutes","setSeconds","getSeconds","PredefinedTimes","onSelectDateRange","predefinedTimesList","selectedEndDate","selectedStartDate","setEndDate","setStartDate","shouldShowCustomRange","showCustomDateRange","handleCustomTimePeriodClick","event","preventDefault","dateRange","label","handleItemClick","rangeIsSelected","StyledDropdownItem","getTime","jsxs","Icon","toISOString","parseTimeString","timeString","validTimeRegex","test","isValid","hours","minutes","seconds","split","hoursAsNumber","parseInt","Number","isNaN","parsedDate","dayjs","minutesAsNumber","secondsAsNumber","TimeInput","setDate","shouldShowSeconds","dayjsDate","utc","hour","minute","formattedDate","format","setTimeString","dateIsValid","setDateIsValid","meridiem","setMeridiem","isEnabled","useEffect","handleTimeChange","useCallback","newTimeString","trimmedTime","trim","newDate","second","toDate","handleMeridiemChange","newMeridiem","handleKeyDown","Label","TextField","ButtonGroup","TabbedCalendar","defaultActiveTab","activeTab","setActiveTab","handleTabChange","newTab","handleSetStartDate","handleSetEndDate","startDateCalendarOptions","endDateCalendarOptions","defaultDate","startDateIsAfterEndDate","dateRangeIsValid","body","Text","DateTimeRangePicker","closeOnDateRangeSelected","disabled","openDirection","placeholder","responsivePositioning","shouldFireIfInvalid","isOpen","setIsOpen","setSelectedStartDate","setSelectedEndDate","setShouldShowCustomRange","calendarOpenDirection","setCalendarOpenDirection","calendarContainerRef","useRef","startDateCopy","endDateCopy","useLayoutEffect","current","rect","getBoundingClientRect","right","window","innerWidth","closeDatePicker","handleOpenChange","handleSelectDate","selectedDate","isMidnight","onTriggerKeyDown","e","shouldShowPredefinedTimes","length","DateTimeRangePickerInput","Fragment"],"mappings":"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"}
1
+ {"version":3,"file":"DateTimeRangePicker.cjs","sources":["../../../../src/components/DatePicker/DateTimeRangePicker.tsx"],"sourcesContent":["import {\n Dispatch,\n KeyboardEvent,\n MouseEvent,\n SetStateAction,\n useCallback,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react';\nimport { isSameDate, UseCalendarOptions } from '@h6s/calendar';\nimport { styled } from 'styled-components';\nimport { Dropdown } from '../Dropdown/Dropdown';\nimport {\n Body,\n CalendarRenderer,\n DateTimeRangePickerInput,\n DateTableCell,\n StyledDropdownItem,\n} from './Common';\nimport { Container } from '../Container/Container';\nimport { Panel } from '../Panel/Panel';\nimport { Icon } from '../Icon/Icon';\nimport {\n DateRangeListItem,\n datesAreWithinMaxRange,\n shiftFromTimezone,\n Meridiem,\n Timezone,\n shiftToTimezone,\n dateRangeIsValid,\n} from './utils';\nimport { dayjs, Dayjs } from '@/utils/date';\nimport { Tabs } from '../Tabs/Tabs';\nimport { TextField } from '@/components/TextField';\nimport { ButtonGroup } from '../ButtonGroup/ButtonGroup';\nimport { Label } from '../Label/Label';\nimport { Text } from '../Text';\n\nconst calendarFullWidth = '258px';\n\nconst PredefinedCalendarContainer = styled(Panel)`\n align-items: start;\n background: ${({ theme }) => theme.click.panel.color.background.muted};\n`;\n\nconst PredefinedTimesContainer = styled(Container)`\n width: ${calendarFullWidth};\n`;\n\ntype OpenDirection = 'left' | 'right';\n\n// left value of 259px is the width of the PredefinedTimesContainer + 1 pixel for border\nconst CalendarRendererContainer = styled.div<{ $openDirection?: OpenDirection }>`\n background: ${({ theme }) =>\n `${theme.click.datePicker.dateOption.color.background.default}`};\n border: ${({ theme }) =>\n `${theme.click.datePicker.dateOption.stroke} solid ${theme.click.datePicker.dateOption.color.background.range}`};\n border-radius: ${({ theme }) => theme.click.datePicker.dateOption.radii.default};\n box-shadow:\n lch(6.77 0 0 / 0.15) 4px 4px 6px -1px,\n lch(6.77 0 0 / 0.15) 2px 2px 4px -1px;\n ${({ $openDirection }) => ($openDirection === 'left' ? 'right: 100%;' : 'left: 259px;')}\n position: absolute;\n top: 0;\n`;\n\nconst NoOverflowDropdownContent = styled(Dropdown.Content)`\n overflow-y: hidden;\n`;\n\n// Height of 221px is height the height the calendar needs to match the PredefinedTimesContainer\nconst StyledCalendarRenderer = styled(CalendarRenderer)`\n border-radius: ${({ theme }) => theme.click.datePicker.dateOption.radii.default};\n min-height: 221px;\n`;\n\nconst BottomPaddingTabs = styled(Tabs)`\n padding-bottom: ${({ theme }) => `${theme.sizes[3]};`};\n`;\n\nconst StyledTriggerList = styled(Tabs.TriggersList)`\n justify-content: space-around;\n`;\n\n// max-height of 210px allows the scrollable container to be a reasonble height that matches the calendar\nconst ScrollableContainer = styled(Container)`\n max-height: 210px;\n overflow-y: auto;\n`;\n\nconst TimeInputContainer = styled(Container)`\n background: ${({ theme }) =>\n theme.click.datePicker.dateOption.color.background.default};\n`;\n\nconst DateRangeTableCell = styled(DateTableCell)<{\n $shouldShowRangeIndicator?: boolean;\n}>`\n ${({ $shouldShowRangeIndicator, theme }) =>\n $shouldShowRangeIndicator &&\n `\n background: ${theme.click.datePicker.dateOption.color.background.range};\n border: ${theme.click.datePicker.dateOption.stroke} solid ${theme.click.datePicker.dateOption.color.background.range};\n border-radius: 0;\n `}\n`;\n\ntype CalendarType = 'startDate' | 'endDate';\n\ntype SetSelectedDate = (selectedDate: Date, calendarType: CalendarType) => void;\n\ntype SetDate = (date: Date) => void;\n\ninterface CalendarProps {\n calendarBody: Body;\n calendarType: CalendarType;\n futureDatesDisabled: boolean;\n futureStartDatesDisabled: boolean;\n maxRangeLength: number;\n setSelectedDate: SetSelectedDate;\n startDate?: Date;\n endDate?: Date;\n timezone: Timezone;\n}\n\nconst Calendar = ({\n calendarBody,\n calendarType,\n futureDatesDisabled,\n futureStartDatesDisabled,\n maxRangeLength,\n setSelectedDate,\n startDate,\n endDate,\n timezone,\n}: CalendarProps) => {\n const [hoveredDate, setHoveredDate] = useState<Date>();\n\n const today = shiftToTimezone(new Date(), timezone);\n const shiftedStart = startDate ? shiftToTimezone(startDate, timezone) : undefined;\n const shiftedEnd = endDate ? shiftToTimezone(endDate, timezone) : undefined;\n\n const handleMouseOut = (): void => {\n setHoveredDate(undefined);\n };\n\n return calendarBody.value.map(({ key: weekKey, value: week }) => {\n return (\n <tr key={weekKey}>\n {week.map(({ date, isCurrentMonth, key: dayKey, value: fullDate }) => {\n const isSelected =\n (shiftedStart && isSameDate(shiftedStart, fullDate)) ||\n (shiftedEnd && isSameDate(shiftedEnd, fullDate));\n\n const isCurrentDate = isSameDate(today, fullDate);\n const isBetweenStartAndEndDates = Boolean(\n shiftedStart && shiftedEnd && fullDate > shiftedStart && fullDate < shiftedEnd\n );\n\n let isDisabled = false;\n if (futureDatesDisabled && fullDate > today) {\n isDisabled = true;\n }\n\n if (\n futureStartDatesDisabled &&\n calendarType === 'startDate' &&\n fullDate > today\n ) {\n isDisabled = true;\n }\n\n if (\n maxRangeLength > 1 &&\n shiftedStart &&\n !datesAreWithinMaxRange(shiftedStart, fullDate, maxRangeLength)\n ) {\n isDisabled = true;\n }\n\n // start date is selected, end date is not; disable anything before start date\n if (\n calendarType === 'endDate' &&\n !shiftedEnd &&\n shiftedStart &&\n shiftedStart > fullDate &&\n !isSameDate(shiftedStart, fullDate)\n ) {\n isDisabled = true;\n }\n\n // start date isn't selected, but end date is; disable anything after end date\n if (\n calendarType === 'startDate' &&\n !shiftedStart &&\n shiftedEnd &&\n fullDate > shiftedEnd\n ) {\n isDisabled = true;\n }\n\n const startDateSelectedAndIsSelectingEndDate =\n calendarType === 'endDate' &&\n !shiftedEnd &&\n Boolean(\n shiftedStart &&\n hoveredDate &&\n fullDate > shiftedStart &&\n fullDate < hoveredDate\n );\n\n const endDateSelectedAndIsSelectingStartDate =\n calendarType === 'startDate' &&\n !shiftedStart &&\n Boolean(\n shiftedEnd && hoveredDate && fullDate < shiftedEnd && fullDate > hoveredDate\n );\n\n const shouldShowRangeIndicator =\n startDateSelectedAndIsSelectingEndDate ||\n endDateSelectedAndIsSelectingStartDate;\n\n const handleMouseEnter = () => {\n setHoveredDate(fullDate);\n };\n\n const handleClick = () => {\n if (isDisabled) {\n return false;\n }\n\n const originalFullDate = shiftFromTimezone(fullDate, timezone);\n\n // If the user selects a start date and changes the start date\n // use any hours, minutes, seconds they've already set\n if (calendarType === 'startDate' && startDate) {\n if (timezone === 'UTC') {\n originalFullDate.setUTCHours(startDate.getUTCHours());\n originalFullDate.setUTCMinutes(startDate.getUTCMinutes());\n originalFullDate.setUTCSeconds(startDate.getUTCSeconds());\n } else {\n originalFullDate.setHours(startDate.getHours());\n originalFullDate.setMinutes(startDate.getMinutes());\n originalFullDate.setSeconds(startDate.getSeconds());\n }\n }\n\n // If the user selects an end date and changes the end date\n // use any hours, minutes, seconds they've already set\n if (calendarType === 'endDate' && endDate) {\n if (timezone === 'UTC') {\n originalFullDate.setUTCHours(endDate.getUTCHours());\n originalFullDate.setUTCMinutes(endDate.getUTCMinutes());\n originalFullDate.setUTCSeconds(endDate.getUTCSeconds());\n } else {\n originalFullDate.setHours(endDate.getHours());\n originalFullDate.setMinutes(endDate.getMinutes());\n originalFullDate.setSeconds(endDate.getSeconds());\n }\n }\n\n setSelectedDate(originalFullDate, calendarType);\n };\n\n return (\n <DateRangeTableCell\n $shouldShowRangeIndicator={\n shouldShowRangeIndicator || isBetweenStartAndEndDates\n }\n $isCurrentMonth={isCurrentMonth}\n $isDisabled={isDisabled}\n $isSelected={isSelected}\n $isPresent={isCurrentDate}\n key={dayKey}\n onClick={handleClick}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseOut}\n >\n {date}\n </DateRangeTableCell>\n );\n })}\n </tr>\n );\n });\n};\n\ninterface PredefinedTimesProps {\n onSelectDateRange: (\n startDate: Date,\n endDate: Date,\n predefinedDateLabel?: string\n ) => void;\n predefinedTimesList: DateRangeListItem[];\n selectedEndDate: Date | undefined;\n selectedStartDate: Date | undefined;\n setEndDate: Dispatch<SetStateAction<Date | undefined>>;\n setStartDate: Dispatch<SetStateAction<Date | undefined>>;\n shouldShowCustomRange: boolean;\n showCustomDateRange: Dispatch<SetStateAction<boolean>>;\n}\n\nconst PredefinedTimes = ({\n onSelectDateRange,\n predefinedTimesList,\n selectedEndDate,\n selectedStartDate,\n setEndDate,\n setStartDate,\n shouldShowCustomRange,\n showCustomDateRange,\n}: PredefinedTimesProps) => {\n const handleCustomTimePeriodClick = (event: MouseEvent) => {\n event.preventDefault();\n showCustomDateRange(!shouldShowCustomRange);\n };\n\n return (\n <PredefinedTimesContainer\n data-testid=\"predefined-times-list\"\n isResponsive={false}\n orientation=\"vertical\"\n >\n <ScrollableContainer orientation=\"vertical\">\n {predefinedTimesList.map(({ dateRange: { startDate, endDate }, label }) => {\n const handleItemClick = () => {\n setStartDate(startDate);\n setEndDate(endDate);\n onSelectDateRange(startDate, endDate, label);\n };\n\n const rangeIsSelected =\n selectedEndDate &&\n selectedEndDate.getTime() === endDate.getTime() &&\n selectedStartDate &&\n selectedStartDate.getTime() === startDate.getTime();\n\n return (\n <StyledDropdownItem\n data-testid={`predefined-date-${startDate.getTime()}`}\n key={startDate.toISOString()}\n onClick={handleItemClick}\n >\n <Container\n data-selected={rangeIsSelected}\n data-testid={label}\n justifyContent=\"space-between\"\n orientation=\"horizontal\"\n >\n {label}\n {rangeIsSelected && <Icon name=\"check\" />}\n </Container>\n </StyledDropdownItem>\n );\n })}\n </ScrollableContainer>\n <StyledDropdownItem onClick={handleCustomTimePeriodClick}>\n <Container\n justifyContent=\"space-between\"\n orientation=\"horizontal\"\n >\n Custom time period <Icon name=\"chevron-right\" />\n </Container>\n </StyledDropdownItem>\n </PredefinedTimesContainer>\n );\n};\n\nconst parseTimeString = (\n timeString: string\n): { isValid: boolean; parsedDate?: Dayjs } => {\n if (!validTimeRegex.test(timeString)) {\n return { isValid: false };\n }\n\n const [hours, minutes, seconds] = timeString.split(':');\n\n const hoursAsNumber = parseInt(hours, 10);\n if (Number.isNaN(hoursAsNumber)) {\n return { isValid: false };\n }\n\n if (hoursAsNumber > 23 || hoursAsNumber < 0) {\n return { isValid: false };\n }\n\n let parsedDate;\n if (!minutes) {\n parsedDate = dayjs(hours, 'h');\n } else {\n const minutesAsNumber = parseInt(minutes, 10);\n if (Number.isNaN(minutesAsNumber)) {\n return { isValid: false };\n }\n\n if (minutesAsNumber > 59 || minutesAsNumber < 0) {\n return { isValid: false };\n }\n\n if (!seconds) {\n parsedDate = dayjs(`${hours}:${minutes}`, 'h:mm');\n } else {\n const secondsAsNumber = parseInt(seconds, 10);\n\n if (Number.isNaN(secondsAsNumber)) {\n return { isValid: false };\n }\n\n if (secondsAsNumber > 59 || secondsAsNumber < 0) {\n return { isValid: false };\n }\n\n parsedDate = dayjs(`${hours}:${minutes}:${seconds}`, 'h:mm:ss');\n }\n }\n\n if (!parsedDate.isValid()) {\n return { isValid: false };\n }\n\n return { isValid: true, parsedDate };\n};\n\nconst validTimeRegex = /^\\d{1,2}(:\\d{1,2}(:\\d{1,2})?)?$/;\n\ninterface TimeInputProps {\n date: Date | undefined;\n setDate: (date: Date) => void;\n shouldShowSeconds: boolean;\n timezone: Timezone;\n}\n\nconst TimeInput = ({ date, setDate, shouldShowSeconds, timezone }: TimeInputProps) => {\n let dayjsDate = timezone === 'UTC' ? dayjs.utc(date) : dayjs(date);\n\n if (!date) {\n dayjsDate = dayjsDate.hour(12).minute(0);\n }\n\n const formattedDate = shouldShowSeconds\n ? dayjsDate.format('hh:mm:ss')\n : dayjsDate.format('hh:mm');\n const [timeString, setTimeString] = useState<string>(formattedDate);\n const [dateIsValid, setDateIsValid] = useState<boolean>(true);\n const [meridiem, setMeridiem] = useState<Meridiem>();\n const isEnabled = Boolean(date);\n\n useEffect(() => {\n if (date) {\n setMeridiem(dayjsDate.format('a') as Meridiem);\n }\n }, [date, dayjsDate]);\n\n const handleTimeChange = useCallback(\n (newTimeString: string) => {\n setTimeString(newTimeString);\n\n if (!date) {\n return;\n }\n\n const trimmedTime = newTimeString.trim();\n if (!trimmedTime) {\n return;\n }\n\n const { isValid, parsedDate } = parseTimeString(trimmedTime);\n\n if (!isValid) {\n setDateIsValid(false);\n return;\n }\n\n if (!parsedDate) {\n setDateIsValid(false);\n return;\n }\n\n setDateIsValid(true);\n\n let hour = parsedDate.hour();\n\n // If the meridiem is set to am and the user enters a time greater than 12,\n // e.g. 18:00, it's a pretty clear indication they mean afternoon, so set the\n // meridiem to pm\n if (meridiem === 'am' && hour >= 12) {\n setMeridiem('pm');\n }\n // It's not as easy to infer that a user intended 8:00 to mean 08:00 when the meridiem\n // is set to pm, so don't change the meridiem in that case\n if (meridiem === 'pm' && hour < 12) {\n hour = parsedDate.hour() + 12;\n }\n\n const newDate = shouldShowSeconds\n ? dayjsDate\n .hour(hour)\n .minute(parsedDate.minute())\n .second(parsedDate.second())\n .toDate()\n : dayjsDate.hour(hour).minute(parsedDate.minute()).toDate();\n\n setDate(newDate);\n },\n [date, dayjsDate, meridiem, setDate, shouldShowSeconds]\n );\n\n const handleMeridiemChange = useCallback(\n (newMeridiem: string) => {\n setMeridiem(newMeridiem as Meridiem);\n\n if (newMeridiem === 'pm' && dayjsDate.hour() < 12) {\n const newDate = dayjsDate.hour(dayjsDate.hour() + 12).toDate();\n\n setDate(newDate);\n\n return;\n }\n\n if (newMeridiem === 'am' && dayjsDate.hour() >= 12) {\n const newDate = dayjsDate.hour(dayjsDate.hour() - 12).toDate();\n\n setDate(newDate);\n\n return;\n }\n },\n [dayjsDate, setDate]\n );\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Enter') {\n const { isValid, parsedDate } = parseTimeString(timeString);\n\n if (!isValid) {\n return;\n }\n\n if (!parsedDate) {\n return;\n }\n\n const newDate = shouldShowSeconds\n ? dayjsDate\n .hour(parsedDate.hour())\n .minute(parsedDate.minute())\n .second(parsedDate.second())\n .toDate()\n : dayjsDate.hour(parsedDate.hour()).minute(parsedDate.minute()).toDate();\n\n setDate(newDate);\n }\n },\n [dayjsDate, setDate, shouldShowSeconds, timeString]\n );\n\n return (\n <TimeInputContainer\n gap=\"sm\"\n padding=\"xs\"\n maxWidth={`${calendarFullWidth}`}\n orientation=\"horizontal\"\n justifyContent=\"end\"\n >\n <Container maxWidth=\"8%\">\n <Label htmlFor=\"date-time-picker-time-input\">Time</Label>\n </Container>\n <Container\n justifyContent=\"space-evenly\"\n orientation=\"horizontal\"\n maxWidth=\"85%\"\n >\n <Container\n maxWidth=\"45%\"\n orientation=\"horizontal\"\n >\n <TextField\n data-testid=\"date-time-picker-time-input\"\n disabled={!isEnabled}\n error={dateIsValid ? null : true}\n id=\"date-time-picker-time-input\"\n onChange={handleTimeChange}\n onKeyDown={handleKeyDown}\n value={timeString}\n />\n </Container>\n <Container maxWidth=\"45%\">\n <ButtonGroup\n onClick={handleMeridiemChange}\n options={[\n {\n label: 'am',\n value: 'am',\n },\n {\n label: 'pm',\n value: 'pm',\n },\n ]}\n selected={meridiem}\n type=\"default\"\n />\n </Container>\n </Container>\n </TimeInputContainer>\n );\n};\n\nexport type Tab = 'startDate' | 'endDate';\n\ninterface TabbedCalendarProps {\n defaultActiveTab?: Tab;\n endDate: Date | undefined;\n futureDatesDisabled: boolean;\n futureStartDatesDisabled: boolean;\n maxRangeLength: number;\n setEndDate: SetDate;\n setSelectedDate: SetSelectedDate;\n setStartDate: SetDate;\n shouldShowSeconds: boolean;\n startDate: Date | undefined;\n timezone: Timezone;\n}\n\nconst TabbedCalendar = ({\n defaultActiveTab = 'startDate',\n endDate,\n futureDatesDisabled,\n futureStartDatesDisabled,\n maxRangeLength,\n setEndDate,\n setSelectedDate,\n setStartDate,\n shouldShowSeconds,\n startDate,\n timezone,\n}: TabbedCalendarProps) => {\n const [activeTab, setActiveTab] = useState<Tab>(defaultActiveTab);\n\n useEffect(() => {\n setActiveTab(defaultActiveTab);\n }, [defaultActiveTab]);\n\n const handleTabChange = useCallback((newTab: string) => {\n setActiveTab(newTab as Tab);\n }, []);\n\n const handleSetStartDate = useCallback(\n (startDate: Date) => {\n setStartDate(startDate);\n\n setSelectedDate(startDate, 'startDate');\n },\n [setSelectedDate, setStartDate]\n );\n\n const handleSetEndDate = useCallback(\n (endDate: Date) => {\n setEndDate(endDate);\n\n setSelectedDate(endDate, 'endDate');\n },\n [setEndDate, setSelectedDate]\n );\n\n const startDateCalendarOptions: UseCalendarOptions = {};\n const endDateCalendarOptions: UseCalendarOptions = {};\n\n // If a start date is selected, open the calendar to that date\n if (startDate) {\n startDateCalendarOptions.defaultDate = startDate;\n }\n\n // If an end date is selected, open the calendar to that date\n if (endDate) {\n endDateCalendarOptions.defaultDate = endDate;\n }\n\n const startDateIsAfterEndDate =\n startDate && endDate && !dateRangeIsValid({ startDate, endDate });\n\n return (\n <BottomPaddingTabs\n onValueChange={handleTabChange}\n value={activeTab}\n >\n <StyledTriggerList>\n <Tabs.Trigger\n value=\"startDate\"\n data-testid=\"tabbed-calendar-trigger-start\"\n >\n Start date\n </Tabs.Trigger>\n <Tabs.Trigger\n value=\"endDate\"\n data-testid=\"tabbed-calendar-trigger-end\"\n >\n End date\n </Tabs.Trigger>\n </StyledTriggerList>\n <Tabs.Content value=\"startDate\">\n <StyledCalendarRenderer\n calendarOptions={startDateCalendarOptions}\n timezone={timezone}\n >\n {(body: Body) => (\n <Calendar\n calendarBody={body}\n calendarType=\"startDate\"\n endDate={endDate}\n futureDatesDisabled={futureDatesDisabled}\n futureStartDatesDisabled={futureStartDatesDisabled}\n maxRangeLength={maxRangeLength}\n setSelectedDate={setSelectedDate}\n startDate={startDate}\n timezone={timezone}\n />\n )}\n </StyledCalendarRenderer>\n <TimeInput\n date={startDate}\n setDate={handleSetStartDate}\n shouldShowSeconds={shouldShowSeconds}\n timezone={timezone}\n />\n </Tabs.Content>\n <Tabs.Content value=\"endDate\">\n <StyledCalendarRenderer\n calendarOptions={endDateCalendarOptions}\n timezone={timezone}\n >\n {(body: Body) => (\n <Calendar\n calendarBody={body}\n calendarType=\"endDate\"\n endDate={endDate}\n futureDatesDisabled={futureDatesDisabled}\n futureStartDatesDisabled={futureStartDatesDisabled}\n maxRangeLength={maxRangeLength}\n setSelectedDate={setSelectedDate}\n startDate={startDate}\n timezone={timezone}\n />\n )}\n </StyledCalendarRenderer>\n <TimeInput\n date={endDate}\n setDate={handleSetEndDate}\n shouldShowSeconds={shouldShowSeconds}\n timezone={timezone}\n />\n </Tabs.Content>\n {startDateIsAfterEndDate && (\n <Text\n align=\"center\"\n color=\"danger\"\n fillWidth\n >\n End date and time must be after start\n </Text>\n )}\n </BottomPaddingTabs>\n );\n};\n\nexport interface DateTimeRangePickerProps {\n closeOnDateRangeSelected?: boolean;\n defaultActiveTab?: Tab;\n disabled?: boolean;\n endDate?: Date;\n futureDatesDisabled?: boolean;\n futureStartDatesDisabled?: boolean;\n onSelectDateRange: (\n startDate: Date,\n endDate: Date,\n predefinedDateLabel?: string\n ) => void;\n openDirection?: OpenDirection;\n placeholder?: string;\n predefinedTimesList?: DateRangeListItem[];\n maxRangeLength?: number;\n responsivePositioning?: boolean;\n shouldFireIfInvalid?: boolean;\n shouldShowSeconds?: boolean;\n startDate?: Date;\n timezone?: Timezone;\n}\n\nexport const DateTimeRangePicker = ({\n closeOnDateRangeSelected = false,\n defaultActiveTab,\n disabled = false,\n endDate,\n futureDatesDisabled = false,\n futureStartDatesDisabled = false,\n maxRangeLength = -1,\n onSelectDateRange,\n openDirection = 'right',\n placeholder = 'start date – end date',\n predefinedTimesList,\n responsivePositioning = true,\n shouldFireIfInvalid = true,\n shouldShowSeconds,\n startDate,\n timezone = 'system',\n}: DateTimeRangePickerProps) => {\n const [isOpen, setIsOpen] = useState<boolean>(false);\n const [selectedStartDate, setSelectedStartDate] = useState<Date>();\n const [selectedEndDate, setSelectedEndDate] = useState<Date>();\n const [shouldShowCustomRange, setShouldShowCustomRange] = useState<boolean>(false);\n const [calendarOpenDirection, setCalendarOpenDirection] =\n useState<OpenDirection>(openDirection);\n const calendarContainerRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (!startDate) {\n return;\n }\n\n const startDateCopy = new Date(startDate);\n\n const hours =\n timezone === 'UTC' ? startDateCopy.getUTCHours() : startDateCopy.getHours();\n\n if (hours === 0) {\n if (timezone === 'UTC') {\n startDateCopy.setUTCHours(12);\n } else {\n startDateCopy.setHours(12);\n }\n }\n\n setSelectedStartDate(startDateCopy);\n }, [startDate, timezone]);\n\n useEffect(() => {\n if (!endDate) {\n return;\n }\n\n const endDateCopy = new Date(endDate);\n\n const hours = timezone === 'UTC' ? endDateCopy.getUTCHours() : endDateCopy.getHours();\n if (hours === 0) {\n if (timezone === 'UTC') {\n endDateCopy.setUTCHours(12);\n } else {\n endDateCopy.setHours(12);\n }\n }\n\n setSelectedEndDate(endDateCopy);\n }, [endDate, timezone]);\n\n useLayoutEffect(() => {\n if (shouldShowCustomRange && calendarContainerRef.current) {\n const rect = calendarContainerRef.current.getBoundingClientRect();\n\n if (rect.right > window.innerWidth) {\n setCalendarOpenDirection('left');\n }\n }\n }, [shouldShowCustomRange]);\n\n const closeDatePicker = useCallback((): void => {\n setIsOpen(false);\n setShouldShowCustomRange(false);\n setCalendarOpenDirection('right');\n }, []);\n\n const handleOpenChange = useCallback((isOpen: boolean): void => {\n setIsOpen(isOpen);\n\n if (!isOpen) {\n setShouldShowCustomRange(false);\n setCalendarOpenDirection('right');\n }\n }, []);\n\n const handleSelectDate = useCallback(\n (selectedDate: Date, calendarType: CalendarType): void => {\n const isMidnight =\n timezone === 'UTC'\n ? selectedDate.getUTCHours() === 0 &&\n selectedDate.getUTCMinutes() === 0 &&\n selectedDate.getUTCSeconds() === 0\n : selectedDate.getHours() === 0 &&\n selectedDate.getMinutes() === 0 &&\n selectedDate.getSeconds() === 0;\n\n if (isMidnight) {\n // set the time to 12 noon if time hasn't been set yet\n\n if (timezone === 'UTC') {\n selectedDate.setUTCHours(12);\n } else {\n selectedDate.setHours(12);\n }\n }\n\n if (calendarType === 'startDate') {\n setSelectedStartDate(selectedDate);\n\n if (selectedEndDate) {\n if (\n !shouldFireIfInvalid &&\n !dateRangeIsValid({ startDate: selectedDate, endDate: selectedEndDate })\n ) {\n return;\n }\n\n onSelectDateRange(selectedDate, selectedEndDate);\n\n if (closeOnDateRangeSelected) {\n closeDatePicker();\n }\n }\n }\n\n if (calendarType === 'endDate') {\n setSelectedEndDate(selectedDate);\n\n if (selectedStartDate) {\n if (\n !shouldFireIfInvalid &&\n !dateRangeIsValid({ startDate: selectedStartDate, endDate: selectedDate })\n ) {\n return;\n }\n\n onSelectDateRange(selectedStartDate, selectedDate);\n\n if (closeOnDateRangeSelected) {\n closeDatePicker();\n }\n }\n }\n },\n [\n closeDatePicker,\n closeOnDateRangeSelected,\n onSelectDateRange,\n selectedEndDate,\n selectedStartDate,\n shouldFireIfInvalid,\n timezone,\n ]\n );\n\n const onTriggerKeyDown = useCallback((e: KeyboardEvent<HTMLDivElement>) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n setIsOpen(true);\n }\n }, []);\n\n const shouldShowPredefinedTimes =\n predefinedTimesList !== undefined && predefinedTimesList.length > 0;\n\n return (\n <Dropdown\n onOpenChange={handleOpenChange}\n open={isOpen}\n >\n <Dropdown.Trigger\n disabled={disabled}\n onKeyDown={onTriggerKeyDown}\n >\n <DateTimeRangePickerInput\n data-testid=\"datepicker-input-container\"\n disabled={disabled}\n isActive={isOpen}\n placeholder={placeholder}\n selectedEndDate={selectedEndDate}\n selectedStartDate={selectedStartDate}\n shouldShowSeconds={shouldShowSeconds}\n timezone={timezone}\n />\n </Dropdown.Trigger>\n <NoOverflowDropdownContent\n align=\"start\"\n responsivePositioning={responsivePositioning}\n >\n <Container orientation=\"horizontal\">\n {shouldShowPredefinedTimes ? (\n <PredefinedCalendarContainer\n gap=\"none\"\n orientation=\"horizontal\"\n padding=\"none\"\n >\n <PredefinedTimes\n onSelectDateRange={onSelectDateRange}\n predefinedTimesList={predefinedTimesList}\n selectedEndDate={selectedEndDate}\n selectedStartDate={selectedStartDate}\n setEndDate={setSelectedEndDate}\n setStartDate={setSelectedStartDate}\n shouldShowCustomRange={shouldShowCustomRange}\n showCustomDateRange={setShouldShowCustomRange}\n />\n\n {shouldShowCustomRange && (\n <CalendarRendererContainer\n $openDirection={calendarOpenDirection}\n ref={calendarContainerRef}\n >\n <TabbedCalendar\n defaultActiveTab={defaultActiveTab}\n endDate={selectedEndDate}\n futureDatesDisabled={futureDatesDisabled}\n futureStartDatesDisabled={futureStartDatesDisabled}\n maxRangeLength={maxRangeLength}\n setEndDate={setSelectedEndDate}\n setSelectedDate={handleSelectDate}\n setStartDate={setSelectedStartDate}\n shouldShowSeconds={Boolean(shouldShowSeconds)}\n startDate={selectedStartDate}\n timezone={timezone}\n />\n </CalendarRendererContainer>\n )}\n </PredefinedCalendarContainer>\n ) : (\n <>\n <TabbedCalendar\n defaultActiveTab={defaultActiveTab}\n endDate={selectedEndDate}\n futureDatesDisabled={futureDatesDisabled}\n futureStartDatesDisabled={futureStartDatesDisabled}\n maxRangeLength={maxRangeLength}\n setEndDate={setSelectedEndDate}\n setSelectedDate={handleSelectDate}\n setStartDate={setSelectedStartDate}\n shouldShowSeconds={Boolean(shouldShowSeconds)}\n startDate={selectedStartDate}\n timezone={timezone}\n />\n </>\n )}\n </Container>\n </NoOverflowDropdownContent>\n </Dropdown>\n );\n};\n"],"names":["calendarFullWidth","PredefinedCalendarContainer","styled","Panel","withConfig","componentId","theme","click","panel","color","background","muted","PredefinedTimesContainer","Container","CalendarRendererContainer","div","datePicker","dateOption","default","stroke","range","radii","$openDirection","NoOverflowDropdownContent","Dropdown","Content","StyledCalendarRenderer","CalendarRenderer","BottomPaddingTabs","Tabs","sizes","StyledTriggerList","TriggersList","ScrollableContainer","TimeInputContainer","DateRangeTableCell","DateTableCell","$shouldShowRangeIndicator","Calendar","calendarBody","calendarType","futureDatesDisabled","futureStartDatesDisabled","maxRangeLength","setSelectedDate","startDate","endDate","timezone","hoveredDate","setHoveredDate","useState","today","shiftToTimezone","Date","shiftedStart","undefined","shiftedEnd","handleMouseOut","value","map","key","weekKey","week","jsx","date","isCurrentMonth","dayKey","fullDate","isSelected","isSameDate","isCurrentDate","isBetweenStartAndEndDates","Boolean","isDisabled","datesAreWithinMaxRange","startDateSelectedAndIsSelectingEndDate","endDateSelectedAndIsSelectingStartDate","shouldShowRangeIndicator","handleMouseEnter","handleClick","originalFullDate","shiftFromTimezone","setUTCHours","getUTCHours","setUTCMinutes","getUTCMinutes","setUTCSeconds","getUTCSeconds","setHours","getHours","setMinutes","getMinutes","setSeconds","getSeconds","PredefinedTimes","onSelectDateRange","predefinedTimesList","selectedEndDate","selectedStartDate","setEndDate","setStartDate","shouldShowCustomRange","showCustomDateRange","handleCustomTimePeriodClick","event","preventDefault","dateRange","label","handleItemClick","rangeIsSelected","getTime","StyledDropdownItem","jsxs","Icon","toISOString","parseTimeString","timeString","validTimeRegex","test","isValid","hours","minutes","seconds","split","hoursAsNumber","parseInt","Number","isNaN","parsedDate","dayjs","minutesAsNumber","secondsAsNumber","TimeInput","setDate","shouldShowSeconds","dayjsDate","utc","hour","minute","formattedDate","format","setTimeString","dateIsValid","setDateIsValid","meridiem","setMeridiem","isEnabled","useEffect","handleTimeChange","useCallback","newTimeString","trimmedTime","trim","newDate","second","toDate","handleMeridiemChange","newMeridiem","handleKeyDown","Label","TextField","ButtonGroup","TabbedCalendar","defaultActiveTab","activeTab","setActiveTab","handleTabChange","newTab","handleSetStartDate","handleSetEndDate","startDateCalendarOptions","endDateCalendarOptions","defaultDate","startDateIsAfterEndDate","dateRangeIsValid","body","Text","DateTimeRangePicker","closeOnDateRangeSelected","disabled","openDirection","placeholder","responsivePositioning","shouldFireIfInvalid","isOpen","setIsOpen","setSelectedStartDate","setSelectedEndDate","setShouldShowCustomRange","calendarOpenDirection","setCalendarOpenDirection","calendarContainerRef","useRef","startDateCopy","endDateCopy","useLayoutEffect","current","rect","getBoundingClientRect","right","window","innerWidth","closeDatePicker","handleOpenChange","handleSelectDate","selectedDate","isMidnight","onTriggerKeyDown","e","shouldShowPredefinedTimes","length","DateTimeRangePickerInput","Fragment"],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ .dropdown-menu-content__Qc6mk {
2
+ z-index: 1;
3
+ /* stylelint-disable-next-line custom-property-pattern -- design tokens use camelCase (e.g. genericMenu) */
4
+ min-width: var(--click-genericMenu-item-size-minWidth);
5
+ overflow-y: auto;
6
+ flex-direction: column;
7
+ }
8
+
9
+ .dropdown-menu-item__dILwE {
10
+ display: flex;
11
+ position: relative;
12
+ min-height: 32px;
13
+ }
14
+
15
+ .dropdown-trigger__FUHvM {
16
+ /* stylelint-disable-next-line plugin/no-unsupported-browser-features -- `fit-content`
17
+ keyword on `width` is widely supported on evergreen browsers; the original
18
+ rule used the same value. */
19
+ width: fit-content;
20
+ cursor: pointer;
21
+ }
22
+
23
+ .dropdown-trigger__FUHvM[disabled] {
24
+ cursor: not-allowed;
25
+ }
26
+
27
+ .dropdown-trigger__FUHvM:focus-visible {
28
+ outline: 2px solid var(--click-global-color-outline-default);
29
+ outline-offset: 2px;
30
+ }
31
+
32
+ .dropdown-group__nvxHE {
33
+ width: 100%;
34
+ /* stylelint-disable-next-line custom-property-pattern -- design tokens use camelCase (e.g. genericMenu) */
35
+ border-bottom: 1px solid var(--click-genericMenu-item-color-default-stroke-default);
36
+ }
@@ -0,0 +1,13 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
4
+
5
+ const styles = {
6
+ "dropdown-menu-content": "dropdown-menu-content__Qc6mk",
7
+ "dropdown-menu-item": "dropdown-menu-item__dILwE",
8
+ "dropdown-trigger": "dropdown-trigger__FUHvM",
9
+ "dropdown-group": "dropdown-group__nvxHE"
10
+ };
11
+
12
+ exports.default = styles;
13
+ //# sourceMappingURL=Dropdown.module.css.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Dropdown.module.css.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;"}
@@ -1,15 +1,18 @@
1
+ require("./Dropdown.css");
1
2
  'use strict';
2
3
 
3
4
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
4
5
 
5
6
  const jsxRuntime = require('react/jsx-runtime');
6
7
  const DropdownMenu = require('@radix-ui/react-dropdown-menu');
7
- const styledComponents = require('styled-components');
8
+ const react = require('react');
8
9
  const GenericMenu = require('../GenericMenu/index.cjs');
10
+ const cva = require('../../lib/cva.cjs');
9
11
  const useInputModality = require('../../hooks/internal/useInputModality.cjs');
10
12
  const PopoverArrow = require('../Assets/Icons/Popover-Arrow.cjs');
11
13
  const IconWrapper = require('../IconWrapper/index.cjs');
12
14
  const PortalContext = require('../../providers/PortalContext.cjs');
15
+ const Dropdown_module = require('./Dropdown.module.css.cjs');
13
16
  const Icon = require('../Icon/index.cjs');
14
17
 
15
18
  function _interopNamespace(e) {
@@ -33,14 +36,11 @@ function _interopNamespace(e) {
33
36
  const DropdownMenu__namespace = /*#__PURE__*/_interopNamespace(DropdownMenu);
34
37
 
35
38
  const Dropdown = (props) => /* @__PURE__ */ jsxRuntime.jsx(DropdownMenu__namespace.Root, { ...props });
36
- const DropdownMenuItem = styledComponents.styled(GenericMenu.GenericMenuItem).withConfig({
37
- componentId: "sc-18bhwbw-0"
38
- })(["position:relative;display:flex;min-height:32px;"]);
39
- const Trigger = styledComponents.styled(DropdownMenu__namespace.Trigger).withConfig({
40
- componentId: "sc-18bhwbw-1"
41
- })(["cursor:pointer;width:fit-content;&[disabled]{cursor:not-allowed;}&:focus-visible{outline:2px solid ", ";outline-offset:2px;}"], ({
42
- theme
43
- }) => theme.click.global.color.outline.default);
39
+ const _DropdownMenuItem = ({
40
+ className,
41
+ ...props
42
+ }, ref) => /* @__PURE__ */ jsxRuntime.jsx(GenericMenu.GenericMenuItem, { ref, ...props, className: cva.cn(Dropdown_module.default["dropdown-menu-item"], className) });
43
+ const DropdownMenuItem = react.forwardRef(_DropdownMenuItem);
44
44
  const DropdownTrigger = ({
45
45
  sub,
46
46
  children,
@@ -57,15 +57,19 @@ const DropdownTrigger = ({
57
57
  /* @__PURE__ */ jsxRuntime.jsx(Icon.Icon, { name: "chevron-right" })
58
58
  ] });
59
59
  }
60
- return /* @__PURE__ */ jsxRuntime.jsx(Trigger, { asChild: true, ...props, children: /* @__PURE__ */ jsxRuntime.jsx("div", { children }) });
60
+ const {
61
+ className,
62
+ ...triggerProps
63
+ } = props;
64
+ return /* @__PURE__ */ jsxRuntime.jsx(DropdownMenu__namespace.Trigger, { asChild: true, ...triggerProps, className: cva.cn(Dropdown_module.default["dropdown-trigger"], className), children: /* @__PURE__ */ jsxRuntime.jsx("div", { children }) });
61
65
  };
62
66
  DropdownTrigger.displayName = "DropdownTrigger";
63
67
  Dropdown.Trigger = DropdownTrigger;
64
- const DropdownMenuContent = styledComponents.styled(GenericMenu.GenericMenuPanel).withConfig({
65
- componentId: "sc-18bhwbw-2"
66
- })(["min-width:", ";flex-direction:column;z-index:1;overflow-y:auto;"], ({
67
- theme
68
- }) => theme.click.genericMenu.item.size.minWidth);
68
+ const _DropdownMenuContent = ({
69
+ className,
70
+ ...props
71
+ }, ref) => /* @__PURE__ */ jsxRuntime.jsx(GenericMenu.GenericMenuPanel, { ref, ...props, className: cva.cn(Dropdown_module.default["dropdown-menu-content"], className) });
72
+ const DropdownMenuContent = react.forwardRef(_DropdownMenuContent);
69
73
  const DropdownContent = ({
70
74
  sub,
71
75
  children,
@@ -77,32 +81,23 @@ const DropdownContent = ({
77
81
  const ContentElement = sub ? DropdownMenu__namespace.SubContent : DropdownMenu__namespace.Content;
78
82
  const inputModalityProps = useInputModality.useInputModality();
79
83
  const portalContainer = PortalContext.useResolvedPortalContainer(container);
80
- return /* @__PURE__ */ jsxRuntime.jsx(DropdownMenu__namespace.Portal, { container: portalContainer, children: /* @__PURE__ */ jsxRuntime.jsxs(DropdownMenuContent, { ...props, $type: "dropdown-menu", $showArrow: showArrow, as: ContentElement, sideOffset: 4, loop: true, avoidCollisions: responsivePositioning, collisionPadding: responsivePositioning ? 100 : void 0, ...inputModalityProps, children: [
84
+ return /* @__PURE__ */ jsxRuntime.jsx(DropdownMenu__namespace.Portal, { container: portalContainer, children: /* @__PURE__ */ jsxRuntime.jsxs(DropdownMenuContent, { ...props, type: "dropdown-menu", showArrow, as: ContentElement, sideOffset: 4, loop: true, avoidCollisions: responsivePositioning, collisionPadding: responsivePositioning ? 100 : void 0, ...inputModalityProps, children: [
81
85
  showArrow && /* @__PURE__ */ jsxRuntime.jsx(GenericMenu.Arrow, { asChild: true, as: DropdownMenu__namespace.Arrow, width: 20, height: 10, children: /* @__PURE__ */ jsxRuntime.jsx(PopoverArrow.default, {}) }),
82
86
  children
83
87
  ] }) });
84
88
  };
85
89
  DropdownContent.displayName = "DropdownContent";
86
90
  Dropdown.Content = DropdownContent;
87
- const DropdownMenuGroup = styledComponents.styled(DropdownMenu__namespace.Group).withConfig({
88
- componentId: "sc-18bhwbw-3"
89
- })(["width:100%;border-bottom:1px solid ", ";"], ({
90
- theme
91
- }) => theme.click.genericMenu.item.color.default.stroke.default);
92
- const DropdownGroup = (props) => {
93
- return /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuGroup, { ...props });
91
+ const DropdownGroup = ({
92
+ className,
93
+ ...props
94
+ }) => {
95
+ return /* @__PURE__ */ jsxRuntime.jsx(DropdownMenu__namespace.Group, { ...props, className: cva.cn(Dropdown_module.default["dropdown-group"], className) });
94
96
  };
95
97
  DropdownGroup.displayName = "DropdownGroup";
96
98
  Dropdown.Group = DropdownGroup;
97
- const DropdownMenuSub = styledComponents.styled(DropdownMenu__namespace.Sub).withConfig({
98
- componentId: "sc-18bhwbw-4"
99
- })(["border-bottom:1px solid ", ";"], ({
100
- theme
101
- }) => theme.click.genericMenu.item.color.default.stroke.default);
102
- const DropdownSub = ({
103
- ...props
104
- }) => {
105
- return /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuSub, { ...props });
99
+ const DropdownSub = (props) => {
100
+ return /* @__PURE__ */ jsxRuntime.jsx(DropdownMenu__namespace.Sub, { ...props });
106
101
  };
107
102
  DropdownSub.displayName = "DropdownSub";
108
103
  Dropdown.Sub = DropdownSub;
@@ -113,7 +108,7 @@ const DropdownItem = ({
113
108
  children,
114
109
  ...props
115
110
  }) => {
116
- return /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuItem, { as: DropdownMenu__namespace.Item, $type: type, ...props, children: /* @__PURE__ */ jsxRuntime.jsx(IconWrapper.IconWrapper, { icon, iconDir, children }) });
111
+ return /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuItem, { as: DropdownMenu__namespace.Item, type, ...props, children: /* @__PURE__ */ jsxRuntime.jsx(IconWrapper.IconWrapper, { icon, iconDir, children }) });
117
112
  };
118
113
  DropdownItem.displayName = "DropdownItem";
119
114
  Dropdown.Item = DropdownItem;
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../../../src/components/Dropdown/Dropdown.tsx"],"sourcesContent":["import * as DropdownMenu from '@radix-ui/react-dropdown-menu';\nimport { ReactNode } from 'react';\nimport { styled } from 'styled-components';\nimport { Arrow, GenericMenuItem, GenericMenuPanel } from '@/components/GenericMenu';\nimport { useInputModality } from '@/hooks/internal';\nimport Popover_Arrow from '@/components/Assets/Icons/Popover-Arrow';\nimport { IconWrapper } from '@/components/IconWrapper';\nimport { Icon } from '@/components/Icon';\nimport type { IconName } from '@/components/Icon';\nimport type { HorizontalDirection } from '@/types';\nimport { useResolvedPortalContainer } from '@/providers/PortalContext';\n\nexport const Dropdown = (props: DropdownMenu.DropdownMenuProps) => (\n <DropdownMenu.Root {...props} />\n);\n\nconst DropdownMenuItem = styled(GenericMenuItem)<{ $type?: 'default' | 'danger' }>`\n position: relative;\n display: flex;\n min-height: 32px;\n`;\n\ninterface SubDropdownProps {\n sub?: true;\n icon?: IconName;\n iconDir?: HorizontalDirection;\n}\n\ninterface MainDropdownProps {\n sub?: never;\n}\n\ntype DropdownSubTriggerProps = DropdownMenu.DropdownMenuSubTriggerProps &\n SubDropdownProps;\ntype DropdownTriggerProps = DropdownMenu.DropdownMenuTriggerProps & MainDropdownProps;\n\nconst Trigger = styled(DropdownMenu.Trigger)`\n cursor: pointer;\n width: fit-content;\n &[disabled] {\n cursor: not-allowed;\n }\n &:focus-visible {\n outline: 2px solid ${({ theme }) => theme.click.global.color.outline.default};\n outline-offset: 2px;\n }\n`;\n\nconst DropdownTrigger = ({\n sub,\n children,\n ...props\n}: DropdownSubTriggerProps | DropdownTriggerProps) => {\n if (sub) {\n const { icon, iconDir, ...menuProps } = props as DropdownSubTriggerProps;\n return (\n <DropdownMenuItem\n as={DropdownMenu.SubTrigger}\n {...menuProps}\n >\n <IconWrapper\n icon={icon}\n iconDir={iconDir}\n >\n {children}\n </IconWrapper>\n <Icon name=\"chevron-right\" />\n </DropdownMenuItem>\n );\n }\n\n return (\n <Trigger\n asChild\n {...(props as DropdownTriggerProps)}\n >\n <div>{children}</div>\n </Trigger>\n );\n};\n\nDropdownTrigger.displayName = 'DropdownTrigger';\nDropdown.Trigger = DropdownTrigger;\n\nexport type ArrowProps = {\n showArrow?: boolean;\n};\n\ninterface StyledDropdownContentProps extends DropdownMenu.DropdownMenuContentProps {\n children?: ReactNode;\n container?: HTMLElement | null;\n responsivePositioning?: boolean;\n}\n\ninterface StyledDropdownSubContentProps extends DropdownMenu.DropdownMenuSubContentProps {\n children?: ReactNode;\n container?: HTMLElement | null;\n responsivePositioning?: boolean;\n}\n\ntype DropdownContentProps = StyledDropdownContentProps & SubDropdownProps & ArrowProps;\ntype DropdownSubContentProps = StyledDropdownSubContentProps &\n MainDropdownProps &\n ArrowProps;\n\nconst DropdownMenuContent = styled(GenericMenuPanel)`\n min-width: ${({ theme }) => theme.click.genericMenu.item.size.minWidth};\n flex-direction: column;\n z-index: 1;\n overflow-y: auto;\n`;\n\nconst DropdownContent = ({\n sub,\n children,\n container,\n showArrow,\n responsivePositioning = true,\n ...props\n}: DropdownContentProps | DropdownSubContentProps) => {\n const ContentElement = sub ? DropdownMenu.SubContent : DropdownMenu.Content;\n const inputModalityProps = useInputModality();\n const portalContainer = useResolvedPortalContainer(container);\n\n return (\n <DropdownMenu.Portal container={portalContainer}>\n <DropdownMenuContent\n {...props}\n $type=\"dropdown-menu\"\n $showArrow={showArrow}\n as={ContentElement}\n sideOffset={4}\n loop\n avoidCollisions={responsivePositioning}\n collisionPadding={responsivePositioning ? 100 : undefined}\n {...inputModalityProps}\n >\n {showArrow && (\n <Arrow\n asChild\n as={DropdownMenu.Arrow}\n width={20}\n height={10}\n >\n <Popover_Arrow />\n </Arrow>\n )}\n {children}\n </DropdownMenuContent>\n </DropdownMenu.Portal>\n );\n};\n\nDropdownContent.displayName = 'DropdownContent';\nDropdown.Content = DropdownContent;\n\nconst DropdownMenuGroup = styled(DropdownMenu.Group)`\n width: 100%;\n border-bottom: 1px solid\n ${({ theme }) => theme.click.genericMenu.item.color.default.stroke.default};\n`;\n\nconst DropdownGroup = (props: DropdownMenu.DropdownMenuGroupProps) => {\n return <DropdownMenuGroup {...props} />;\n};\n\nDropdownGroup.displayName = 'DropdownGroup';\nDropdown.Group = DropdownGroup;\n\nconst DropdownMenuSub = styled(DropdownMenu.Sub)`\n border-bottom: 1px solid\n ${({ theme }) => theme.click.genericMenu.item.color.default.stroke.default};\n`;\n\nconst DropdownSub = ({ ...props }: DropdownMenu.DropdownMenuGroupProps) => {\n return <DropdownMenuSub {...props} />;\n};\n\nDropdownSub.displayName = 'DropdownSub';\nDropdown.Sub = DropdownSub;\n\ninterface DropdownItemProps extends DropdownMenu.DropdownMenuItemProps {\n /** Icon to display in the menu item */\n icon?: IconName;\n /** The direction of the icon relative to the label */\n iconDir?: HorizontalDirection;\n /** The type of the menu item */\n type?: 'default' | 'danger';\n}\n\nexport type { DropdownItemProps };\n\nconst DropdownItem = ({\n icon,\n iconDir,\n type = 'default',\n children,\n ...props\n}: DropdownItemProps) => {\n return (\n <DropdownMenuItem\n as={DropdownMenu.Item}\n $type={type}\n {...props}\n >\n <IconWrapper\n icon={icon}\n iconDir={iconDir}\n >\n {children}\n </IconWrapper>\n </DropdownMenuItem>\n );\n};\n\nDropdownItem.displayName = 'DropdownItem';\nDropdown.Item = DropdownItem;\n\nexport default Dropdown;\n"],"names":["Dropdown","props","jsx","DropdownMenu","DropdownMenuItem","styled","GenericMenuItem","withConfig","componentId","Trigger","theme","click","global","color","outline","default","DropdownTrigger","sub","children","icon","iconDir","menuProps","SubTrigger","IconWrapper","Icon","displayName","DropdownMenuContent","GenericMenuPanel","genericMenu","item","size","minWidth","DropdownContent","container","showArrow","responsivePositioning","ContentElement","SubContent","Content","inputModalityProps","useInputModality","portalContainer","useResolvedPortalContainer","jsxs","undefined","Arrow","Popover_Arrow","DropdownMenuGroup","Group","stroke","DropdownGroup","DropdownMenuSub","Sub","DropdownSub","DropdownItem","type","Item"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../../../../src/components/Dropdown/Dropdown.tsx"],"sourcesContent":["import * as DropdownMenu from '@radix-ui/react-dropdown-menu';\nimport {\n ComponentProps,\n ComponentPropsWithRef,\n ElementType,\n ReactNode,\n forwardRef,\n} from 'react';\nimport { Arrow, GenericMenuItem, GenericMenuPanel } from '@/components/GenericMenu';\nimport { cn } from '@/lib/cva';\nimport { useInputModality } from '@/hooks/internal';\nimport Popover_Arrow from '@/components/Assets/Icons/Popover-Arrow';\nimport { IconWrapper } from '@/components/IconWrapper';\nimport { Icon } from '@/components/Icon';\nimport type { IconName } from '@/components/Icon';\nimport type { HorizontalDirection } from '@/types';\nimport { useResolvedPortalContainer } from '@/providers/PortalContext';\nimport styles from './Dropdown.module.css';\n\nexport const Dropdown = (props: DropdownMenu.DropdownMenuProps) => (\n <DropdownMenu.Root {...props} />\n);\n\ntype DropdownMenuItemComponent = <T extends ElementType = 'div'>(\n props: ComponentProps<typeof GenericMenuItem<T>>\n) => ReactNode;\n\nconst _DropdownMenuItem = <T extends ElementType = 'div'>(\n { className, ...props }: ComponentProps<typeof GenericMenuItem<T>>,\n ref: ComponentPropsWithRef<T>['ref']\n) => (\n <GenericMenuItem\n ref={ref}\n {...(props as ComponentProps<typeof GenericMenuItem>)}\n className={cn(styles['dropdown-menu-item'], className)}\n />\n);\n\nconst DropdownMenuItem: DropdownMenuItemComponent = forwardRef(_DropdownMenuItem);\n\ninterface SubDropdownProps {\n sub?: true;\n icon?: IconName;\n iconDir?: HorizontalDirection;\n}\n\ninterface MainDropdownProps {\n sub?: never;\n}\n\ntype DropdownSubTriggerProps = DropdownMenu.DropdownMenuSubTriggerProps &\n SubDropdownProps;\ntype DropdownTriggerProps = DropdownMenu.DropdownMenuTriggerProps & MainDropdownProps;\n\nconst DropdownTrigger = ({\n sub,\n children,\n ...props\n}: DropdownSubTriggerProps | DropdownTriggerProps) => {\n if (sub) {\n const { icon, iconDir, ...menuProps } = props as DropdownSubTriggerProps;\n return (\n <DropdownMenuItem\n as={DropdownMenu.SubTrigger}\n {...menuProps}\n >\n <IconWrapper\n icon={icon}\n iconDir={iconDir}\n >\n {children}\n </IconWrapper>\n <Icon name=\"chevron-right\" />\n </DropdownMenuItem>\n );\n }\n\n const { className, ...triggerProps } = props as DropdownTriggerProps;\n return (\n <DropdownMenu.Trigger\n asChild\n {...triggerProps}\n className={cn(styles['dropdown-trigger'], className)}\n >\n <div>{children}</div>\n </DropdownMenu.Trigger>\n );\n};\n\nDropdownTrigger.displayName = 'DropdownTrigger';\nDropdown.Trigger = DropdownTrigger;\n\nexport type ArrowProps = {\n showArrow?: boolean;\n};\n\ninterface StyledDropdownContentProps extends DropdownMenu.DropdownMenuContentProps {\n children?: ReactNode;\n container?: HTMLElement | null;\n responsivePositioning?: boolean;\n}\n\ninterface StyledDropdownSubContentProps extends DropdownMenu.DropdownMenuSubContentProps {\n children?: ReactNode;\n container?: HTMLElement | null;\n responsivePositioning?: boolean;\n}\n\ntype DropdownContentProps = StyledDropdownContentProps & SubDropdownProps & ArrowProps;\ntype DropdownSubContentProps = StyledDropdownSubContentProps &\n MainDropdownProps &\n ArrowProps;\n\ntype DropdownMenuContentComponent = <T extends ElementType = 'div'>(\n props: ComponentProps<typeof GenericMenuPanel<T>>\n) => ReactNode;\n\nconst _DropdownMenuContent = <T extends ElementType = 'div'>(\n { className, ...props }: ComponentProps<typeof GenericMenuPanel<T>>,\n ref: ComponentPropsWithRef<T>['ref']\n) => (\n <GenericMenuPanel\n ref={ref}\n {...(props as ComponentProps<typeof GenericMenuPanel>)}\n className={cn(styles['dropdown-menu-content'], className)}\n />\n);\n\nconst DropdownMenuContent: DropdownMenuContentComponent =\n forwardRef(_DropdownMenuContent);\n\nconst DropdownContent = ({\n sub,\n children,\n container,\n showArrow,\n responsivePositioning = true,\n ...props\n}: DropdownContentProps | DropdownSubContentProps) => {\n const ContentElement = sub ? DropdownMenu.SubContent : DropdownMenu.Content;\n const inputModalityProps = useInputModality();\n const portalContainer = useResolvedPortalContainer(container);\n\n return (\n <DropdownMenu.Portal container={portalContainer}>\n <DropdownMenuContent\n {...props}\n type=\"dropdown-menu\"\n showArrow={showArrow}\n as={ContentElement}\n sideOffset={4}\n loop\n avoidCollisions={responsivePositioning}\n collisionPadding={responsivePositioning ? 100 : undefined}\n {...inputModalityProps}\n >\n {showArrow && (\n <Arrow\n asChild\n as={DropdownMenu.Arrow}\n width={20}\n height={10}\n >\n <Popover_Arrow />\n </Arrow>\n )}\n {children}\n </DropdownMenuContent>\n </DropdownMenu.Portal>\n );\n};\n\nDropdownContent.displayName = 'DropdownContent';\nDropdown.Content = DropdownContent;\n\nconst DropdownGroup = ({ className, ...props }: DropdownMenu.DropdownMenuGroupProps) => {\n return (\n <DropdownMenu.Group\n {...props}\n className={cn(styles['dropdown-group'], className)}\n />\n );\n};\n\nDropdownGroup.displayName = 'DropdownGroup';\nDropdown.Group = DropdownGroup;\n\n// DropdownMenu.Sub is a context-only Radix primitive that renders no DOM node, so\n// the original styled(DropdownMenu.Sub) border-bottom never applied (the className\n// was dropped). The migration preserves that behavior: no class is forwarded.\nconst DropdownSub = (props: DropdownMenu.DropdownMenuGroupProps) => {\n return <DropdownMenu.Sub {...props} />;\n};\n\nDropdownSub.displayName = 'DropdownSub';\nDropdown.Sub = DropdownSub;\n\ninterface DropdownItemProps extends DropdownMenu.DropdownMenuItemProps {\n /** Icon to display in the menu item */\n icon?: IconName;\n /** The direction of the icon relative to the label */\n iconDir?: HorizontalDirection;\n /** The type of the menu item */\n type?: 'default' | 'danger';\n}\n\nexport type { DropdownItemProps };\n\nconst DropdownItem = ({\n icon,\n iconDir,\n type = 'default',\n children,\n ...props\n}: DropdownItemProps) => {\n return (\n <DropdownMenuItem\n as={DropdownMenu.Item}\n type={type}\n {...props}\n >\n <IconWrapper\n icon={icon}\n iconDir={iconDir}\n >\n {children}\n </IconWrapper>\n </DropdownMenuItem>\n );\n};\n\nDropdownItem.displayName = 'DropdownItem';\nDropdown.Item = DropdownItem;\n\nexport default Dropdown;\n"],"names":["Dropdown","props","jsx","DropdownMenu","_DropdownMenuItem","className","ref","GenericMenuItem","cn","styles","DropdownMenuItem","forwardRef","DropdownTrigger","sub","children","icon","iconDir","menuProps","SubTrigger","IconWrapper","Icon","triggerProps","displayName","Trigger","_DropdownMenuContent","GenericMenuPanel","DropdownMenuContent","DropdownContent","container","showArrow","responsivePositioning","ContentElement","SubContent","Content","inputModalityProps","useInputModality","portalContainer","useResolvedPortalContainer","jsxs","undefined","Arrow","Popover_Arrow","DropdownGroup","Group","DropdownSub","Sub","DropdownItem","type","Item"],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /* stylelint-disable plugin/no-unsupported-browser-features, declaration-property-value-no-unknown -- the original rule used this same
2
+ width fallback chain (100% → -webkit-fill-available → fill-available →
3
+ stretch) so the content fills the available inline space. */
4
+ .ellipsis-content__jsw7w {
5
+ display: inline-block;
6
+ width: 100%;
7
+ width: -webkit-fill-available;
8
+ width: fill-available;
9
+ width: stretch;
10
+ overflow: hidden;
11
+ justify-content: flex-start;
12
+ white-space: nowrap;
13
+ text-overflow: ellipsis;
14
+ vertical-align: text-bottom;
15
+ }
16
+ /* stylelint-enable plugin/no-unsupported-browser-features, declaration-property-value-no-unknown */
17
+
18
+ .ellipsis-content__jsw7w > *:not(button) {
19
+ overflow: hidden;
20
+ text-overflow: ellipsis;
21
+ }
@@ -0,0 +1,10 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
4
+
5
+ const styles = {
6
+ "ellipsis-content": "ellipsis-content__jsw7w"
7
+ };
8
+
9
+ exports.default = styles;
10
+ //# sourceMappingURL=EllipsisContent.module.css.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EllipsisContent.module.css.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;"}
@@ -1,3 +1,4 @@
1
+ require("./EllipsisContent.css");
1
2
  'use strict';
2
3
 
3
4
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
@@ -5,20 +6,20 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
5
6
  const jsxRuntime = require('react/jsx-runtime');
6
7
  const react = require('react');
7
8
  const mergeRefs = require('../../utils/mergeRefs.cjs');
8
- const styledComponents = require('styled-components');
9
+ const cva = require('../../lib/cva.cjs');
10
+ const EllipsisContent_module = require('./EllipsisContent.module.css.cjs');
9
11
 
10
- const EllipsisContainer = styledComponents.styled.div.withConfig({
11
- componentId: "sc-1ibz5fp-0"
12
- })(["display:inline-block;white-space:nowrap;text-overflow:ellipsis;vertical-align:text-bottom;overflow:hidden;justify-content:flex-start;width:100%;width:-webkit-fill-available;width:fill-available;width:stretch;& > *:not(button){overflow:hidden;text-overflow:ellipsis;}"]);
13
12
  const _EllipsisContent = ({
14
13
  component,
14
+ className,
15
15
  ...props
16
16
  }, ref) => {
17
- return /* @__PURE__ */ jsxRuntime.jsx(EllipsisContainer, { as: component ?? "div", ref: mergeRefs.mergeRefs([ref, (node) => {
17
+ const Component = component ?? "div";
18
+ return /* @__PURE__ */ jsxRuntime.jsx(Component, { ref: mergeRefs.mergeRefs([ref, (node) => {
18
19
  if (node && node.scrollWidth > node.clientWidth) {
19
20
  node.title = node.innerText;
20
21
  }
21
- }]), ...props });
22
+ }]), ...props, className: cva.cn(EllipsisContent_module.default["ellipsis-content"], className) });
22
23
  };
23
24
  const EllipsisContent = react.forwardRef(_EllipsisContent);
24
25
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../../../src/components/EllipsisContent/EllipsisContent.tsx"],"sourcesContent":["import {\n ComponentProps,\n ComponentPropsWithRef,\n ElementType,\n ReactNode,\n forwardRef,\n} from 'react';\nimport { mergeRefs } from '@/utils/mergeRefs';\nimport { styled } from 'styled-components';\n\nconst EllipsisContainer = styled.div`\n display: inline-block;\n white-space: nowrap;\n text-overflow: ellipsis;\n vertical-align: text-bottom;\n overflow: hidden;\n justify-content: flex-start;\n width: 100%;\n width: -webkit-fill-available;\n width: fill-available;\n width: stretch;\n & > *:not(button) {\n overflow: hidden;\n text-overflow: ellipsis;\n }\n`;\nexport interface EllipsisContentProps<T extends ElementType = 'div'> {\n component?: T;\n}\n\ntype EllipsisPolymorphicComponent = <T extends ElementType = 'div'>(\n props: Omit<ComponentProps<T>, keyof EllipsisContentProps<T>> & EllipsisContentProps<T>\n) => ReactNode;\n\nconst _EllipsisContent = <T extends ElementType = 'div'>(\n {\n component,\n ...props\n }: Omit<ComponentProps<T>, keyof EllipsisContentProps<T>> & EllipsisContentProps<T>,\n ref: ComponentPropsWithRef<T>['ref']\n) => {\n return (\n <EllipsisContainer\n as={component ?? 'div'}\n ref={mergeRefs([\n ref,\n node => {\n if (node && node.scrollWidth > node.clientWidth) {\n node.title = node.innerText;\n }\n },\n ])}\n {...props}\n />\n );\n};\n\nexport const EllipsisContent: EllipsisPolymorphicComponent = forwardRef(_EllipsisContent);\n"],"names":["EllipsisContainer","styled","div","withConfig","componentId","_EllipsisContent","component","props","ref","jsx","mergeRefs","node","scrollWidth","clientWidth","title","innerText","EllipsisContent","forwardRef"],"mappings":";;;;;;;;;AAUA,MAAMA,iBAAAA,GAAoBC,uBAAAA,CAAOC,GAAAA,CAAGC,UAAAA,CAAA;AAAA,EAAAC,WAAAA,EAAA;AAAA,CAAA,CAAA,CAAA,CAAA,4QAAA,CAAA,CAAA;AAwBpC,MAAMC,mBAAmB,CACvB;AAAA,EACEC,SAAAA;AAAAA,EACA,GAAGC;AAC6E,CAAA,EAClFC,GAAAA,KACG;AACH,EAAA,uBACEC,cAAA,CAAC,qBACC,EAAA,EAAIH,SAAAA,IAAa,OACjB,GAAA,EAAKI,mBAAAA,CAAU,CACbF,GAAAA,EACAG,CAAAA,IAAAA,KAAQ;AACN,IAAA,IAAIA,IAAAA,IAAQA,IAAAA,CAAKC,WAAAA,GAAcD,IAAAA,CAAKE,WAAAA,EAAa;AAC/CF,MAAAA,IAAAA,CAAKG,QAAQH,IAAAA,CAAKI,SAAAA;AAAAA,IACpB;AAAA,EACF,CAAC,CACF,CAAA,EACD,GAAIR,KAAAA,EAAM,CAAA;AAGhB,CAAA;AAEO,MAAMS,eAAAA,GAAgDC,iBAAWZ,gBAAgB;;;;"}
1
+ {"version":3,"file":"index.cjs","sources":["../../../../src/components/EllipsisContent/EllipsisContent.tsx"],"sourcesContent":["import {\n ComponentProps,\n ComponentPropsWithRef,\n ElementType,\n ReactNode,\n forwardRef,\n} from 'react';\nimport { mergeRefs } from '@/utils/mergeRefs';\nimport { cn } from '@/lib/cva';\nimport styles from './EllipsisContent.module.css';\n\nexport interface EllipsisContentProps<T extends ElementType = 'div'> {\n component?: T;\n}\n\ntype EllipsisPolymorphicComponent = <T extends ElementType = 'div'>(\n props: Omit<ComponentProps<T>, keyof EllipsisContentProps<T>> & EllipsisContentProps<T>\n) => ReactNode;\n\nconst _EllipsisContent = <T extends ElementType = 'div'>(\n {\n component,\n className,\n ...props\n }: Omit<ComponentProps<T>, keyof EllipsisContentProps<T>> &\n EllipsisContentProps<T> & { className?: string },\n ref: ComponentPropsWithRef<T>['ref']\n) => {\n const Component = component ?? 'div';\n return (\n <Component\n ref={mergeRefs([\n ref,\n node => {\n if (node && node.scrollWidth > node.clientWidth) {\n node.title = node.innerText;\n }\n },\n ])}\n {...props}\n className={cn(styles['ellipsis-content'], className)}\n />\n );\n};\n\nexport const EllipsisContent: EllipsisPolymorphicComponent = forwardRef(_EllipsisContent);\n"],"names":["_EllipsisContent","component","className","props","ref","Component","mergeRefs","node","scrollWidth","clientWidth","title","innerText","cn","styles","EllipsisContent","forwardRef"],"mappings":";;;;;;;;;;AAmBA,MAAMA,mBAAmB,CACvB;AAAA,EACEC,SAAAA;AAAAA,EACAC,SAAAA;AAAAA,EACA,GAAGC;AAE4C,CAAA,EACjDC,GAAAA,KACG;AACH,EAAA,MAAMC,YAAYJ,SAAAA,IAAa,KAAA;AAC/B,EAAA,sCACG,SAAA,EAAA,EACC,GAAA,EAAKK,mBAAAA,CAAU,CACbF,KACAG,CAAAA,IAAAA,KAAQ;AACN,IAAA,IAAIA,IAAAA,IAAQA,IAAAA,CAAKC,WAAAA,GAAcD,IAAAA,CAAKE,WAAAA,EAAa;AAC/CF,MAAAA,IAAAA,CAAKG,QAAQH,IAAAA,CAAKI,SAAAA;AAAAA,IACpB;AAAA,EACF,CAAC,CACF,CAAA,KACGR,KAAAA,EACJ,SAAA,EAAWS,MAAAA,CAAGC,8BAAAA,CAAO,kBAAkB,CAAA,EAAGX,SAAS,CAAA,EAAE,CAAA;AAG3D,CAAA;AAEO,MAAMY,eAAAA,GAAgDC,iBAAWf,gBAAgB;;;;"}