@cloudtower/eagle 0.35.1 → 0.35.2

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 (81) hide show
  1. package/dist/cjs/UIKitProvider/index.js +5 -10
  2. package/dist/cjs/core/ConfigProvider/index.js +3 -1
  3. package/dist/cjs/core/Fields/FieldsTimePicker/index.js +4 -3
  4. package/dist/cjs/core/ImmersiveDialog/index.js +21 -14
  5. package/dist/cjs/core/{Modal → LegacyModal}/index.js +7 -3
  6. package/dist/cjs/core/LegacySelect/index.js +4 -0
  7. package/dist/cjs/core/LocalUpload/LocalUpload.hooks.js +66 -0
  8. package/dist/cjs/core/LocalUpload/LocalUpload.js +103 -0
  9. package/dist/cjs/core/LocalUpload/LocalUpload.style.js +13 -0
  10. package/dist/cjs/core/LocalUpload/LocalUpload.widget.js +379 -0
  11. package/dist/cjs/core/MediumDialog/MediumDialog.js +1 -1
  12. package/dist/cjs/core/SmallDialog/SmallDialog.js +7 -5
  13. package/dist/cjs/core/Tab/Tab.js +113 -0
  14. package/dist/cjs/core/Tab/Tab.style.js +17 -0
  15. package/dist/cjs/core/Tab/Tab.type.js +9 -0
  16. package/dist/cjs/core/Tab/useTabAdaptiveLayout.js +73 -0
  17. package/dist/cjs/core/message/message.js +24 -1
  18. package/dist/cjs/coreX/KubeConfigModal/index.js +4 -4
  19. package/dist/cjs/hooks/useAntdPatchEnLocales.js +35 -0
  20. package/dist/cjs/hooks/useLegacyComponentWarning.js +16 -0
  21. package/dist/cjs/index.js +20 -16
  22. package/dist/cjs/legacy-antd.js +2 -2
  23. package/dist/cjs/stats1.html +1 -1
  24. package/dist/components.css +1926 -1557
  25. package/dist/esm/UIKitProvider/index.js +5 -10
  26. package/dist/esm/core/ConfigProvider/index.js +3 -1
  27. package/dist/esm/core/Fields/FieldsTimePicker/index.js +2 -1
  28. package/dist/esm/core/ImmersiveDialog/index.js +21 -14
  29. package/dist/esm/core/{Modal → LegacyModal}/index.js +9 -5
  30. package/dist/esm/core/LegacySelect/index.js +4 -0
  31. package/dist/esm/core/LocalUpload/LocalUpload.hooks.js +63 -0
  32. package/dist/esm/core/LocalUpload/LocalUpload.js +97 -0
  33. package/dist/esm/core/LocalUpload/LocalUpload.style.js +10 -0
  34. package/dist/esm/core/LocalUpload/LocalUpload.widget.js +365 -0
  35. package/dist/esm/core/MediumDialog/MediumDialog.js +1 -1
  36. package/dist/esm/core/SmallDialog/SmallDialog.js +6 -4
  37. package/dist/esm/core/Tab/Tab.js +107 -0
  38. package/dist/esm/core/Tab/Tab.style.js +12 -0
  39. package/dist/esm/core/Tab/Tab.type.js +7 -0
  40. package/dist/esm/core/Tab/useTabAdaptiveLayout.js +71 -0
  41. package/dist/esm/core/message/message.js +24 -1
  42. package/dist/esm/coreX/KubeConfigModal/index.js +5 -5
  43. package/dist/esm/hooks/useAntdPatchEnLocales.js +29 -0
  44. package/dist/esm/hooks/useLegacyComponentWarning.js +14 -0
  45. package/dist/esm/index.js +3 -1
  46. package/dist/esm/legacy-antd.js +4 -4
  47. package/dist/esm/stats1.html +1 -1
  48. package/dist/linaria.merged.scss +1968 -1541
  49. package/dist/src/core/ImmersiveDialog/type.d.ts +2 -2
  50. package/dist/src/core/{Modal/modal.type.d.ts → LegacyModal/LegacyModal.type.d.ts} +12 -1
  51. package/dist/src/core/LegacyModal/index.d.ts +16 -0
  52. package/dist/src/core/LocalUpload/LocalUpload.d.ts +15 -0
  53. package/dist/src/core/LocalUpload/LocalUpload.hooks.d.ts +32 -0
  54. package/dist/src/core/LocalUpload/LocalUpload.style.d.ts +3 -0
  55. package/dist/src/core/LocalUpload/LocalUpload.type.d.ts +175 -0
  56. package/dist/src/core/LocalUpload/LocalUpload.widget.d.ts +23 -0
  57. package/dist/src/core/LocalUpload/index.d.ts +2 -0
  58. package/dist/src/core/SmallDialog/SmallDialog.type.d.ts +2 -0
  59. package/dist/src/core/Tab/Tab.d.ts +3 -0
  60. package/dist/src/core/Tab/Tab.style.d.ts +5 -0
  61. package/dist/src/core/Tab/Tab.type.d.ts +42 -0
  62. package/dist/src/core/Tab/index.d.ts +1 -0
  63. package/dist/src/core/Tab/useTabAdaptiveLayout.d.ts +23 -0
  64. package/dist/src/core/index.d.ts +4 -2
  65. package/dist/src/core/message/message.d.ts +5 -0
  66. package/dist/src/hooks/useAntdPatchEnLocales.d.ts +431 -0
  67. package/dist/src/hooks/useLegacyComponentWarning.d.ts +2 -0
  68. package/dist/src/spec/base.d.ts +2 -2
  69. package/dist/stories/docs/core/ImmersiveDialog.stories.d.ts +5 -1
  70. package/dist/stories/docs/core/LegacyModal.stories.d.ts +23 -0
  71. package/dist/stories/docs/core/LocalUpload.stories.d.ts +74 -0
  72. package/dist/stories/docs/core/MediumDialog.stories.d.ts +5 -1
  73. package/dist/stories/docs/core/SmallDialog.stories.d.ts +5 -1
  74. package/dist/stories/docs/core/Tab.stories.d.ts +65 -0
  75. package/dist/stories/docs/core/WizardDialog.stories.d.ts +2 -1
  76. package/dist/stories/docs/core/message-group.stories.d.ts +1 -0
  77. package/dist/style.css +1926 -1557
  78. package/dist/variables.scss +3 -0
  79. package/package.json +4 -4
  80. package/dist/src/core/Modal/index.d.ts +0 -5
  81. package/dist/stories/docs/core/Modal.stories.d.ts +0 -13
@@ -0,0 +1,379 @@
1
+ 'use strict';
2
+
3
+ var iconsReact = require('@cloudtower/icons-react');
4
+ var core = require('@linaria/core');
5
+ var index$1 = require('../Button/index.js');
6
+ var index$4 = require('../Byte/index.js');
7
+ var index$2 = require('../Icon/index.js');
8
+ var index$5 = require('../Tooltip/index.js');
9
+ var index = require('../Typo/index.js');
10
+ var index$3 = require('../../coreX/OverflowTooltip/index.js');
11
+ var useParrotTranslation = require('../../hooks/useParrotTranslation.js');
12
+ var cs = require('classnames');
13
+ var _ = require('lodash');
14
+ var React = require('react');
15
+ var LocalUpload_hooks = require('./LocalUpload.hooks.js');
16
+ var LocalUpload_style = require('./LocalUpload.style.js');
17
+ var antd = require('antd');
18
+
19
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
20
+
21
+ var cs__default = /*#__PURE__*/_interopDefault(cs);
22
+ var ___default = /*#__PURE__*/_interopDefault(_);
23
+ var React__default = /*#__PURE__*/_interopDefault(React);
24
+
25
+ var __defProp = Object.defineProperty;
26
+ var __defProps = Object.defineProperties;
27
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
28
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
29
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
30
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
31
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
32
+ var __spreadValues = (a, b) => {
33
+ for (var prop in b || (b = {}))
34
+ if (__hasOwnProp.call(b, prop))
35
+ __defNormalProp(a, prop, b[prop]);
36
+ if (__getOwnPropSymbols)
37
+ for (var prop of __getOwnPropSymbols(b)) {
38
+ if (__propIsEnum.call(b, prop))
39
+ __defNormalProp(a, prop, b[prop]);
40
+ }
41
+ return a;
42
+ };
43
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
44
+ const STATUS_ICON_MAP = {
45
+ error: iconsReact.ExclamationErrorCircleFill16RedIcon,
46
+ success: iconsReact.File16GradientBlueIcon,
47
+ validating: iconsReact.Loading16GradientBlueIcon,
48
+ "need-validate": iconsReact.Loading16GradientBlueIcon
49
+ };
50
+ const createBeforeUploadHandler = ({
51
+ fileList,
52
+ setFileList,
53
+ validate,
54
+ maxCount,
55
+ isSingleSelect,
56
+ setError,
57
+ t,
58
+ checkSingleSelectCount = false
59
+ }) => {
60
+ return (file, _fileList) => {
61
+ if (isSingleSelect) {
62
+ if (checkSingleSelectCount && _fileList.length > 1) {
63
+ setError(t("components.exceed_max_count", { count: 1 }) || "");
64
+ return false;
65
+ } else {
66
+ setError("");
67
+ }
68
+ const _file2 = file;
69
+ _file2.fileStatus = validate ? "need-validate" : "success";
70
+ setFileList([_file2]);
71
+ return false;
72
+ }
73
+ if (fileList.length + _fileList.length > maxCount) {
74
+ setError(t("components.exceed_max_count", { count: maxCount }) || "");
75
+ } else {
76
+ setError("");
77
+ }
78
+ const _file = file;
79
+ _file.fileStatus = validate ? "need-validate" : "success";
80
+ const index = _fileList.findIndex((f) => f.uid === _file.uid);
81
+ if (index !== -1) {
82
+ const newList = ___default.default.uniqBy(
83
+ [...fileList, ..._fileList.slice(0, index + 1)],
84
+ "uid"
85
+ );
86
+ setFileList(newList);
87
+ }
88
+ return false;
89
+ };
90
+ };
91
+ const UploadLabel = ({ className, children }) => {
92
+ return /* @__PURE__ */ React__default.default.createElement("label", { className: core.cx("upload-label", index.Typo.Label.l2_regular, className) }, children);
93
+ };
94
+ const UploadDescription = ({ className, children }) => {
95
+ return /* @__PURE__ */ React__default.default.createElement("div", { className: core.cx("upload-description", index.Typo.Label.l4_regular, className) }, children);
96
+ };
97
+ const UploadButton = ({
98
+ children,
99
+ hideIcon = false,
100
+ className,
101
+ fileList,
102
+ setFileList,
103
+ validate,
104
+ maxCount,
105
+ multiple = false,
106
+ disabled,
107
+ accept
108
+ }) => {
109
+ const { t } = useParrotTranslation();
110
+ const [error, setError] = React.useState("");
111
+ const _maxCount = multiple ? maxCount || Infinity : 1;
112
+ const isSingleSelect = _maxCount === 1;
113
+ LocalUpload_hooks.useFileValidation({
114
+ fileList,
115
+ setFileList,
116
+ validate,
117
+ createNewFile: false
118
+ });
119
+ LocalUpload_hooks.useFileCountErrorClear({
120
+ fileList,
121
+ maxCount: _maxCount,
122
+ setError
123
+ });
124
+ const props = {
125
+ accept,
126
+ fileList,
127
+ showUploadList: false,
128
+ beforeUpload: createBeforeUploadHandler({
129
+ fileList,
130
+ setFileList,
131
+ validate,
132
+ maxCount: _maxCount,
133
+ isSingleSelect,
134
+ setError,
135
+ t,
136
+ checkSingleSelectCount: false
137
+ }),
138
+ multiple
139
+ };
140
+ return /* @__PURE__ */ React__default.default.createElement(antd.Upload, __spreadProps(__spreadValues({}, props), { className: cs__default.default("upload-button", className) }), /* @__PURE__ */ React__default.default.createElement(
141
+ index$1,
142
+ {
143
+ disabled,
144
+ prefixIcon: !hideIcon ? /* @__PURE__ */ React__default.default.createElement(index$2, { src: iconsReact.Uploading16GradientGrayIcon }) : void 0,
145
+ hoverPrefixIcon: !hideIcon ? /* @__PURE__ */ React__default.default.createElement(index$2, { src: iconsReact.Uploading16GradientBlueIcon }) : void 0
146
+ },
147
+ children
148
+ ), error ? /* @__PURE__ */ React__default.default.createElement("div", { className: core.cx("upload-error", index.Typo.Label.l4_regular) }, error) : null);
149
+ };
150
+ const UploadDragger = ({
151
+ children,
152
+ className,
153
+ fileList,
154
+ setFileList,
155
+ validate,
156
+ maxCount,
157
+ multiple = false,
158
+ disabled,
159
+ accept
160
+ }) => {
161
+ var _a;
162
+ const { t } = useParrotTranslation();
163
+ const [error, setError] = React.useState("");
164
+ const _maxCount = multiple ? maxCount || Infinity : 1;
165
+ const isSingleSelect = _maxCount === 1;
166
+ const reachMaxCount = !!maxCount && !isSingleSelect && fileList.length >= maxCount;
167
+ LocalUpload_hooks.useFileValidation({
168
+ fileList,
169
+ setFileList,
170
+ validate,
171
+ createNewFile: true
172
+ });
173
+ LocalUpload_hooks.useFileCountErrorClear({
174
+ fileList,
175
+ maxCount: _maxCount,
176
+ setError
177
+ });
178
+ const props = {
179
+ accept,
180
+ fileList,
181
+ showUploadList: false,
182
+ beforeUpload: createBeforeUploadHandler({
183
+ fileList,
184
+ setFileList,
185
+ validate,
186
+ maxCount: _maxCount,
187
+ isSingleSelect,
188
+ setError,
189
+ t,
190
+ checkSingleSelectCount: true
191
+ }),
192
+ disabled,
193
+ multiple
194
+ };
195
+ const DefaultChildren = /* @__PURE__ */ React__default.default.createElement(React__default.default.Fragment, null, /* @__PURE__ */ React__default.default.createElement(
196
+ index$2,
197
+ {
198
+ src: (fileList == null ? void 0 : fileList.length) ? reachMaxCount ? iconsReact.Upload24GradientGrayIcon : iconsReact.Upload24GradientBlueIcon : iconsReact.Upload48GradientBlueIcon,
199
+ iconHeight: (fileList == null ? void 0 : fileList.length) ? 24 : 48,
200
+ iconWidth: (fileList == null ? void 0 : fileList.length) ? 24 : 48
201
+ }
202
+ ), /* @__PURE__ */ React__default.default.createElement("div", { className: core.cx("upload-drag-text", index.Typo.Label.l2_regular) }, t("components.upload_file_desc")));
203
+ const fileStatus = isSingleSelect ? ((_a = fileList[0]) == null ? void 0 : _a.fileStatus) || "success" : void 0;
204
+ const FileInfo = ({ file }) => {
205
+ const fileStatus2 = file.fileStatus || "success";
206
+ return /* @__PURE__ */ React__default.default.createElement(React__default.default.Fragment, null, /* @__PURE__ */ React__default.default.createElement("div", { className: "file-info", onClick: (e) => e.preventDefault() }, /* @__PURE__ */ React__default.default.createElement(
207
+ index$2,
208
+ {
209
+ src: STATUS_ICON_MAP[fileStatus2],
210
+ isRotate: fileStatus2 === "validating" || fileStatus2 === "need-validate"
211
+ }
212
+ ), /* @__PURE__ */ React__default.default.createElement("div", { className: core.cx("file-name", index.Typo.Label.l4_regular) }, file.name || file.fileName)), /* @__PURE__ */ React__default.default.createElement(index$1, { className: index.Typo.Label.l2_regular, type: "link" }, t("components.reselect_file")));
213
+ };
214
+ const Error2 = () => {
215
+ if (error) {
216
+ return /* @__PURE__ */ React__default.default.createElement("div", { className: core.cx("upload-error", index.Typo.Label.l4_regular) }, error);
217
+ }
218
+ const file = fileList[0];
219
+ if (isSingleSelect && (file == null ? void 0 : file.fileStatus) === "error" && file.error) {
220
+ return /* @__PURE__ */ React__default.default.createElement("div", { className: core.cx("upload-error", index.Typo.Label.l4_regular) }, file.error);
221
+ }
222
+ return null;
223
+ };
224
+ return /* @__PURE__ */ React__default.default.createElement("div", { className: cs__default.default("upload-drag", className) }, /* @__PURE__ */ React__default.default.createElement(
225
+ antd.Upload.Dragger,
226
+ __spreadProps(__spreadValues({}, props), {
227
+ disabled: disabled || fileStatus === "validating",
228
+ className: cs__default.default(
229
+ "upload-drag-area",
230
+ fileList.length ? "has-file" : "",
231
+ reachMaxCount && "reach-max-count",
232
+ isSingleSelect && "single",
233
+ fileStatus === "error" && "file-error",
234
+ fileStatus === "validating" && "file-validating"
235
+ )
236
+ }),
237
+ isSingleSelect && fileList.length ? /* @__PURE__ */ React__default.default.createElement(FileInfo, { file: fileList[0] }) : children || DefaultChildren
238
+ ), /* @__PURE__ */ React__default.default.createElement(Error2, null));
239
+ };
240
+ const UploadFileInfo = ({
241
+ file,
242
+ removeFile,
243
+ disabled,
244
+ onRemove
245
+ }) => {
246
+ const fileStatus = file.fileStatus || "success";
247
+ const handleRemove = () => {
248
+ var _a;
249
+ removeFile((_a = file.uid) != null ? _a : "");
250
+ if (onRemove && "fileStatus" in file) {
251
+ onRemove(file);
252
+ }
253
+ };
254
+ return /* @__PURE__ */ React__default.default.createElement(
255
+ "div",
256
+ {
257
+ className: cs__default.default(LocalUpload_style.FileInfoWrapperStyle, {
258
+ "file-error-wrapper": fileStatus === "error",
259
+ disabled
260
+ })
261
+ },
262
+ /* @__PURE__ */ React__default.default.createElement(
263
+ index$2,
264
+ {
265
+ src: STATUS_ICON_MAP[fileStatus],
266
+ isRotate: fileStatus === "validating" || fileStatus === "need-validate"
267
+ }
268
+ ),
269
+ /* @__PURE__ */ React__default.default.createElement("div", { className: core.cx("file-info", index.Typo.Label.l4_regular) }, /* @__PURE__ */ React__default.default.createElement(
270
+ index$3,
271
+ {
272
+ className: "file-name",
273
+ content: file.name || file.fileName,
274
+ tooltip: file.name || file.fileName
275
+ }
276
+ ), file.size ? /* @__PURE__ */ React__default.default.createElement("div", { className: "file-info" }, /* @__PURE__ */ React__default.default.createElement(
277
+ index$4,
278
+ {
279
+ rawValue: file.size,
280
+ valueClassName: "file-size",
281
+ unitClassName: "file-size-unit"
282
+ }
283
+ )) : /* @__PURE__ */ React__default.default.createElement(React__default.default.Fragment, null), file.fileStatus === "error" && !!file.error && /* @__PURE__ */ React__default.default.createElement("div", { className: core.cx("upload-file-error", index.Typo.Footnote.f2_regular) }, file.error)),
284
+ /* @__PURE__ */ React__default.default.createElement(
285
+ index$2,
286
+ {
287
+ src: iconsReact.XmarkRemove16SecondaryIcon,
288
+ onClick: disabled ? void 0 : handleRemove
289
+ }
290
+ )
291
+ );
292
+ };
293
+ const FileListItem = ({ file, removeFile, onRemove }) => {
294
+ const fileStatus = file.fileStatus || "success";
295
+ const { t } = useParrotTranslation();
296
+ const handleRemove = (e) => {
297
+ e.stopPropagation();
298
+ removeFile(file.uid);
299
+ onRemove == null ? void 0 : onRemove(file);
300
+ };
301
+ return /* @__PURE__ */ React__default.default.createElement(
302
+ "div",
303
+ {
304
+ className: core.cx("upload-file-item", index.Typo.Label.l4_regular),
305
+ key: file.uid
306
+ },
307
+ /* @__PURE__ */ React__default.default.createElement("div", { className: "upload-file-info" }, /* @__PURE__ */ React__default.default.createElement("div", { className: "file-info" }, /* @__PURE__ */ React__default.default.createElement(
308
+ index$2,
309
+ {
310
+ src: STATUS_ICON_MAP[fileStatus],
311
+ isRotate: fileStatus === "validating" || fileStatus === "need-validate"
312
+ }
313
+ ), /* @__PURE__ */ React__default.default.createElement(
314
+ "div",
315
+ {
316
+ className: fileStatus === "validating" || fileStatus === "need-validate" ? "validating" : ""
317
+ },
318
+ file.name || file.fileName
319
+ )), /* @__PURE__ */ React__default.default.createElement(index$5, { title: t("common.remove") }, /* @__PURE__ */ React__default.default.createElement(
320
+ index$2,
321
+ {
322
+ className: "remove-button",
323
+ src: iconsReact.XmarkRemove24SecondaryIcon,
324
+ onClick: handleRemove
325
+ }
326
+ ))),
327
+ file.fileStatus === "error" && !!file.error && /* @__PURE__ */ React__default.default.createElement("div", { className: core.cx("upload-file-error", index.Typo.Footnote.f2_regular) }, file.error)
328
+ );
329
+ };
330
+ const UploadFileList = ({
331
+ className,
332
+ fileList,
333
+ removeFile,
334
+ type = "list",
335
+ disableRemove = false,
336
+ onRemove
337
+ }) => {
338
+ if (!fileList.length) {
339
+ return null;
340
+ }
341
+ return /* @__PURE__ */ React__default.default.createElement(
342
+ "div",
343
+ {
344
+ className: cs__default.default(
345
+ "upload-file-list",
346
+ type === "list" ? "" : "upload-file-info-list",
347
+ className
348
+ )
349
+ },
350
+ fileList.map(
351
+ (file) => type === "list" ? /* @__PURE__ */ React__default.default.createElement(
352
+ FileListItem,
353
+ {
354
+ key: file.uid,
355
+ file,
356
+ removeFile,
357
+ onRemove
358
+ }
359
+ ) : /* @__PURE__ */ React__default.default.createElement(
360
+ UploadFileInfo,
361
+ {
362
+ key: file.uid,
363
+ file,
364
+ removeFile,
365
+ disabled: disableRemove,
366
+ onRemove
367
+ }
368
+ )
369
+ )
370
+ );
371
+ };
372
+
373
+ exports.FileListItem = FileListItem;
374
+ exports.UploadButton = UploadButton;
375
+ exports.UploadDescription = UploadDescription;
376
+ exports.UploadDragger = UploadDragger;
377
+ exports.UploadFileInfo = UploadFileInfo;
378
+ exports.UploadFileList = UploadFileList;
379
+ exports.UploadLabel = UploadLabel;
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var React = require('react');
4
3
  var core = require('@linaria/core');
4
+ var React = require('react');
5
5
  var index = require('../Typo/index.js');
6
6
  var SmallDialog = require('../SmallDialog/SmallDialog.js');
7
7
 
@@ -3,14 +3,14 @@
3
3
  var iconsReact = require('@cloudtower/icons-react');
4
4
  var core = require('@linaria/core');
5
5
  var index = require('../KitStoreProvider/index.js');
6
+ var useParrotTranslation = require('../../hooks/useParrotTranslation.js');
6
7
  var antd = require('antd');
7
- var React = require('react');
8
8
  var cs = require('classnames');
9
+ var React = require('react');
9
10
  var index$4 = require('../../coreX/OverflowTooltip/index.js');
10
11
  var index$1 = require('../../coreX/Show/index.js');
11
12
  var SmallDialog_style = require('./SmallDialog.style.js');
12
13
  var SmallDialog_widget = require('./SmallDialog.widget.js');
13
- var useParrotTranslation = require('../../hooks/useParrotTranslation.js');
14
14
  var index$3 = require('../Icon/index.js');
15
15
  var index$5 = require('../Button/index.js');
16
16
  var antd5 = require('antd5');
@@ -18,8 +18,8 @@ var index$2 = require('../Typo/index.js');
18
18
 
19
19
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
20
20
 
21
- var React__default = /*#__PURE__*/_interopDefault(React);
22
21
  var cs__default = /*#__PURE__*/_interopDefault(cs);
22
+ var React__default = /*#__PURE__*/_interopDefault(React);
23
23
 
24
24
  var __defProp = Object.defineProperty;
25
25
  var __getOwnPropSymbols = Object.getOwnPropertySymbols;
@@ -58,6 +58,7 @@ const SmallDialog = ({
58
58
  okButtonProps,
59
59
  cancelButtonProps,
60
60
  children,
61
+ hideFooter = false,
61
62
  showFooterErrorIcon = true,
62
63
  error,
63
64
  confirmLoading,
@@ -91,7 +92,7 @@ const SmallDialog = ({
91
92
  visible: true,
92
93
  width,
93
94
  title: initializing ? /* @__PURE__ */ React__default.default.createElement(SmallDialog_widget.ModelTitleSkeleton, null) : /* @__PURE__ */ React__default.default.createElement(CustomTitleRender, { title: title || defaultTitle }),
94
- footer: initializing ? null : /* @__PURE__ */ React__default.default.createElement(
95
+ footer: initializing ? null : hideFooter ? /* @__PURE__ */ React__default.default.createElement("div", null) : /* @__PURE__ */ React__default.default.createElement(
95
96
  "div",
96
97
  {
97
98
  className: cs__default.default(SmallDialog_style.FooterStyle, footerClassName, {
@@ -144,7 +145,8 @@ const SmallDialog = ({
144
145
  closable,
145
146
  maskClosable,
146
147
  className: cs__default.default(SmallDialog_style.DialogStyle, className, {
147
- "initializing-error": initializingError
148
+ "initializing-error": initializingError,
149
+ "no-footer": hideFooter
148
150
  }),
149
151
  closeIcon: /* @__PURE__ */ React__default.default.createElement(
150
152
  index$3,
@@ -0,0 +1,113 @@
1
+ 'use strict';
2
+
3
+ var iconsReact = require('@cloudtower/icons-react');
4
+ var core = require('@linaria/core');
5
+ var antd = require('antd');
6
+ var React = require('react');
7
+ var index$1 = require('../Icon/index.js');
8
+ var index = require('../Typo/index.js');
9
+ var Tab_style = require('./Tab.style.js');
10
+ var Tab_type = require('./Tab.type.js');
11
+ var useTabAdaptiveLayout = require('./useTabAdaptiveLayout.js');
12
+
13
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
14
+
15
+ var React__default = /*#__PURE__*/_interopDefault(React);
16
+
17
+ const getSelectedStyle = (key, type, selectedKey, activeTabType) => {
18
+ return key === selectedKey && activeTabType === type ? ["__selected", index.Typo.Label.l1_bold_title] : [index.Typo.Label.l1_regular];
19
+ };
20
+ const Tab = props => {
21
+ const {
22
+ className,
23
+ contentClassName,
24
+ tabs,
25
+ onChange,
26
+ selectedKey,
27
+ extraSlot,
28
+ size = "medium"
29
+ } = props;
30
+ const tabsRef = React.useRef(null);
31
+ const extraSlotRef = React.useRef(null);
32
+ const [isClickedMoreTabItem, setIsClickedMoreTabItem] = React.useState(false);
33
+ const allTabs = React.useMemo(() => {
34
+ return tabs.reduce((map, tab) => {
35
+ map.set(tab.key, tab);
36
+ return map;
37
+ }, /* @__PURE__ */new Map([]));
38
+ }, [tabs]);
39
+ const selectedTab = React.useMemo(() => allTabs.get(selectedKey), [allTabs, selectedKey]);
40
+ const moreTabs = useTabAdaptiveLayout.useTabAdaptiveLayout(tabs, tabsRef, extraSlotRef, selectedKey);
41
+ const activeTabType = React.useMemo(() => {
42
+ if (moreTabs == null ? void 0 : moreTabs.find(tab => tab.key === (selectedTab == null ? void 0 : selectedTab.key))) {
43
+ return Tab_type.ActiveTabType.More;
44
+ }
45
+ if ((selectedTab == null ? void 0 : selectedTab.key) && allTabs.get(selectedTab.key)) {
46
+ return Tab_type.ActiveTabType.Common;
47
+ }
48
+ }, [moreTabs, allTabs, selectedTab == null ? void 0 : selectedTab.key]);
49
+ React.useLayoutEffect(() => {
50
+ var _a;
51
+ if (!allTabs.get(selectedKey) && ((_a = tabs == null ? void 0 : tabs[0]) == null ? void 0 : _a.key)) {
52
+ onChange == null ? void 0 : onChange(tabs[0].key);
53
+ }
54
+ }, [allTabs, onChange, selectedKey, tabs]);
55
+ return /* @__PURE__ */React__default.default.createElement(Tab_style.TabMenuWrapper, {
56
+ className: core.cx(className, size)
57
+ }, /* @__PURE__ */React__default.default.createElement("div", {
58
+ className: "tab-bar"
59
+ }, /* @__PURE__ */React__default.default.createElement("div", {
60
+ ref: tabsRef,
61
+ className: "common-tab-bar"
62
+ }, /* tab items */
63
+ tabs.map(tab => /* @__PURE__ */React__default.default.createElement("span", {
64
+ className: core.cx("tab-item-title", "common", ...getSelectedStyle(tab.key, Tab_type.ActiveTabType.Common, selectedKey, activeTabType)),
65
+ key: tab.key,
66
+ onClick: () => onChange == null ? void 0 : onChange(tab.key)
67
+ }, typeof tab.title === "function" ? tab.title({
68
+ isActive: tab.key === selectedKey
69
+ }) : tab.title)), /* more tab items */
70
+ moreTabs.length > 0 && /* @__PURE__ */React__default.default.createElement(React__default.default.Fragment, null, /* @__PURE__ */React__default.default.createElement(antd.Dropdown, {
71
+ trigger: ["click"],
72
+ overlayClassName: Tab_style.MoreThanTooltipStyle,
73
+ onVisibleChange: visible => setIsClickedMoreTabItem(visible),
74
+ getPopupContainer: triggerNode => document.querySelector(".tab-bar") || triggerNode,
75
+ overlay: /* @__PURE__ */React__default.default.createElement(antd.Menu, {
76
+ className: "menu-wrapper",
77
+ onClick: params => {
78
+ setIsClickedMoreTabItem(false);
79
+ onChange == null ? void 0 : onChange(params.key);
80
+ }
81
+ }, moreTabs.map(tab => {
82
+ return /* @__PURE__ */React__default.default.createElement(antd.Menu.Item, {
83
+ className: core.cx("tab-menu-item", ...getSelectedStyle(tab.key, Tab_type.ActiveTabType.More, selectedKey, activeTabType)),
84
+ key: tab.key
85
+ }, typeof tab.title === "function" ? tab.title({
86
+ isActive: tab.key === selectedKey
87
+ }) : tab.title);
88
+ }))
89
+ }, /* @__PURE__ */React__default.default.createElement("span", {
90
+ className: core.cx("tab-item-title", "more", Tab_style.TabTitleElStyle, activeTabType === Tab_type.ActiveTabType.More && "__selected", activeTabType === Tab_type.ActiveTabType.More ? index.Typo.Label.l1_bold_title : index.Typo.Label.l1_regular)
91
+ }, /* @__PURE__ */React__default.default.createElement(index$1, {
92
+ className: Tab_style.IconStyle,
93
+ hoverSrc: iconsReact.MoreMenu16BlueIcon,
94
+ src: iconsReact.MoreMenu16GrayIcon,
95
+ active: isClickedMoreTabItem
96
+ }), activeTabType === Tab_type.ActiveTabType.More && /* @__PURE__ */React__default.default.createElement("span", {
97
+ className: "tab-title-text"
98
+ }, typeof (selectedTab == null ? void 0 : selectedTab.title) === "function" ? selectedTab == null ? void 0 : selectedTab.title({
99
+ isActive: true
100
+ }) : selectedTab == null ? void 0 : selectedTab.title))), extraSlot && /* @__PURE__ */React__default.default.createElement("span", {
101
+ className: "E_ckaaqep"
102
+ }))), extraSlot && /* @__PURE__ */React__default.default.createElement("div", {
103
+ ref: extraSlotRef
104
+ }, extraSlot)), tabs.map(tab => /* @__PURE__ */React__default.default.createElement("div", {
105
+ style: {
106
+ display: tab.key === selectedKey ? "block" : "none"
107
+ },
108
+ key: tab.key,
109
+ className: contentClassName
110
+ }, tab == null ? void 0 : tab.children)));
111
+ };
112
+
113
+ exports.Tab = Tab;
@@ -0,0 +1,17 @@
1
+ 'use strict';
2
+
3
+ var react = require('@linaria/react');
4
+
5
+ const TabMenuWrapper = /*#__PURE__*/react.styled('div')({
6
+ name: "TabMenuWrapper",
7
+ class: "E_t1tbywr9",
8
+ propsAsIs: false
9
+ });
10
+ const TabTitleElStyle = "E_ti12z2";
11
+ const MoreThanTooltipStyle = "E_m19lu3v";
12
+ const IconStyle = "E_i1bmwe2m";
13
+
14
+ exports.IconStyle = IconStyle;
15
+ exports.MoreThanTooltipStyle = MoreThanTooltipStyle;
16
+ exports.TabMenuWrapper = TabMenuWrapper;
17
+ exports.TabTitleElStyle = TabTitleElStyle;
@@ -0,0 +1,9 @@
1
+ 'use strict';
2
+
3
+ var ActiveTabType = /* @__PURE__ */ ((ActiveTabType2) => {
4
+ ActiveTabType2[ActiveTabType2["Common"] = 0] = "Common";
5
+ ActiveTabType2[ActiveTabType2["More"] = 1] = "More";
6
+ return ActiveTabType2;
7
+ })(ActiveTabType || {});
8
+
9
+ exports.ActiveTabType = ActiveTabType;
@@ -0,0 +1,73 @@
1
+ 'use strict';
2
+
3
+ var _ = require('lodash');
4
+ var React = require('react');
5
+
6
+ const getPlacementWidth = (el) => {
7
+ if (!el) {
8
+ return 0;
9
+ }
10
+ const computedStyle = window.getComputedStyle(el);
11
+ const width = el.offsetWidth;
12
+ const marginLeft = parseInt(computedStyle.marginLeft || "0");
13
+ const marginRight = parseInt(computedStyle.marginRight || "0");
14
+ return width + marginLeft + marginRight;
15
+ };
16
+ const useTabAdaptiveLayout = (tabs, tabsRef, extraSlotRef, selectedKey) => {
17
+ const [moreTabs, setMoreTabs] = React.useState([]);
18
+ const doAdapt = React.useCallback(() => {
19
+ if (!tabsRef.current)
20
+ return;
21
+ const tabBarEl = tabsRef.current;
22
+ const tabNodeList = tabBarEl.querySelectorAll(".tab-item-title.common");
23
+ const moreTabNode = tabBarEl.querySelector(
24
+ ".tab-item-title.more"
25
+ );
26
+ const moreTabPlacementWidth = getPlacementWidth(moreTabNode);
27
+ tabNodeList.forEach((tab) => tab.classList.remove("__hidden"));
28
+ const maxContentWidth = getPlacementWidth(tabBarEl.parentElement) - getPlacementWidth(extraSlotRef.current) - moreTabPlacementWidth;
29
+ let tabsTotalWidth = 24;
30
+ const hiddenItems = [];
31
+ let endIndex = Infinity;
32
+ for (let i = 0; i < tabNodeList.length; i++) {
33
+ const tab = tabNodeList[i];
34
+ const tabWidth = getPlacementWidth(tab);
35
+ if (maxContentWidth >= tabsTotalWidth + tabWidth) {
36
+ tabsTotalWidth += tabWidth;
37
+ } else {
38
+ endIndex = i;
39
+ break;
40
+ }
41
+ }
42
+ while (endIndex <= tabNodeList.length - 1) {
43
+ tabNodeList[endIndex].classList.add("__hidden");
44
+ hiddenItems.push(tabs[endIndex]);
45
+ endIndex++;
46
+ }
47
+ setMoreTabs((prevMoreTabs) => {
48
+ if (!_.isEqual(hiddenItems, prevMoreTabs)) {
49
+ return hiddenItems;
50
+ }
51
+ return prevMoreTabs;
52
+ });
53
+ }, [tabs, tabsRef, extraSlotRef]);
54
+ React.useEffect(() => {
55
+ doAdapt();
56
+ }, [doAdapt, selectedKey]);
57
+ React.useEffect(() => {
58
+ var _a;
59
+ const parentElement = (_a = tabsRef.current) == null ? void 0 : _a.parentElement;
60
+ if (!parentElement)
61
+ return;
62
+ const resizeObserver = new ResizeObserver(() => {
63
+ doAdapt();
64
+ });
65
+ resizeObserver.observe(parentElement);
66
+ return () => {
67
+ resizeObserver.disconnect();
68
+ };
69
+ }, [doAdapt, tabsRef]);
70
+ return moreTabs;
71
+ };
72
+
73
+ exports.useTabAdaptiveLayout = useTabAdaptiveLayout;