@qoretechnologies/reqore 0.43.0 → 0.45.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 (243) hide show
  1. package/dist/components/Button/index.d.ts +1 -0
  2. package/dist/components/Button/index.d.ts.map +1 -1
  3. package/dist/components/Button/index.js +6 -2
  4. package/dist/components/Button/index.js.map +1 -1
  5. package/dist/components/DatePicker/index.d.ts +29 -0
  6. package/dist/components/DatePicker/index.d.ts.map +1 -0
  7. package/dist/components/DatePicker/index.js +147 -0
  8. package/dist/components/DatePicker/index.js.map +1 -0
  9. package/dist/components/Effect/index.d.ts +1 -1
  10. package/dist/components/Effect/index.d.ts.map +1 -1
  11. package/dist/components/Effect/index.js.map +1 -1
  12. package/dist/components/Input/index.d.ts +3 -1
  13. package/dist/components/Input/index.d.ts.map +1 -1
  14. package/dist/components/Input/index.js +5 -1
  15. package/dist/components/Input/index.js.map +1 -1
  16. package/dist/components/InternalPopover/index.d.ts +2 -0
  17. package/dist/components/InternalPopover/index.d.ts.map +1 -1
  18. package/dist/components/InternalPopover/index.js +5 -4
  19. package/dist/components/InternalPopover/index.js.map +1 -1
  20. package/dist/index.d.ts +1 -0
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.js +1 -0
  23. package/dist/index.js.map +1 -1
  24. package/package.json +4 -1
  25. package/tests.json +1 -1
  26. package/.eslintrc.js +0 -40
  27. package/.github/ISSUE_TEMPLATE/bug_report.md +0 -38
  28. package/.github/ISSUE_TEMPLATE/feature_request.md +0 -20
  29. package/.github/ISSUE_TEMPLATE/new-component.md +0 -20
  30. package/.github/ISSUE_TEMPLATE/visual-bug-report.md +0 -38
  31. package/.github/workflows/beta_release.yml +0 -100
  32. package/.github/workflows/tests.yml +0 -84
  33. package/.gitpod.yml +0 -11
  34. package/.jest-test-results.json +0 -1
  35. package/.prettierrc +0 -7
  36. package/.vscode/settings.json +0 -0
  37. package/__tests__/breadcrumbs.test.tsx +0 -75
  38. package/__tests__/button.test.tsx +0 -218
  39. package/__tests__/checkbox.test.tsx +0 -45
  40. package/__tests__/collection.test.tsx +0 -243
  41. package/__tests__/containers/paging.test.tsx +0 -138
  42. package/__tests__/control_group.test.tsx +0 -32
  43. package/__tests__/drawer.test.tsx +0 -140
  44. package/__tests__/dropdown.test.tsx +0 -381
  45. package/__tests__/effect.test.tsx +0 -70
  46. package/__tests__/heading.test.tsx +0 -58
  47. package/__tests__/helpers/colors.test.tsx +0 -18
  48. package/__tests__/helpers/table.test.tsx +0 -67
  49. package/__tests__/hooks/useLatestZIndex.test.tsx +0 -10
  50. package/__tests__/hooks/useReqorePaging.test.tsx +0 -271
  51. package/__tests__/hooks/useTheme.test.tsx +0 -31
  52. package/__tests__/icon.test.tsx +0 -53
  53. package/__tests__/input.test.tsx +0 -482
  54. package/__tests__/layout.test.tsx +0 -37
  55. package/__tests__/menu.test.tsx +0 -65
  56. package/__tests__/messages.test.tsx +0 -79
  57. package/__tests__/modal.test.tsx +0 -204
  58. package/__tests__/multiselect.test.tsx +0 -458
  59. package/__tests__/navbar.test.tsx +0 -31
  60. package/__tests__/notifications.test.tsx +0 -178
  61. package/__tests__/pagination.test.tsx +0 -437
  62. package/__tests__/panel.test.tsx +0 -243
  63. package/__tests__/popover.test.tsx +0 -282
  64. package/__tests__/radiogroup.test.tsx +0 -47
  65. package/__tests__/setup.js +0 -8
  66. package/__tests__/stories/Collection.stories.tsx +0 -0
  67. package/__tests__/table.test.tsx +0 -647
  68. package/__tests__/tabs.test.tsx +0 -321
  69. package/__tests__/tag.test.tsx +0 -160
  70. package/__tests__/textarea.test.tsx +0 -467
  71. package/__tests__/timeAgo.test.tsx +0 -27
  72. package/__tests__/tree.test.tsx +0 -58
  73. package/build-storybook.log +0 -491
  74. package/chromatic.config.json +0 -1
  75. package/icons.ts +0 -1
  76. package/migration-storybook.log +0 -56
  77. package/public/logo-dark.png +0 -0
  78. package/public/logo.png +0 -0
  79. package/public/q-symbol-small.png +0 -0
  80. package/public/q-symbol.png +0 -0
  81. package/public/qoreLogo-dark.png +0 -0
  82. package/public/qoreLogo.png +0 -0
  83. package/src/components/Breadcrumbs/index.tsx +0 -254
  84. package/src/components/Breadcrumbs/item.tsx +0 -44
  85. package/src/components/Button/index.tsx +0 -628
  86. package/src/components/Checkbox/index.tsx +0 -388
  87. package/src/components/Collection/index.tsx +0 -426
  88. package/src/components/Collection/item.tsx +0 -267
  89. package/src/components/Columns/column.tsx +0 -27
  90. package/src/components/Columns/index.tsx +0 -41
  91. package/src/components/Comment/index.tsx +0 -141
  92. package/src/components/CommentFeed/index.tsx +0 -34
  93. package/src/components/Content/index.tsx +0 -34
  94. package/src/components/Content/wrapper.tsx +0 -36
  95. package/src/components/ControlGroup/index.tsx +0 -523
  96. package/src/components/Drawer/backdrop.tsx +0 -54
  97. package/src/components/Drawer/index.tsx +0 -365
  98. package/src/components/Dropdown/index.tsx +0 -153
  99. package/src/components/Dropdown/item.tsx +0 -33
  100. package/src/components/Dropdown/list.tsx +0 -222
  101. package/src/components/Effect/index.tsx +0 -463
  102. package/src/components/ExportModal/index.tsx +0 -99
  103. package/src/components/Header/index.tsx +0 -81
  104. package/src/components/Icon/index.tsx +0 -184
  105. package/src/components/Input/index.tsx +0 -282
  106. package/src/components/InputClearButton/index.tsx +0 -59
  107. package/src/components/InternalPopover/index.tsx +0 -303
  108. package/src/components/KeyValueTable/index.tsx +0 -192
  109. package/src/components/Label/index.tsx +0 -10
  110. package/src/components/Layout/content.tsx +0 -31
  111. package/src/components/Layout/index.tsx +0 -55
  112. package/src/components/Menu/divider.tsx +0 -92
  113. package/src/components/Menu/index.tsx +0 -141
  114. package/src/components/Menu/item.tsx +0 -137
  115. package/src/components/Menu/section.tsx +0 -81
  116. package/src/components/Message/index.tsx +0 -220
  117. package/src/components/Modal/index.tsx +0 -26
  118. package/src/components/MultiSelect/index.tsx +0 -288
  119. package/src/components/Navbar/divider.tsx +0 -50
  120. package/src/components/Navbar/group.tsx +0 -53
  121. package/src/components/Navbar/index.tsx +0 -82
  122. package/src/components/Navbar/item.tsx +0 -92
  123. package/src/components/Notifications/index.tsx +0 -57
  124. package/src/components/Notifications/notification.tsx +0 -362
  125. package/src/components/Paging/index.tsx +0 -321
  126. package/src/components/Panel/LabelEditor.tsx +0 -67
  127. package/src/components/Panel/NonResponsiveActions.tsx +0 -79
  128. package/src/components/Panel/__screenshots__/linux/panel-SomePanel.png +0 -0
  129. package/src/components/Panel/index.tsx +0 -912
  130. package/src/components/Panel/panel.screenshot.tsx +0 -29
  131. package/src/components/Paragraph/index.tsx +0 -43
  132. package/src/components/Popover/index.tsx +0 -68
  133. package/src/components/RadioGroup/index.tsx +0 -71
  134. package/src/components/Slider/index.tsx +0 -358
  135. package/src/components/Spacer/index.tsx +0 -142
  136. package/src/components/Spinner/index.tsx +0 -74
  137. package/src/components/Table/body.tsx +0 -109
  138. package/src/components/Table/cell.tsx +0 -136
  139. package/src/components/Table/header.tsx +0 -236
  140. package/src/components/Table/headerCell.tsx +0 -203
  141. package/src/components/Table/helpers.ts +0 -308
  142. package/src/components/Table/index.tsx +0 -797
  143. package/src/components/Table/row.tsx +0 -288
  144. package/src/components/Table/value.tsx +0 -28
  145. package/src/components/Tabs/content.tsx +0 -68
  146. package/src/components/Tabs/index.tsx +0 -124
  147. package/src/components/Tabs/item.tsx +0 -198
  148. package/src/components/Tabs/list.tsx +0 -381
  149. package/src/components/Tag/group.tsx +0 -73
  150. package/src/components/Tag/index.tsx +0 -463
  151. package/src/components/Textarea/index.tsx +0 -277
  152. package/src/components/TimeAgo/index.tsx +0 -15
  153. package/src/components/Tree/index.tsx +0 -271
  154. package/src/constants/animations.ts +0 -9
  155. package/src/constants/colors.ts +0 -13
  156. package/src/constants/paging.ts +0 -93
  157. package/src/constants/sizes.ts +0 -185
  158. package/src/constants/theme.ts +0 -122
  159. package/src/containers/Paging.tsx +0 -136
  160. package/src/containers/PopoverProvider.tsx +0 -124
  161. package/src/containers/ReqoreProvider.tsx +0 -289
  162. package/src/containers/ThemeProvider.tsx +0 -12
  163. package/src/containers/UIProvider.tsx +0 -101
  164. package/src/context/PopoverContext.tsx +0 -11
  165. package/src/context/ReqoreContext.tsx +0 -47
  166. package/src/context/ThemeContext.tsx +0 -4
  167. package/src/helpers/animations.ts +0 -13
  168. package/src/helpers/colors.ts +0 -335
  169. package/src/helpers/time.ts +0 -21
  170. package/src/helpers/utils.ts +0 -152
  171. package/src/hooks/useAutoFocus.ts +0 -106
  172. package/src/hooks/useCloneThroughFragments.ts +0 -39
  173. package/src/hooks/useCombinedRefs.ts +0 -26
  174. package/src/hooks/useLatestZIndex.ts +0 -13
  175. package/src/hooks/useOutsideClick.ts +0 -29
  176. package/src/hooks/usePaging.ts +0 -128
  177. package/src/hooks/usePopover.tsx +0 -220
  178. package/src/hooks/useQueryWithDelay.ts +0 -30
  179. package/src/hooks/useReqore.ts +0 -12
  180. package/src/hooks/useReqoreContext.ts +0 -16
  181. package/src/hooks/useReqoreEffect.ts +0 -49
  182. package/src/hooks/useTextareaAutoSize.ts +0 -22
  183. package/src/hooks/useTheme.ts +0 -48
  184. package/src/hooks/useTooltip.ts +0 -40
  185. package/src/hooks/useWhyDidYouUpdate.ts +0 -32
  186. package/src/icons.json +0 -2295
  187. package/src/index.tsx +0 -79
  188. package/src/mock/breadcrumbs.ts +0 -146
  189. package/src/mock/collectionData.tsx +0 -380
  190. package/src/mock/data.json +0 -11000
  191. package/src/mock/icons.ts +0 -32
  192. package/src/mock/menu.ts +0 -93
  193. package/src/mock/multiSelect.ts +0 -71
  194. package/src/mock/object.json +0 -317
  195. package/src/mock/styleMock.js +0 -1
  196. package/src/mock/tableData.ts +0 -64
  197. package/src/stories/Breadcrumbs/Breadcrumbs.stories.tsx +0 -27
  198. package/src/stories/Button/Button.stories.tsx +0 -405
  199. package/src/stories/Checkbox/Checkbox.stories.tsx +0 -75
  200. package/src/stories/Collection/Collection.stories.tsx +0 -317
  201. package/src/stories/Columns/Columns.stories.tsx +0 -158
  202. package/src/stories/Comment/Comment.stories.tsx +0 -136
  203. package/src/stories/ControlGroup/ControlGroup.stories.tsx +0 -399
  204. package/src/stories/Drawer/Drawer.stories.tsx +0 -294
  205. package/src/stories/Dropdown/Dropdown.stories.tsx +0 -375
  206. package/src/stories/Dropdown/DropdownTests.stories.tsx +0 -111
  207. package/src/stories/ExportModal/ExportModal.stories.tsx +0 -18
  208. package/src/stories/Header/Header.stories.tsx +0 -108
  209. package/src/stories/Icon/Icon.stories.tsx +0 -162
  210. package/src/stories/Input/Input.stories.tsx +0 -220
  211. package/src/stories/KeyValueTable/KeyValueTable.stories.tsx +0 -346
  212. package/src/stories/Label/Label.stories.tsx +0 -33
  213. package/src/stories/Menu/Menu.stories.tsx +0 -367
  214. package/src/stories/Message/Message.stories.tsx +0 -167
  215. package/src/stories/Modal/Manager.stories.tsx +0 -192
  216. package/src/stories/Modal/Modal.stories.tsx +0 -252
  217. package/src/stories/MultiSelect/MultiSelect.stories.tsx +0 -140
  218. package/src/stories/Navbar/Navbar.stories.tsx +0 -119
  219. package/src/stories/Notifications/Interactive.stories.tsx +0 -117
  220. package/src/stories/Notifications/Notification.stories.tsx +0 -216
  221. package/src/stories/Notifications/Notifications.stories.tsx +0 -81
  222. package/src/stories/Paging/Paging.stories.tsx +0 -255
  223. package/src/stories/Panel/Panel.stories.tsx +0 -753
  224. package/src/stories/Paragraph/Paragraph.stories.tsx +0 -108
  225. package/src/stories/Popover/Popover.stories.tsx +0 -510
  226. package/src/stories/RadioGroup/RadioGroup.stories.tsx +0 -212
  227. package/src/stories/Slider/Slider.stories.tsx +0 -173
  228. package/src/stories/Spacer/Spacer.stories.tsx +0 -100
  229. package/src/stories/Spinner/Spinner.stories.tsx +0 -82
  230. package/src/stories/Table/Table.stories.tsx +0 -571
  231. package/src/stories/Tabs/Tabs.stories.tsx +0 -346
  232. package/src/stories/Tag/Tag.stories.tsx +0 -381
  233. package/src/stories/Tag/TagGroup.stories.tsx +0 -307
  234. package/src/stories/TextArea/TextArea.stories.tsx +0 -287
  235. package/src/stories/TextArea/TextAreaTests.stories.tsx +0 -108
  236. package/src/stories/Tree/Tree.stories.tsx +0 -124
  237. package/src/stories/Wrapper.tsx +0 -13
  238. package/src/stories/utils/args.ts +0 -151
  239. package/src/stories/utils.ts +0 -39
  240. package/src/styles.ts +0 -124
  241. package/src/types/global.ts +0 -211
  242. package/src/types/icons.ts +0 -2272
  243. package/tsconfig.prod.json +0 -26
@@ -1,463 +0,0 @@
1
- import _size from 'lodash/size';
2
- import { rgba } from 'polished';
3
- import React, { forwardRef, HTMLAttributes, useState } from 'react';
4
- import styled, { css } from 'styled-components';
5
- import { ReqorePopover, useReqoreTheme } from '../..';
6
- import {
7
- BADGE_SIZE_TO_PX,
8
- CONTROL_TEXT_FROM_SIZE,
9
- PADDING_FROM_SIZE,
10
- RADIUS_FROM_SIZE,
11
- SIZE_TO_PX,
12
- TSizes,
13
- } from '../../constants/sizes';
14
- import { IReqoreTheme, TReqoreIntent } from '../../constants/theme';
15
- import {
16
- changeLightness,
17
- getColorFromMaybeString,
18
- getReadableColor,
19
- getReadableColorFrom,
20
- } from '../../helpers/colors';
21
- import { useCombinedRefs } from '../../hooks/useCombinedRefs';
22
- import { useTooltip } from '../../hooks/useTooltip';
23
- import { ActiveIconScale, InactiveIconScale } from '../../styles';
24
- import {
25
- IReqoreDisabled,
26
- IReqoreIntent,
27
- IWithReqoreCustomTheme,
28
- IWithReqoreEffect,
29
- IWithReqoreFluid,
30
- IWithReqoreMinimal,
31
- IWithReqoreTooltip,
32
- } from '../../types/global';
33
- import { IReqoreIconName } from '../../types/icons';
34
- import {
35
- IReqoreEffect,
36
- StyledEffect,
37
- StyledTextEffect,
38
- TReqoreColor,
39
- TReqoreEffectColor,
40
- TReqoreHexColor,
41
- } from '../Effect';
42
- import ReqoreIcon, { IReqoreIconProps } from '../Icon';
43
-
44
- export interface IReqoreTagAction
45
- extends IWithReqoreTooltip,
46
- IReqoreDisabled,
47
- IReqoreIntent,
48
- HTMLAttributes<HTMLSpanElement> {
49
- icon: IReqoreIconName;
50
- show?: boolean;
51
- onClick?: (event: React.MouseEvent<HTMLDivElement>) => void;
52
- }
53
-
54
- export interface IReqoreCustomTagProps
55
- extends IWithReqoreTooltip,
56
- IReqoreDisabled,
57
- IWithReqoreMinimal,
58
- IWithReqoreFluid,
59
- IWithReqoreEffect,
60
- IWithReqoreCustomTheme {
61
- fixed?: boolean | 'key' | 'label';
62
- align?: 'left' | 'right' | 'center';
63
- size?: TSizes;
64
- label?: string | number;
65
- labelKey?: string | number;
66
- onRemoveClick?: (event: React.MouseEvent<HTMLDivElement>) => void;
67
- icon?: IReqoreIconName;
68
- leftIconProps?: IReqoreIconProps;
69
- rightIcon?: IReqoreIconName;
70
- iconColor?: TReqoreEffectColor;
71
- leftIconColor?: TReqoreEffectColor;
72
- rightIconColor?: TReqoreEffectColor;
73
- rightIconProps?: IReqoreIconProps;
74
- color?: TReqoreEffectColor;
75
- actions?: IReqoreTagAction[];
76
- width?: string;
77
- asBadge?: boolean;
78
- intent?: TReqoreIntent;
79
- wrap?: boolean;
80
- labelEffect?: IReqoreEffect;
81
- labelKeyEffect?: IReqoreEffect;
82
- as?: string | React.ElementType;
83
- }
84
- export interface IReqoreTagProps
85
- extends Omit<React.HTMLAttributes<HTMLSpanElement>, 'children' | 'color'>,
86
- IReqoreCustomTagProps {}
87
-
88
- export interface IReqoreTagStyle extends IReqoreTagProps {
89
- theme: IReqoreTheme;
90
- removable?: boolean;
91
- interactive?: boolean;
92
- color?: TReqoreColor;
93
- }
94
-
95
- export const StyledTag = styled(StyledEffect)<IReqoreTagStyle>`
96
- display: inline-flex;
97
- justify-content: center;
98
- flex-shrink: 0;
99
- align-items: stretch;
100
- font-family: system-ui;
101
- font-weight: 600;
102
- overflow: hidden;
103
- vertical-align: middle;
104
- font-size: ${({ size }) => CONTROL_TEXT_FROM_SIZE[size]}px;
105
-
106
- min-width: ${({ size }) => SIZE_TO_PX[size]}px;
107
- max-width: ${({ fixed }) => (fixed !== true ? '100%' : undefined)};
108
- flex: ${({ fluid, fixed }) => (fixed === true ? '0 0 auto' : fluid ? '1 auto' : '0 0 auto')};
109
- align-self: ${({ fixed, fluid }) =>
110
- fixed === true ? 'flex-start' : fluid ? 'stretch' : undefined};
111
- border-radius: ${({ asBadge, size }) => (asBadge ? 18 : RADIUS_FROM_SIZE[size])}px;
112
- width: ${({ width }) => width || undefined};
113
- transition: all 0.2s ease-out;
114
-
115
- ${({ align }) => {
116
- if (align === 'left') {
117
- return css`
118
- margin-right: auto;
119
- `;
120
- }
121
-
122
- if (align === 'right') {
123
- return css`
124
- margin-left: auto;
125
- `;
126
- }
127
-
128
- if (align === 'center') {
129
- return css`
130
- margin: 0 auto;
131
- `;
132
- }
133
- }}
134
-
135
- ${InactiveIconScale};
136
-
137
- ${({ wrap, hasWidth }) =>
138
- wrap || hasWidth
139
- ? css`
140
- min-height: ${({ size, asBadge }) =>
141
- asBadge ? BADGE_SIZE_TO_PX[size] : SIZE_TO_PX[size]}px;
142
- `
143
- : css`
144
- height: ${({ size, asBadge }) => (asBadge ? BADGE_SIZE_TO_PX[size] : SIZE_TO_PX[size])}px;
145
- `}
146
-
147
- ${({ theme, color, labelKey, minimal }: IReqoreTagStyle) => {
148
- return css`
149
- background-color: ${color || changeLightness(theme.main, 0.1)};
150
- color: ${minimal
151
- ? getReadableColor(theme, undefined, undefined, true)
152
- : color && color !== 'transparent'
153
- ? getReadableColorFrom(color)
154
- : getReadableColorFrom(changeLightness(theme.main, 0.1))};
155
-
156
- ${StyledTagKeyWrapper} {
157
- background-color: ${labelKey ? rgba('#000000', 0.2) : undefined};
158
- }
159
- `;
160
- }}
161
-
162
- ${({ theme, color, interactive, minimal, effect }) =>
163
- interactive
164
- ? css`
165
- cursor: pointer;
166
- &:hover {
167
- .reqore-tag-content,
168
- .reqore-tag-key-content {
169
- ${ActiveIconScale}
170
- }
171
-
172
- ${!effect?.gradient &&
173
- css`
174
- background-color: ${changeLightness(color || theme.main, color ? 0.05 : 0.15)};
175
- color: ${minimal
176
- ? getReadableColor(theme, undefined, undefined, false, theme.originalMain)
177
- : color
178
- ? getReadableColorFrom(color)
179
- : getReadableColor(theme, undefined, undefined)};
180
- `}
181
- }
182
- `
183
- : undefined}
184
-
185
-
186
- ${({ disabled }) =>
187
- disabled &&
188
- css`
189
- opacity: 0.5;
190
- pointer-events: none;
191
- cursor: not-allowed;
192
- `}
193
- `;
194
-
195
- const StyledTagKeyWrapper = styled.span<{ size: TSizes }>`
196
- display: flex;
197
- align-items: center;
198
- justify-content: center;
199
- flex: ${({ hasKey, fixed }) => (hasKey ? (fixed === 'key' ? '0 0 auto' : 1) : undefined)};
200
- flex-shrink: 0;
201
- min-height: 100%;
202
- `;
203
-
204
- const StyledTagContentWrapper = styled.span<{ size: TSizes }>`
205
- display: flex;
206
- align-items: center;
207
- justify-content: center;
208
- flex: ${({ fixed }) => (fixed === 'label' ? '0 0 auto' : 1)};
209
- flex-shrink: 0;
210
- min-height: 100%;
211
- `;
212
-
213
- const StyledTagContent = styled(StyledTextEffect)<{ size: TSizes }>`
214
- padding: 4px ${({ size }) => PADDING_FROM_SIZE[size]}px;
215
- min-height: 100%;
216
- display: flex;
217
- align-items: center;
218
- flex: 1;
219
-
220
- ${({ wrap, hasWidth }) =>
221
- !wrap && !hasWidth
222
- ? css`
223
- overflow: hidden;
224
- text-overflow: ellipsis;
225
- white-space: nowrap;
226
- `
227
- : css`
228
- word-break: break-word;
229
- `}
230
- `;
231
-
232
- const StyledTagContentKey = styled(StyledTagContent)`
233
- flex: 1;
234
-
235
- ${({ wrap, hasWidth }) =>
236
- !wrap && !hasWidth
237
- ? undefined
238
- : css`
239
- word-break: break-word;
240
- `}
241
- `;
242
-
243
- const StyledButtonWrapper = styled.span<IReqoreTagStyle>`
244
- flex-shrink: 0;
245
- font-size: ${({ size }) => CONTROL_TEXT_FROM_SIZE[size]}px;
246
- width: ${({ size }) => SIZE_TO_PX[size]}px;
247
- display: flex;
248
- justify-content: center;
249
- align-items: center;
250
- transition: all 0.2s ease-out;
251
-
252
- ${({ color, effect }) => css`
253
- .reqore-icon {
254
- transform: scale(0.85);
255
- }
256
- &:hover {
257
- cursor: pointer;
258
- background-color: ${color && !effect?.gradient
259
- ? changeLightness(color, 0.09)
260
- : rgba('#000000', 0.2)};
261
-
262
- .reqore-icon {
263
- transform: scale(1);
264
- }
265
- }
266
- `}
267
- `;
268
-
269
- const ReqoreTag = forwardRef<HTMLSpanElement, IReqoreTagProps>(
270
- (
271
- {
272
- tooltip,
273
- label,
274
- labelKey,
275
- icon,
276
- rightIcon,
277
- className,
278
- onClick,
279
- size = 'normal',
280
- onRemoveClick,
281
- actions,
282
- asBadge,
283
- intent,
284
- color,
285
- minimal,
286
- customTheme,
287
- wrap = false,
288
- width,
289
- leftIconColor,
290
- rightIconColor,
291
- iconColor,
292
- labelEffect,
293
- labelKeyEffect,
294
- leftIconProps,
295
- rightIconProps,
296
- ...rest
297
- }: IReqoreTagProps,
298
- ref
299
- ) => {
300
- const { targetRef } = useCombinedRefs(ref);
301
- const theme: IReqoreTheme = useReqoreTheme('main', customTheme);
302
- const [itemRef, setItemRef] = useState<HTMLDivElement>(undefined);
303
-
304
- useTooltip(itemRef, tooltip);
305
-
306
- // If color or intent was specified, set the color
307
- const getCustomColor = (itemIntent?: TReqoreIntent): TReqoreHexColor => {
308
- let customColor: TReqoreHexColor = itemIntent
309
- ? theme.intents[itemIntent]
310
- : getColorFromMaybeString(theme, color);
311
-
312
- if (customColor?.length === 9) {
313
- return customColor;
314
- }
315
-
316
- customColor = minimal ? `${customColor || '#000000'}40` : customColor;
317
-
318
- return customColor;
319
- };
320
-
321
- return (
322
- <StyledTag
323
- {...rest}
324
- theme={theme}
325
- effect={{
326
- ...rest.effect,
327
- gradient: intent ? undefined : rest.effect?.gradient,
328
- interactive: !!onClick && !rest.disabled,
329
- }}
330
- width={width}
331
- labelKey={labelKey}
332
- color={getCustomColor(intent)}
333
- className={`${className || ''} reqore-tag`}
334
- size={size}
335
- ref={(ref) => {
336
- targetRef.current = ref;
337
- setItemRef(ref);
338
- }}
339
- asBadge={asBadge}
340
- minimal={minimal}
341
- removable={!!onRemoveClick}
342
- interactive={!!onClick && !rest.disabled}
343
- wrap={wrap}
344
- hasWidth={!!width}
345
- >
346
- {icon || labelKey ? (
347
- <StyledTagKeyWrapper
348
- size={size}
349
- className='reqore-tag-key-content'
350
- onClick={rest.disabled ? undefined : onClick}
351
- wrap={wrap}
352
- hasWidth={!!width}
353
- hasKey={!!labelKey}
354
- fixed={rest.fixed}
355
- >
356
- {icon && (
357
- <ReqoreIcon
358
- icon={icon}
359
- size={size}
360
- margin={label || labelKey ? 'left' : 'both'}
361
- color={leftIconColor || iconColor}
362
- {...leftIconProps}
363
- />
364
- )}
365
- {labelKey && (
366
- <StyledTagContentKey
367
- wrap={wrap}
368
- hasWidth={!!width}
369
- size={size}
370
- effect={
371
- {
372
- weight: 'thick',
373
- ...labelKeyEffect,
374
- } as IReqoreEffect
375
- }
376
- >
377
- {labelKey}
378
- </StyledTagContentKey>
379
- )}
380
- </StyledTagKeyWrapper>
381
- ) : null}
382
- {label || label === 0 || rightIcon ? (
383
- <StyledTagContentWrapper
384
- size={size}
385
- className='reqore-tag-content'
386
- onClick={rest.disabled ? undefined : onClick}
387
- wrap={wrap}
388
- hasWidth={!!width}
389
- hasKey={!!labelKey}
390
- fixed={rest.fixed}
391
- >
392
- {label || label === 0 ? (
393
- <StyledTagContent
394
- size={size}
395
- wrap={wrap}
396
- hasWidth={!!width}
397
- effect={{
398
- ...labelEffect,
399
- }}
400
- >
401
- {label}
402
- </StyledTagContent>
403
- ) : null}
404
- {rightIcon && (
405
- <ReqoreIcon
406
- icon={rightIcon}
407
- size={size}
408
- margin={label || (icon && !labelKey) ? 'right' : 'both'}
409
- color={rightIconColor || iconColor}
410
- {...rightIconProps}
411
- />
412
- )}
413
- </StyledTagContentWrapper>
414
- ) : null}
415
- {_size(actions)
416
- ? actions
417
- .filter((action) => action.show !== false)
418
- .map(({ intent, onClick, icon, tooltip, ...action }, index) => (
419
- <React.Fragment key={index}>
420
- <ReqorePopover
421
- component={StyledButtonWrapper}
422
- componentProps={{
423
- size,
424
- color: getCustomColor(intent),
425
- className: 'reqore-tag-action',
426
- onClick: onClick,
427
- effect: rest.effect,
428
- ...action,
429
- }}
430
- {...(tooltip
431
- ? typeof tooltip === 'string'
432
- ? { tooltip: tooltip }
433
- : tooltip
434
- : {})}
435
- isReqoreComponent
436
- >
437
- <ReqoreIcon icon={icon} size={size} />
438
- </ReqorePopover>
439
- </React.Fragment>
440
- ))
441
- : null}
442
- {onRemoveClick && !rest.disabled ? (
443
- <ReqorePopover
444
- component={StyledButtonWrapper}
445
- componentProps={{
446
- size,
447
- color: getCustomColor(intent),
448
- className: 'reqore-tag-remove',
449
- onClick: onRemoveClick,
450
- effect: rest.effect,
451
- }}
452
- isReqoreComponent
453
- content='Remove'
454
- >
455
- <ReqoreIcon icon='CloseLine' size={size} />
456
- </ReqorePopover>
457
- ) : null}
458
- </StyledTag>
459
- );
460
- }
461
- );
462
-
463
- export default ReqoreTag;