@cloudtower/eagle 4100.0.17 → 4100.0.18

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 (230) hide show
  1. package/dist/cjs/core/AccordionCard/index.js +1 -1
  2. package/dist/cjs/core/Alert/alert.style.js +2 -2
  3. package/dist/cjs/core/Antd5Tree/Antd5Tree.style.js +1 -1
  4. package/dist/cjs/core/Avatar/index.js +1 -1
  5. package/dist/cjs/core/Banner/banner.style.js +4 -4
  6. package/dist/cjs/core/BasicCTError/BasicCTError.style.js +1 -1
  7. package/dist/cjs/core/BlankState/style.js +1 -1
  8. package/dist/cjs/core/Breadcrumb/index.js +1 -1
  9. package/dist/cjs/core/Button/index.js +1 -1
  10. package/dist/cjs/core/ButtonGroup/index.js +2 -2
  11. package/dist/cjs/core/Card/CardBody.js +1 -1
  12. package/dist/cjs/core/Card/CardTitle.js +1 -1
  13. package/dist/cjs/core/Card/CardWrapper.js +2 -2
  14. package/dist/cjs/core/Cascader/cascader.style.js +11 -11
  15. package/dist/cjs/core/Checkbox/checkbox.style.js +1 -1
  16. package/dist/cjs/core/DetailCard/index.js +1 -1
  17. package/dist/cjs/core/DonutChart/index.js +2 -2
  18. package/dist/cjs/core/DropdownMenu/index.js +1 -1
  19. package/dist/cjs/core/ExpandableList/ExpandIcon.js +1 -1
  20. package/dist/cjs/core/ExpandableList/ExpandableContainer.js +1 -1
  21. package/dist/cjs/core/ExpandableList/ExpandableItem.js +2 -2
  22. package/dist/cjs/core/ExpandableList/RoundOrder.js +1 -1
  23. package/dist/cjs/core/FailedLoad/index.js +1 -1
  24. package/dist/cjs/core/FormItem/index.js +1 -1
  25. package/dist/cjs/core/Icon/index.js +1 -1
  26. package/dist/cjs/core/ImmersiveDialog/styles.js +14 -14
  27. package/dist/cjs/core/Input/index.js +1 -1
  28. package/dist/cjs/core/InputGroup/index.js +1 -1
  29. package/dist/cjs/core/InputInteger/index.js +1 -1
  30. package/dist/cjs/core/InputNumber/index.js +1 -1
  31. package/dist/cjs/core/InputPassword/index.js +1 -1
  32. package/dist/cjs/core/InputTagItem/index.js +1 -1
  33. package/dist/cjs/core/LegacySelect/select.style.js +1 -1
  34. package/dist/cjs/core/Legend/index.js +5 -5
  35. package/dist/cjs/core/LineChart/LineChartActions.js +2 -2
  36. package/dist/cjs/core/LineChart/TooltipFormatter.js +1 -1
  37. package/dist/cjs/core/LineChart/styled.js +9 -9
  38. package/dist/cjs/core/Link/index.js +1 -1
  39. package/dist/cjs/core/Loading/style.js +4 -4
  40. package/dist/cjs/core/LocalUpload/LocalUpload.hooks.js +5 -2
  41. package/dist/cjs/core/LocalUpload/LocalUpload.js +53 -45
  42. package/dist/cjs/core/LocalUpload/LocalUpload.style.js +2 -2
  43. package/dist/cjs/core/LocalUpload/LocalUpload.widget.js +156 -133
  44. package/dist/cjs/core/LogView/LogView.style.js +5 -5
  45. package/dist/cjs/core/MediumDialog/MediumDialog.js +1 -1
  46. package/dist/cjs/core/Metric/styled.js +8 -8
  47. package/dist/cjs/core/Nav/index.js +1 -1
  48. package/dist/cjs/core/Nav/style.js +2 -2
  49. package/dist/cjs/core/Overflow/index.js +2 -2
  50. package/dist/cjs/core/Pagination/index.js +2 -2
  51. package/dist/cjs/core/Progress/components.js +2 -2
  52. package/dist/cjs/core/Progress/index.js +2 -2
  53. package/dist/cjs/core/Progress/progress.style.js +4 -4
  54. package/dist/cjs/core/Progress/progress.widgets.js +2 -2
  55. package/dist/cjs/core/Radio/index.js +3 -3
  56. package/dist/cjs/core/SearchInput/SearchInput.style.js +5 -5
  57. package/dist/cjs/core/SegmentControl/index.js +4 -4
  58. package/dist/cjs/core/Select/select.style.js +4 -4
  59. package/dist/cjs/core/Select/select.widgets.js +3 -3
  60. package/dist/cjs/core/SimplePagination/index.js +2 -2
  61. package/dist/cjs/core/Skeleton/Content.js +1 -1
  62. package/dist/cjs/core/SmallDialog/SmallDialog.style.js +7 -7
  63. package/dist/cjs/core/StatusCapsule/index.js +2 -2
  64. package/dist/cjs/core/StepProgress/index.js +1 -1
  65. package/dist/cjs/core/Steps/style.js +5 -5
  66. package/dist/cjs/core/Styled/index.js +40 -40
  67. package/dist/cjs/core/Switch/index.js +2 -2
  68. package/dist/cjs/core/Tab/Tab.js +1 -1
  69. package/dist/cjs/core/Tab/Tab.style.js +4 -4
  70. package/dist/cjs/core/Table/TableSkeleton.js +1 -1
  71. package/dist/cjs/core/Table/TableWidget.js +1 -1
  72. package/dist/cjs/core/Table/index.js +3 -3
  73. package/dist/cjs/core/TableForm/Columns/FormItem.js +1 -1
  74. package/dist/cjs/core/TableForm/style.js +7 -7
  75. package/dist/cjs/core/Tag/SplitTag.js +1 -1
  76. package/dist/cjs/core/Tag/style.js +5 -5
  77. package/dist/cjs/core/Time/index.js +1 -1
  78. package/dist/cjs/core/TimeZoneSelect/index.js +7 -7
  79. package/dist/cjs/core/Timeline/Timeline.style.js +5 -5
  80. package/dist/cjs/core/Token/index.js +4 -4
  81. package/dist/cjs/core/Token/style.js +1 -1
  82. package/dist/cjs/core/Tooltip/EllipsisTooltipContent.js +1 -1
  83. package/dist/cjs/core/Tooltip/index.js +1 -1
  84. package/dist/cjs/core/Truncate/index.js +1 -1
  85. package/dist/cjs/core/Typo/index.js +58 -58
  86. package/dist/cjs/core/WizardDialog/styles.js +4 -4
  87. package/dist/cjs/coreX/BarChart/index.js +1 -1
  88. package/dist/cjs/coreX/BatchOperation/index.js +2 -2
  89. package/dist/cjs/coreX/ChartWithTooltip/index.js +6 -6
  90. package/dist/cjs/coreX/CheckPointList/checkpointlist.style.js +3 -3
  91. package/dist/cjs/coreX/CircleLoading/index.js +1 -1
  92. package/dist/cjs/coreX/CronCalendar/index.js +4 -4
  93. package/dist/cjs/coreX/CronPlan/index.js +4 -4
  94. package/dist/cjs/coreX/DateRangePicker/DateRangePicker.style.js +12 -12
  95. package/dist/cjs/coreX/DateRangePicker/RelativeTime.js +1 -1
  96. package/dist/cjs/coreX/Dialogs/DeleteDialog/DeleteDialog.js +2 -2
  97. package/dist/cjs/coreX/Dialogs/RejectDialog/RejectDialog.js +6 -6
  98. package/dist/cjs/coreX/GoBackButton/index.js +1 -1
  99. package/dist/cjs/coreX/I18nNameTag/index.js +1 -1
  100. package/dist/cjs/coreX/InfoRowList/InfoRow.js +1 -1
  101. package/dist/cjs/coreX/InfoRowList/InfoRowList.js +4 -4
  102. package/dist/cjs/coreX/KubeConfigModal/KubeConfigModal.style.js +8 -8
  103. package/dist/cjs/coreX/NamesTooltip/index.js +3 -3
  104. package/dist/cjs/coreX/OverflowTooltip/index.js +4 -4
  105. package/dist/cjs/coreX/Sider/index.js +3 -3
  106. package/dist/cjs/coreX/SummaryTable/index.js +5 -5
  107. package/dist/cjs/coreX/SwitchWithText/index.js +1 -1
  108. package/dist/cjs/coreX/TabMenu/index.js +2 -2
  109. package/dist/cjs/coreX/UnderlineTootip/index.js +1 -1
  110. package/dist/cjs/coreX/UnitWithChart/index.js +3 -3
  111. package/dist/cjs/stats1.html +1 -1
  112. package/dist/components.css +3764 -3716
  113. package/dist/esm/core/AccordionCard/index.js +1 -1
  114. package/dist/esm/core/Alert/alert.style.js +2 -2
  115. package/dist/esm/core/Antd5Tree/Antd5Tree.style.js +1 -1
  116. package/dist/esm/core/Avatar/index.js +1 -1
  117. package/dist/esm/core/Banner/banner.style.js +4 -4
  118. package/dist/esm/core/BasicCTError/BasicCTError.style.js +1 -1
  119. package/dist/esm/core/BlankState/style.js +1 -1
  120. package/dist/esm/core/Breadcrumb/index.js +1 -1
  121. package/dist/esm/core/Button/index.js +1 -1
  122. package/dist/esm/core/ButtonGroup/index.js +2 -2
  123. package/dist/esm/core/Card/CardBody.js +1 -1
  124. package/dist/esm/core/Card/CardTitle.js +1 -1
  125. package/dist/esm/core/Card/CardWrapper.js +2 -2
  126. package/dist/esm/core/Cascader/cascader.style.js +11 -11
  127. package/dist/esm/core/Checkbox/checkbox.style.js +1 -1
  128. package/dist/esm/core/DetailCard/index.js +1 -1
  129. package/dist/esm/core/DonutChart/index.js +2 -2
  130. package/dist/esm/core/DropdownMenu/index.js +1 -1
  131. package/dist/esm/core/ExpandableList/ExpandIcon.js +1 -1
  132. package/dist/esm/core/ExpandableList/ExpandableContainer.js +1 -1
  133. package/dist/esm/core/ExpandableList/ExpandableItem.js +2 -2
  134. package/dist/esm/core/ExpandableList/RoundOrder.js +1 -1
  135. package/dist/esm/core/FailedLoad/index.js +1 -1
  136. package/dist/esm/core/FormItem/index.js +1 -1
  137. package/dist/esm/core/Icon/index.js +1 -1
  138. package/dist/esm/core/ImmersiveDialog/styles.js +14 -14
  139. package/dist/esm/core/Input/index.js +1 -1
  140. package/dist/esm/core/InputGroup/index.js +1 -1
  141. package/dist/esm/core/InputInteger/index.js +1 -1
  142. package/dist/esm/core/InputNumber/index.js +1 -1
  143. package/dist/esm/core/InputPassword/index.js +1 -1
  144. package/dist/esm/core/InputTagItem/index.js +1 -1
  145. package/dist/esm/core/LegacySelect/select.style.js +1 -1
  146. package/dist/esm/core/Legend/index.js +5 -5
  147. package/dist/esm/core/LineChart/LineChartActions.js +2 -2
  148. package/dist/esm/core/LineChart/TooltipFormatter.js +1 -1
  149. package/dist/esm/core/LineChart/styled.js +9 -9
  150. package/dist/esm/core/Link/index.js +1 -1
  151. package/dist/esm/core/Loading/style.js +4 -4
  152. package/dist/esm/core/LocalUpload/LocalUpload.hooks.js +6 -3
  153. package/dist/esm/core/LocalUpload/LocalUpload.js +52 -45
  154. package/dist/esm/core/LocalUpload/LocalUpload.style.js +2 -2
  155. package/dist/esm/core/LocalUpload/LocalUpload.widget.js +154 -131
  156. package/dist/esm/core/LogView/LogView.style.js +5 -5
  157. package/dist/esm/core/MediumDialog/MediumDialog.js +1 -1
  158. package/dist/esm/core/Metric/styled.js +8 -8
  159. package/dist/esm/core/Nav/index.js +1 -1
  160. package/dist/esm/core/Nav/style.js +2 -2
  161. package/dist/esm/core/Overflow/index.js +2 -2
  162. package/dist/esm/core/Pagination/index.js +2 -2
  163. package/dist/esm/core/Progress/components.js +2 -2
  164. package/dist/esm/core/Progress/index.js +2 -2
  165. package/dist/esm/core/Progress/progress.style.js +4 -4
  166. package/dist/esm/core/Progress/progress.widgets.js +2 -2
  167. package/dist/esm/core/Radio/index.js +3 -3
  168. package/dist/esm/core/SearchInput/SearchInput.style.js +5 -5
  169. package/dist/esm/core/SegmentControl/index.js +4 -4
  170. package/dist/esm/core/Select/select.style.js +4 -4
  171. package/dist/esm/core/Select/select.widgets.js +3 -3
  172. package/dist/esm/core/SimplePagination/index.js +2 -2
  173. package/dist/esm/core/Skeleton/Content.js +1 -1
  174. package/dist/esm/core/SmallDialog/SmallDialog.style.js +7 -7
  175. package/dist/esm/core/StatusCapsule/index.js +2 -2
  176. package/dist/esm/core/StepProgress/index.js +1 -1
  177. package/dist/esm/core/Steps/style.js +5 -5
  178. package/dist/esm/core/Styled/index.js +40 -40
  179. package/dist/esm/core/Switch/index.js +2 -2
  180. package/dist/esm/core/Tab/Tab.js +1 -1
  181. package/dist/esm/core/Tab/Tab.style.js +4 -4
  182. package/dist/esm/core/Table/TableSkeleton.js +1 -1
  183. package/dist/esm/core/Table/TableWidget.js +1 -1
  184. package/dist/esm/core/Table/index.js +3 -3
  185. package/dist/esm/core/TableForm/Columns/FormItem.js +1 -1
  186. package/dist/esm/core/TableForm/style.js +7 -7
  187. package/dist/esm/core/Tag/SplitTag.js +1 -1
  188. package/dist/esm/core/Tag/style.js +5 -5
  189. package/dist/esm/core/Time/index.js +1 -1
  190. package/dist/esm/core/TimeZoneSelect/index.js +7 -7
  191. package/dist/esm/core/Timeline/Timeline.style.js +5 -5
  192. package/dist/esm/core/Token/index.js +4 -4
  193. package/dist/esm/core/Token/style.js +1 -1
  194. package/dist/esm/core/Tooltip/EllipsisTooltipContent.js +1 -1
  195. package/dist/esm/core/Tooltip/index.js +1 -1
  196. package/dist/esm/core/Truncate/index.js +1 -1
  197. package/dist/esm/core/Typo/index.js +58 -58
  198. package/dist/esm/core/WizardDialog/styles.js +4 -4
  199. package/dist/esm/coreX/BarChart/index.js +1 -1
  200. package/dist/esm/coreX/BatchOperation/index.js +2 -2
  201. package/dist/esm/coreX/ChartWithTooltip/index.js +6 -6
  202. package/dist/esm/coreX/CheckPointList/checkpointlist.style.js +3 -3
  203. package/dist/esm/coreX/CircleLoading/index.js +1 -1
  204. package/dist/esm/coreX/CronCalendar/index.js +4 -4
  205. package/dist/esm/coreX/CronPlan/index.js +4 -4
  206. package/dist/esm/coreX/DateRangePicker/DateRangePicker.style.js +12 -12
  207. package/dist/esm/coreX/DateRangePicker/RelativeTime.js +1 -1
  208. package/dist/esm/coreX/Dialogs/DeleteDialog/DeleteDialog.js +2 -2
  209. package/dist/esm/coreX/Dialogs/RejectDialog/RejectDialog.js +6 -6
  210. package/dist/esm/coreX/GoBackButton/index.js +1 -1
  211. package/dist/esm/coreX/I18nNameTag/index.js +1 -1
  212. package/dist/esm/coreX/InfoRowList/InfoRow.js +1 -1
  213. package/dist/esm/coreX/InfoRowList/InfoRowList.js +4 -4
  214. package/dist/esm/coreX/KubeConfigModal/KubeConfigModal.style.js +8 -8
  215. package/dist/esm/coreX/NamesTooltip/index.js +3 -3
  216. package/dist/esm/coreX/OverflowTooltip/index.js +4 -4
  217. package/dist/esm/coreX/Sider/index.js +3 -3
  218. package/dist/esm/coreX/SummaryTable/index.js +5 -5
  219. package/dist/esm/coreX/SwitchWithText/index.js +1 -1
  220. package/dist/esm/coreX/TabMenu/index.js +2 -2
  221. package/dist/esm/coreX/UnderlineTootip/index.js +1 -1
  222. package/dist/esm/coreX/UnitWithChart/index.js +3 -3
  223. package/dist/esm/stats1.html +1 -1
  224. package/dist/linaria.merged.scss +3494 -3441
  225. package/dist/src/core/LocalUpload/LocalUpload.type.d.ts +12 -4
  226. package/dist/src/core/LocalUpload/LocalUpload.widget.d.ts +1 -0
  227. package/dist/src/core/LocalUpload/__test__/LocalUpload.test.d.ts +1 -0
  228. package/dist/stories/docs/core/LocalUpload.stories.d.ts +32 -13
  229. package/dist/style.css +3764 -3716
  230. package/package.json +3 -3
@@ -1,4 +1,5 @@
1
1
  import useParrotTranslation from '../../hooks/useParrotTranslation.js';
2
+ import cs from 'classnames';
2
3
  import React__default from 'react';
3
4
  import { UploadWrapper } from './LocalUpload.style.js';
4
5
  import { UploadLabel, UploadDescription, UploadButton, UploadDragger, UploadFileList, UploadFileInfo } from './LocalUpload.widget.js';
@@ -24,6 +25,7 @@ const UploadComp = React__default.forwardRef(
24
25
  className,
25
26
  "data-testid": dataTestId,
26
27
  label,
28
+ labelPosition = "top",
27
29
  description,
28
30
  type = "dragger",
29
31
  multiple = false,
@@ -35,66 +37,71 @@ const UploadComp = React__default.forwardRef(
35
37
  setFileList,
36
38
  validate,
37
39
  buttonProps,
38
- listType = "list",
39
40
  disableRemoveList = false,
40
- onRemove
41
+ onRemove,
42
+ error
41
43
  }, ref) => {
42
44
  const { t } = useParrotTranslation();
43
45
  const removeFile = (id) => {
44
- const index = fileList.findIndex((f) => f.uid === id);
45
- if (index !== -1) {
46
- const file = fileList[index];
47
- fileList.splice(index, 1);
48
- setFileList([...fileList]);
49
- onRemove == null ? void 0 : onRemove(file);
46
+ const nextFileList = fileList.filter((file) => file.uid !== id);
47
+ if (nextFileList.length !== fileList.length) {
48
+ setFileList(nextFileList);
50
49
  }
51
50
  };
52
51
  const _maxCount = multiple ? maxCount || Infinity : 1;
53
52
  const isSingleSelect = _maxCount === 1;
53
+ const shouldShowDescriptionAbove = !!description && !!label && labelPosition === "top";
54
+ const shouldShowDescriptionBelow = !!description && !shouldShowDescriptionAbove;
55
+ const shouldDisableRemove = disabled || disableRemoveList;
56
+ const uploadContent = /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, shouldShowDescriptionAbove ? /* @__PURE__ */ React__default.createElement(UploadComp.Description, null, description) : null, type === "button" ? /* @__PURE__ */ React__default.createElement(
57
+ UploadComp.Button,
58
+ __spreadValues({}, __spreadValues({
59
+ accept,
60
+ multiple,
61
+ disabled,
62
+ maxCount,
63
+ fileList,
64
+ setFileList,
65
+ validate,
66
+ error
67
+ }, buttonProps)),
68
+ t("components.select_file")
69
+ ) : /* @__PURE__ */ React__default.createElement(
70
+ UploadComp.Dragger,
71
+ __spreadValues({}, {
72
+ accept,
73
+ multiple,
74
+ disabled,
75
+ maxCount,
76
+ fileList,
77
+ setFileList,
78
+ validate,
79
+ disableRemove: shouldDisableRemove,
80
+ onRemove,
81
+ error
82
+ })
83
+ ), shouldShowDescriptionBelow ? /* @__PURE__ */ React__default.createElement(UploadComp.Description, { className: "description-below" }, description) : null, info, type === "button" || !isSingleSelect ? /* @__PURE__ */ React__default.createElement(
84
+ UploadComp.FileList,
85
+ {
86
+ fileList,
87
+ removeFile,
88
+ disableRemove: shouldDisableRemove,
89
+ onRemove
90
+ }
91
+ ) : null);
54
92
  return /* @__PURE__ */ React__default.createElement(
55
93
  UploadComp.Wrapper,
56
94
  {
57
- className,
95
+ className: cs(
96
+ className,
97
+ label && labelPosition === "left" ? "label-left" : "label-top",
98
+ !label && "no-label"
99
+ ),
58
100
  ref,
59
101
  "data-testid": dataTestId
60
102
  },
61
103
  label ? /* @__PURE__ */ React__default.createElement(UploadComp.Label, null, label) : null,
62
- description ? /* @__PURE__ */ React__default.createElement(UploadComp.Description, null, description) : null,
63
- type === "button" ? /* @__PURE__ */ React__default.createElement(
64
- UploadComp.Button,
65
- __spreadValues({}, __spreadValues({
66
- accept,
67
- multiple,
68
- disabled,
69
- maxCount,
70
- fileList,
71
- setFileList,
72
- validate
73
- }, buttonProps)),
74
- t("components.select_file")
75
- ) : /* @__PURE__ */ React__default.createElement(
76
- UploadComp.Dragger,
77
- __spreadValues({}, {
78
- accept,
79
- multiple,
80
- disabled,
81
- maxCount,
82
- fileList,
83
- setFileList,
84
- validate
85
- })
86
- ),
87
- info != null ? info : /* @__PURE__ */ React__default.createElement(React__default.Fragment, null),
88
- type === "button" || !isSingleSelect ? /* @__PURE__ */ React__default.createElement(
89
- UploadComp.FileList,
90
- {
91
- fileList,
92
- removeFile,
93
- type: listType,
94
- disableRemove: disableRemoveList,
95
- onRemove
96
- }
97
- ) : null
104
+ labelPosition === "left" && label ? /* @__PURE__ */ React__default.createElement("div", { className: "upload-main" }, uploadContent) : uploadContent
98
105
  );
99
106
  }
100
107
  );
@@ -2,9 +2,9 @@ import { styled } from '@linaria/react';
2
2
 
3
3
  const UploadWrapper = /*#__PURE__*/styled('div')({
4
4
  name: "UploadWrapper",
5
- class: "E_4100_0_17_u3l9ivi",
5
+ class: "E_4100_0_18_u3l9ivi",
6
6
  propsAsIs: false
7
7
  });
8
- const FileInfoWrapperStyle = "E_4100_0_17_ftdwz1g";
8
+ const FileInfoWrapperStyle = "E_4100_0_18_ftdwz1g";
9
9
 
10
10
  export { FileInfoWrapperStyle, UploadWrapper };
@@ -1,8 +1,9 @@
1
- import { Uploading16GradientGrayIcon, Uploading16GradientBlueIcon, Upload24GradientGrayIcon, Upload24GradientBlueIcon, Upload48GradientBlueIcon, XmarkRemove16SecondaryIcon, ExclamationErrorCircleFill16RedIcon, File16GradientBlueIcon, Loading16GradientBlueIcon, XmarkRemove24SecondaryIcon } from '@cloudtower/icons-react';
1
+ import { Uploading16GradientGrayIcon, Uploading16GradientBlueIcon, Upload24GradientBlueIcon, Upload48GradientBlueIcon, ExclamationErrorCircleFill16RedIcon, File16GradientBlueIcon, Loading16GradientBlueIcon, XmarkRemove16SecondaryIcon, XmarkRemove16RegularPrimaryCapsOffIcon } from '@cloudtower/icons-react';
2
2
  import { cx } from '@linaria/core';
3
3
  import Button from '../Button/index.js';
4
4
  import Byte from '../Byte/index.js';
5
5
  import Icon from '../Icon/index.js';
6
+ import { ParrotTrans } from '../ParrotTrans/index.js';
6
7
  import Tooltip from '../Tooltip/index.js';
7
8
  import { Typo } from '../Typo/index.js';
8
9
  import OverflowTooltip from '../../coreX/OverflowTooltip/index.js';
@@ -39,6 +40,75 @@ const STATUS_ICON_MAP = {
39
40
  validating: Loading16GradientBlueIcon,
40
41
  "need-validate": Loading16GradientBlueIcon
41
42
  };
43
+ const isFileValidating = (fileStatus) => fileStatus === "validating" || fileStatus === "need-validate";
44
+ const FileMeta = ({ file, showError = true }) => {
45
+ const fileStatus = file.fileStatus || "success";
46
+ return /* @__PURE__ */ React__default.createElement(
47
+ "div",
48
+ {
49
+ className: cs(
50
+ "file-content",
51
+ Typo.Label.l4_regular,
52
+ isFileValidating(fileStatus) && "validating"
53
+ )
54
+ },
55
+ /* @__PURE__ */ React__default.createElement(
56
+ OverflowTooltip,
57
+ {
58
+ className: "file-name",
59
+ content: file.name || file.fileName,
60
+ tooltip: file.name || file.fileName
61
+ }
62
+ ),
63
+ file.size && !isFileValidating(fileStatus) ? /* @__PURE__ */ React__default.createElement("div", { className: "file-size-line" }, /* @__PURE__ */ React__default.createElement(
64
+ Byte,
65
+ {
66
+ rawValue: file.size,
67
+ valueClassName: "file-size",
68
+ unitClassName: "file-size-unit"
69
+ }
70
+ )) : null,
71
+ showError && file.fileStatus === "error" && !!file.error && /* @__PURE__ */ React__default.createElement("div", { className: cx("upload-file-error", Typo.Footnote.f2_regular) }, file.error)
72
+ );
73
+ };
74
+ const swallowClick = (e) => {
75
+ e.preventDefault();
76
+ e.stopPropagation();
77
+ };
78
+ const FileRemoveIcon = ({ disabled, onClick }) => {
79
+ const { t } = useParrotTranslation();
80
+ const icon = /* @__PURE__ */ React__default.createElement(
81
+ Icon,
82
+ {
83
+ className: "remove-button",
84
+ cursor: disabled ? "not-allowed" : "pointer",
85
+ src: XmarkRemove16SecondaryIcon,
86
+ hoverSrc: disabled ? void 0 : XmarkRemove16RegularPrimaryCapsOffIcon,
87
+ onClick: disabled ? swallowClick : onClick
88
+ }
89
+ );
90
+ return disabled ? icon : /* @__PURE__ */ React__default.createElement(Tooltip, { title: t("common.remove") }, icon);
91
+ };
92
+ const DraggerFileInfo = ({ file, disableRemove, onRemove }) => {
93
+ const fileStatus = file.fileStatus || "success";
94
+ return /* @__PURE__ */ React__default.createElement("div", { className: cs("file-info", disableRemove && "disabled") }, /* @__PURE__ */ React__default.createElement(
95
+ Icon,
96
+ {
97
+ src: STATUS_ICON_MAP[fileStatus],
98
+ isRotate: isFileValidating(fileStatus)
99
+ }
100
+ ), /* @__PURE__ */ React__default.createElement(FileMeta, { file, showError: false }), /* @__PURE__ */ React__default.createElement(
101
+ FileRemoveIcon,
102
+ {
103
+ disabled: disableRemove,
104
+ onClick: (e) => {
105
+ e.preventDefault();
106
+ e.stopPropagation();
107
+ onRemove(file);
108
+ }
109
+ }
110
+ ));
111
+ };
42
112
  const createBeforeUploadHandler = ({
43
113
  fileList,
44
114
  setFileList,
@@ -46,16 +116,14 @@ const createBeforeUploadHandler = ({
46
116
  maxCount,
47
117
  isSingleSelect,
48
118
  setError,
49
- t,
50
- checkSingleSelectCount = false
119
+ t
51
120
  }) => {
52
121
  return (file, _fileList) => {
122
+ var _a;
53
123
  if (isSingleSelect) {
54
- if (checkSingleSelectCount && _fileList.length > 1) {
55
- setError(t("components.exceed_max_count", { count: 1 }) || "");
124
+ setError("");
125
+ if (file.uid !== ((_a = _fileList[0]) == null ? void 0 : _a.uid)) {
56
126
  return false;
57
- } else {
58
- setError("");
59
127
  }
60
128
  const _file2 = file;
61
129
  _file2.fileStatus = validate ? "need-validate" : "success";
@@ -96,10 +164,11 @@ const UploadButton = ({
96
164
  maxCount,
97
165
  multiple = false,
98
166
  disabled,
99
- accept
167
+ accept,
168
+ error
100
169
  }) => {
101
170
  const { t } = useParrotTranslation();
102
- const [error, setError] = useState("");
171
+ const [countError, setCountError] = useState("");
103
172
  const _maxCount = multiple ? maxCount || Infinity : 1;
104
173
  const isSingleSelect = _maxCount === 1;
105
174
  useFileValidation({
@@ -111,7 +180,7 @@ const UploadButton = ({
111
180
  useFileCountErrorClear({
112
181
  fileList,
113
182
  maxCount: _maxCount,
114
- setError
183
+ setError: setCountError
115
184
  });
116
185
  const props = {
117
186
  accept,
@@ -123,21 +192,28 @@ const UploadButton = ({
123
192
  validate,
124
193
  maxCount: _maxCount,
125
194
  isSingleSelect,
126
- setError,
127
- t,
128
- checkSingleSelectCount: false
195
+ setError: setCountError,
196
+ t
129
197
  }),
130
198
  multiple
131
199
  };
132
- return /* @__PURE__ */ React__default.createElement(Upload, __spreadProps(__spreadValues({}, props), { className: cs("upload-button", className) }), /* @__PURE__ */ React__default.createElement(
133
- Button,
134
- {
135
- disabled,
136
- prefixIcon: !hideIcon ? /* @__PURE__ */ React__default.createElement(Icon, { src: Uploading16GradientGrayIcon }) : void 0,
137
- hoverPrefixIcon: !hideIcon ? /* @__PURE__ */ React__default.createElement(Icon, { src: Uploading16GradientBlueIcon }) : void 0
138
- },
139
- children
140
- ), error ? /* @__PURE__ */ React__default.createElement("div", { className: cx("upload-error", Typo.Label.l4_regular) }, error) : null);
200
+ const fieldError = error || countError;
201
+ return /* @__PURE__ */ React__default.createElement(
202
+ Upload,
203
+ __spreadProps(__spreadValues({}, props), {
204
+ className: cs("upload-button", fieldError && "has-error", className)
205
+ }),
206
+ /* @__PURE__ */ React__default.createElement(
207
+ Button,
208
+ {
209
+ disabled,
210
+ prefixIcon: !hideIcon ? /* @__PURE__ */ React__default.createElement(Icon, { src: Uploading16GradientGrayIcon }) : void 0,
211
+ hoverPrefixIcon: !hideIcon ? /* @__PURE__ */ React__default.createElement(Icon, { src: Uploading16GradientBlueIcon }) : void 0
212
+ },
213
+ children
214
+ ),
215
+ fieldError ? /* @__PURE__ */ React__default.createElement("div", { className: cx("upload-error", Typo.Label.l4_regular) }, fieldError) : null
216
+ );
141
217
  };
142
218
  const UploadDragger = ({
143
219
  children,
@@ -148,14 +224,16 @@ const UploadDragger = ({
148
224
  maxCount,
149
225
  multiple = false,
150
226
  disabled,
151
- accept
227
+ accept,
228
+ disableRemove,
229
+ onRemove,
230
+ error
152
231
  }) => {
153
- var _a;
232
+ var _a, _b;
154
233
  const { t } = useParrotTranslation();
155
- const [error, setError] = useState("");
234
+ const [countError, setCountError] = useState("");
156
235
  const _maxCount = multiple ? maxCount || Infinity : 1;
157
236
  const isSingleSelect = _maxCount === 1;
158
- const reachMaxCount = !!maxCount && !isSingleSelect && fileList.length >= maxCount;
159
237
  useFileValidation({
160
238
  fileList,
161
239
  setFileList,
@@ -165,7 +243,7 @@ const UploadDragger = ({
165
243
  useFileCountErrorClear({
166
244
  fileList,
167
245
  maxCount: _maxCount,
168
- setError
246
+ setError: setCountError
169
247
  });
170
248
  const props = {
171
249
  accept,
@@ -177,9 +255,8 @@ const UploadDragger = ({
177
255
  validate,
178
256
  maxCount: _maxCount,
179
257
  isSingleSelect,
180
- setError,
181
- t,
182
- checkSingleSelectCount: true
258
+ setError: setCountError,
259
+ t
183
260
  }),
184
261
  disabled,
185
262
  multiple
@@ -187,47 +264,39 @@ const UploadDragger = ({
187
264
  const DefaultChildren = /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement(
188
265
  Icon,
189
266
  {
190
- src: (fileList == null ? void 0 : fileList.length) ? reachMaxCount ? Upload24GradientGrayIcon : Upload24GradientBlueIcon : Upload48GradientBlueIcon,
267
+ src: (fileList == null ? void 0 : fileList.length) ? Upload24GradientBlueIcon : Upload48GradientBlueIcon,
191
268
  iconHeight: (fileList == null ? void 0 : fileList.length) ? 24 : 48,
192
269
  iconWidth: (fileList == null ? void 0 : fileList.length) ? 24 : 48
193
270
  }
194
- ), /* @__PURE__ */ React__default.createElement("div", { className: cx("upload-drag-text", Typo.Label.l2_regular) }, t("components.upload_file_desc")));
271
+ ), /* @__PURE__ */ React__default.createElement("div", { className: cx("upload-drag-text", Typo.Label.l2_regular) }, /* @__PURE__ */ React__default.createElement(ParrotTrans, { i18nKey: "components.upload_file_desc" }, /* @__PURE__ */ React__default.createElement("span", { className: "upload-drag-link" }))));
195
272
  const fileStatus = isSingleSelect ? ((_a = fileList[0]) == null ? void 0 : _a.fileStatus) || "success" : void 0;
196
- const FileInfo = ({ file }) => {
197
- const fileStatus2 = file.fileStatus || "success";
198
- return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement("div", { className: "file-info", onClick: (e) => e.preventDefault() }, /* @__PURE__ */ React__default.createElement(
199
- Icon,
200
- {
201
- src: STATUS_ICON_MAP[fileStatus2],
202
- isRotate: fileStatus2 === "validating" || fileStatus2 === "need-validate"
203
- }
204
- ), /* @__PURE__ */ React__default.createElement("div", { className: cx("file-name", Typo.Label.l4_regular) }, file.name || file.fileName)), /* @__PURE__ */ React__default.createElement(Button, { className: Typo.Label.l2_regular, type: "link" }, t("components.reselect_file")));
205
- };
206
- const Error2 = () => {
207
- if (error) {
208
- return /* @__PURE__ */ React__default.createElement("div", { className: cx("upload-error", Typo.Label.l4_regular) }, error);
209
- }
210
- const file = fileList[0];
211
- if (isSingleSelect && (file == null ? void 0 : file.fileStatus) === "error" && file.error) {
212
- return /* @__PURE__ */ React__default.createElement("div", { className: cx("upload-error", Typo.Label.l4_regular) }, file.error);
213
- }
214
- return null;
215
- };
216
- return /* @__PURE__ */ React__default.createElement("div", { className: cs("upload-drag", className) }, /* @__PURE__ */ React__default.createElement(
273
+ const lockedSingleFile = isSingleSelect && !!fileList.length && !!disableRemove;
274
+ const singleFileError = isSingleSelect && ((_b = fileList[0]) == null ? void 0 : _b.fileStatus) === "error" ? fileList[0].error : void 0;
275
+ const displayError = error || countError || singleFileError;
276
+ return /* @__PURE__ */ React__default.createElement("div", { className: cs("upload-drag", displayError && "has-error", className) }, /* @__PURE__ */ React__default.createElement(
217
277
  Upload.Dragger,
218
278
  __spreadProps(__spreadValues({}, props), {
219
- disabled: disabled || fileStatus === "validating",
279
+ disabled: disabled || lockedSingleFile || isFileValidating(fileStatus),
220
280
  className: cs(
221
281
  "upload-drag-area",
222
282
  fileList.length ? "has-file" : "",
223
- reachMaxCount && "reach-max-count",
224
283
  isSingleSelect && "single",
225
284
  fileStatus === "error" && "file-error",
226
- fileStatus === "validating" && "file-validating"
285
+ isFileValidating(fileStatus) && "file-validating"
227
286
  )
228
287
  }),
229
- isSingleSelect && fileList.length ? /* @__PURE__ */ React__default.createElement(FileInfo, { file: fileList[0] }) : children || DefaultChildren
230
- ), /* @__PURE__ */ React__default.createElement(Error2, null));
288
+ isSingleSelect && fileList.length ? /* @__PURE__ */ React__default.createElement(
289
+ DraggerFileInfo,
290
+ {
291
+ file: fileList[0],
292
+ disableRemove,
293
+ onRemove: (file) => {
294
+ setFileList([]);
295
+ onRemove == null ? void 0 : onRemove(file);
296
+ }
297
+ }
298
+ ) : children || DefaultChildren
299
+ ), displayError ? /* @__PURE__ */ React__default.createElement("div", { className: cx("upload-error", Typo.Label.l4_regular) }, displayError) : null);
231
300
  };
232
301
  const UploadFileInfo = ({
233
302
  file,
@@ -255,36 +324,15 @@ const UploadFileInfo = ({
255
324
  Icon,
256
325
  {
257
326
  src: STATUS_ICON_MAP[fileStatus],
258
- isRotate: fileStatus === "validating" || fileStatus === "need-validate"
327
+ isRotate: isFileValidating(fileStatus)
259
328
  }
260
329
  ),
261
- /* @__PURE__ */ React__default.createElement("div", { className: cx("file-info", Typo.Label.l4_regular) }, /* @__PURE__ */ React__default.createElement(
262
- OverflowTooltip,
263
- {
264
- className: "file-name",
265
- content: file.name || file.fileName,
266
- tooltip: file.name || file.fileName
267
- }
268
- ), file.size ? /* @__PURE__ */ React__default.createElement("div", { className: "file-info" }, /* @__PURE__ */ React__default.createElement(
269
- Byte,
270
- {
271
- rawValue: file.size,
272
- valueClassName: "file-size",
273
- unitClassName: "file-size-unit"
274
- }
275
- )) : /* @__PURE__ */ React__default.createElement(React__default.Fragment, null), file.fileStatus === "error" && !!file.error && /* @__PURE__ */ React__default.createElement("div", { className: cx("upload-file-error", Typo.Footnote.f2_regular) }, file.error)),
276
- /* @__PURE__ */ React__default.createElement(
277
- Icon,
278
- {
279
- src: XmarkRemove16SecondaryIcon,
280
- onClick: disabled ? void 0 : handleRemove
281
- }
282
- )
330
+ /* @__PURE__ */ React__default.createElement(FileMeta, { file }),
331
+ /* @__PURE__ */ React__default.createElement(FileRemoveIcon, { disabled, onClick: handleRemove })
283
332
  );
284
333
  };
285
- const FileListItem = ({ file, removeFile, onRemove }) => {
334
+ const FileListItem = ({ file, removeFile, disableRemove, onRemove }) => {
286
335
  const fileStatus = file.fileStatus || "success";
287
- const { t } = useParrotTranslation();
288
336
  const handleRemove = (e) => {
289
337
  e.stopPropagation();
290
338
  removeFile(file.uid);
@@ -293,73 +341,48 @@ const FileListItem = ({ file, removeFile, onRemove }) => {
293
341
  return /* @__PURE__ */ React__default.createElement(
294
342
  "div",
295
343
  {
296
- className: cx("upload-file-item", Typo.Label.l4_regular),
344
+ className: cs(
345
+ "upload-file-item",
346
+ FileInfoWrapperStyle,
347
+ Typo.Label.l4_regular,
348
+ {
349
+ "file-error-wrapper": fileStatus === "error",
350
+ disabled: disableRemove
351
+ }
352
+ ),
297
353
  key: file.uid
298
354
  },
299
- /* @__PURE__ */ React__default.createElement("div", { className: "upload-file-info" }, /* @__PURE__ */ React__default.createElement("div", { className: "file-info" }, /* @__PURE__ */ React__default.createElement(
355
+ /* @__PURE__ */ React__default.createElement(
300
356
  Icon,
301
357
  {
302
358
  src: STATUS_ICON_MAP[fileStatus],
303
- isRotate: fileStatus === "validating" || fileStatus === "need-validate"
359
+ isRotate: isFileValidating(fileStatus)
304
360
  }
305
- ), /* @__PURE__ */ React__default.createElement(
306
- "div",
307
- {
308
- className: fileStatus === "validating" || fileStatus === "need-validate" ? "validating" : ""
309
- },
310
- file.name || file.fileName
311
- )), /* @__PURE__ */ React__default.createElement(Tooltip, { title: t("common.remove") }, /* @__PURE__ */ React__default.createElement(
312
- Icon,
313
- {
314
- className: "remove-button",
315
- src: XmarkRemove24SecondaryIcon,
316
- onClick: handleRemove
317
- }
318
- ))),
319
- file.fileStatus === "error" && !!file.error && /* @__PURE__ */ React__default.createElement("div", { className: cx("upload-file-error", Typo.Footnote.f2_regular) }, file.error)
361
+ ),
362
+ /* @__PURE__ */ React__default.createElement(FileMeta, { file }),
363
+ /* @__PURE__ */ React__default.createElement(FileRemoveIcon, { disabled: disableRemove, onClick: handleRemove })
320
364
  );
321
365
  };
322
366
  const UploadFileList = ({
323
367
  className,
324
368
  fileList,
325
369
  removeFile,
326
- type = "list",
327
370
  disableRemove = false,
328
371
  onRemove
329
372
  }) => {
330
373
  if (!fileList.length) {
331
374
  return null;
332
375
  }
333
- return /* @__PURE__ */ React__default.createElement(
334
- "div",
376
+ return /* @__PURE__ */ React__default.createElement("div", { className: cs("upload-file-list", className) }, fileList.map((file) => /* @__PURE__ */ React__default.createElement(
377
+ FileListItem,
335
378
  {
336
- className: cs(
337
- "upload-file-list",
338
- type === "list" ? "" : "upload-file-info-list",
339
- className
340
- )
341
- },
342
- fileList.map(
343
- (file) => type === "list" ? /* @__PURE__ */ React__default.createElement(
344
- FileListItem,
345
- {
346
- key: file.uid,
347
- file,
348
- removeFile,
349
- onRemove
350
- }
351
- ) : /* @__PURE__ */ React__default.createElement(
352
- UploadFileInfo,
353
- {
354
- key: file.uid,
355
- file,
356
- removeFile,
357
- disabled: disableRemove,
358
- onRemove
359
- }
360
- )
361
- )
362
- );
379
+ key: file.uid,
380
+ file,
381
+ removeFile,
382
+ disableRemove,
383
+ onRemove
384
+ }
385
+ )));
363
386
  };
364
387
 
365
388
  export { FileListItem, UploadButton, UploadDescription, UploadDragger, UploadFileInfo, UploadFileList, UploadLabel };
@@ -2,24 +2,24 @@ import { styled } from '@linaria/react';
2
2
 
3
3
  const LogViewContainer = /*#__PURE__*/styled('div')({
4
4
  name: "LogViewContainer",
5
- class: "E_4100_0_17_l1v1luhz",
5
+ class: "E_4100_0_18_l1v1luhz",
6
6
  propsAsIs: false
7
7
  });
8
8
  const LogViewInnerContaier = /*#__PURE__*/styled('div')({
9
9
  name: "LogViewInnerContaier",
10
- class: "E_4100_0_17_lranxiw",
10
+ class: "E_4100_0_18_lranxiw",
11
11
  propsAsIs: false
12
12
  });
13
13
  const LogTerminal = /*#__PURE__*/styled('div')({
14
14
  name: "LogTerminal",
15
- class: "E_4100_0_17_l1y3zqy5",
15
+ class: "E_4100_0_18_l1y3zqy5",
16
16
  propsAsIs: false
17
17
  });
18
18
  const CustomContentOverlay = /*#__PURE__*/styled('div')({
19
19
  name: "CustomContentOverlay",
20
- class: "E_4100_0_17_c1x4mn5u",
20
+ class: "E_4100_0_18_c1x4mn5u",
21
21
  propsAsIs: false
22
22
  });
23
- const SearchInputStyle = "E_4100_0_17_s4pilip";
23
+ const SearchInputStyle = "E_4100_0_18_s4pilip";
24
24
 
25
25
  export { CustomContentOverlay, LogTerminal, LogViewContainer, LogViewInnerContaier, SearchInputStyle };
@@ -28,7 +28,7 @@ var __objRest = (source, exclude) => {
28
28
  }
29
29
  return target;
30
30
  };
31
- const MediumDialogStyle = "E_4100_0_17_m5foqp8";
31
+ const MediumDialogStyle = "E_4100_0_18_m5foqp8";
32
32
  const MediumDialog = _a => {
33
33
  var _b = _a,
34
34
  {
@@ -1,23 +1,23 @@
1
1
  import { styled } from '@linaria/react';
2
2
 
3
- const MetricLegendTabStyle = "E_4100_0_17_mp64wfi";
4
- const LegendStyle = "E_4100_0_17_l1oyigan";
5
- const LegendItemStyle = "E_4100_0_17_l1noi4n1";
6
- const ColorBlockStyle = "E_4100_0_17_cz19rz6";
7
- const ExtraResource = "E_4100_0_17_e17r5r9c";
3
+ const MetricLegendTabStyle = "E_4100_0_18_mp64wfi";
4
+ const LegendStyle = "E_4100_0_18_l1oyigan";
5
+ const LegendItemStyle = "E_4100_0_18_l1noi4n1";
6
+ const ColorBlockStyle = "E_4100_0_18_cz19rz6";
7
+ const ExtraResource = "E_4100_0_18_e17r5r9c";
8
8
  const MetricWrapper = /*#__PURE__*/styled('div')({
9
9
  name: "MetricWrapper",
10
- class: "E_4100_0_17_m1y1hhnr",
10
+ class: "E_4100_0_18_m1y1hhnr",
11
11
  propsAsIs: false
12
12
  });
13
13
  const TooltipWrapper = /*#__PURE__*/styled('div')({
14
14
  name: "TooltipWrapper",
15
- class: "E_4100_0_17_tnvijvs",
15
+ class: "E_4100_0_18_tnvijvs",
16
16
  propsAsIs: false
17
17
  });
18
18
  const TooltipColumn = /*#__PURE__*/styled('div')({
19
19
  name: "TooltipColumn",
20
- class: "E_4100_0_17_t1ub2aex",
20
+ class: "E_4100_0_18_t1ub2aex",
21
21
  propsAsIs: false
22
22
  });
23
23
 
@@ -3,7 +3,7 @@ import React__default from 'react';
3
3
  import { Typo } from '../Typo/index.js';
4
4
  import { Header, NavCenterStyle } from './style.js';
5
5
 
6
- const MinWidth = "E_4100_0_17_m196gn1d";
6
+ const MinWidth = "E_4100_0_18_m196gn1d";
7
7
  const Nav = ({
8
8
  left,
9
9
  right,
@@ -2,9 +2,9 @@ import { styled } from '@linaria/react';
2
2
 
3
3
  const Header = /*#__PURE__*/styled('header')({
4
4
  name: "Header",
5
- class: "E_4100_0_17_h12yihis",
5
+ class: "E_4100_0_18_h12yihis",
6
6
  propsAsIs: false
7
7
  });
8
- const NavCenterStyle = "E_4100_0_17_ncaepor";
8
+ const NavCenterStyle = "E_4100_0_18_ncaepor";
9
9
 
10
10
  export { Header, NavCenterStyle };
@@ -2,8 +2,8 @@ import cs from 'classnames';
2
2
  import React__default, { useRef, useState, useCallback, useLayoutEffect } from 'react';
3
3
  import useElementResize from '../../hooks/useElementResize.js';
4
4
 
5
- const OverflowWrapper = "E_4100_0_17_owd0kml";
6
- const HiddenStyle = "E_4100_0_17_h1jsgezc";
5
+ const OverflowWrapper = "E_4100_0_18_owd0kml";
6
+ const HiddenStyle = "E_4100_0_18_h1jsgezc";
7
7
  const Overflow = props => {
8
8
  const {
9
9
  children,