@qoretechnologies/reqore 0.68.0 → 0.68.1

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 (265) hide show
  1. package/dist/components/DatePicker/index.d.ts +13 -1
  2. package/dist/components/DatePicker/index.d.ts.map +1 -1
  3. package/dist/components/DatePicker/index.js +79 -39
  4. package/dist/components/DatePicker/index.js.map +1 -1
  5. package/dist/esm/components/Accordion/index.js +142 -0
  6. package/dist/esm/components/Accordion/index.js.map +1 -0
  7. package/dist/esm/components/Breadcrumbs/index.js +122 -0
  8. package/dist/esm/components/Breadcrumbs/index.js.map +1 -0
  9. package/dist/esm/components/Breadcrumbs/item.js +14 -0
  10. package/dist/esm/components/Breadcrumbs/item.js.map +1 -0
  11. package/dist/esm/components/Button/index.js +315 -0
  12. package/dist/esm/components/Button/index.js.map +1 -0
  13. package/dist/esm/components/Callout/index.js +142 -0
  14. package/dist/esm/components/Callout/index.js.map +1 -0
  15. package/dist/esm/components/Checkbox/index.js +217 -0
  16. package/dist/esm/components/Checkbox/index.js.map +1 -0
  17. package/dist/esm/components/Collection/index.js +298 -0
  18. package/dist/esm/components/Collection/index.js.map +1 -0
  19. package/dist/esm/components/Collection/item.js +157 -0
  20. package/dist/esm/components/Collection/item.js.map +1 -0
  21. package/dist/esm/components/Columns/column.js +14 -0
  22. package/dist/esm/components/Columns/column.js.map +1 -0
  23. package/dist/esm/components/Columns/index.js +17 -0
  24. package/dist/esm/components/Columns/index.js.map +1 -0
  25. package/dist/esm/components/Comment/index.js +63 -0
  26. package/dist/esm/components/Comment/index.js.map +1 -0
  27. package/dist/esm/components/CommentFeed/index.js +17 -0
  28. package/dist/esm/components/CommentFeed/index.js.map +1 -0
  29. package/dist/esm/components/Content/index.js +16 -0
  30. package/dist/esm/components/Content/index.js.map +1 -0
  31. package/dist/esm/components/Content/wrapper.js +14 -0
  32. package/dist/esm/components/Content/wrapper.js.map +1 -0
  33. package/dist/esm/components/ControlGroup/index.js +351 -0
  34. package/dist/esm/components/ControlGroup/index.js.map +1 -0
  35. package/dist/esm/components/DatePicker/MonthYearDropdowns.js +30 -0
  36. package/dist/esm/components/DatePicker/MonthYearDropdowns.js.map +1 -0
  37. package/dist/esm/components/DatePicker/index.js +244 -0
  38. package/dist/esm/components/DatePicker/index.js.map +1 -0
  39. package/dist/esm/components/DescriptionList/index.js +132 -0
  40. package/dist/esm/components/DescriptionList/index.js.map +1 -0
  41. package/dist/esm/components/Drawer/backdrop.js +34 -0
  42. package/dist/esm/components/Drawer/backdrop.js.map +1 -0
  43. package/dist/esm/components/Drawer/index.js +286 -0
  44. package/dist/esm/components/Drawer/index.js.map +1 -0
  45. package/dist/esm/components/Dropdown/index.js +49 -0
  46. package/dist/esm/components/Dropdown/index.js.map +1 -0
  47. package/dist/esm/components/Dropdown/item.js +12 -0
  48. package/dist/esm/components/Dropdown/item.js.map +1 -0
  49. package/dist/esm/components/Dropdown/list.js +320 -0
  50. package/dist/esm/components/Dropdown/list.js.map +1 -0
  51. package/dist/esm/components/Effect/index.js +349 -0
  52. package/dist/esm/components/Effect/index.js.map +1 -0
  53. package/dist/esm/components/EmptyState/index.js +31 -0
  54. package/dist/esm/components/EmptyState/index.js.map +1 -0
  55. package/dist/esm/components/EntityRow/index.js +134 -0
  56. package/dist/esm/components/EntityRow/index.js.map +1 -0
  57. package/dist/esm/components/ErrorBoundary/index.js +57 -0
  58. package/dist/esm/components/ErrorBoundary/index.js.map +1 -0
  59. package/dist/esm/components/ExportModal/index.js +60 -0
  60. package/dist/esm/components/ExportModal/index.js.map +1 -0
  61. package/dist/esm/components/FeatureCard/index.js +139 -0
  62. package/dist/esm/components/FeatureCard/index.js.map +1 -0
  63. package/dist/esm/components/GlobalModalsWrapper/index.js +27 -0
  64. package/dist/esm/components/GlobalModalsWrapper/index.js.map +1 -0
  65. package/dist/esm/components/Header/index.js +55 -0
  66. package/dist/esm/components/Header/index.js.map +1 -0
  67. package/dist/esm/components/Icon/index.js +130 -0
  68. package/dist/esm/components/Icon/index.js.map +1 -0
  69. package/dist/esm/components/Input/index.js +136 -0
  70. package/dist/esm/components/Input/index.js.map +1 -0
  71. package/dist/esm/components/InputClearButton/index.js +32 -0
  72. package/dist/esm/components/InputClearButton/index.js.map +1 -0
  73. package/dist/esm/components/InternalPopover/index.js +244 -0
  74. package/dist/esm/components/InternalPopover/index.js.map +1 -0
  75. package/dist/esm/components/KeyValueTable/index.js +81 -0
  76. package/dist/esm/components/KeyValueTable/index.js.map +1 -0
  77. package/dist/esm/components/Label/index.js +7 -0
  78. package/dist/esm/components/Label/index.js.map +1 -0
  79. package/dist/esm/components/Layout/content.js +12 -0
  80. package/dist/esm/components/Layout/content.js.map +1 -0
  81. package/dist/esm/components/Layout/index.js +28 -0
  82. package/dist/esm/components/Layout/index.js.map +1 -0
  83. package/dist/esm/components/Menu/divider.js +41 -0
  84. package/dist/esm/components/Menu/divider.js.map +1 -0
  85. package/dist/esm/components/Menu/index.js +67 -0
  86. package/dist/esm/components/Menu/index.js.map +1 -0
  87. package/dist/esm/components/Menu/item.js +33 -0
  88. package/dist/esm/components/Menu/item.js.map +1 -0
  89. package/dist/esm/components/Menu/section.js +28 -0
  90. package/dist/esm/components/Menu/section.js.map +1 -0
  91. package/dist/esm/components/Message/index.js +52 -0
  92. package/dist/esm/components/Message/index.js.map +1 -0
  93. package/dist/esm/components/Modal/index.js +40 -0
  94. package/dist/esm/components/Modal/index.js.map +1 -0
  95. package/dist/esm/components/MultiSelect/index.js +146 -0
  96. package/dist/esm/components/MultiSelect/index.js.map +1 -0
  97. package/dist/esm/components/Navbar/divider.js +24 -0
  98. package/dist/esm/components/Navbar/divider.js.map +1 -0
  99. package/dist/esm/components/Navbar/group.js +27 -0
  100. package/dist/esm/components/Navbar/group.js.map +1 -0
  101. package/dist/esm/components/Navbar/index.js +39 -0
  102. package/dist/esm/components/Navbar/index.js.map +1 -0
  103. package/dist/esm/components/Navbar/item.js +51 -0
  104. package/dist/esm/components/Navbar/item.js.map +1 -0
  105. package/dist/esm/components/Notifications/index.js +28 -0
  106. package/dist/esm/components/Notifications/index.js.map +1 -0
  107. package/dist/esm/components/Notifications/notification.js +225 -0
  108. package/dist/esm/components/Notifications/notification.js.map +1 -0
  109. package/dist/esm/components/Paging/index.js +116 -0
  110. package/dist/esm/components/Paging/index.js.map +1 -0
  111. package/dist/esm/components/Panel/LabelEditor.js +33 -0
  112. package/dist/esm/components/Panel/LabelEditor.js.map +1 -0
  113. package/dist/esm/components/Panel/NonResponsiveActions.js +18 -0
  114. package/dist/esm/components/Panel/NonResponsiveActions.js.map +1 -0
  115. package/dist/esm/components/Panel/index.js +564 -0
  116. package/dist/esm/components/Panel/index.js.map +1 -0
  117. package/dist/esm/components/Panel/panel.screenshot.js +15 -0
  118. package/dist/esm/components/Panel/panel.screenshot.js.map +1 -0
  119. package/dist/esm/components/Paragraph/index.js +19 -0
  120. package/dist/esm/components/Paragraph/index.js.map +1 -0
  121. package/dist/esm/components/Popover/index.js +267 -0
  122. package/dist/esm/components/Popover/index.js.map +1 -0
  123. package/dist/esm/components/Progress/index.js +188 -0
  124. package/dist/esm/components/Progress/index.js.map +1 -0
  125. package/dist/esm/components/RadioGroup/index.js +9 -0
  126. package/dist/esm/components/RadioGroup/index.js.map +1 -0
  127. package/dist/esm/components/Rating/index.js +165 -0
  128. package/dist/esm/components/Rating/index.js.map +1 -0
  129. package/dist/esm/components/RichTextEditor/index.js +299 -0
  130. package/dist/esm/components/RichTextEditor/index.js.map +1 -0
  131. package/dist/esm/components/SegmentedControl/index.js +291 -0
  132. package/dist/esm/components/SegmentedControl/index.js.map +1 -0
  133. package/dist/esm/components/SeverityRow/index.js +106 -0
  134. package/dist/esm/components/SeverityRow/index.js.map +1 -0
  135. package/dist/esm/components/Skeleton/index.js +28 -0
  136. package/dist/esm/components/Skeleton/index.js.map +1 -0
  137. package/dist/esm/components/Slider/index.js +176 -0
  138. package/dist/esm/components/Slider/index.js.map +1 -0
  139. package/dist/esm/components/Spacer/index.js +96 -0
  140. package/dist/esm/components/Spacer/index.js.map +1 -0
  141. package/dist/esm/components/Span/index.js +18 -0
  142. package/dist/esm/components/Span/index.js.map +1 -0
  143. package/dist/esm/components/Spinner/index.js +14 -0
  144. package/dist/esm/components/Spinner/index.js.map +1 -0
  145. package/dist/esm/components/Statistic/index.js +166 -0
  146. package/dist/esm/components/Statistic/index.js.map +1 -0
  147. package/dist/esm/components/Table/body.js +72 -0
  148. package/dist/esm/components/Table/body.js.map +1 -0
  149. package/dist/esm/components/Table/cell.js +214 -0
  150. package/dist/esm/components/Table/cell.js.map +1 -0
  151. package/dist/esm/components/Table/header.js +158 -0
  152. package/dist/esm/components/Table/header.js.map +1 -0
  153. package/dist/esm/components/Table/headerCell.js +233 -0
  154. package/dist/esm/components/Table/headerCell.js.map +1 -0
  155. package/dist/esm/components/Table/helpers.js +285 -0
  156. package/dist/esm/components/Table/helpers.js.map +1 -0
  157. package/dist/esm/components/Table/index.js +472 -0
  158. package/dist/esm/components/Table/index.js.map +1 -0
  159. package/dist/esm/components/Table/row.js +176 -0
  160. package/dist/esm/components/Table/row.js.map +1 -0
  161. package/dist/esm/components/Table/value.js +19 -0
  162. package/dist/esm/components/Table/value.js.map +1 -0
  163. package/dist/esm/components/Tabs/content.js +23 -0
  164. package/dist/esm/components/Tabs/content.js.map +1 -0
  165. package/dist/esm/components/Tabs/index.js +44 -0
  166. package/dist/esm/components/Tabs/index.js.map +1 -0
  167. package/dist/esm/components/Tabs/item.js +122 -0
  168. package/dist/esm/components/Tabs/item.js.map +1 -0
  169. package/dist/esm/components/Tabs/list.js +208 -0
  170. package/dist/esm/components/Tabs/list.js.map +1 -0
  171. package/dist/esm/components/Tag/group.js +38 -0
  172. package/dist/esm/components/Tag/group.js.map +1 -0
  173. package/dist/esm/components/Tag/index.js +267 -0
  174. package/dist/esm/components/Tag/index.js.map +1 -0
  175. package/dist/esm/components/Testimonial/index.js +108 -0
  176. package/dist/esm/components/Testimonial/index.js.map +1 -0
  177. package/dist/esm/components/Textarea/index.js +135 -0
  178. package/dist/esm/components/Textarea/index.js.map +1 -0
  179. package/dist/esm/components/Tier/index.js +48 -0
  180. package/dist/esm/components/Tier/index.js.map +1 -0
  181. package/dist/esm/components/TimeAgo/index.js +19 -0
  182. package/dist/esm/components/TimeAgo/index.js.map +1 -0
  183. package/dist/esm/components/Timeline/index.js +271 -0
  184. package/dist/esm/components/Timeline/index.js.map +1 -0
  185. package/dist/esm/components/TooltipComponent/index.js +11 -0
  186. package/dist/esm/components/TooltipComponent/index.js.map +1 -0
  187. package/dist/esm/components/Tree/index.js +266 -0
  188. package/dist/esm/components/Tree/index.js.map +1 -0
  189. package/dist/esm/components/Tree/modal.js +30 -0
  190. package/dist/esm/components/Tree/modal.js.map +1 -0
  191. package/dist/esm/constants/animations.js +9 -0
  192. package/dist/esm/constants/animations.js.map +1 -0
  193. package/dist/esm/constants/colors.js +13 -0
  194. package/dist/esm/constants/colors.js.map +1 -0
  195. package/dist/esm/constants/paging.js +48 -0
  196. package/dist/esm/constants/paging.js.map +1 -0
  197. package/dist/esm/constants/sizes.js +363 -0
  198. package/dist/esm/constants/sizes.js.map +1 -0
  199. package/dist/esm/constants/theme.js +40 -0
  200. package/dist/esm/constants/theme.js.map +1 -0
  201. package/dist/esm/containers/Paging.js +29 -0
  202. package/dist/esm/containers/Paging.js.map +1 -0
  203. package/dist/esm/containers/ReqoreProvider.js +239 -0
  204. package/dist/esm/containers/ReqoreProvider.js.map +1 -0
  205. package/dist/esm/containers/ThemeProvider.js +11 -0
  206. package/dist/esm/containers/ThemeProvider.js.map +1 -0
  207. package/dist/esm/containers/UIProvider.js +53 -0
  208. package/dist/esm/containers/UIProvider.js.map +1 -0
  209. package/dist/esm/context/CustomThemeContext.js +4 -0
  210. package/dist/esm/context/CustomThemeContext.js.map +1 -0
  211. package/dist/esm/context/ReqoreContext.js +22 -0
  212. package/dist/esm/context/ReqoreContext.js.map +1 -0
  213. package/dist/esm/context/ThemeContext.js +4 -0
  214. package/dist/esm/context/ThemeContext.js.map +1 -0
  215. package/dist/esm/helpers/animations.js +13 -0
  216. package/dist/esm/helpers/animations.js.map +1 -0
  217. package/dist/esm/helpers/colors.js +240 -0
  218. package/dist/esm/helpers/colors.js.map +1 -0
  219. package/dist/esm/helpers/dates.js +52 -0
  220. package/dist/esm/helpers/dates.js.map +1 -0
  221. package/dist/esm/helpers/time.js +21 -0
  222. package/dist/esm/helpers/time.js.map +1 -0
  223. package/dist/esm/helpers/utils.js +174 -0
  224. package/dist/esm/helpers/utils.js.map +1 -0
  225. package/dist/esm/hooks/useAutoFocus.js +76 -0
  226. package/dist/esm/hooks/useAutoFocus.js.map +1 -0
  227. package/dist/esm/hooks/useCloneThroughFragments.js +26 -0
  228. package/dist/esm/hooks/useCloneThroughFragments.js.map +1 -0
  229. package/dist/esm/hooks/useCombinedRefs.js +25 -0
  230. package/dist/esm/hooks/useCombinedRefs.js.map +1 -0
  231. package/dist/esm/hooks/useComponentTooltip.js +28 -0
  232. package/dist/esm/hooks/useComponentTooltip.js.map +1 -0
  233. package/dist/esm/hooks/useFocusTrap.js +115 -0
  234. package/dist/esm/hooks/useFocusTrap.js.map +1 -0
  235. package/dist/esm/hooks/useLatestZIndex.js +10 -0
  236. package/dist/esm/hooks/useLatestZIndex.js.map +1 -0
  237. package/dist/esm/hooks/useOutsideClick.js +17 -0
  238. package/dist/esm/hooks/useOutsideClick.js.map +1 -0
  239. package/dist/esm/hooks/usePaging.js +92 -0
  240. package/dist/esm/hooks/usePaging.js.map +1 -0
  241. package/dist/esm/hooks/useQueryWithDelay.js +19 -0
  242. package/dist/esm/hooks/useQueryWithDelay.js.map +1 -0
  243. package/dist/esm/hooks/useReqore.js +10 -0
  244. package/dist/esm/hooks/useReqore.js.map +1 -0
  245. package/dist/esm/hooks/useReqoreContext.js +12 -0
  246. package/dist/esm/hooks/useReqoreContext.js.map +1 -0
  247. package/dist/esm/hooks/useReqoreEffect.js +21 -0
  248. package/dist/esm/hooks/useReqoreEffect.js.map +1 -0
  249. package/dist/esm/hooks/useTextareaAutoSize.js +16 -0
  250. package/dist/esm/hooks/useTextareaAutoSize.js.map +1 -0
  251. package/dist/esm/hooks/useTheme.js +39 -0
  252. package/dist/esm/hooks/useTheme.js.map +1 -0
  253. package/dist/esm/hooks/useWhyDidYouUpdate.js +32 -0
  254. package/dist/esm/hooks/useWhyDidYouUpdate.js.map +1 -0
  255. package/dist/esm/index.js +92 -0
  256. package/dist/esm/index.js.map +1 -0
  257. package/dist/esm/styles.js +122 -0
  258. package/dist/esm/styles.js.map +1 -0
  259. package/dist/esm/types/global.js +2 -0
  260. package/dist/esm/types/global.js.map +1 -0
  261. package/dist/esm/types/icons.js +2 -0
  262. package/dist/esm/types/icons.js.map +1 -0
  263. package/package.json +6 -2
  264. package/tests.json +1 -1
  265. package/tsconfig.esm.json +11 -0
@@ -0,0 +1,351 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { debounce } from 'lodash';
3
+ import React, { forwardRef, memo, useCallback, useEffect, useMemo, useRef, useState } from 'react';
4
+ import { useMount, useUnmount } from 'react-use';
5
+ import styled, { css } from 'styled-components';
6
+ import { ReqoreButton, ReqoreDrawer } from '../..';
7
+ import { GAP_FROM_SIZE, RADIUS_FROM_SIZE } from '../../constants/sizes';
8
+ import { useCloneThroughFragments } from '../../hooks/useCloneThroughFragments';
9
+ import { StyledEffect } from '../Effect';
10
+ import { StyledHeader } from '../Header';
11
+ import { StyledParagraph } from '../Paragraph';
12
+ export const StyledReqoreControlGroup = styled(StyledEffect) `
13
+ display: flex;
14
+ flex: ${({ fluid, fixed }) => (fixed ? '0 0 auto' : fluid ? undefined : '0 0 auto')};
15
+ width: ${({ fluid, fixed }) => (fluid && !fixed ? '100%' : undefined)};
16
+ justify-content: ${({ fluid, vertical, spaceBetween }) => vertical && fluid
17
+ ? spaceBetween
18
+ ? 'space-between'
19
+ : 'stretch'
20
+ : !vertical && spaceBetween
21
+ ? 'space-between'
22
+ : undefined};
23
+ align-items: ${({ vertical, fluid, horizontalAlign, spaceBetween }) => vertical
24
+ ? fluid
25
+ ? spaceBetween
26
+ ? 'space-between'
27
+ : 'stretch'
28
+ : horizontalAlign
29
+ : vertical && spaceBetween
30
+ ? 'space-between'
31
+ : undefined};
32
+ flex-flow: ${({ vertical }) => (vertical ? 'column' : 'row')};
33
+ gap: ${({ gapSize, stack }) => (!stack ? `${GAP_FROM_SIZE[gapSize]}px` : undefined)};
34
+ flex-wrap: ${({ wrap }) => (wrap ? 'wrap' : 'nowrap')};
35
+
36
+ // If the group has the fill prop,
37
+ // we need to make sure that the children are vertically stretched
38
+ // kind of like 'fluid' but vertically
39
+ // ! Only works when the group is horizontal & wrap is false
40
+ ${({ fill, vertical }) => {
41
+ if (fill && !vertical) {
42
+ return css `
43
+ > * {
44
+ max-height: 100% !important;
45
+ height: unset !important;
46
+ align-self: stretch !important;
47
+ }
48
+ `;
49
+ }
50
+ return undefined;
51
+ }}
52
+
53
+ > *, > ${StyledParagraph}, > ${StyledHeader} {
54
+ margin-top: ${({ fill, verticalAlign }) => !fill && (verticalAlign === 'flex-end' || verticalAlign === 'center') ? 'auto' : undefined};
55
+ margin-bottom: ${({ fill, verticalAlign }) => !fill && (verticalAlign === 'flex-start' || verticalAlign === 'center') ? 'auto' : undefined};
56
+ margin-right: ${({ horizontalAlign }) => (horizontalAlign === 'center' ? 'auto' : undefined)};
57
+
58
+ ${({ vertical }) => vertical &&
59
+ css `
60
+ margin-left: ${({ horizontalAlign }) => horizontalAlign === 'flex-end' || horizontalAlign === 'center' ? 'auto' : undefined};
61
+ `}
62
+ }
63
+
64
+ ${({ vertical }) => !vertical &&
65
+ css `
66
+ > *:first-child {
67
+ margin-left: ${({ horizontalAlign }) => horizontalAlign === 'flex-end' || horizontalAlign === 'center' ? 'auto' : undefined};
68
+ }
69
+ `}
70
+
71
+ ${({ stack, wrap }) => {
72
+ if (!stack)
73
+ return undefined;
74
+ return css `
75
+ ${wrap ? 'padding: 1px 0 0 1px;' : ''}
76
+
77
+ > * {
78
+ border-radius: 0;
79
+ position: relative;
80
+
81
+ &:hover,
82
+ &:focus-within {
83
+ z-index: 1;
84
+ }
85
+ }
86
+ `;
87
+ }}
88
+ `;
89
+ const ReqoreControlGroup = memo(forwardRef(({ children, className, minimal, size = 'normal', gapSize = 'normal', fluid, flat, fixed, fill, rounded = true, wrap, stack, isInsideStackGroup, isInsideVerticalGroup, isMasterGroupRounded, intent, customTheme, isFirst, isLast, vertical, childrenCount, childId, isChild, isFirstGroup, isLastGroup, verticalAlign, horizontalAlign = 'flex-start', responsive, overflowButtonProps, ...rest }, externalRef) => {
90
+ const isStack = stack || isInsideStackGroup;
91
+ const isVertical = vertical || isInsideVerticalGroup;
92
+ const [overflowingChildren, setOverflowingChildren] = useState(0);
93
+ const [lastReSize, setLastReSize] = useState(0);
94
+ const [isOverflownDialogOpen, setIsOverflownDialogOpen] = useState(false);
95
+ const observer = useRef(null);
96
+ const ref = useRef(null);
97
+ const setRefs = useCallback((node) => {
98
+ ref.current = node;
99
+ if (typeof externalRef === 'function') {
100
+ externalRef(node);
101
+ }
102
+ else if (externalRef) {
103
+ externalRef.current = node;
104
+ }
105
+ }, [externalRef]);
106
+ const realChildCount = useMemo(() => {
107
+ let count = 0;
108
+ const countChildren = (children) => React.Children.forEach(children, (child) => {
109
+ if (child && React.isValidElement(child)) {
110
+ if (child.type === React.Fragment) {
111
+ // just compare to `React.Fragment`
112
+ countChildren(child.props.children);
113
+ }
114
+ else {
115
+ count++;
116
+ }
117
+ }
118
+ });
119
+ countChildren(children);
120
+ return count < 0 ? 0 : count;
121
+ }, [children]);
122
+ const checkIfOverflowing = useCallback(() => {
123
+ return (ref.current &&
124
+ ref.current.clientWidth > 40 &&
125
+ !vertical &&
126
+ responsive &&
127
+ ref.current.scrollWidth > ref.current.clientWidth);
128
+ }, [vertical, responsive, children]);
129
+ useMount(() => {
130
+ if (!vertical && responsive) {
131
+ if ('ResizeObserver' in window) {
132
+ observer.current = new ResizeObserver(debounce(() => {
133
+ if (ref && ref.current) {
134
+ setOverflowingChildren(0);
135
+ setLastReSize(ref.current.clientWidth);
136
+ }
137
+ }, 200));
138
+ observer.current.observe(ref.current);
139
+ }
140
+ }
141
+ });
142
+ useUnmount(() => {
143
+ if (observer.current) {
144
+ observer.current.disconnect();
145
+ }
146
+ });
147
+ useEffect(() => {
148
+ // Is the control group still overflowing?
149
+ if ((overflowingChildren || overflowingChildren === 0) && checkIfOverflowing()) {
150
+ setOverflowingChildren(overflowingChildren + 1);
151
+ }
152
+ // Hide the dialog if the group was resized and the dialog was open
153
+ if (overflowingChildren === 0) {
154
+ setIsOverflownDialogOpen(false);
155
+ }
156
+ }, [overflowingChildren, lastReSize, checkIfOverflowing]);
157
+ const getIsFirst = (index) => {
158
+ return !isInsideStackGroup || childrenCount === 1
159
+ ? index === 0
160
+ : (isFirst || isFirst !== false) && index === 0;
161
+ };
162
+ const getIsLast = (index) => {
163
+ return !isInsideStackGroup
164
+ ? index === realChildCount - 1
165
+ : (isLast || isLast !== false) && index === realChildCount - 1;
166
+ };
167
+ const getIsLastInFirstGroup = (index) => {
168
+ return !isInsideStackGroup
169
+ ? index === 0
170
+ : isFirstGroup && (isLast || isLast !== false) && index === realChildCount - 1;
171
+ };
172
+ const getIsFirstInLastGroup = (index) => {
173
+ return !isInsideStackGroup
174
+ ? index === realChildCount - 1
175
+ : isLastGroup && (isFirst || isFirst !== false) && childId === 1 && index === 0;
176
+ };
177
+ const getIsLastInLastGroup = (index) => {
178
+ return !isInsideStackGroup
179
+ ? index === realChildCount - 1
180
+ : isLastGroup && (isLast || isLast !== false) && index === realChildCount - 1;
181
+ };
182
+ const getBorderTopLeftRadius = (index, isChildRounded) => {
183
+ if (isMasterGroupRounded === false || isChildRounded === false) {
184
+ return undefined;
185
+ }
186
+ const _isFirstGroup = !isInsideStackGroup || childrenCount === 1 ? true : isChild ? isFirstGroup : index === 0;
187
+ // If this is the first item
188
+ if (_isFirstGroup && getIsFirst(index)) {
189
+ return RADIUS_FROM_SIZE[size];
190
+ }
191
+ return undefined;
192
+ };
193
+ const getBorderTopRightRadius = (index, isChildRounded) => {
194
+ if (isMasterGroupRounded === false || isChildRounded === false) {
195
+ return undefined;
196
+ }
197
+ // If this group is not vertical we need to style the very last item
198
+ if (!isVertical || !isStack) {
199
+ const _isLastGroup = !isInsideStackGroup || childrenCount === 1
200
+ ? true
201
+ : isChild
202
+ ? isLastGroup
203
+ : index === realChildCount - 1;
204
+ if (_isLastGroup && getIsLast(index)) {
205
+ return RADIUS_FROM_SIZE[size];
206
+ }
207
+ return undefined;
208
+ }
209
+ // This border only needs to apply when this group is vertical
210
+ // AND this item is the last item of the first group
211
+ if (getIsLastInFirstGroup(index)) {
212
+ return RADIUS_FROM_SIZE[size];
213
+ }
214
+ return undefined;
215
+ };
216
+ const getBorderBottomLeftRadius = (index, isChildRounded) => {
217
+ if (isMasterGroupRounded === false || isChildRounded === false) {
218
+ return undefined;
219
+ }
220
+ // If this group is not vertical we need to style the very first item
221
+ if (!isVertical || !isStack) {
222
+ const _isFirstGroup = !isInsideStackGroup || childrenCount === 1 ? true : isChild ? isFirstGroup : index === 0;
223
+ if (_isFirstGroup && getIsFirst(index)) {
224
+ return RADIUS_FROM_SIZE[size];
225
+ }
226
+ return undefined;
227
+ }
228
+ // This border only needs to apply when this group is vertical
229
+ // AND this item is the first item of the last group
230
+ if (getIsFirstInLastGroup(index)) {
231
+ return RADIUS_FROM_SIZE[size];
232
+ }
233
+ return undefined;
234
+ };
235
+ const getBorderBottomRightRadius = (index, isChildRounded) => {
236
+ if (isMasterGroupRounded === false || isChildRounded === false) {
237
+ return undefined;
238
+ }
239
+ const _isLastGroup = !isInsideStackGroup || childrenCount === 1
240
+ ? true
241
+ : isChild
242
+ ? isLastGroup
243
+ : index === realChildCount - 1;
244
+ // If this is the last item
245
+ if (_isLastGroup && getIsLast(index)) {
246
+ return RADIUS_FROM_SIZE[size];
247
+ }
248
+ return undefined;
249
+ };
250
+ const { clone } = useCloneThroughFragments((props, _index, index) => {
251
+ let newProps = {
252
+ ...props,
253
+ key: props.reactKey || _index,
254
+ minimal: props?.minimal || props?.minimal === false ? props.minimal : minimal,
255
+ size: props?.size || size,
256
+ flat: props?.flat || props?.flat === false ? props.flat : flat,
257
+ fluid: props?.fluid || props?.fluid === false ? props.fluid : fluid,
258
+ fixed: props?.fixed || props?.fixed === false ? props.fixed : fixed,
259
+ fill: props?.fill || props?.fill === false ? props.fill : fill,
260
+ spaceBetween: props?.spaceBetween || props?.spaceBetween === false ? props.spaceBetween : false,
261
+ stack: props?.stack || props?.stack === false ? props.stack : isStack,
262
+ intent: props?.intent || intent,
263
+ customTheme: props?.customTheme || customTheme,
264
+ };
265
+ if (isStack) {
266
+ const childIsFlat = props?.flat || props?.flat === false ? props.flat : flat;
267
+ const needsCollapse = !childIsFlat;
268
+ const isFirstChild = index === 0;
269
+ const collapseMargin = needsCollapse
270
+ ? wrap
271
+ ? { marginTop: -1, marginLeft: -1 }
272
+ : !isFirstChild
273
+ ? isVertical
274
+ ? { marginTop: -1 }
275
+ : { marginLeft: -1 }
276
+ : {}
277
+ : {};
278
+ newProps = {
279
+ ...newProps,
280
+ style: {
281
+ ...collapseMargin,
282
+ borderTopLeftRadius: getBorderTopLeftRadius(index, props?.rounded),
283
+ borderBottomLeftRadius: getBorderBottomLeftRadius(index, props?.rounded),
284
+ borderTopRightRadius: getBorderTopRightRadius(index, props?.rounded),
285
+ borderBottomRightRadius: getBorderBottomRightRadius(index, props?.rounded),
286
+ ...(props?.style || {}),
287
+ },
288
+ isChild: true,
289
+ rounded: isMasterGroupRounded === false ? false : !isStack,
290
+ isMasterGroupRounded: isChild ? isMasterGroupRounded : rounded,
291
+ isInsideStackGroup: isStack,
292
+ isInsideVerticalGroup: isVertical,
293
+ isFirst: isChild ? getIsFirst(index) : undefined,
294
+ isLast: isChild ? getIsLast(index) : undefined,
295
+ isLastInFirstGroup: getIsLastInFirstGroup(index),
296
+ isLastInLastGroup: getIsLastInLastGroup(index),
297
+ isFirstInLastGroup: getIsFirstInLastGroup(index),
298
+ childrenCount: realChildCount,
299
+ childId: index + 1,
300
+ isFirstGroup: isChild ? isFirstGroup : index === 0,
301
+ isLastGroup: isChild ? isLastGroup : index === realChildCount - 1,
302
+ };
303
+ }
304
+ return newProps;
305
+ }, [
306
+ children,
307
+ isStack,
308
+ isVertical,
309
+ isChild,
310
+ isLastGroup,
311
+ isFirstGroup,
312
+ realChildCount,
313
+ fluid,
314
+ flat,
315
+ minimal,
316
+ size,
317
+ intent,
318
+ rounded,
319
+ fixed,
320
+ fill,
321
+ customTheme,
322
+ isMasterGroupRounded,
323
+ wrap,
324
+ ]);
325
+ // Get the overflown children
326
+ const overflownChildren = useMemo(() => overflowingChildren ? React.Children.toArray(children).slice(0, overflowingChildren) : [], [children, overflowingChildren]);
327
+ // Remove the overflowing children count from the start of the children array
328
+ const _children = useMemo(() => overflowingChildren && responsive
329
+ ? [
330
+ children.slice(overflowingChildren),
331
+ _jsx(ReqoreButton, { icon: 'MenuLine', customTheme: customTheme, tooltip: {
332
+ handler: 'click',
333
+ content: (_jsx(ReqoreControlGroup, { fluid: true, wrap: true, children: overflownChildren })),
334
+ }, active: isOverflownDialogOpen, fixed: true, onClick: (e) => e.stopPropagation(), ...overflowButtonProps }, 'control-group-menu'),
335
+ ]
336
+ : children, [
337
+ children,
338
+ overflowingChildren,
339
+ responsive,
340
+ overflownChildren,
341
+ customTheme,
342
+ overflowButtonProps,
343
+ isOverflownDialogOpen,
344
+ ]);
345
+ return (_jsxs(_Fragment, { children: [isOverflownDialogOpen ? (_jsx(ReqoreDrawer, { isOpen: true, onClose: () => setIsOverflownDialogOpen(false), flat: true, floating: true, minimal: true, position: 'bottom', hasBackdrop: false, label: 'Hidden items', minSize: '100px', size: 'auto' })) : null, _jsx(StyledReqoreControlGroup, { as: 'div', ...rest, vertical: vertical, style: {
346
+ overflowX: responsive ? 'auto' : undefined,
347
+ ...rest.style,
348
+ }, size: size, gapSize: gapSize, ref: setRefs, rounded: rounded, fluid: fluid, fixed: fixed, fill: fill, wrap: wrap, stack: isStack, verticalAlign: verticalAlign, horizontalAlign: horizontalAlign, className: `${className || ''} reqore-control-group`, children: clone(_children) })] }));
349
+ }));
350
+ export default ReqoreControlGroup;
351
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/ControlGroup/index.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { getPreviousYears, months, toDate } from '../../helpers/dates';
3
+ import ReqoreControlGroup from '../ControlGroup';
4
+ import ReqoreDropdown from '../Dropdown';
5
+ export const YearMonthDropdowns = ({ value: _value, onValueChange, setIsYearDropdownOpen, setIsMonthDropdownOpen, minValue: _minValue = new Date(1970, 0, 1), maxValue: _maxValue = new Date(new Date().getFullYear() + 5, 11, 31), ...rest }) => {
6
+ const value = _value ?? toDate(new Date());
7
+ const minValue = toDate(_minValue);
8
+ const maxValue = toDate(_maxValue);
9
+ const currentYear = new Date().getFullYear();
10
+ const years = getPreviousYears(minValue.year, maxValue.year);
11
+ return (_jsxs(ReqoreControlGroup, { gapSize: 'small', children: [_jsx(ReqoreDropdown, { delay: 0, compact: true, filterable: true, caretPosition: 'right', label: months[value?.month - 1] ?? 'Month', inputProps: {
12
+ focusRules: {
13
+ type: 'auto',
14
+ },
15
+ }, ...rest, scrollToSelected: true, items: months.map((month, index) => ({
16
+ value: month,
17
+ selected: index === value?.month - 1,
18
+ disabled: value.set({ month: index + 1 }).compare(minValue) < 1 ||
19
+ value.set({ month: index + 1 }).compare(maxValue) > 1,
20
+ })), onItemSelect: (item) => onValueChange(value.set({ month: months.findIndex((m) => m === item.value) + 1 }), false), onToggleChange: setIsMonthDropdownOpen }), _jsx(ReqoreDropdown, { delay: 0, compact: true, filterable: true, caretPosition: 'right', label: value?.year ?? currentYear, inputProps: {
21
+ focusRules: {
22
+ type: 'auto',
23
+ },
24
+ }, ...rest, scrollToSelected: true, items: years.map((year) => ({
25
+ value: year,
26
+ selected: year === value?.year,
27
+ disabled: value.set({ year }).compare(minValue) < 1 || value.set({ year }).compare(maxValue) > 1,
28
+ })), onItemSelect: (item) => onValueChange(value.set({ year: item.value }), false), onToggleChange: setIsYearDropdownOpen })] }));
29
+ };
30
+ //# sourceMappingURL=MonthYearDropdowns.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MonthYearDropdowns.js","sourceRoot":"","sources":["../../../../src/components/DatePicker/MonthYearDropdowns.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,244 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { getLocalTimeZone, isSameDay, Time, toCalendarDateTime, toZoned, } from '@internationalized/date';
3
+ import { useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react';
4
+ import { Button, Calendar, CalendarCell, CalendarGrid, DateInput, DateSegment, I18nProvider, DatePicker as RADatePicker, TimeField, } from 'react-aria-components';
5
+ import styled from 'styled-components';
6
+ import { ReqoreErrorBoundary, ReqorePanel, ReqorePopover } from '../..';
7
+ import { changeLightness } from '../../helpers/colors';
8
+ import { formatDateToType, toDate } from '../../helpers/dates';
9
+ import { useComponentTooltip } from '../../hooks/useComponentTooltip';
10
+ import { useReqoreTheme } from '../../hooks/useTheme';
11
+ import { DisabledElement } from '../../styles';
12
+ import ReqoreButton from '../Button';
13
+ import ReqoreControlGroup from '../ControlGroup';
14
+ import ReqoreInput from '../Input';
15
+ import { YearMonthDropdowns } from './MonthYearDropdowns';
16
+ const StyledRADatePicker = styled(RADatePicker) `
17
+ &[data-fluid='false'] {
18
+ min-width: 220px;
19
+ width: fit-content;
20
+ }
21
+ `;
22
+ const StyledDateSegment = styled(DateSegment) `
23
+ padding: 2px;
24
+
25
+ &:focus {
26
+ background-color: ${(props) => changeLightness(props.theme.main, 0.1)};
27
+ outline: none;
28
+ border-radius: 4px;
29
+ }
30
+ `;
31
+ const StyledDateInput = styled(DateInput) `
32
+ display: inline-flex;
33
+ align-items: center;
34
+ `;
35
+ const StyledCalendarGrid = styled(CalendarGrid) `
36
+ width: 100%;
37
+ `;
38
+ const StyledTimeField = styled(TimeField) `
39
+ display: flex;
40
+ flex: 1 auto;
41
+ `;
42
+ const StyledCalendarCell = styled(CalendarCell) `
43
+ &[data-disabled='true']:not([data-selected='true']) {
44
+ ${DisabledElement}
45
+ }
46
+ &:focus {
47
+ outline: none;
48
+ }
49
+ `;
50
+ const TriggerPopover = ({ buttonProps, label, closeOnOutsideClick, passPopoverData, onToggleChange, popoverProps, calendarContent,
51
+ // The rest are injected by ReqoreControlGroup (style, rounded, size, etc.)
52
+ // and forwarded into componentProps so they reach the inner ReqoreButton.
53
+ ...controlGroupProps }) => (_jsx(ReqorePopover, { component: ReqoreButton, componentProps: {
54
+ icon: 'CalendarLine',
55
+ ...buttonProps,
56
+ ...controlGroupProps,
57
+ label,
58
+ }, closeOnOutsideClick: closeOnOutsideClick, closeOnAnyClick: false, closeOnInsideClick: false, passPopoverData: passPopoverData, noWrapper: true, handler: 'click', placement: 'auto-start', noArrow: true, onToggleChange: onToggleChange, ...popoverProps, content: calendarContent }));
59
+ export const DatePicker = ({ value: _value, onChange, fluid = true, flat, rounded, minimal, size = 'normal', pill, intent, customTheme, inheritCustomTheme, granularity = 'minute', hourCycle = 24, hideTimeZone = true, shouldForceLeadingZeros = true, onClearClick, closeOnSelect = true, isClearable, tooltip, popoverProps, inputProps, pickerProps, timeInputProps, timeFieldProps, pickerActiveDayProps, pickerDayProps, yearMonthPickerProps, minValue, maxValue, readOnlyInputOnTouch = true, dateType = 'iso', errorBoundaryOptions, locale, selectOnly, placeholder, buttonProps, ...props }) => {
60
+ const value = useMemo(() => (_value ? toDate(_value) : null), [_value]);
61
+ // save time in separate state because date can be cleared and equals to null
62
+ const [time, setTime] = useState(() => {
63
+ if (!value)
64
+ return undefined;
65
+ return new Time(value?.hour ?? 0, value?.minute ?? 0, value?.second ?? 0, value?.millisecond ?? 0);
66
+ });
67
+ const [focusedValue, setFocusedValue] = useState(value);
68
+ const [isMonthDropdownOpen, setIsMonthDropdownOpen] = useState(false);
69
+ const [isYearDropdownOpen, setIsYearDropdownOpen] = useState(false);
70
+ const [hasTouchPrimaryInput, setHasTouchPrimaryInput] = useState(false);
71
+ const ref = useRef(null);
72
+ const theme = useReqoreTheme('main', customTheme, intent, undefined, inheritCustomTheme);
73
+ const popoverData = useRef({});
74
+ // use ref to save value type since datepicker can have null values
75
+ const isStringRef = useRef(typeof _value === 'string');
76
+ useLayoutEffect(() => {
77
+ if (value) {
78
+ isStringRef.current = typeof _value === 'string';
79
+ }
80
+ });
81
+ useEffect(() => {
82
+ if (typeof window === 'undefined') {
83
+ return undefined;
84
+ }
85
+ const updateTouchPrimaryInput = () => {
86
+ const hasCoarsePointer = window.matchMedia?.('(pointer: coarse)').matches;
87
+ const hasNoHover = window.matchMedia?.('(hover: none)').matches;
88
+ const hasTouchPoints = typeof navigator !== 'undefined' && typeof navigator.maxTouchPoints === 'number'
89
+ ? navigator.maxTouchPoints > 0
90
+ : false;
91
+ setHasTouchPrimaryInput(Boolean(hasCoarsePointer || (hasNoHover && hasTouchPoints)));
92
+ };
93
+ updateTouchPrimaryInput();
94
+ const coarsePointerQuery = window.matchMedia?.('(pointer: coarse)');
95
+ const noHoverQuery = window.matchMedia?.('(hover: none)');
96
+ coarsePointerQuery?.addEventListener?.('change', updateTouchPrimaryInput);
97
+ noHoverQuery?.addEventListener?.('change', updateTouchPrimaryInput);
98
+ return () => {
99
+ coarsePointerQuery?.removeEventListener?.('change', updateTouchPrimaryInput);
100
+ noHoverQuery?.removeEventListener?.('change', updateTouchPrimaryInput);
101
+ };
102
+ }, []);
103
+ const showTime = granularity === 'minute' || granularity === 'second' || granularity === 'hour';
104
+ const handleDateChange = (value, close = true) => {
105
+ let date;
106
+ // if previous value is null apply saved time state
107
+ if (!_value && time) {
108
+ date = toZoned(toCalendarDateTime(value, time), getLocalTimeZone()).toDate();
109
+ }
110
+ else {
111
+ // set date and time from changed value
112
+ date = value ? value.toDate() : null;
113
+ if (date)
114
+ setTime(new Time(value?.hour, value?.minute, value?.second, value?.millisecond));
115
+ }
116
+ onChange?.((isStringRef.current ? date?.toISOString() : formatDateToType(date, dateType)));
117
+ setFocusedValue(value);
118
+ if (closeOnSelect && !showTime && close) {
119
+ popoverData.current?.close();
120
+ }
121
+ };
122
+ const onTimeChange = (time) => {
123
+ if (!time)
124
+ return;
125
+ setTime(time);
126
+ if (value) {
127
+ const date = toZoned(toCalendarDateTime(value, time), getLocalTimeZone());
128
+ handleDateChange?.(date);
129
+ }
130
+ };
131
+ const handleClearClick = () => {
132
+ if (value)
133
+ onChange(null);
134
+ if (time)
135
+ setTime(new Time(0, 0, 0, 0));
136
+ onClearClick?.();
137
+ };
138
+ const onMonthYearChange = (date) => {
139
+ handleDateChange(date, false);
140
+ };
141
+ const onToggleChange = (open) => {
142
+ // reset focused value state on popover close
143
+ if (!open) {
144
+ setFocusedValue(null);
145
+ }
146
+ };
147
+ const handleCalendarDateChange = (date) => {
148
+ handleDateChange(value ? toZoned(toCalendarDateTime(date, time), getLocalTimeZone()) : date);
149
+ };
150
+ const { Component, props: finalProps } = useComponentTooltip({
151
+ value,
152
+ onChange: handleDateChange,
153
+ granularity,
154
+ tooltip,
155
+ hideTimeZone,
156
+ shouldForceLeadingZeros,
157
+ hourCycle,
158
+ 'data-fluid': fluid,
159
+ 'aria-label': 'Date',
160
+ minValue: toDate(minValue),
161
+ maxValue: toDate(maxValue),
162
+ ...props,
163
+ }, StyledRADatePicker, ref);
164
+ const resolvedLocale = locale ??
165
+ (typeof navigator !== 'undefined'
166
+ ? navigator.languages?.find((l) => !l.startsWith('en')) ?? navigator.language
167
+ : undefined);
168
+ const formattedDate = useMemo(() => {
169
+ if (!value)
170
+ return undefined;
171
+ const dateObj = value.toDate();
172
+ const options = granularity === 'day'
173
+ ? { year: 'numeric', month: 'short', day: 'numeric' }
174
+ : { year: 'numeric', month: 'short', day: 'numeric', hour: '2-digit', minute: '2-digit' };
175
+ return new Intl.DateTimeFormat(resolvedLocale, options).format(dateObj);
176
+ }, [value, granularity, resolvedLocale]);
177
+ const calendarContent = useMemo(() => (_jsx(Calendar, { defaultFocusedValue: value, onChange: handleCalendarDateChange, focusedValue: focusedValue, onFocusChange: (date) => setFocusedValue(toZoned(date, getLocalTimeZone())), minValue: toDate(minValue), maxValue: toDate(maxValue), children: _jsxs(ReqorePanel, { responsiveActionsWrapperProps: { fluid: false }, minimal: true, size: 'small', responsiveTitle: false, intent: intent, label: _jsx(YearMonthDropdowns, { value: focusedValue, onValueChange: onMonthYearChange, setIsMonthDropdownOpen: setIsMonthDropdownOpen, setIsYearDropdownOpen: setIsYearDropdownOpen, minValue: minValue, maxValue: maxValue, intent: intent, customTheme: theme, ...yearMonthPickerProps }), ...pickerProps, actions: [
178
+ {
179
+ group: [
180
+ {
181
+ as: ReqoreButton,
182
+ props: {
183
+ as: Button,
184
+ customTheme: theme,
185
+ slot: 'previous',
186
+ icon: 'ArrowLeftFill',
187
+ size: 'normal',
188
+ compact: true,
189
+ },
190
+ },
191
+ {
192
+ as: ReqoreButton,
193
+ props: {
194
+ as: Button,
195
+ customTheme: theme,
196
+ slot: 'next',
197
+ icon: 'ArrowRightFill',
198
+ size: 'normal',
199
+ compact: true,
200
+ },
201
+ },
202
+ ],
203
+ },
204
+ ], children: [_jsx(StyledCalendarGrid, { children: (date) => {
205
+ const isSelected = value && isSameDay(date, value);
206
+ return (_jsx(StyledCalendarCell, { "data-selected": isSelected, date: date, children: _jsx(ReqoreButton, { customTheme: isSelected ? theme : { main: 'transparent' }, label: date.day, active: isSelected, textAlign: 'center', circle: true, minimal: true, flat: true, compact: true, ...(isSelected ? pickerActiveDayProps : pickerDayProps) }, date.toString()) }));
207
+ } }), showTime && (_jsx(ReqoreControlGroup, { fluid: true, children: _jsx(StyledTimeField, { value: time, onChange: onTimeChange, granularity: granularity, hideTimeZone: hideTimeZone, shouldForceLeadingZeros: shouldForceLeadingZeros, hourCycle: hourCycle, "aria-label": 'Time', ...timeFieldProps, children: _jsx(ReqoreInput, { icon: 'TimeLine', fluid: true, as: StyledDateInput, flat: flat, rounded: rounded, minimal: minimal, size: size, pill: pill, intent: intent, theme: theme, ...timeInputProps, children: (segment) => _jsx(StyledDateSegment, { segment: segment }) }) }) }))] }) })), [value, !isMonthDropdownOpen && !isYearDropdownOpen, focusedValue, time]);
208
+ if (selectOnly) {
209
+ const triggerProps = {
210
+ buttonProps,
211
+ fluid,
212
+ size,
213
+ intent,
214
+ flat,
215
+ minimal,
216
+ pill,
217
+ rounded,
218
+ label: formattedDate ?? placeholder ?? buttonProps?.label,
219
+ closeOnOutsideClick: !isMonthDropdownOpen && !isYearDropdownOpen,
220
+ passPopoverData: (data) => (popoverData.current = data),
221
+ onToggleChange,
222
+ popoverProps,
223
+ calendarContent,
224
+ };
225
+ return (_jsx(ReqoreErrorBoundary, { ...errorBoundaryOptions, children: _jsx(I18nProvider, { locale: resolvedLocale, children: isClearable && value ? (_jsxs(ReqoreControlGroup, { fluid: fluid, size: size, stack: true, children: [_jsx(TriggerPopover, { ...triggerProps }), _jsx(ReqoreButton, { fixed: true, icon: 'CloseLine', size: size, intent: intent, flat: flat, minimal: minimal, rounded: rounded, onClick: handleClearClick })] })) : (_jsx(TriggerPopover, { ...triggerProps })) }) }));
226
+ }
227
+ return (_jsx(ReqoreErrorBoundary, { ...errorBoundaryOptions, children: _jsx(I18nProvider, { locale: resolvedLocale, children: _jsx(Component, { ...finalProps, children: _jsx(ReqorePopover, { component: ReqoreInput, componentProps: {
228
+ as: StyledDateInput,
229
+ onClearClick: handleClearClick,
230
+ fluid,
231
+ value,
232
+ readOnly: readOnlyInputOnTouch && hasTouchPrimaryInput,
233
+ inputMode: readOnlyInputOnTouch && hasTouchPrimaryInput ? 'none' : undefined,
234
+ rounded,
235
+ size,
236
+ pill,
237
+ minimal,
238
+ intent,
239
+ flat,
240
+ icon: 'CalendarLine',
241
+ ...inputProps,
242
+ }, closeOnOutsideClick: !isMonthDropdownOpen && !isYearDropdownOpen, closeOnAnyClick: false, closeOnInsideClick: false, passPopoverData: (data) => (popoverData.current = data), isReqoreComponent: true, noWrapper: true, handler: 'click', placement: 'auto-start', noArrow: true, onToggleChange: onToggleChange, ...popoverProps, content: calendarContent, children: (segment) => _jsx(StyledDateSegment, { segment: segment }) }) }) }) }));
243
+ };
244
+ //# sourceMappingURL=index.js.map