@cloudtower/eagle 481.0.2 → 490.0.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.
- package/dist/cjs/core/Duration/index.js +78 -0
- package/dist/cjs/core/LocalUpload/LocalUpload.hooks.js +66 -0
- package/dist/cjs/core/LocalUpload/LocalUpload.js +103 -0
- package/dist/cjs/core/LocalUpload/LocalUpload.style.js +13 -0
- package/dist/cjs/core/LocalUpload/LocalUpload.widget.js +379 -0
- package/dist/cjs/core/MediumDialog/MediumDialog.js +1 -1
- package/dist/cjs/core/TableForm/AddRowButton.js +2 -1
- package/dist/cjs/core/TableForm/index.js +1 -0
- package/dist/cjs/core/index.js +15 -12
- package/dist/cjs/coreX/Copy/CopyButton.js +40 -0
- package/dist/cjs/coreX/Copy/CopyTooltip.js +66 -0
- package/dist/cjs/coreX/Dialogs/RejectDialog/RejectDialog.js +16 -4
- package/dist/cjs/hooks/useFormatDuration.js +35 -0
- package/dist/cjs/index.js +253 -245
- package/dist/cjs/stats1.html +1 -1
- package/dist/cjs/utils/formatDuration.js +67 -0
- package/dist/components.css +1899 -1722
- package/dist/esm/core/Duration/index.js +72 -0
- package/dist/esm/core/LocalUpload/LocalUpload.hooks.js +63 -0
- package/dist/esm/core/LocalUpload/LocalUpload.js +97 -0
- package/dist/esm/core/LocalUpload/LocalUpload.style.js +10 -0
- package/dist/esm/core/LocalUpload/LocalUpload.widget.js +365 -0
- package/dist/esm/core/MediumDialog/MediumDialog.js +1 -1
- package/dist/esm/core/TableForm/AddRowButton.js +2 -1
- package/dist/esm/core/TableForm/index.js +1 -0
- package/dist/esm/core/index.js +4 -2
- package/dist/esm/coreX/Copy/CopyButton.js +34 -0
- package/dist/esm/coreX/Copy/CopyTooltip.js +59 -0
- package/dist/esm/coreX/Dialogs/RejectDialog/RejectDialog.js +16 -4
- package/dist/esm/hooks/useFormatDuration.js +33 -0
- package/dist/esm/index.js +4 -0
- package/dist/esm/stats1.html +1 -1
- package/dist/esm/utils/formatDuration.js +65 -0
- package/dist/linaria.merged.scss +2144 -1955
- package/dist/src/core/Duration/duration.type.d.ts +42 -0
- package/dist/src/core/Duration/index.d.ts +4 -0
- package/dist/src/core/LocalUpload/LocalUpload.d.ts +15 -0
- package/dist/src/core/LocalUpload/LocalUpload.hooks.d.ts +32 -0
- package/dist/src/core/LocalUpload/LocalUpload.style.d.ts +3 -0
- package/dist/src/core/LocalUpload/LocalUpload.type.d.ts +175 -0
- package/dist/src/core/LocalUpload/LocalUpload.widget.d.ts +23 -0
- package/dist/src/core/LocalUpload/index.d.ts +2 -0
- package/dist/src/core/TableForm/types.d.ts +1 -0
- package/dist/src/core/index.d.ts +5 -0
- package/dist/src/coreX/Copy/CopyButton.d.ts +5 -0
- package/dist/src/coreX/Copy/CopyButton.type.d.ts +8 -0
- package/dist/src/coreX/Copy/CopyTooltip.d.ts +5 -0
- package/dist/src/coreX/Copy/CopyTooltip.typs.d.ts +16 -0
- package/dist/src/coreX/Copy/index.d.ts +2 -0
- package/dist/src/coreX/Dialogs/RejectDialog/RejectDialog.type.d.ts +5 -1
- package/dist/src/coreX/index.d.ts +3 -0
- package/dist/src/hooks/__tests__/useFormatDuration.test.d.ts +1 -0
- package/dist/src/hooks/index.d.ts +1 -0
- package/dist/src/hooks/useFormatDuration.d.ts +31 -0
- package/dist/src/utils/__test__/formatDuration.spec.d.ts +1 -0
- package/dist/src/utils/formatDuration.d.ts +28 -0
- package/dist/src/utils/index.d.ts +1 -0
- package/dist/stories/docs/core/Duration.stories.d.ts +88 -0
- package/dist/stories/docs/core/LocalUpload.stories.d.ts +74 -0
- package/dist/stories/docs/coreX/Copy/CopyButton.stories.d.ts +66 -0
- package/dist/stories/docs/coreX/Copy/CopyTooltip.stories.d.ts +66 -0
- package/dist/stories/docs/coreX/Dialogs/RejectDialog.stories.d.ts +3 -1
- package/dist/style.css +1899 -1722
- package/package.json +6 -4
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { IEmptyProps } from "../../core/Empty";
|
|
3
|
+
import { DurationUnitType, FormatDurationItem } from "../../utils/formatDuration";
|
|
4
|
+
import { RawValue } from "../Units/units.type";
|
|
5
|
+
/**
|
|
6
|
+
* Duration 组件的属性类型
|
|
7
|
+
*/
|
|
8
|
+
export interface DurationProps extends Omit<RawValue, "decimals"> {
|
|
9
|
+
/**
|
|
10
|
+
* 最大展示单位数量,默认为 2
|
|
11
|
+
* @default 2
|
|
12
|
+
* @example
|
|
13
|
+
* maxDisplayUnits={3} // 最多展示 3 个单位,如:1 day 1 hour 1 minute
|
|
14
|
+
*/
|
|
15
|
+
maxDisplayUnits?: number;
|
|
16
|
+
/**
|
|
17
|
+
* 最小展示单位,默认为 "second"(秒)
|
|
18
|
+
* @default "second"
|
|
19
|
+
* @example
|
|
20
|
+
* minUnit="minute" // 最小单位为分钟,秒数会被忽略
|
|
21
|
+
*/
|
|
22
|
+
minUnit?: DurationUnitType;
|
|
23
|
+
/**
|
|
24
|
+
* Empty组件的配置属性
|
|
25
|
+
*/
|
|
26
|
+
emptyProps?: IEmptyProps;
|
|
27
|
+
/**
|
|
28
|
+
* 自定义返回结果的渲染
|
|
29
|
+
* 当提供此函数时,将使用自定义渲染函数来渲染持续时间,而不是使用默认的渲染方式
|
|
30
|
+
* @param parts 格式化后的持续时间数组,每个元素包含 value 和 unit
|
|
31
|
+
* @returns 自定义的 React 节点
|
|
32
|
+
* @example
|
|
33
|
+
* contentRender={(parts) => (
|
|
34
|
+
* <div>
|
|
35
|
+
* {parts.map((part, i) => (
|
|
36
|
+
* <span key={i}>{part.value} {part.unit}</span>
|
|
37
|
+
* ))}
|
|
38
|
+
* </div>
|
|
39
|
+
* )}
|
|
40
|
+
*/
|
|
41
|
+
contentRender?: (parts: FormatDurationItem[]) => React.ReactNode;
|
|
42
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { UploadWrapper } from "./LocalUpload.style";
|
|
3
|
+
import type { LocalUploadProps } from "./LocalUpload.type";
|
|
4
|
+
import { UploadButton, UploadDescription, UploadDragger, UploadFileInfo, UploadFileList, UploadLabel } from "./LocalUpload.widget";
|
|
5
|
+
type UploadComponents = {
|
|
6
|
+
Wrapper: typeof UploadWrapper;
|
|
7
|
+
Label: typeof UploadLabel;
|
|
8
|
+
Description: typeof UploadDescription;
|
|
9
|
+
Button: typeof UploadButton;
|
|
10
|
+
Dragger: typeof UploadDragger;
|
|
11
|
+
FileList: typeof UploadFileList;
|
|
12
|
+
FileInfo: typeof UploadFileInfo;
|
|
13
|
+
};
|
|
14
|
+
export declare const LocalUpload: React.ForwardRefExoticComponent<LocalUploadProps & React.RefAttributes<HTMLDivElement>> & UploadComponents;
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { LocalUploadButtonProps, LocalUploadDraggerProps, LocalUploadFile } from "./LocalUpload.type";
|
|
2
|
+
/**
|
|
3
|
+
* Custom hook to handle file validation automatically.
|
|
4
|
+
* When files with status "need-validate" are detected, it validates them
|
|
5
|
+
* and updates their status based on the validation result.
|
|
6
|
+
*
|
|
7
|
+
* @param options - Configuration options
|
|
8
|
+
* @param options.fileList - Current file list
|
|
9
|
+
* @param options.setFileList - Function to update file list
|
|
10
|
+
* @param options.validate - Validation function
|
|
11
|
+
* @param options.createNewFile - Whether to create a new File object when updating (for immutability)
|
|
12
|
+
*/
|
|
13
|
+
export declare const useFileValidation: ({ fileList, setFileList, validate, createNewFile, }: {
|
|
14
|
+
fileList: LocalUploadFile[];
|
|
15
|
+
setFileList: (files: LocalUploadFile[]) => void;
|
|
16
|
+
validate?: LocalUploadDraggerProps["validate"] | LocalUploadButtonProps["validate"];
|
|
17
|
+
createNewFile?: boolean | undefined;
|
|
18
|
+
}) => void;
|
|
19
|
+
/**
|
|
20
|
+
* Custom hook to clear error message when file count changes and is within the max count limit.
|
|
21
|
+
* This hook tracks file count changes using a ref to avoid unnecessary updates.
|
|
22
|
+
*
|
|
23
|
+
* @param options - Configuration options
|
|
24
|
+
* @param options.fileList - Current file list
|
|
25
|
+
* @param options.maxCount - Maximum allowed file count
|
|
26
|
+
* @param options.setError - Function to set error message
|
|
27
|
+
*/
|
|
28
|
+
export declare const useFileCountErrorClear: ({ fileList, maxCount, setError, }: {
|
|
29
|
+
fileList: LocalUploadFile[];
|
|
30
|
+
maxCount: number;
|
|
31
|
+
setError: (error: string) => void;
|
|
32
|
+
}) => void;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
export declare const UploadWrapper: import("@linaria/react").StyledComponent<import("react").ClassAttributes<HTMLDivElement> & import("react").HTMLAttributes<HTMLDivElement> & Record<never, unknown>>;
|
|
3
|
+
export declare const FileInfoWrapperStyle: import("@linaria/core").LinariaClassName;
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { AntdRcFile, AntdUploadProps } from "../../antd";
|
|
3
|
+
/**
|
|
4
|
+
* 上传文件对象
|
|
5
|
+
* 继承自 Antd 的 RcFile,并添加额外的状态和错误信息
|
|
6
|
+
*/
|
|
7
|
+
export interface LocalUploadFile extends AntdRcFile {
|
|
8
|
+
/** 文件唯一标识 */
|
|
9
|
+
uid: string;
|
|
10
|
+
/** 文件大小(字节) */
|
|
11
|
+
size: number;
|
|
12
|
+
/** 文件名 */
|
|
13
|
+
name: string;
|
|
14
|
+
/** 文件类型 */
|
|
15
|
+
type: string;
|
|
16
|
+
/** 备用文件名 */
|
|
17
|
+
fileName?: string | undefined;
|
|
18
|
+
/** 文件状态 */
|
|
19
|
+
fileStatus: "error" | "success" | "need-validate" | "validating";
|
|
20
|
+
/** 自定义数据 */
|
|
21
|
+
data?: any;
|
|
22
|
+
/** 错误信息 */
|
|
23
|
+
error?: string | null;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* 文件接受类型
|
|
27
|
+
* 限制只能是以 . 开头的文件扩展名
|
|
28
|
+
*/
|
|
29
|
+
export type LocalUploadAccept = `.${string}`;
|
|
30
|
+
/**
|
|
31
|
+
* 上传按钮属性
|
|
32
|
+
*/
|
|
33
|
+
export type LocalUploadButtonProps = Pick<AntdUploadProps, "accept" | "multiple" | "disabled"> & {
|
|
34
|
+
/** 自定义类名 */
|
|
35
|
+
className?: string;
|
|
36
|
+
/** 是否隐藏图标 */
|
|
37
|
+
hideIcon?: boolean;
|
|
38
|
+
/** 文件列表 */
|
|
39
|
+
fileList: LocalUploadFile[];
|
|
40
|
+
/** 设置文件列表 */
|
|
41
|
+
setFileList: (files: LocalUploadFile[]) => void;
|
|
42
|
+
/** 最大文件数量 */
|
|
43
|
+
maxCount?: number;
|
|
44
|
+
/**
|
|
45
|
+
* 文件验证函数
|
|
46
|
+
* @param file 当前文件
|
|
47
|
+
* @param files 文件列表
|
|
48
|
+
* @returns 返回包含错误信息或自定义数据的 Promise
|
|
49
|
+
*/
|
|
50
|
+
validate?: (file: LocalUploadFile, files?: LocalUploadFile[]) => Promise<{
|
|
51
|
+
error?: string;
|
|
52
|
+
data?: any;
|
|
53
|
+
}>;
|
|
54
|
+
};
|
|
55
|
+
/**
|
|
56
|
+
* 拖拽上传属性
|
|
57
|
+
*/
|
|
58
|
+
export type LocalUploadDraggerProps = Pick<AntdUploadProps, "accept" | "multiple" | "disabled"> & {
|
|
59
|
+
/** 自定义类名 */
|
|
60
|
+
className?: string;
|
|
61
|
+
/** 文件列表 */
|
|
62
|
+
fileList: LocalUploadFile[];
|
|
63
|
+
/** 设置文件列表 */
|
|
64
|
+
setFileList: (files: LocalUploadFile[]) => void;
|
|
65
|
+
/** 最大文件数量 */
|
|
66
|
+
maxCount?: number;
|
|
67
|
+
/**
|
|
68
|
+
* 文件验证函数
|
|
69
|
+
* @param file 当前文件
|
|
70
|
+
* @param files 文件列表
|
|
71
|
+
* @returns 返回包含错误信息或自定义数据的 Promise
|
|
72
|
+
*/
|
|
73
|
+
validate?: (file: LocalUploadFile, files?: LocalUploadFile[]) => Promise<{
|
|
74
|
+
error?: string;
|
|
75
|
+
data?: any;
|
|
76
|
+
}>;
|
|
77
|
+
};
|
|
78
|
+
/**
|
|
79
|
+
* 文件列表属性
|
|
80
|
+
*/
|
|
81
|
+
export type LocalUploadFileListProps = {
|
|
82
|
+
/** 自定义类名 */
|
|
83
|
+
className?: string;
|
|
84
|
+
/** 文件列表 */
|
|
85
|
+
fileList: LocalUploadFile[];
|
|
86
|
+
/** 列表展示类型 */
|
|
87
|
+
type?: "list" | "info";
|
|
88
|
+
/** 移除文件回调 */
|
|
89
|
+
removeFile: (id: string) => void;
|
|
90
|
+
/** 是否禁用移除操作 */
|
|
91
|
+
disableRemove?: boolean;
|
|
92
|
+
/** 文件移除事件回调 */
|
|
93
|
+
onRemove?: (file: LocalUploadFile) => void;
|
|
94
|
+
};
|
|
95
|
+
/**
|
|
96
|
+
* 文件信息展示属性
|
|
97
|
+
*/
|
|
98
|
+
export type LocalUploadFileInfoProps = {
|
|
99
|
+
/** 文件对象 */
|
|
100
|
+
file: {
|
|
101
|
+
/** 文件状态 */
|
|
102
|
+
fileStatus?: "error" | "success" | "need-validate" | "validating";
|
|
103
|
+
/** 文件名 */
|
|
104
|
+
name: string;
|
|
105
|
+
/** 备用文件名 */
|
|
106
|
+
fileName?: string;
|
|
107
|
+
/** 文件大小 */
|
|
108
|
+
size?: number;
|
|
109
|
+
/** 文件唯一标识 */
|
|
110
|
+
uid?: string;
|
|
111
|
+
/** 错误信息 */
|
|
112
|
+
error?: string | null;
|
|
113
|
+
};
|
|
114
|
+
/** 移除文件回调 */
|
|
115
|
+
removeFile: (id: string) => void;
|
|
116
|
+
/** 是否禁用 */
|
|
117
|
+
disabled?: boolean;
|
|
118
|
+
/** 文件移除事件回调 */
|
|
119
|
+
onRemove?: (file: LocalUploadFile) => void;
|
|
120
|
+
};
|
|
121
|
+
/**
|
|
122
|
+
* Upload 组件属性
|
|
123
|
+
*/
|
|
124
|
+
export type LocalUploadProps = {
|
|
125
|
+
/** 自定义类名 */
|
|
126
|
+
className?: string;
|
|
127
|
+
/** 标签 */
|
|
128
|
+
label?: React.ReactNode;
|
|
129
|
+
/** 描述文本 */
|
|
130
|
+
description?: React.ReactNode;
|
|
131
|
+
/** 额外信息 */
|
|
132
|
+
info?: React.ReactNode;
|
|
133
|
+
/** 上传类型:按钮或拖拽 */
|
|
134
|
+
type?: "button" | "dragger";
|
|
135
|
+
/** 列表展示类型 */
|
|
136
|
+
listType?: "list" | "info";
|
|
137
|
+
/** 是否支持多选 */
|
|
138
|
+
multiple?: boolean;
|
|
139
|
+
/** 接受的文件类型 */
|
|
140
|
+
accept?: LocalUploadAccept;
|
|
141
|
+
/** 是否禁用 */
|
|
142
|
+
disabled?: boolean;
|
|
143
|
+
/** 最大文件数量 */
|
|
144
|
+
maxCount?: number;
|
|
145
|
+
/** 文件列表 */
|
|
146
|
+
fileList: LocalUploadFile[];
|
|
147
|
+
/** 设置文件列表 */
|
|
148
|
+
setFileList: (files: LocalUploadFile[]) => void;
|
|
149
|
+
/** 是否禁用文件列表的移除功能 */
|
|
150
|
+
disableRemoveList?: boolean;
|
|
151
|
+
/**
|
|
152
|
+
* 文件验证函数
|
|
153
|
+
* @param file 当前文件
|
|
154
|
+
* @param files 文件列表
|
|
155
|
+
* @returns 返回包含错误信息或自定义数据的 Promise
|
|
156
|
+
*
|
|
157
|
+
* @example
|
|
158
|
+
* ```ts
|
|
159
|
+
* const validate = async (file: LocalUploadFile) => {
|
|
160
|
+
* if (file.size > 5 * 1024 * 1024) {
|
|
161
|
+
* return { error: "文件大小不能超过 5MB" };
|
|
162
|
+
* }
|
|
163
|
+
* return { data: { validated: true } };
|
|
164
|
+
* };
|
|
165
|
+
* ```
|
|
166
|
+
*/
|
|
167
|
+
validate?: (file: LocalUploadFile, files?: LocalUploadFile[]) => Promise<{
|
|
168
|
+
error?: string;
|
|
169
|
+
data?: any;
|
|
170
|
+
}>;
|
|
171
|
+
/** 按钮属性 */
|
|
172
|
+
buttonProps?: Pick<LocalUploadButtonProps, "className" | "hideIcon">;
|
|
173
|
+
/** 文件移除事件回调 */
|
|
174
|
+
onRemove?: (file: LocalUploadFile) => void;
|
|
175
|
+
};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import type { LocalUploadButtonProps, LocalUploadDraggerProps, LocalUploadFile, LocalUploadFileInfoProps, LocalUploadFileListProps } from "./LocalUpload.type";
|
|
3
|
+
export declare const UploadLabel: React.FC<{
|
|
4
|
+
className?: string;
|
|
5
|
+
children?: React.ReactNode;
|
|
6
|
+
}>;
|
|
7
|
+
export declare const UploadDescription: React.FC<{
|
|
8
|
+
className?: string;
|
|
9
|
+
children?: React.ReactNode;
|
|
10
|
+
}>;
|
|
11
|
+
export declare const UploadButton: React.FC<LocalUploadButtonProps & {
|
|
12
|
+
children?: React.ReactNode;
|
|
13
|
+
}>;
|
|
14
|
+
export declare const UploadDragger: React.FC<LocalUploadDraggerProps & {
|
|
15
|
+
children?: React.ReactNode;
|
|
16
|
+
}>;
|
|
17
|
+
export declare const UploadFileInfo: React.FC<LocalUploadFileInfoProps>;
|
|
18
|
+
export declare const FileListItem: React.FC<{
|
|
19
|
+
file: LocalUploadFile;
|
|
20
|
+
removeFile: (id: string) => void;
|
|
21
|
+
onRemove?: (file: LocalUploadFile) => void;
|
|
22
|
+
}>;
|
|
23
|
+
export declare const UploadFileList: React.FC<LocalUploadFileListProps>;
|
package/dist/src/core/index.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
1
2
|
export * from "./AccordionCard";
|
|
2
3
|
export * from "./Alert";
|
|
3
4
|
export * from "./Antd5Anchor";
|
|
@@ -28,6 +29,7 @@ export * from "./DeprecatedProgress";
|
|
|
28
29
|
export * from "./DetailCard";
|
|
29
30
|
export * from "./DonutChart";
|
|
30
31
|
export * from "./DropdownMenu";
|
|
32
|
+
export * from "./Duration";
|
|
31
33
|
export * from "./Empty";
|
|
32
34
|
export * from "./ErrorBoundary";
|
|
33
35
|
export * from "./ExpandableList";
|
|
@@ -51,6 +53,7 @@ export * from "./Legend";
|
|
|
51
53
|
export * from "./LineChart";
|
|
52
54
|
export * from "./Link";
|
|
53
55
|
export * from "./Loading";
|
|
56
|
+
export * from "./LocalUpload";
|
|
54
57
|
export * from "./MediumDialog";
|
|
55
58
|
export * from "./message";
|
|
56
59
|
export * from "./message-group";
|
|
@@ -102,6 +105,7 @@ export declare const units: {
|
|
|
102
105
|
BitPerSecond: import("./Units").UnitFn;
|
|
103
106
|
Bit: import("./Units").UnitFn;
|
|
104
107
|
Second: import("./Units").UnitFn;
|
|
108
|
+
Duration: import("react").FC<import("./Duration/duration.type").DurationProps>;
|
|
105
109
|
};
|
|
106
110
|
export { units as Units };
|
|
107
111
|
export { default as AccordionCard } from "./AccordionCard";
|
|
@@ -127,6 +131,7 @@ export { default as DeprecatedProgress } from "./DeprecatedProgress";
|
|
|
127
131
|
export { default as DetailCard } from "./DetailCard";
|
|
128
132
|
export { default as DonutChart } from "./DonutChart";
|
|
129
133
|
export { default as DropdownMenu } from "./DropdownMenu";
|
|
134
|
+
export { default as Duration } from "./Duration";
|
|
130
135
|
export { default as Empty } from "./Empty";
|
|
131
136
|
export { default as Error } from "./Error";
|
|
132
137
|
export { default as ErrorBoundary } from "./ErrorBoundary";
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { TooltipProps } from "../../core/Tooltip";
|
|
3
|
+
export interface CopyTooltipProps {
|
|
4
|
+
/** 复制文本 */
|
|
5
|
+
text: string;
|
|
6
|
+
/** 复制前提示文本 */
|
|
7
|
+
beforeTooltip?: string;
|
|
8
|
+
/** 复制后提示文本 */
|
|
9
|
+
afterTooltip?: string;
|
|
10
|
+
/** Tooltip 组件的属性 */
|
|
11
|
+
tooltipProps?: Omit<TooltipProps, "title">;
|
|
12
|
+
/** 子元素 */
|
|
13
|
+
children?: React.ReactNode;
|
|
14
|
+
/** 自定义类名 */
|
|
15
|
+
className?: string;
|
|
16
|
+
}
|
|
@@ -33,7 +33,11 @@ interface SingleRejectDialogProps extends BaseRejectDialogProps {
|
|
|
33
33
|
/** 拒绝原因,可以是单个字符串或字符串数组 */
|
|
34
34
|
content: string | string[];
|
|
35
35
|
/** 列表类型 */
|
|
36
|
-
listType?: "ordered" | "unordered";
|
|
36
|
+
listType?: "ordered" | "unordered" | "resource";
|
|
37
|
+
/** 灰色的进一步描述 */
|
|
38
|
+
secondaryDesc?: React.ReactNode;
|
|
39
|
+
/** 资源图标 */
|
|
40
|
+
resourceIcon?: React.ReactNode;
|
|
37
41
|
}
|
|
38
42
|
interface MultiAllRejectDialogProps extends BaseRejectDialogProps {
|
|
39
43
|
type: RejectDialogType.All;
|
|
@@ -4,6 +4,7 @@ export * from "./ChartWithTooltip";
|
|
|
4
4
|
export * from "./CheckPointList";
|
|
5
5
|
export * from "./CircleLoading";
|
|
6
6
|
export * from "./common";
|
|
7
|
+
export * from "./Copy";
|
|
7
8
|
export * from "./Counting";
|
|
8
9
|
export * from "./CronCalendar";
|
|
9
10
|
export * from "./CronPlan";
|
|
@@ -30,6 +31,8 @@ export { default as BarChart } from "./BarChart";
|
|
|
30
31
|
export { default as BatchOperation } from "./BatchOperation";
|
|
31
32
|
export { default as ChartWithTooltip } from "./ChartWithTooltip";
|
|
32
33
|
export { default as CircleLoading } from "./CircleLoading";
|
|
34
|
+
export { default as CopyButton } from "./Copy/CopyButton";
|
|
35
|
+
export { default as CopyTooltip } from "./Copy/CopyTooltip";
|
|
33
36
|
export { default as Counting } from "./Counting";
|
|
34
37
|
export { default as CronCalendar } from "./CronCalendar";
|
|
35
38
|
export { default as CronPlan } from "./CronPlan";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { DurationUnitType } from "../utils/formatDuration";
|
|
2
|
+
/**
|
|
3
|
+
* 格式化持续时间的结果项,可用于 ParrotTrans 组件
|
|
4
|
+
*/
|
|
5
|
+
export interface FormatDurationPart {
|
|
6
|
+
value: number;
|
|
7
|
+
unit: DurationUnitType;
|
|
8
|
+
i18nKey: string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* 格式化持续时间的 Hook
|
|
12
|
+
* @param milliseconds 毫秒数
|
|
13
|
+
* @param options 配置选项
|
|
14
|
+
* @param options.maxDisplayUnits 最大展示单位数量,默认为 2
|
|
15
|
+
* @param options.useAbbreviation 是否使用简写表述,默认为 false。注意:当仅展示一个单位时,会自动使用全称(忽略此参数)
|
|
16
|
+
* @param options.minUnit 最小展示单位,默认为 "second"(秒),不满足进位逻辑的剩余时间会被忽略
|
|
17
|
+
* @returns 格式化后的持续时间数组,每个元素包含可用于 ParrotTrans 的信息
|
|
18
|
+
* @example
|
|
19
|
+
* const { parts } = useFormatDuration(3661000);
|
|
20
|
+
* // parts: [
|
|
21
|
+
* // { value: 1, unit: "hour", i18nKey: "unit.hour" },
|
|
22
|
+
* // { value: 1, unit: "minute", i18nKey: "unit.minute" }
|
|
23
|
+
* // ]
|
|
24
|
+
*/
|
|
25
|
+
export declare function useFormatDuration(milliseconds: number, options?: {
|
|
26
|
+
maxDisplayUnits?: number;
|
|
27
|
+
useAbbreviation?: boolean;
|
|
28
|
+
minUnit?: DurationUnitType;
|
|
29
|
+
}): {
|
|
30
|
+
parts: FormatDurationPart[];
|
|
31
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 持续时间单位联合类型
|
|
3
|
+
*/
|
|
4
|
+
export type DurationUnitType = "year" | "month" | "week" | "day" | "hour" | "minute" | "second" | "millisecond";
|
|
5
|
+
/**
|
|
6
|
+
* 格式化持续时间的结果项
|
|
7
|
+
*/
|
|
8
|
+
export interface FormatDurationItem {
|
|
9
|
+
value: number;
|
|
10
|
+
unit: DurationUnitType;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* 格式化持续时间
|
|
14
|
+
* @param milliseconds 毫秒数
|
|
15
|
+
* @param options 配置选项
|
|
16
|
+
* @param options.maxDisplayUnits 最大展示单位数量,默认为 2
|
|
17
|
+
* @param options.minUnit 最小展示单位,默认为 "second"(秒),不满足进位逻辑的剩余时间会被忽略
|
|
18
|
+
* @returns 格式化后的持续时间数组,每个元素包含数值和单位
|
|
19
|
+
* @example
|
|
20
|
+
* formatDuration(3661000) // [{ value: 1, unit: "hour" }, { value: 1, unit: "minute" }]
|
|
21
|
+
* formatDuration(90061000, { maxDisplayUnits: 3 }) // [{ value: 1, unit: "day" }, { value: 1, unit: "hour" }, { value: 1, unit: "minute" }]
|
|
22
|
+
* formatDuration(5000) // [{ value: 5, unit: "second" }]
|
|
23
|
+
* formatDuration(1500, { minUnit: "second" }) // [{ value: 1, unit: "second" }] (500ms 被忽略)
|
|
24
|
+
*/
|
|
25
|
+
export declare function formatDuration(milliseconds: number, options?: {
|
|
26
|
+
maxDisplayUnits?: number;
|
|
27
|
+
minUnit?: DurationUnitType;
|
|
28
|
+
}): FormatDurationItem[];
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import Duration from "../../../src/core/Duration";
|
|
2
|
+
import { StoryObj } from "@storybook/react";
|
|
3
|
+
import React from "react";
|
|
4
|
+
/**
|
|
5
|
+
* * Duration 组件
|
|
6
|
+
* * 用于展示持续时间(毫秒),支持多个时间单位的组合展示
|
|
7
|
+
* * 提供标准、缩写和自定义空值展示等功能
|
|
8
|
+
* * 继承自基础的 Units 系列组件
|
|
9
|
+
*/
|
|
10
|
+
declare const meta: {
|
|
11
|
+
title: string;
|
|
12
|
+
component: React.FC<import("../../../src/core/Duration/duration.type").DurationProps>;
|
|
13
|
+
parameters: {
|
|
14
|
+
docs: {
|
|
15
|
+
description: {
|
|
16
|
+
component: string;
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
tags: string[];
|
|
21
|
+
};
|
|
22
|
+
export default meta;
|
|
23
|
+
type Story = StoryObj<typeof Duration>;
|
|
24
|
+
/**
|
|
25
|
+
* 基础持续时间展示
|
|
26
|
+
* 展示最基本的持续时间,默认展示最多 2 个单位
|
|
27
|
+
*/
|
|
28
|
+
export declare const Basic: Story;
|
|
29
|
+
/**
|
|
30
|
+
* 多单位展示
|
|
31
|
+
* 展示多个时间单位,如:1天 1小时 1分钟
|
|
32
|
+
*/
|
|
33
|
+
export declare const MultipleUnits: Story;
|
|
34
|
+
/**
|
|
35
|
+
* 缩写形式展示
|
|
36
|
+
* 当需要节省空间时,可以使用缩写形式展示持续时间
|
|
37
|
+
*/
|
|
38
|
+
export declare const Abbreviated: Story;
|
|
39
|
+
/**
|
|
40
|
+
* 指定最小单位
|
|
41
|
+
* 可以指定最小展示单位,小于该单位的时间会被忽略
|
|
42
|
+
*/
|
|
43
|
+
export declare const WithMinUnit: Story;
|
|
44
|
+
/**
|
|
45
|
+
* 单单位展示
|
|
46
|
+
* 只展示一个时间单位
|
|
47
|
+
*/
|
|
48
|
+
export declare const SingleUnit: Story;
|
|
49
|
+
/**
|
|
50
|
+
* 大数值展示
|
|
51
|
+
* 展示较大的持续时间,如:1年 1个月
|
|
52
|
+
*/
|
|
53
|
+
export declare const LargeValue: Story;
|
|
54
|
+
/**
|
|
55
|
+
* 自定义空值展示
|
|
56
|
+
* 当没有有效值时的自定义展示
|
|
57
|
+
*/
|
|
58
|
+
export declare const CustomEmpty: Story;
|
|
59
|
+
/**
|
|
60
|
+
* 零值展示
|
|
61
|
+
* 展示零值的情况
|
|
62
|
+
*/
|
|
63
|
+
export declare const ZeroValue: Story;
|
|
64
|
+
/**
|
|
65
|
+
* 零值不带单位
|
|
66
|
+
* 当值为0时,可以选择不显示单位
|
|
67
|
+
*/
|
|
68
|
+
export declare const ZeroWithoutUnit: Story;
|
|
69
|
+
/**
|
|
70
|
+
* 自定义样式
|
|
71
|
+
* 可以通过自定义类名来调整展示样式
|
|
72
|
+
*/
|
|
73
|
+
export declare const CustomStyle: Story;
|
|
74
|
+
/**
|
|
75
|
+
* 自定义渲染
|
|
76
|
+
* 使用 contentRender 自定义渲染方式
|
|
77
|
+
*/
|
|
78
|
+
export declare const CustomRender: Story;
|
|
79
|
+
/**
|
|
80
|
+
* 自定义渲染 - 简洁格式
|
|
81
|
+
* 使用自定义渲染函数展示更简洁的格式
|
|
82
|
+
*/
|
|
83
|
+
export declare const CustomRenderCompact: Story;
|
|
84
|
+
/**
|
|
85
|
+
* 复杂场景组合
|
|
86
|
+
* 展示多个配置项的组合使用
|
|
87
|
+
*/
|
|
88
|
+
export declare const Complex: Story;
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { LocalUpload } from "../../../src/core/LocalUpload";
|
|
2
|
+
import { Meta, StoryObj } from "@storybook/react";
|
|
3
|
+
/**
|
|
4
|
+
* LocalUpload 组件用于本地文件上传,支持按钮上传和拖拽上传两种方式。
|
|
5
|
+
*
|
|
6
|
+
* ## 功能特点
|
|
7
|
+
* - 支持单文件和多文件上传
|
|
8
|
+
* - 支持拖拽上传
|
|
9
|
+
* - 支持文件验证
|
|
10
|
+
* - 支持上传进度展示
|
|
11
|
+
* - 支持错误提示
|
|
12
|
+
*/
|
|
13
|
+
declare const meta: Meta<typeof LocalUpload>;
|
|
14
|
+
export default meta;
|
|
15
|
+
type Story = StoryObj<typeof LocalUpload>;
|
|
16
|
+
/**
|
|
17
|
+
* 基础的拖拽上传示例
|
|
18
|
+
* 点击或拖拽文件到上传区域即可上传
|
|
19
|
+
*/
|
|
20
|
+
export declare const BasicDragger: Story;
|
|
21
|
+
/**
|
|
22
|
+
* 单文件拖拽上传
|
|
23
|
+
* 只允许选择一个文件,选择新文件会替换旧文件
|
|
24
|
+
*/
|
|
25
|
+
export declare const SingleFileDragger: Story;
|
|
26
|
+
/**
|
|
27
|
+
* 按钮上传示例
|
|
28
|
+
* 使用按钮触发文件选择对话框
|
|
29
|
+
*/
|
|
30
|
+
export declare const ButtonUpload: Story;
|
|
31
|
+
/**
|
|
32
|
+
* 限制文件数量
|
|
33
|
+
* 最多只能上传指定数量的文件
|
|
34
|
+
*/
|
|
35
|
+
export declare const MaxCountUpload: Story;
|
|
36
|
+
/**
|
|
37
|
+
* 带文件类型限制的上传
|
|
38
|
+
* 只允许上传指定类型的文件
|
|
39
|
+
*/
|
|
40
|
+
export declare const AcceptTypeUpload: Story;
|
|
41
|
+
/**
|
|
42
|
+
* 带文件验证的上传
|
|
43
|
+
* 可以自定义文件验证逻辑,验证失败会显示错误信息
|
|
44
|
+
*/
|
|
45
|
+
export declare const ValidatedUpload: Story;
|
|
46
|
+
/**
|
|
47
|
+
* 禁用状态
|
|
48
|
+
* 禁用后无法进行文件上传操作
|
|
49
|
+
*/
|
|
50
|
+
export declare const DisabledUpload: Story;
|
|
51
|
+
/**
|
|
52
|
+
* 预填充文件
|
|
53
|
+
*/
|
|
54
|
+
export declare const WithPrefilledFiles: Story;
|
|
55
|
+
/**
|
|
56
|
+
* List 类型文件列表
|
|
57
|
+
* 使用标准列表展示文件,包含文件名、文件大小、文件状态等信息
|
|
58
|
+
*/
|
|
59
|
+
export declare const ListTypeList: Story;
|
|
60
|
+
/**
|
|
61
|
+
* Info 类型文件列表
|
|
62
|
+
* 以 Info 形式展示文件信息,包含文件名、文件大小、文件状态等信息
|
|
63
|
+
*/
|
|
64
|
+
export declare const InfoListType: Story;
|
|
65
|
+
/**
|
|
66
|
+
* 自定义按钮样式
|
|
67
|
+
* 可以隐藏图标或添加自定义类名
|
|
68
|
+
*/
|
|
69
|
+
export declare const CustomButtonStyle: Story;
|
|
70
|
+
/**
|
|
71
|
+
* 文件移除回调
|
|
72
|
+
* 监听文件移除事件
|
|
73
|
+
*/
|
|
74
|
+
export declare const WithRemoveCallback: Story;
|