@qoretechnologies/reqore 0.67.6 → 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 (280) 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/components/DescriptionList/index.d.ts +119 -0
  6. package/dist/components/DescriptionList/index.d.ts.map +1 -0
  7. package/dist/components/DescriptionList/index.js +161 -0
  8. package/dist/components/DescriptionList/index.js.map +1 -0
  9. package/dist/components/Panel/index.d.ts.map +1 -1
  10. package/dist/components/Panel/index.js +1 -1
  11. package/dist/components/Panel/index.js.map +1 -1
  12. package/dist/constants/sizes.d.ts +9 -0
  13. package/dist/constants/sizes.d.ts.map +1 -1
  14. package/dist/constants/sizes.js +10 -1
  15. package/dist/constants/sizes.js.map +1 -1
  16. package/dist/esm/components/Accordion/index.js +142 -0
  17. package/dist/esm/components/Accordion/index.js.map +1 -0
  18. package/dist/esm/components/Breadcrumbs/index.js +122 -0
  19. package/dist/esm/components/Breadcrumbs/index.js.map +1 -0
  20. package/dist/esm/components/Breadcrumbs/item.js +14 -0
  21. package/dist/esm/components/Breadcrumbs/item.js.map +1 -0
  22. package/dist/esm/components/Button/index.js +315 -0
  23. package/dist/esm/components/Button/index.js.map +1 -0
  24. package/dist/esm/components/Callout/index.js +142 -0
  25. package/dist/esm/components/Callout/index.js.map +1 -0
  26. package/dist/esm/components/Checkbox/index.js +217 -0
  27. package/dist/esm/components/Checkbox/index.js.map +1 -0
  28. package/dist/esm/components/Collection/index.js +298 -0
  29. package/dist/esm/components/Collection/index.js.map +1 -0
  30. package/dist/esm/components/Collection/item.js +157 -0
  31. package/dist/esm/components/Collection/item.js.map +1 -0
  32. package/dist/esm/components/Columns/column.js +14 -0
  33. package/dist/esm/components/Columns/column.js.map +1 -0
  34. package/dist/esm/components/Columns/index.js +17 -0
  35. package/dist/esm/components/Columns/index.js.map +1 -0
  36. package/dist/esm/components/Comment/index.js +63 -0
  37. package/dist/esm/components/Comment/index.js.map +1 -0
  38. package/dist/esm/components/CommentFeed/index.js +17 -0
  39. package/dist/esm/components/CommentFeed/index.js.map +1 -0
  40. package/dist/esm/components/Content/index.js +16 -0
  41. package/dist/esm/components/Content/index.js.map +1 -0
  42. package/dist/esm/components/Content/wrapper.js +14 -0
  43. package/dist/esm/components/Content/wrapper.js.map +1 -0
  44. package/dist/esm/components/ControlGroup/index.js +351 -0
  45. package/dist/esm/components/ControlGroup/index.js.map +1 -0
  46. package/dist/esm/components/DatePicker/MonthYearDropdowns.js +30 -0
  47. package/dist/esm/components/DatePicker/MonthYearDropdowns.js.map +1 -0
  48. package/dist/esm/components/DatePicker/index.js +244 -0
  49. package/dist/esm/components/DatePicker/index.js.map +1 -0
  50. package/dist/esm/components/DescriptionList/index.js +132 -0
  51. package/dist/esm/components/DescriptionList/index.js.map +1 -0
  52. package/dist/esm/components/Drawer/backdrop.js +34 -0
  53. package/dist/esm/components/Drawer/backdrop.js.map +1 -0
  54. package/dist/esm/components/Drawer/index.js +286 -0
  55. package/dist/esm/components/Drawer/index.js.map +1 -0
  56. package/dist/esm/components/Dropdown/index.js +49 -0
  57. package/dist/esm/components/Dropdown/index.js.map +1 -0
  58. package/dist/esm/components/Dropdown/item.js +12 -0
  59. package/dist/esm/components/Dropdown/item.js.map +1 -0
  60. package/dist/esm/components/Dropdown/list.js +320 -0
  61. package/dist/esm/components/Dropdown/list.js.map +1 -0
  62. package/dist/esm/components/Effect/index.js +349 -0
  63. package/dist/esm/components/Effect/index.js.map +1 -0
  64. package/dist/esm/components/EmptyState/index.js +31 -0
  65. package/dist/esm/components/EmptyState/index.js.map +1 -0
  66. package/dist/esm/components/EntityRow/index.js +134 -0
  67. package/dist/esm/components/EntityRow/index.js.map +1 -0
  68. package/dist/esm/components/ErrorBoundary/index.js +57 -0
  69. package/dist/esm/components/ErrorBoundary/index.js.map +1 -0
  70. package/dist/esm/components/ExportModal/index.js +60 -0
  71. package/dist/esm/components/ExportModal/index.js.map +1 -0
  72. package/dist/esm/components/FeatureCard/index.js +139 -0
  73. package/dist/esm/components/FeatureCard/index.js.map +1 -0
  74. package/dist/esm/components/GlobalModalsWrapper/index.js +27 -0
  75. package/dist/esm/components/GlobalModalsWrapper/index.js.map +1 -0
  76. package/dist/esm/components/Header/index.js +55 -0
  77. package/dist/esm/components/Header/index.js.map +1 -0
  78. package/dist/esm/components/Icon/index.js +130 -0
  79. package/dist/esm/components/Icon/index.js.map +1 -0
  80. package/dist/esm/components/Input/index.js +136 -0
  81. package/dist/esm/components/Input/index.js.map +1 -0
  82. package/dist/esm/components/InputClearButton/index.js +32 -0
  83. package/dist/esm/components/InputClearButton/index.js.map +1 -0
  84. package/dist/esm/components/InternalPopover/index.js +244 -0
  85. package/dist/esm/components/InternalPopover/index.js.map +1 -0
  86. package/dist/esm/components/KeyValueTable/index.js +81 -0
  87. package/dist/esm/components/KeyValueTable/index.js.map +1 -0
  88. package/dist/esm/components/Label/index.js +7 -0
  89. package/dist/esm/components/Label/index.js.map +1 -0
  90. package/dist/esm/components/Layout/content.js +12 -0
  91. package/dist/esm/components/Layout/content.js.map +1 -0
  92. package/dist/esm/components/Layout/index.js +28 -0
  93. package/dist/esm/components/Layout/index.js.map +1 -0
  94. package/dist/esm/components/Menu/divider.js +41 -0
  95. package/dist/esm/components/Menu/divider.js.map +1 -0
  96. package/dist/esm/components/Menu/index.js +67 -0
  97. package/dist/esm/components/Menu/index.js.map +1 -0
  98. package/dist/esm/components/Menu/item.js +33 -0
  99. package/dist/esm/components/Menu/item.js.map +1 -0
  100. package/dist/esm/components/Menu/section.js +28 -0
  101. package/dist/esm/components/Menu/section.js.map +1 -0
  102. package/dist/esm/components/Message/index.js +52 -0
  103. package/dist/esm/components/Message/index.js.map +1 -0
  104. package/dist/esm/components/Modal/index.js +40 -0
  105. package/dist/esm/components/Modal/index.js.map +1 -0
  106. package/dist/esm/components/MultiSelect/index.js +146 -0
  107. package/dist/esm/components/MultiSelect/index.js.map +1 -0
  108. package/dist/esm/components/Navbar/divider.js +24 -0
  109. package/dist/esm/components/Navbar/divider.js.map +1 -0
  110. package/dist/esm/components/Navbar/group.js +27 -0
  111. package/dist/esm/components/Navbar/group.js.map +1 -0
  112. package/dist/esm/components/Navbar/index.js +39 -0
  113. package/dist/esm/components/Navbar/index.js.map +1 -0
  114. package/dist/esm/components/Navbar/item.js +51 -0
  115. package/dist/esm/components/Navbar/item.js.map +1 -0
  116. package/dist/esm/components/Notifications/index.js +28 -0
  117. package/dist/esm/components/Notifications/index.js.map +1 -0
  118. package/dist/esm/components/Notifications/notification.js +225 -0
  119. package/dist/esm/components/Notifications/notification.js.map +1 -0
  120. package/dist/esm/components/Paging/index.js +116 -0
  121. package/dist/esm/components/Paging/index.js.map +1 -0
  122. package/dist/esm/components/Panel/LabelEditor.js +33 -0
  123. package/dist/esm/components/Panel/LabelEditor.js.map +1 -0
  124. package/dist/esm/components/Panel/NonResponsiveActions.js +18 -0
  125. package/dist/esm/components/Panel/NonResponsiveActions.js.map +1 -0
  126. package/dist/esm/components/Panel/index.js +564 -0
  127. package/dist/esm/components/Panel/index.js.map +1 -0
  128. package/dist/esm/components/Panel/panel.screenshot.js +15 -0
  129. package/dist/esm/components/Panel/panel.screenshot.js.map +1 -0
  130. package/dist/esm/components/Paragraph/index.js +19 -0
  131. package/dist/esm/components/Paragraph/index.js.map +1 -0
  132. package/dist/esm/components/Popover/index.js +267 -0
  133. package/dist/esm/components/Popover/index.js.map +1 -0
  134. package/dist/esm/components/Progress/index.js +188 -0
  135. package/dist/esm/components/Progress/index.js.map +1 -0
  136. package/dist/esm/components/RadioGroup/index.js +9 -0
  137. package/dist/esm/components/RadioGroup/index.js.map +1 -0
  138. package/dist/esm/components/Rating/index.js +165 -0
  139. package/dist/esm/components/Rating/index.js.map +1 -0
  140. package/dist/esm/components/RichTextEditor/index.js +299 -0
  141. package/dist/esm/components/RichTextEditor/index.js.map +1 -0
  142. package/dist/esm/components/SegmentedControl/index.js +291 -0
  143. package/dist/esm/components/SegmentedControl/index.js.map +1 -0
  144. package/dist/esm/components/SeverityRow/index.js +106 -0
  145. package/dist/esm/components/SeverityRow/index.js.map +1 -0
  146. package/dist/esm/components/Skeleton/index.js +28 -0
  147. package/dist/esm/components/Skeleton/index.js.map +1 -0
  148. package/dist/esm/components/Slider/index.js +176 -0
  149. package/dist/esm/components/Slider/index.js.map +1 -0
  150. package/dist/esm/components/Spacer/index.js +96 -0
  151. package/dist/esm/components/Spacer/index.js.map +1 -0
  152. package/dist/esm/components/Span/index.js +18 -0
  153. package/dist/esm/components/Span/index.js.map +1 -0
  154. package/dist/esm/components/Spinner/index.js +14 -0
  155. package/dist/esm/components/Spinner/index.js.map +1 -0
  156. package/dist/esm/components/Statistic/index.js +166 -0
  157. package/dist/esm/components/Statistic/index.js.map +1 -0
  158. package/dist/esm/components/Table/body.js +72 -0
  159. package/dist/esm/components/Table/body.js.map +1 -0
  160. package/dist/esm/components/Table/cell.js +214 -0
  161. package/dist/esm/components/Table/cell.js.map +1 -0
  162. package/dist/esm/components/Table/header.js +158 -0
  163. package/dist/esm/components/Table/header.js.map +1 -0
  164. package/dist/esm/components/Table/headerCell.js +233 -0
  165. package/dist/esm/components/Table/headerCell.js.map +1 -0
  166. package/dist/esm/components/Table/helpers.js +285 -0
  167. package/dist/esm/components/Table/helpers.js.map +1 -0
  168. package/dist/esm/components/Table/index.js +472 -0
  169. package/dist/esm/components/Table/index.js.map +1 -0
  170. package/dist/esm/components/Table/row.js +176 -0
  171. package/dist/esm/components/Table/row.js.map +1 -0
  172. package/dist/esm/components/Table/value.js +19 -0
  173. package/dist/esm/components/Table/value.js.map +1 -0
  174. package/dist/esm/components/Tabs/content.js +23 -0
  175. package/dist/esm/components/Tabs/content.js.map +1 -0
  176. package/dist/esm/components/Tabs/index.js +44 -0
  177. package/dist/esm/components/Tabs/index.js.map +1 -0
  178. package/dist/esm/components/Tabs/item.js +122 -0
  179. package/dist/esm/components/Tabs/item.js.map +1 -0
  180. package/dist/esm/components/Tabs/list.js +208 -0
  181. package/dist/esm/components/Tabs/list.js.map +1 -0
  182. package/dist/esm/components/Tag/group.js +38 -0
  183. package/dist/esm/components/Tag/group.js.map +1 -0
  184. package/dist/esm/components/Tag/index.js +267 -0
  185. package/dist/esm/components/Tag/index.js.map +1 -0
  186. package/dist/esm/components/Testimonial/index.js +108 -0
  187. package/dist/esm/components/Testimonial/index.js.map +1 -0
  188. package/dist/esm/components/Textarea/index.js +135 -0
  189. package/dist/esm/components/Textarea/index.js.map +1 -0
  190. package/dist/esm/components/Tier/index.js +48 -0
  191. package/dist/esm/components/Tier/index.js.map +1 -0
  192. package/dist/esm/components/TimeAgo/index.js +19 -0
  193. package/dist/esm/components/TimeAgo/index.js.map +1 -0
  194. package/dist/esm/components/Timeline/index.js +271 -0
  195. package/dist/esm/components/Timeline/index.js.map +1 -0
  196. package/dist/esm/components/TooltipComponent/index.js +11 -0
  197. package/dist/esm/components/TooltipComponent/index.js.map +1 -0
  198. package/dist/esm/components/Tree/index.js +266 -0
  199. package/dist/esm/components/Tree/index.js.map +1 -0
  200. package/dist/esm/components/Tree/modal.js +30 -0
  201. package/dist/esm/components/Tree/modal.js.map +1 -0
  202. package/dist/esm/constants/animations.js +9 -0
  203. package/dist/esm/constants/animations.js.map +1 -0
  204. package/dist/esm/constants/colors.js +13 -0
  205. package/dist/esm/constants/colors.js.map +1 -0
  206. package/dist/esm/constants/paging.js +48 -0
  207. package/dist/esm/constants/paging.js.map +1 -0
  208. package/dist/esm/constants/sizes.js +363 -0
  209. package/dist/esm/constants/sizes.js.map +1 -0
  210. package/dist/esm/constants/theme.js +40 -0
  211. package/dist/esm/constants/theme.js.map +1 -0
  212. package/dist/esm/containers/Paging.js +29 -0
  213. package/dist/esm/containers/Paging.js.map +1 -0
  214. package/dist/esm/containers/ReqoreProvider.js +239 -0
  215. package/dist/esm/containers/ReqoreProvider.js.map +1 -0
  216. package/dist/esm/containers/ThemeProvider.js +11 -0
  217. package/dist/esm/containers/ThemeProvider.js.map +1 -0
  218. package/dist/esm/containers/UIProvider.js +53 -0
  219. package/dist/esm/containers/UIProvider.js.map +1 -0
  220. package/dist/esm/context/CustomThemeContext.js +4 -0
  221. package/dist/esm/context/CustomThemeContext.js.map +1 -0
  222. package/dist/esm/context/ReqoreContext.js +22 -0
  223. package/dist/esm/context/ReqoreContext.js.map +1 -0
  224. package/dist/esm/context/ThemeContext.js +4 -0
  225. package/dist/esm/context/ThemeContext.js.map +1 -0
  226. package/dist/esm/helpers/animations.js +13 -0
  227. package/dist/esm/helpers/animations.js.map +1 -0
  228. package/dist/esm/helpers/colors.js +240 -0
  229. package/dist/esm/helpers/colors.js.map +1 -0
  230. package/dist/esm/helpers/dates.js +52 -0
  231. package/dist/esm/helpers/dates.js.map +1 -0
  232. package/dist/esm/helpers/time.js +21 -0
  233. package/dist/esm/helpers/time.js.map +1 -0
  234. package/dist/esm/helpers/utils.js +174 -0
  235. package/dist/esm/helpers/utils.js.map +1 -0
  236. package/dist/esm/hooks/useAutoFocus.js +76 -0
  237. package/dist/esm/hooks/useAutoFocus.js.map +1 -0
  238. package/dist/esm/hooks/useCloneThroughFragments.js +26 -0
  239. package/dist/esm/hooks/useCloneThroughFragments.js.map +1 -0
  240. package/dist/esm/hooks/useCombinedRefs.js +25 -0
  241. package/dist/esm/hooks/useCombinedRefs.js.map +1 -0
  242. package/dist/esm/hooks/useComponentTooltip.js +28 -0
  243. package/dist/esm/hooks/useComponentTooltip.js.map +1 -0
  244. package/dist/esm/hooks/useFocusTrap.js +115 -0
  245. package/dist/esm/hooks/useFocusTrap.js.map +1 -0
  246. package/dist/esm/hooks/useLatestZIndex.js +10 -0
  247. package/dist/esm/hooks/useLatestZIndex.js.map +1 -0
  248. package/dist/esm/hooks/useOutsideClick.js +17 -0
  249. package/dist/esm/hooks/useOutsideClick.js.map +1 -0
  250. package/dist/esm/hooks/usePaging.js +92 -0
  251. package/dist/esm/hooks/usePaging.js.map +1 -0
  252. package/dist/esm/hooks/useQueryWithDelay.js +19 -0
  253. package/dist/esm/hooks/useQueryWithDelay.js.map +1 -0
  254. package/dist/esm/hooks/useReqore.js +10 -0
  255. package/dist/esm/hooks/useReqore.js.map +1 -0
  256. package/dist/esm/hooks/useReqoreContext.js +12 -0
  257. package/dist/esm/hooks/useReqoreContext.js.map +1 -0
  258. package/dist/esm/hooks/useReqoreEffect.js +21 -0
  259. package/dist/esm/hooks/useReqoreEffect.js.map +1 -0
  260. package/dist/esm/hooks/useTextareaAutoSize.js +16 -0
  261. package/dist/esm/hooks/useTextareaAutoSize.js.map +1 -0
  262. package/dist/esm/hooks/useTheme.js +39 -0
  263. package/dist/esm/hooks/useTheme.js.map +1 -0
  264. package/dist/esm/hooks/useWhyDidYouUpdate.js +32 -0
  265. package/dist/esm/hooks/useWhyDidYouUpdate.js.map +1 -0
  266. package/dist/esm/index.js +92 -0
  267. package/dist/esm/index.js.map +1 -0
  268. package/dist/esm/styles.js +122 -0
  269. package/dist/esm/styles.js.map +1 -0
  270. package/dist/esm/types/global.js +2 -0
  271. package/dist/esm/types/global.js.map +1 -0
  272. package/dist/esm/types/icons.js +2 -0
  273. package/dist/esm/types/icons.js.map +1 -0
  274. package/dist/index.d.ts +1 -0
  275. package/dist/index.d.ts.map +1 -1
  276. package/dist/index.js +5 -3
  277. package/dist/index.js.map +1 -1
  278. package/package.json +6 -2
  279. package/tests.json +1 -1
  280. package/tsconfig.esm.json +11 -0
@@ -0,0 +1,165 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { rgba } from 'polished';
3
+ import { forwardRef, memo, useCallback, useMemo, useState } from 'react';
4
+ import styled, { css } from 'styled-components';
5
+ import { RADIUS_FROM_SIZE, RATING_GAP_FROM_SIZE } from '../../constants/sizes';
6
+ import { changeLightness, getColorFromMaybeString, getReadableColor } from '../../helpers/colors';
7
+ import { getOneLessSize } from '../../helpers/utils';
8
+ import { useComponentTooltip } from '../../hooks/useComponentTooltip';
9
+ import { useReqoreTheme } from '../../hooks/useTheme';
10
+ import { DisabledElement, ReadOnlyElement } from '../../styles';
11
+ import ReqoreControlGroup from '../ControlGroup';
12
+ import ReqoreIcon from '../Icon';
13
+ import { ReqoreP } from '../Paragraph';
14
+ import { ReqoreSpan } from '../Span';
15
+ const StyledRating = styled.div `
16
+ display: inline-flex;
17
+ align-items: center;
18
+ gap: ${({ size }) => RATING_GAP_FROM_SIZE[size]}px;
19
+
20
+ ${({ disabled }) => disabled &&
21
+ css `
22
+ ${DisabledElement};
23
+ `}
24
+
25
+ ${({ readOnly }) => readOnly &&
26
+ css `
27
+ ${ReadOnlyElement};
28
+ `}
29
+
30
+ &:focus-visible {
31
+ outline: 2px solid ${({ theme }) => changeLightness(theme.main, 0.25)};
32
+ outline-offset: 2px;
33
+ border-radius: ${({ size }) => RADIUS_FROM_SIZE[size]}px;
34
+ }
35
+ `;
36
+ const StyledRatingItem = styled.span `
37
+ display: inline-flex;
38
+ cursor: ${({ isInteractive }) => (isInteractive ? 'pointer' : 'default')};
39
+ transition: transform 0.15s ease-out;
40
+
41
+ ${({ isInteractive }) => isInteractive &&
42
+ css `
43
+ &:hover {
44
+ transform: scale(1.2);
45
+ }
46
+
47
+ &:active {
48
+ transform: scale(0.85);
49
+ transition: transform 0.05s ease-out;
50
+ }
51
+ `}
52
+ `;
53
+ const ReqoreRating = memo(forwardRef(({ value = 0, label, onChange, max = 5, allowHalf = false, allowClear = true, filledIcon = 'StarFill', emptyIcon = 'StarLine', halfIcon = 'StarHalfFill', filledColor, emptyColor, size = 'normal', disabled, readOnly, intent, customTheme, inheritCustomTheme, tooltip, className, labelProps, showRatingValue, iconProps, ...rest }, ref) => {
54
+ const theme = useReqoreTheme('main', customTheme, intent, undefined, inheritCustomTheme);
55
+ const [hoverValue, setHoverValue] = useState(null);
56
+ const isInteractive = !disabled && !readOnly && !!onChange;
57
+ const displayValue = useMemo(() => (hoverValue !== null ? hoverValue : value), [hoverValue, value]);
58
+ const resolvedFilledColor = useMemo(() => {
59
+ if (filledColor)
60
+ return getColorFromMaybeString(theme, filledColor);
61
+ const hasIntent = theme.main !== theme.originalMain;
62
+ return hasIntent ? theme.main : getReadableColor(theme, undefined, undefined, true);
63
+ }, [filledColor, theme]);
64
+ const resolvedEmptyColor = useMemo(() => {
65
+ if (emptyColor)
66
+ return getColorFromMaybeString(theme, emptyColor);
67
+ return rgba(changeLightness(theme.main, 0.15), 0.4);
68
+ }, [emptyColor, theme]);
69
+ const handleMouseMove = useCallback((index, event) => {
70
+ if (!isInteractive)
71
+ return;
72
+ if (allowHalf) {
73
+ const rect = event.currentTarget.getBoundingClientRect();
74
+ const isLeftHalf = event.clientX - rect.left < rect.width / 2;
75
+ setHoverValue(isLeftHalf ? index + 0.5 : index + 1);
76
+ }
77
+ else {
78
+ setHoverValue(index + 1);
79
+ }
80
+ }, [isInteractive, allowHalf]);
81
+ const handleMouseLeave = useCallback(() => {
82
+ if (!isInteractive)
83
+ return;
84
+ setHoverValue(null);
85
+ }, [isInteractive]);
86
+ const handleClick = useCallback((index, event) => {
87
+ if (!isInteractive || !onChange)
88
+ return;
89
+ let clickedValue;
90
+ if (allowHalf) {
91
+ const rect = event.currentTarget.getBoundingClientRect();
92
+ const isLeftHalf = event.clientX - rect.left < rect.width / 2;
93
+ clickedValue = isLeftHalf ? index + 0.5 : index + 1;
94
+ }
95
+ else {
96
+ clickedValue = index + 1;
97
+ }
98
+ if (allowClear && clickedValue === value) {
99
+ onChange(0);
100
+ }
101
+ else {
102
+ onChange(clickedValue);
103
+ }
104
+ }, [isInteractive, onChange, allowHalf, allowClear, value]);
105
+ const handleKeyDown = useCallback((event) => {
106
+ if (!isInteractive || !onChange)
107
+ return;
108
+ const step = allowHalf ? 0.5 : 1;
109
+ switch (event.key) {
110
+ case 'ArrowRight':
111
+ case 'ArrowUp':
112
+ event.preventDefault();
113
+ onChange(Math.min(value + step, max));
114
+ break;
115
+ case 'ArrowLeft':
116
+ case 'ArrowDown':
117
+ event.preventDefault();
118
+ onChange(Math.max(value - step, 0));
119
+ break;
120
+ case 'Home':
121
+ event.preventDefault();
122
+ onChange(0);
123
+ break;
124
+ case 'End':
125
+ event.preventDefault();
126
+ onChange(max);
127
+ break;
128
+ }
129
+ }, [isInteractive, onChange, value, max, allowHalf]);
130
+ const getIconForIndex = useCallback((index) => {
131
+ const starValue = index + 1;
132
+ if (displayValue >= starValue) {
133
+ return { icon: filledIcon, color: resolvedFilledColor };
134
+ }
135
+ if (allowHalf && displayValue >= starValue - 0.5) {
136
+ return { icon: halfIcon, color: resolvedFilledColor };
137
+ }
138
+ return { icon: emptyIcon, color: resolvedEmptyColor };
139
+ }, [
140
+ displayValue,
141
+ filledIcon,
142
+ emptyIcon,
143
+ halfIcon,
144
+ resolvedFilledColor,
145
+ resolvedEmptyColor,
146
+ allowHalf,
147
+ ]);
148
+ const stars = useMemo(() => Array.from({ length: max }, (_, i) => i), [max]);
149
+ const { Component, props: componentProps } = useComponentTooltip({
150
+ ...rest,
151
+ theme,
152
+ size,
153
+ tooltip,
154
+ disabled,
155
+ readOnly,
156
+ isInteractive,
157
+ className: `${className || ''} reqore-rating`,
158
+ }, StyledRating, ref);
159
+ return (_jsxs(ReqoreControlGroup, { vertical: true, children: [label && _jsx(ReqoreP, { size: size, ...labelProps, children: label }), _jsxs(Component, { ...componentProps, onMouseLeave: handleMouseLeave, onKeyDown: handleKeyDown, tabIndex: isInteractive ? 0 : undefined, role: 'slider', "aria-valuenow": value, "aria-valuemin": 0, "aria-valuemax": max, "aria-disabled": disabled || undefined, "aria-readonly": readOnly || undefined, "aria-label": label || rest['aria-label'] || 'Rating', children: [stars.map((index) => {
160
+ const { icon, color } = getIconForIndex(index);
161
+ return (_jsx(StyledRatingItem, { className: 'reqore-rating-item', onMouseMove: (e) => handleMouseMove(index, e), onClick: (e) => handleClick(index, e), isInteractive: isInteractive, size: size, children: _jsx(ReqoreIcon, { ...iconProps, icon: icon, size: size, color: color }) }, index));
162
+ }), showRatingValue && (_jsx(ReqoreSpan, { intent: 'muted', size: getOneLessSize(size), children: `${displayValue} / ${max}` }))] })] }));
163
+ }));
164
+ export default ReqoreRating;
165
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/Rating/index.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,299 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { map, size } from 'lodash';
3
+ import { forwardRef, memo, useCallback, useImperativeHandle, useMemo, useState } from 'react';
4
+ import { useUpdateEffect } from 'react-use';
5
+ import { createEditor, Editor, Transforms } from 'slate';
6
+ import { withHistory } from 'slate-history';
7
+ import { Editable, ReactEditor, Slate, useSelected, withReact } from 'slate-react';
8
+ import { ReqoreButton, ReqoreControlGroup, ReqorePanel, ReqoreTextarea } from '../..';
9
+ import { getOneLessSize } from '../../helpers/utils';
10
+ import { ReqoreP } from '../Paragraph';
11
+ import { ReqoreSpan } from '../Span';
12
+ import ReqoreTag from '../Tag';
13
+ export const TemplateElement = memo((props) => {
14
+ const selected = useSelected();
15
+ const handleClick = useCallback((e) => {
16
+ e.preventDefault();
17
+ e.stopPropagation();
18
+ }, []);
19
+ return (_jsxs(_Fragment, { children: [_jsx(ReqoreTag, { ...props.attributes, compact: true, flat: false, asBadge: true, fixed: 'key', onClick: handleClick, tooltip: props.element.value?.toString(), label: props.element.label, ...props.tagProps, contentEditable: false, intent: selected ? 'info' : props.tagProps?.intent }), props.children] }));
20
+ });
21
+ export const withTemplates = (editor) => {
22
+ const { isInline, isVoid, markableVoid } = editor;
23
+ editor.isInline = (element) => {
24
+ return element.type === 'tag' ? true : isInline(element);
25
+ };
26
+ editor.isVoid = (element) => {
27
+ return element.type === 'tag' ? true : isVoid(element);
28
+ };
29
+ editor.markableVoid = (element) => {
30
+ return element.type === 'tag' || markableVoid(element);
31
+ };
32
+ return editor;
33
+ };
34
+ const Leaf = ({ attributes, children, leaf }) => {
35
+ if (leaf.bold) {
36
+ children = _jsx("strong", { children: children });
37
+ }
38
+ if (leaf.code) {
39
+ children = _jsx("code", { children: children });
40
+ }
41
+ if (leaf.italic) {
42
+ children = _jsx("em", { children: children });
43
+ }
44
+ if (leaf.underline) {
45
+ children = _jsx("u", { children: children });
46
+ }
47
+ return (_jsx(ReqoreSpan, { inline: true, ...attributes, effect: {
48
+ weight: leaf.bold ? 'bold' : 'normal',
49
+ italic: leaf.italic,
50
+ underline: leaf.underline,
51
+ }, children: children }));
52
+ };
53
+ export const DefaultElement = (props) => (_jsxs(ReqoreP, { ...props.attributes, style: { position: 'relative' }, children: [props.placeholder && (_jsx(ReqoreSpan, { inline: true, effect: { opacity: 0.3 }, ...props.placeholderProps, contentEditable: false, style: {
54
+ position: 'absolute',
55
+ top: 0,
56
+ left: 0,
57
+ right: 0,
58
+ pointerEvents: 'none',
59
+ userSelect: 'none',
60
+ ...props.placeholderProps?.style,
61
+ }, children: props.placeholder })), props.children] }));
62
+ const insertTag = (editor, value, label, metadata) => {
63
+ const mention = {
64
+ type: 'tag',
65
+ value,
66
+ label,
67
+ metadata,
68
+ children: [{ text: '' }],
69
+ };
70
+ Transforms.insertNodes(editor, mention);
71
+ Transforms.move(editor);
72
+ };
73
+ export const ReqoreRichTextEditor = forwardRef(({ value = [
74
+ {
75
+ type: 'paragraph',
76
+ children: [{ text: '' }],
77
+ },
78
+ ], onChange, tags, getTagProps = () => ({}), tagsProps = {}, onTagClick, tagsListProps = {}, panelProps, actions, customRenderLeaf, placeholder, placeholderProps, ...rest }, ref) => {
79
+ // Create a Slate editor object that won't change across renders.
80
+ const [editor] = useState(() => withTemplates(withReact(withHistory(createEditor()))));
81
+ useImperativeHandle(ref, () => editor, [editor]);
82
+ const [target, setTarget] = useState();
83
+ useUpdateEffect(() => {
84
+ // Only update the editor's children if the value has changed
85
+ if (JSON.stringify(value) === JSON.stringify(editor.children)) {
86
+ return;
87
+ }
88
+ // Use Slate transforms instead of direct mutation
89
+ try {
90
+ Editor.withoutNormalizing(editor, () => {
91
+ // Deselect before replacing content
92
+ Transforms.deselect(editor);
93
+ // Remove all existing top-level nodes
94
+ while (editor.children.length) {
95
+ Transforms.removeNodes(editor, { at: [0] });
96
+ }
97
+ // Insert new content
98
+ Transforms.insertNodes(editor, value, { at: [0] });
99
+ // Move selection to end
100
+ Transforms.select(editor, Editor.end(editor, []));
101
+ });
102
+ }
103
+ catch (error) {
104
+ // Fallback to direct mutation if transforms fail
105
+ editor.selection = null;
106
+ editor.children = value;
107
+ }
108
+ }, [JSON.stringify(value)]);
109
+ const isEmpty = useMemo(() => {
110
+ return size(value) === 1 && size(value[0].children) === 1 && value[0].children[0].text === '';
111
+ }, [value]);
112
+ const renderElement = useCallback((props) => {
113
+ switch (props.element.type) {
114
+ case 'tag': {
115
+ const tagProps = getTagProps(props.element);
116
+ const finalProps = {
117
+ ...tagsProps,
118
+ ...tagProps,
119
+ };
120
+ return (_jsx(TemplateElement, { ...props, tagProps: {
121
+ ...finalProps,
122
+ size: rest.size ? getOneLessSize(rest.size) : finalProps.size || 'small',
123
+ onClick: !rest.readOnly && !rest.disabled
124
+ ? (event) => {
125
+ onTagClick?.(props.element);
126
+ finalProps.onClick?.(event);
127
+ }
128
+ : undefined,
129
+ onRemoveClick: !rest.readOnly && !rest.disabled
130
+ ? () => {
131
+ try {
132
+ const path = ReactEditor.findPath(editor, props.element);
133
+ Transforms.removeNodes(editor, { at: path });
134
+ }
135
+ catch (error) {
136
+ // Element may no longer be in the editor
137
+ console.warn('Failed to remove tag:', error);
138
+ }
139
+ }
140
+ : undefined,
141
+ } }));
142
+ }
143
+ default:
144
+ return (_jsx(DefaultElement, { ...props, placeholder: isEmpty ? placeholder : undefined, placeholderProps: isEmpty ? placeholderProps : undefined }));
145
+ }
146
+ }, [isEmpty, placeholder, placeholderProps]);
147
+ const renderLeaf = useCallback((props) => customRenderLeaf ? customRenderLeaf(props) : _jsx(Leaf, { ...props }), [customRenderLeaf]);
148
+ const isMarkActive = useCallback((editor, format) => {
149
+ const marks = Editor.marks(editor);
150
+ return marks ? marks[format] === true : false;
151
+ }, []);
152
+ const toggleMark = useCallback((editor, format) => {
153
+ const isActive = isMarkActive(editor, format);
154
+ if (isActive) {
155
+ Editor.removeMark(editor, format);
156
+ }
157
+ else {
158
+ Editor.addMark(editor, format, true);
159
+ }
160
+ }, [isMarkActive]);
161
+ const panelActions = useMemo(() => {
162
+ const _actions = [...(panelProps?.actions || [])];
163
+ if (!actions) {
164
+ return _actions;
165
+ }
166
+ if (actions.styling) {
167
+ _actions.push({
168
+ group: [
169
+ {
170
+ icon: 'Bold',
171
+ compact: true,
172
+ active: isMarkActive(editor, 'bold') ? true : undefined,
173
+ onMouseDown: () => {
174
+ toggleMark(editor, 'bold');
175
+ },
176
+ },
177
+ {
178
+ icon: 'Italic',
179
+ compact: true,
180
+ active: isMarkActive(editor, 'italic') ? true : undefined,
181
+ onMouseDown: () => {
182
+ toggleMark(editor, 'italic');
183
+ },
184
+ },
185
+ {
186
+ icon: 'Underline',
187
+ compact: true,
188
+ active: isMarkActive(editor, 'underline') ? true : undefined,
189
+ onMouseDown: () => {
190
+ toggleMark(editor, 'underline');
191
+ },
192
+ },
193
+ ],
194
+ });
195
+ }
196
+ if (actions.undo || actions.redo) {
197
+ const undoRedoActions = {
198
+ fixed: true,
199
+ group: [],
200
+ };
201
+ if (actions.undo) {
202
+ undoRedoActions.group.push({
203
+ disabled: editor.history.undos.length === 0,
204
+ compact: true,
205
+ fixed: true,
206
+ icon: 'ArrowGoBackLine',
207
+ onClick: () => {
208
+ editor.undo();
209
+ },
210
+ });
211
+ }
212
+ if (actions.redo) {
213
+ undoRedoActions.group.push({
214
+ disabled: editor.history.redos.length === 0,
215
+ compact: true,
216
+ fixed: true,
217
+ icon: 'ArrowGoForwardLine',
218
+ onClick: () => {
219
+ editor.redo();
220
+ },
221
+ });
222
+ }
223
+ _actions.push(undoRedoActions);
224
+ }
225
+ return _actions;
226
+ }, [actions, value, target, Editor.marks(editor), editor]);
227
+ const items = useMemo(() => {
228
+ if (size(tags)) {
229
+ return map(tags, ({ items, ...tag }, key) => ({
230
+ label: tag.label || key,
231
+ ...tag,
232
+ items,
233
+ }));
234
+ }
235
+ return undefined;
236
+ }, [tags]);
237
+ return (_jsx(ReqorePanel, { flat: true, padded: false, minimal: true, transparent: true, size: 'small', ...panelProps, children: _jsx(Slate, { editor: editor, initialValue: value, onChange: (data) => {
238
+ const { selection } = editor;
239
+ setTarget(selection);
240
+ onChange?.(data);
241
+ }, children: _jsx(ReqoreTextarea, { ...rest, renderElement: renderElement, renderLeaf: renderLeaf, as: Editable, style: {
242
+ lineHeight: 1.5,
243
+ outline: 'none',
244
+ }, onClearClick: isEmpty
245
+ ? undefined
246
+ : () => {
247
+ Transforms.delete(editor, {
248
+ at: {
249
+ anchor: Editor.start(editor, []),
250
+ focus: Editor.end(editor, []),
251
+ },
252
+ });
253
+ // Focus the editor
254
+ try {
255
+ ReactEditor.focus(editor);
256
+ }
257
+ catch (error) {
258
+ // Editor may not be mounted
259
+ }
260
+ }, value: JSON.stringify(value || []), onChange: useCallback(() => { }, []), templates: {
261
+ customElements: size(panelActions)
262
+ ? [
263
+ _jsx(ReqoreControlGroup, { spaceBetween: true, size: 'small', fixed: true, children: panelActions.map((action, index) => {
264
+ if (action.group) {
265
+ return (_jsx(ReqoreControlGroup, { stack: true, children: action.group?.map((action, index) => (_jsx(ReqoreButton, { customTheme: tagsListProps?.listCustomTheme, intent: tagsListProps?.listIntent, ...action }, index))) }, index));
266
+ }
267
+ return (_jsx(ReqoreButton, { customTheme: tagsListProps?.listCustomTheme, intent: tagsListProps?.listIntent, ...action }, index));
268
+ }) }, 0),
269
+ ]
270
+ : undefined,
271
+ ...tagsListProps,
272
+ items,
273
+ closeOnInsideClick: false,
274
+ onItemSelect: (item) => {
275
+ if (item.value) {
276
+ try {
277
+ // Use current selection or fallback to end of document
278
+ const selection = editor.selection || {
279
+ anchor: Editor.end(editor, []),
280
+ focus: Editor.end(editor, []),
281
+ };
282
+ Transforms.select(editor, selection);
283
+ insertTag(editor, item.value, item.label, item.metadata);
284
+ ReactEditor.focus(editor);
285
+ }
286
+ catch (error) {
287
+ // Fallback: just insert at current position
288
+ try {
289
+ insertTag(editor, item.value, item.label, item.metadata);
290
+ }
291
+ catch (e) {
292
+ console.warn('Failed to insert tag:', e);
293
+ }
294
+ }
295
+ }
296
+ },
297
+ } }) }) }));
298
+ });
299
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/RichTextEditor/index.tsx"],"names":[],"mappings":"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"}