x-next 1.5.0 → 1.7.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/AI_USAGE.md +57 -4
- package/CHANGELOG.md +72 -0
- package/dist/_utils/color.d.ts +53 -0
- package/dist/components/color-picker/ColorPicker.d.ts +239 -0
- package/dist/components/color-picker/gradient-slider.d.ts +52 -0
- package/dist/components/color-picker/index.d.ts +238 -0
- package/dist/components/color-picker/panel.d.ts +721 -0
- package/dist/components/color-picker/sv-panel.d.ts +48 -0
- package/dist/components/date-picker/DatePicker.vue.d.ts +3 -3
- package/dist/components/date-picker/index.d.ts +6 -6
- package/dist/components/draggable/Draggable.d.ts +1 -1
- package/dist/components/draggable/index.d.ts +2 -2
- package/dist/components/drawer/index.d.ts +6 -6
- package/dist/components/drawer/src/Drawer.vue.d.ts +3 -3
- package/dist/components/dropdown/Dropdown.vue.d.ts +34 -4
- package/dist/components/dropdown/DropdownButton.vue.d.ts +35 -5
- package/dist/components/dropdown/DropdownSubmenu.vue.d.ts +34 -4
- package/dist/components/dropdown/dropdown-panel.vue.d.ts +30 -0
- package/dist/components/dropdown/index.d.ts +209 -29
- package/dist/components/form/FormItem.vue.d.ts +12 -12
- package/dist/components/form/form-item-label.vue.d.ts +3 -3
- package/dist/components/form/index.d.ts +24 -24
- package/dist/components/form-select/Select.d.ts +3 -3
- package/dist/components/form-select/SelectDropdown.vue.d.ts +30 -0
- package/dist/components/form-select/index.d.ts +66 -6
- package/dist/components/form-slider/Slider.vue.d.ts +3 -3
- package/dist/components/form-slider/index.d.ts +6 -6
- package/dist/components/form-slider/slider-button.vue.d.ts +3 -3
- package/dist/components/grid/Row.vue.d.ts +3 -3
- package/dist/components/grid/index.d.ts +9 -9
- package/dist/components/heatmap/Heatmap.d.ts +311 -0
- package/dist/components/heatmap/helpers/matrix.d.ts +58 -0
- package/dist/components/heatmap/index.d.ts +372 -0
- package/dist/components/heatmap/interface.d.ts +57 -0
- package/dist/components/image/Image.vue.d.ts +125 -17
- package/dist/components/image/ImagePreview.vue.d.ts +97 -7
- package/dist/components/image/ImagePreviewAction.d.ts +3 -3
- package/dist/components/image/ImagePreviewGroup.vue.d.ts +100 -7
- package/dist/components/image/hooks/use-image-drag.d.ts +2 -2
- package/dist/components/image/index.d.ts +712 -124
- package/dist/components/image/interface.d.ts +9 -1
- package/dist/components/image/preview-toolbar.vue.d.ts +3 -3
- package/dist/components/index.d.ts +3 -0
- package/dist/components/menu/sub-menu-pop.vue.d.ts +3 -3
- package/dist/components/network/Network.vue.d.ts +1 -1
- package/dist/components/network/index.d.ts +3 -3
- package/dist/components/network/utils.d.ts +2 -0
- package/dist/components/pagination/page-item-ellipsis.vue.d.ts +9 -0
- package/dist/components/pagination/page-jumper.vue.d.ts +6 -0
- package/dist/components/pagination/page-options.vue.d.ts +6 -6
- package/dist/components/popconfirm/src/popup.vue.d.ts +3 -3
- package/dist/components/popover/Popover.d.ts +1 -1
- package/dist/components/popover/index.d.ts +3 -3
- package/dist/components/popup/Popup.d.ts +1 -1
- package/dist/components/popup/index.d.ts +3 -3
- package/dist/components/skeleton/SkeletonShape.vue.d.ts +3 -3
- package/dist/components/skeleton/index.d.ts +6 -6
- package/dist/components/space/Space.d.ts +1 -1
- package/dist/components/space/index.d.ts +3 -3
- package/dist/components/spin/Spin.d.ts +38 -0
- package/dist/components/spin/index.d.ts +30 -0
- package/dist/components/table/Table.d.ts +1 -1
- package/dist/components/table/index.d.ts +3 -3
- package/dist/components/tabs/Tabs.d.ts +1 -1
- package/dist/components/tabs/index.d.ts +3 -3
- package/dist/components/time-picker/TimePicker.vue.d.ts +3 -3
- package/dist/components/time-picker/index.d.ts +6 -6
- package/dist/components/tooltip/Tooltip.vue.d.ts +1 -1
- package/dist/components/tooltip/index.d.ts +3 -3
- package/dist/components/trigger/Trigger.d.ts +1 -1
- package/dist/components/trigger/index.d.ts +3 -3
- package/dist/components/upload/Upload.d.ts +372 -0
- package/dist/components/upload/context.d.ts +28 -0
- package/dist/components/upload/index.d.ts +656 -0
- package/dist/components/upload/interface.d.ts +110 -0
- package/dist/components/upload/props.d.ts +321 -0
- package/dist/components/upload/upload-list-item.d.ts +15 -0
- package/dist/components/upload/upload-list.d.ts +11 -0
- package/dist/components/upload/upload-picture-item.d.ts +20 -0
- package/dist/components/upload/upload-trigger.d.ts +8 -0
- package/dist/components/upload/utils.d.ts +48 -0
- package/dist/components/watermark/Watermark.d.ts +1 -1
- package/dist/components/watermark/index.d.ts +3 -3
- package/dist/es/_styles/palette-aliases.js +10 -4
- package/dist/es/_utils/color.js +73 -0
- package/dist/es/components/button/Button.js +2 -2
- package/dist/es/components/color-picker/ColorPicker.js +239 -0
- package/dist/es/components/color-picker/gradient-slider.js +79 -0
- package/dist/es/components/color-picker/index.js +8 -0
- package/dist/es/components/color-picker/panel.js +307 -0
- package/dist/es/components/color-picker/sv-panel.js +99 -0
- package/dist/es/components/dropdown/dropdown-panel.vue.js +17 -17
- package/dist/es/components/form-input/Input.js +7 -7
- package/dist/es/components/form-input/InputPassword.vue2.js +2 -2
- package/dist/es/components/form-input/InputSearch.js +2 -2
- package/dist/es/components/form-input-number/InputNumber.js +12 -12
- package/dist/es/components/heatmap/Heatmap.js +334 -0
- package/dist/es/components/heatmap/helpers/matrix.js +106 -0
- package/dist/es/components/heatmap/index.js +8 -0
- package/dist/es/components/image/Image.vue.js +55 -45
- package/dist/es/components/image/Image.vue2.js +113 -92
- package/dist/es/components/image/ImagePreview.vue.js +66 -53
- package/dist/es/components/image/ImagePreview.vue2.js +219 -171
- package/dist/es/components/image/ImagePreviewAction.js +12 -15
- package/dist/es/components/image/ImagePreviewGroup.vue.js +21 -20
- package/dist/es/components/image/ImagePreviewGroup.vue2.js +45 -39
- package/dist/es/components/image/hooks/use-image-drag.js +16 -14
- package/dist/es/components/index.js +123 -117
- package/dist/es/components/menu/sub-menu-pop.vue2.js +12 -12
- package/dist/es/components/network/Network.vue2.js +72 -72
- package/dist/es/components/network/utils.js +44 -35
- package/dist/es/components/pagination/Pagination.js +113 -104
- package/dist/es/components/pagination/page-item-ellipsis.vue.js +13 -12
- package/dist/es/components/pagination/page-item-ellipsis.vue2.js +19 -15
- package/dist/es/components/pagination/page-jumper.vue.js +13 -12
- package/dist/es/components/pagination/page-jumper.vue2.js +7 -4
- package/dist/es/components/pagination/page-options.vue.js +4 -3
- package/dist/es/components/pagination/page-options.vue2.js +17 -15
- package/dist/es/components/skeleton/Skeleton.vue.js +11 -9
- package/dist/es/components/skeleton/SkeletonLine.vue.js +9 -8
- package/dist/es/components/skeleton/SkeletonShape.vue.js +8 -7
- package/dist/es/components/spin/Spin.js +124 -60
- package/dist/es/components/table/Table.js +3 -1
- package/dist/es/components/trigger/Trigger.js +19 -19
- package/dist/es/components/upload/Upload.js +420 -0
- package/dist/es/components/upload/context.js +4 -0
- package/dist/es/components/upload/index.js +8 -0
- package/dist/es/components/upload/props.js +321 -0
- package/dist/es/components/upload/upload-list-item.js +138 -0
- package/dist/es/components/upload/upload-list.js +48 -0
- package/dist/es/components/upload/upload-picture-item.js +109 -0
- package/dist/es/components/upload/upload-trigger.js +89 -0
- package/dist/es/components/upload/utils.js +195 -0
- package/dist/es/icons/_self/empty-better.js +25 -8
- package/dist/es/icons/_self/upload-icons.js +103 -0
- package/dist/es/index.js +168 -162
- package/dist/es/locale/en-US.js +39 -1
- package/dist/es/locale/zh-CN.js +39 -1
- package/dist/es/style.css +1 -1
- package/dist/icons/_self/upload-icons.d.ts +523 -0
- package/dist/index.cjs +4 -4
- package/dist/index.umd.js +4 -4
- package/dist/locale/interface.d.ts +60 -0
- package/dist/style/base.css +1 -1
- package/dist/style/button.css +1 -1
- package/dist/style/color-picker.css +1 -0
- package/dist/style/color-picker.js +2 -0
- package/dist/style/date-picker.css +1 -1
- package/dist/style/empty.css +1 -1
- package/dist/style/form-checkbox.css +1 -1
- package/dist/style/form-input-tag.css +1 -1
- package/dist/style/form-input.css +1 -1
- package/dist/style/form-radio.css +1 -1
- package/dist/style/form-textarea.css +1 -1
- package/dist/style/form.css +1 -1
- package/dist/style/heatmap.css +1 -0
- package/dist/style/heatmap.js +2 -0
- package/dist/style/image.css +1 -1
- package/dist/style/menu.css +1 -1
- package/dist/style/pagination.css +1 -1
- package/dist/style/skeleton.css +1 -1
- package/dist/style/spin.css +1 -1
- package/dist/style/steps.css +1 -1
- package/dist/style/table.css +1 -1
- package/dist/style/upload.css +1 -0
- package/dist/style/upload.js +2 -0
- package/dist/style.css +1 -1
- package/dist/types.d.ts +3 -0
- package/package.json +1 -1
- package/volar.d.ts +3 -0
- package/dist/es/_hooks/use-popup-overflow-hidden.js +0 -29
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Upload 公开类型。
|
|
3
|
+
*
|
|
4
|
+
* 状态模型沿用 init / uploading / done / error 四态:外部传入且无 status 的
|
|
5
|
+
* 历史文件按 done 处理,cancel 回到 init 便于直接重试(不同于 Arco 的 error)。
|
|
6
|
+
*/
|
|
7
|
+
export type UploadStatus = 'init' | 'uploading' | 'done' | 'error';
|
|
8
|
+
export type UploadListType = 'text' | 'picture' | 'picture-card';
|
|
9
|
+
export type UploadRequestMethod = 'post' | 'put' | 'patch';
|
|
10
|
+
/** 文件被拒绝的原因:类型 / 数量 / 前置钩子 / 目录读取失败 */
|
|
11
|
+
export type UploadRejectReason = 'accept' | 'limit' | 'beforeUpload' | 'read';
|
|
12
|
+
export interface UploadFile<T = unknown> {
|
|
13
|
+
/** 文件唯一标识;外部列表未提供时组件会自动生成并保持稳定 */
|
|
14
|
+
uid: string;
|
|
15
|
+
name: string;
|
|
16
|
+
size?: number;
|
|
17
|
+
type?: string;
|
|
18
|
+
lastModified?: number;
|
|
19
|
+
/** 默认 done;上传中 uploading;失败 error;待上传 init */
|
|
20
|
+
status?: UploadStatus;
|
|
21
|
+
/** 上传进度,0 ~ 1(与 x-next Progress 组件一致) */
|
|
22
|
+
percent?: number;
|
|
23
|
+
/** 文件地址;上传成功后可由 responseUrlKey 从响应中提取 */
|
|
24
|
+
url?: string;
|
|
25
|
+
/** 缩略图地址;图片文件加入列表时自动生成本地预览地址 */
|
|
26
|
+
thumbUrl?: string;
|
|
27
|
+
/** 上传接口响应体 */
|
|
28
|
+
response?: T;
|
|
29
|
+
/** 上传失败的错误对象 */
|
|
30
|
+
error?: unknown;
|
|
31
|
+
/** 原始 File 对象;外部历史文件通常没有 */
|
|
32
|
+
file?: File;
|
|
33
|
+
}
|
|
34
|
+
export type UploadBeforeUploadResult = void | boolean | File | Blob | string;
|
|
35
|
+
/**
|
|
36
|
+
* 上传前置钩子。
|
|
37
|
+
*
|
|
38
|
+
* - 返回 false / Promise<false>:不加入列表
|
|
39
|
+
* - 返回 File / Blob / string:替换原始文件后上传
|
|
40
|
+
* - 抛错或 reject:按拒绝处理并触发 reject 事件
|
|
41
|
+
*/
|
|
42
|
+
export type UploadBeforeUpload = (file: File, fileList: File[]) => UploadBeforeUploadResult | Promise<UploadBeforeUploadResult>;
|
|
43
|
+
export type UploadBeforeRemove = (file: UploadFile) => boolean | void | Promise<boolean | void>;
|
|
44
|
+
/** 上传地址;传函数时按文件动态解析,支持异步 */
|
|
45
|
+
export type UploadAction = string | ((file: File) => string | Promise<string>);
|
|
46
|
+
/** 附加表单字段;传函数时按文件动态解析 */
|
|
47
|
+
export type UploadData = Record<string, unknown> | ((file: UploadFile) => Record<string, unknown> | Promise<Record<string, unknown>>);
|
|
48
|
+
/** 文件字段名;默认 file */
|
|
49
|
+
export type UploadName = string | ((file: UploadFile) => string);
|
|
50
|
+
/** 从响应体中提取文件地址的字段名或解析函数;字符串支持 `data.url` 形式的路径 */
|
|
51
|
+
export type UploadResponseUrlKey = string | ((file: UploadFile, response?: unknown) => string | undefined);
|
|
52
|
+
export interface UploadRequestOption {
|
|
53
|
+
action: string;
|
|
54
|
+
method: UploadRequestMethod;
|
|
55
|
+
/** 文件字段名 */
|
|
56
|
+
name: string;
|
|
57
|
+
/** 原始文件对象 */
|
|
58
|
+
file: File;
|
|
59
|
+
/** 列表项,可读取 uid / 业务附加字段 */
|
|
60
|
+
fileItem: UploadFile;
|
|
61
|
+
data?: Record<string, unknown>;
|
|
62
|
+
headers?: Record<string, string>;
|
|
63
|
+
withCredentials: boolean;
|
|
64
|
+
/** 超时毫秒数,0 表示不超时 */
|
|
65
|
+
timeout: number;
|
|
66
|
+
/**
|
|
67
|
+
* 每次尝试独立的中止信号;取消上传、移除文件或组件卸载时触发 abort。
|
|
68
|
+
* 可直接透传给 fetch / axios 的 signal;环境不支持 AbortController 时为 undefined。
|
|
69
|
+
*/
|
|
70
|
+
signal?: AbortSignal;
|
|
71
|
+
/** 进度回调,percent 为 0 ~ 1 */
|
|
72
|
+
onProgress: (percent: number, event?: ProgressEvent) => void;
|
|
73
|
+
onSuccess: (response?: unknown) => void;
|
|
74
|
+
onError: (error?: unknown) => void;
|
|
75
|
+
}
|
|
76
|
+
export interface UploadRequest {
|
|
77
|
+
abort?: () => void;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* 自定义上传请求。
|
|
81
|
+
*
|
|
82
|
+
* 三种收尾方式,按所需控制力度选择:
|
|
83
|
+
* - 返回 Promise:resolve 即成功(结果写入 `file.response`),reject 即失败,
|
|
84
|
+
* 适合直接调用业务已有的上传方法(axios / fetch / flyio 均可);
|
|
85
|
+
* - 返回 `{ abort }`:自行调用 `onProgress` / `onSuccess` / `onError`,
|
|
86
|
+
* 组件在取消、移除、卸载时调用 `abort`;
|
|
87
|
+
* - 返回 undefined:完全手动回调,取消时仅失效后续回调。
|
|
88
|
+
*/
|
|
89
|
+
export type UploadCustomRequest = (option: UploadRequestOption) => UploadRequest | Promise<unknown> | void;
|
|
90
|
+
export interface UploadChangeInfo {
|
|
91
|
+
file: UploadFile;
|
|
92
|
+
fileList: UploadFile[];
|
|
93
|
+
}
|
|
94
|
+
export interface UploadProgressInfo extends UploadChangeInfo {
|
|
95
|
+
percent: number;
|
|
96
|
+
event?: ProgressEvent;
|
|
97
|
+
}
|
|
98
|
+
export interface UploadExceedInfo {
|
|
99
|
+
/** 因超出 limit 被拒绝的文件 */
|
|
100
|
+
files: File[];
|
|
101
|
+
fileList: UploadFile[];
|
|
102
|
+
}
|
|
103
|
+
export interface UploadRejectInfo {
|
|
104
|
+
files: File[];
|
|
105
|
+
reason: UploadRejectReason;
|
|
106
|
+
}
|
|
107
|
+
export interface UploadShowUploadButton {
|
|
108
|
+
/** 已达 limit 时仍显示上传入口,选中文件后触发 exceed 事件 */
|
|
109
|
+
showOnExceedLimit?: boolean;
|
|
110
|
+
}
|
|
@@ -0,0 +1,321 @@
|
|
|
1
|
+
import { ExtractPropTypes, PropType } from 'vue';
|
|
2
|
+
import { UploadAction, UploadBeforeRemove, UploadBeforeUpload, UploadCustomRequest, UploadData, UploadFile, UploadListType, UploadName, UploadRequestMethod, UploadResponseUrlKey, UploadShowUploadButton } from './interface';
|
|
3
|
+
export declare const uploadProps: {
|
|
4
|
+
/**
|
|
5
|
+
* @zh 文件列表,支持 v-model:file-list 受控
|
|
6
|
+
* @en File list, controlled by v-model:file-list
|
|
7
|
+
* @vModel
|
|
8
|
+
*/
|
|
9
|
+
fileList: {
|
|
10
|
+
type: PropType<UploadFile[]>;
|
|
11
|
+
default: undefined;
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* @zh 非受控模式下的初始文件列表
|
|
15
|
+
* @en Initial file list in uncontrolled mode
|
|
16
|
+
* @defaultValue []
|
|
17
|
+
*/
|
|
18
|
+
defaultFileList: {
|
|
19
|
+
type: PropType<UploadFile[]>;
|
|
20
|
+
default: () => never[];
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* @zh 上传地址,传函数时按文件动态解析并支持异步
|
|
24
|
+
* @en Upload URL; a function is resolved per file and may be async
|
|
25
|
+
*/
|
|
26
|
+
action: {
|
|
27
|
+
type: PropType<UploadAction>;
|
|
28
|
+
default: undefined;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* @zh 上传请求方法
|
|
32
|
+
* @en Upload request method
|
|
33
|
+
* @values 'post', 'put', 'patch'
|
|
34
|
+
* @defaultValue 'post'
|
|
35
|
+
*/
|
|
36
|
+
method: {
|
|
37
|
+
type: PropType<UploadRequestMethod>;
|
|
38
|
+
default: string;
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* @zh 请求头
|
|
42
|
+
* @en Request headers
|
|
43
|
+
*/
|
|
44
|
+
headers: {
|
|
45
|
+
type: PropType<Record<string, string>>;
|
|
46
|
+
default: undefined;
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* @zh 附加表单字段,传函数时按文件动态解析
|
|
50
|
+
* @en Extra form fields; a function is resolved per file
|
|
51
|
+
*/
|
|
52
|
+
data: {
|
|
53
|
+
type: PropType<UploadData>;
|
|
54
|
+
default: undefined;
|
|
55
|
+
};
|
|
56
|
+
/**
|
|
57
|
+
* @zh 文件字段名,传函数时按文件动态解析
|
|
58
|
+
* @en File field name; a function is resolved per file
|
|
59
|
+
* @defaultValue 'file'
|
|
60
|
+
*/
|
|
61
|
+
name: {
|
|
62
|
+
type: PropType<UploadName>;
|
|
63
|
+
default: string;
|
|
64
|
+
};
|
|
65
|
+
/**
|
|
66
|
+
* @zh 是否携带 Cookie
|
|
67
|
+
* @en Whether to send cookies
|
|
68
|
+
* @defaultValue false
|
|
69
|
+
*/
|
|
70
|
+
withCredentials: {
|
|
71
|
+
type: BooleanConstructor;
|
|
72
|
+
default: boolean;
|
|
73
|
+
};
|
|
74
|
+
/**
|
|
75
|
+
* @zh 请求超时毫秒数,0 表示不超时
|
|
76
|
+
* @en Request timeout in milliseconds; 0 disables the timeout
|
|
77
|
+
* @defaultValue 0
|
|
78
|
+
*/
|
|
79
|
+
timeout: {
|
|
80
|
+
type: NumberConstructor;
|
|
81
|
+
default: number;
|
|
82
|
+
};
|
|
83
|
+
/**
|
|
84
|
+
* @zh 自定义上传请求;返回 Promise 时自动接管状态与结果,返回 `{ abort }` 时手动回调
|
|
85
|
+
* @en Custom upload request; a returned Promise drives the state automatically, an `{ abort }` handle keeps manual control
|
|
86
|
+
*/
|
|
87
|
+
customRequest: {
|
|
88
|
+
type: PropType<UploadCustomRequest>;
|
|
89
|
+
default: undefined;
|
|
90
|
+
};
|
|
91
|
+
/**
|
|
92
|
+
* @zh 接受的文件类型,同原生 accept
|
|
93
|
+
* @en Accepted file types, same as the native accept attribute
|
|
94
|
+
*/
|
|
95
|
+
accept: {
|
|
96
|
+
type: StringConstructor;
|
|
97
|
+
default: undefined;
|
|
98
|
+
};
|
|
99
|
+
/**
|
|
100
|
+
* @zh 是否允许选择多个文件
|
|
101
|
+
* @en Whether multiple files can be selected
|
|
102
|
+
* @defaultValue false
|
|
103
|
+
*/
|
|
104
|
+
multiple: {
|
|
105
|
+
type: BooleanConstructor;
|
|
106
|
+
default: boolean;
|
|
107
|
+
};
|
|
108
|
+
/**
|
|
109
|
+
* @zh 是否支持选择文件夹(含拖拽目录递归)
|
|
110
|
+
* @en Whether directory selection is enabled, including recursive drop traversal
|
|
111
|
+
* @defaultValue false
|
|
112
|
+
*/
|
|
113
|
+
directory: {
|
|
114
|
+
type: BooleanConstructor;
|
|
115
|
+
default: boolean;
|
|
116
|
+
};
|
|
117
|
+
/**
|
|
118
|
+
* @zh 移动端捕获来源,透传给原生 input
|
|
119
|
+
* @en Capture source passed to the native input on mobile
|
|
120
|
+
* @values true, 'user', 'environment'
|
|
121
|
+
*/
|
|
122
|
+
capture: {
|
|
123
|
+
type: PropType<boolean | "user" | "environment">;
|
|
124
|
+
default: undefined;
|
|
125
|
+
};
|
|
126
|
+
/**
|
|
127
|
+
* @zh 是否支持聚焦后粘贴文件(如截图后 Ctrl / Cmd + V)
|
|
128
|
+
* @en Whether pasting files is enabled while focused, e.g. a screenshot with Ctrl / Cmd + V
|
|
129
|
+
* @defaultValue false
|
|
130
|
+
*/
|
|
131
|
+
paste: {
|
|
132
|
+
type: BooleanConstructor;
|
|
133
|
+
default: boolean;
|
|
134
|
+
};
|
|
135
|
+
/**
|
|
136
|
+
* @zh 是否渲染为拖拽上传区域
|
|
137
|
+
* @en Whether to render a drag and drop area
|
|
138
|
+
* @defaultValue false
|
|
139
|
+
*/
|
|
140
|
+
draggable: {
|
|
141
|
+
type: BooleanConstructor;
|
|
142
|
+
default: boolean;
|
|
143
|
+
};
|
|
144
|
+
/**
|
|
145
|
+
* @zh 是否禁用
|
|
146
|
+
* @en Whether the upload is disabled
|
|
147
|
+
* @defaultValue false
|
|
148
|
+
*/
|
|
149
|
+
disabled: {
|
|
150
|
+
type: BooleanConstructor;
|
|
151
|
+
default: undefined;
|
|
152
|
+
};
|
|
153
|
+
/**
|
|
154
|
+
* @zh 是否选择后立即上传;关闭后需调用 submit 或点击开始上传
|
|
155
|
+
* @en Whether to upload immediately after selection; disable it to call submit manually
|
|
156
|
+
* @defaultValue true
|
|
157
|
+
*/
|
|
158
|
+
autoUpload: {
|
|
159
|
+
type: BooleanConstructor;
|
|
160
|
+
default: boolean;
|
|
161
|
+
};
|
|
162
|
+
/**
|
|
163
|
+
* @zh 最大文件数量,0 表示不限;超出部分触发 exceed 事件
|
|
164
|
+
* @en Maximum number of files, 0 means unlimited; extra files trigger the exceed event
|
|
165
|
+
* @defaultValue 0
|
|
166
|
+
*/
|
|
167
|
+
limit: {
|
|
168
|
+
type: NumberConstructor;
|
|
169
|
+
default: number;
|
|
170
|
+
};
|
|
171
|
+
/**
|
|
172
|
+
* @zh 上传前置钩子,可拦截或替换文件
|
|
173
|
+
* @en Pre-upload hook that can intercept or replace files
|
|
174
|
+
*/
|
|
175
|
+
beforeUpload: {
|
|
176
|
+
type: PropType<UploadBeforeUpload>;
|
|
177
|
+
default: undefined;
|
|
178
|
+
};
|
|
179
|
+
/**
|
|
180
|
+
* @zh 移除前置钩子,返回 false 或 reject 可阻止移除
|
|
181
|
+
* @en Pre-remove hook; returning false or rejecting prevents removal
|
|
182
|
+
*/
|
|
183
|
+
beforeRemove: {
|
|
184
|
+
type: PropType<UploadBeforeRemove>;
|
|
185
|
+
default: undefined;
|
|
186
|
+
};
|
|
187
|
+
/**
|
|
188
|
+
* @zh 列表展示形态
|
|
189
|
+
* @en List display type
|
|
190
|
+
* @values 'text', 'picture', 'picture-card'
|
|
191
|
+
* @defaultValue 'text'
|
|
192
|
+
*/
|
|
193
|
+
listType: {
|
|
194
|
+
type: PropType<UploadListType>;
|
|
195
|
+
default: string;
|
|
196
|
+
};
|
|
197
|
+
/**
|
|
198
|
+
* @zh 提示文案,拖拽区和图片卡中显示
|
|
199
|
+
* @en Tip text shown in the dragger and picture card
|
|
200
|
+
*/
|
|
201
|
+
tip: {
|
|
202
|
+
type: StringConstructor;
|
|
203
|
+
default: undefined;
|
|
204
|
+
};
|
|
205
|
+
/**
|
|
206
|
+
* @zh 是否展示文件列表
|
|
207
|
+
* @en Whether to show the file list
|
|
208
|
+
* @defaultValue true
|
|
209
|
+
*/
|
|
210
|
+
showFileList: {
|
|
211
|
+
type: BooleanConstructor;
|
|
212
|
+
default: boolean;
|
|
213
|
+
};
|
|
214
|
+
/**
|
|
215
|
+
* @zh 是否展示上传入口;对象形式可配置达到 limit 后仍显示
|
|
216
|
+
* @en Whether to show the upload trigger; the object form keeps it visible on limit
|
|
217
|
+
* @defaultValue true
|
|
218
|
+
*/
|
|
219
|
+
showUploadButton: {
|
|
220
|
+
type: PropType<boolean | UploadShowUploadButton>;
|
|
221
|
+
default: boolean;
|
|
222
|
+
};
|
|
223
|
+
/**
|
|
224
|
+
* @zh 是否展示移除按钮
|
|
225
|
+
* @en Whether to show the remove button
|
|
226
|
+
* @defaultValue true
|
|
227
|
+
*/
|
|
228
|
+
showRemoveButton: {
|
|
229
|
+
type: BooleanConstructor;
|
|
230
|
+
default: boolean;
|
|
231
|
+
};
|
|
232
|
+
/**
|
|
233
|
+
* @zh 是否展示重试 / 开始上传按钮
|
|
234
|
+
* @en Whether to show retry / start buttons
|
|
235
|
+
* @defaultValue true
|
|
236
|
+
*/
|
|
237
|
+
showRetryButton: {
|
|
238
|
+
type: BooleanConstructor;
|
|
239
|
+
default: boolean;
|
|
240
|
+
};
|
|
241
|
+
/**
|
|
242
|
+
* @zh 是否展示取消上传按钮
|
|
243
|
+
* @en Whether to show the cancel button
|
|
244
|
+
* @defaultValue true
|
|
245
|
+
*/
|
|
246
|
+
showCancelButton: {
|
|
247
|
+
type: BooleanConstructor;
|
|
248
|
+
default: boolean;
|
|
249
|
+
};
|
|
250
|
+
/**
|
|
251
|
+
* @zh 是否展示预览按钮
|
|
252
|
+
* @en Whether to show the preview button
|
|
253
|
+
* @defaultValue true
|
|
254
|
+
*/
|
|
255
|
+
showPreviewButton: {
|
|
256
|
+
type: BooleanConstructor;
|
|
257
|
+
default: boolean;
|
|
258
|
+
};
|
|
259
|
+
/**
|
|
260
|
+
* @zh 是否展示下载按钮
|
|
261
|
+
* @en Whether to show the download button
|
|
262
|
+
* @defaultValue false
|
|
263
|
+
*/
|
|
264
|
+
showDownloadButton: {
|
|
265
|
+
type: BooleanConstructor;
|
|
266
|
+
default: boolean;
|
|
267
|
+
};
|
|
268
|
+
/**
|
|
269
|
+
* @zh 链接是否带 download 属性,点击直接下载
|
|
270
|
+
* @en Whether links carry the download attribute
|
|
271
|
+
* @defaultValue false
|
|
272
|
+
*/
|
|
273
|
+
download: {
|
|
274
|
+
type: BooleanConstructor;
|
|
275
|
+
default: boolean;
|
|
276
|
+
};
|
|
277
|
+
/**
|
|
278
|
+
* @zh 有地址时是否渲染为链接
|
|
279
|
+
* @en Whether to render files with a URL as links
|
|
280
|
+
* @defaultValue true
|
|
281
|
+
*/
|
|
282
|
+
showLink: {
|
|
283
|
+
type: BooleanConstructor;
|
|
284
|
+
default: boolean;
|
|
285
|
+
};
|
|
286
|
+
/**
|
|
287
|
+
* @zh 内置图片预览,点击图片用 ImagePreview 打开
|
|
288
|
+
* @en Built-in image preview using ImagePreview on click
|
|
289
|
+
* @defaultValue false
|
|
290
|
+
*/
|
|
291
|
+
imagePreview: {
|
|
292
|
+
type: BooleanConstructor;
|
|
293
|
+
default: boolean;
|
|
294
|
+
};
|
|
295
|
+
/**
|
|
296
|
+
* @zh 缩略图的原生 loading 策略
|
|
297
|
+
* @en Native loading strategy for thumbnails
|
|
298
|
+
* @values 'eager', 'lazy'
|
|
299
|
+
*/
|
|
300
|
+
imageLoading: {
|
|
301
|
+
type: PropType<"eager" | "lazy">;
|
|
302
|
+
default: undefined;
|
|
303
|
+
};
|
|
304
|
+
/**
|
|
305
|
+
* @zh 上传成功后从响应中提取 url 的字段名(支持 `data.url` 嵌套路径)或解析函数
|
|
306
|
+
* @en Field name (nested paths like `data.url` supported) or resolver extracting the file URL from the response
|
|
307
|
+
*/
|
|
308
|
+
responseUrlKey: {
|
|
309
|
+
type: PropType<UploadResponseUrlKey>;
|
|
310
|
+
default: undefined;
|
|
311
|
+
};
|
|
312
|
+
/**
|
|
313
|
+
* @zh 上传入口的无障碍名称
|
|
314
|
+
* @en Accessible name of the upload trigger
|
|
315
|
+
*/
|
|
316
|
+
ariaLabel: {
|
|
317
|
+
type: StringConstructor;
|
|
318
|
+
default: undefined;
|
|
319
|
+
};
|
|
320
|
+
};
|
|
321
|
+
export type UploadProps = ExtractPropTypes<typeof uploadProps>;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { PropType } from 'vue';
|
|
2
|
+
import { UploadFile } from './interface';
|
|
3
|
+
/** 列表项:文本 / 图片两种行内形态共用,图片卡由 upload-picture-item 承担 */
|
|
4
|
+
declare const _default: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
|
|
5
|
+
file: {
|
|
6
|
+
type: PropType<UploadFile>;
|
|
7
|
+
required: true;
|
|
8
|
+
};
|
|
9
|
+
}>, () => VNode, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
|
|
10
|
+
file: {
|
|
11
|
+
type: PropType<UploadFile>;
|
|
12
|
+
required: true;
|
|
13
|
+
};
|
|
14
|
+
}>> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
|
|
15
|
+
export default _default;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 文件列表。
|
|
3
|
+
*
|
|
4
|
+
* - text / picture:入口在上,列表在下
|
|
5
|
+
* - picture-card:卡片瓦片与入口并排折行,tip 渲染在入口卡片下方
|
|
6
|
+
*
|
|
7
|
+
* 列表项走 upload-item 插槽替换时保留容器结构,业务只替换内容即可,
|
|
8
|
+
* 不必重做布局。
|
|
9
|
+
*/
|
|
10
|
+
declare const _default: import('vue').DefineComponent<{}, () => any, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
|
|
11
|
+
export default _default;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { PropType } from 'vue';
|
|
2
|
+
import { UploadFile } from './interface';
|
|
3
|
+
/**
|
|
4
|
+
* 图片卡列表项。
|
|
5
|
+
*
|
|
6
|
+
* 状态分层:上传中显示圆形进度并禁用操作;失败态瓦片内显示错误图标,
|
|
7
|
+
* 悬浮遮罩提供重试 / 移除;完成态悬浮遮罩提供预览 / 下载 / 移除。
|
|
8
|
+
*/
|
|
9
|
+
declare const _default: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
|
|
10
|
+
file: {
|
|
11
|
+
type: PropType<UploadFile>;
|
|
12
|
+
required: true;
|
|
13
|
+
};
|
|
14
|
+
}>, () => VNode, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
|
|
15
|
+
file: {
|
|
16
|
+
type: PropType<UploadFile>;
|
|
17
|
+
required: true;
|
|
18
|
+
};
|
|
19
|
+
}>> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
|
|
20
|
+
export default _default;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 上传入口:隐藏 input + 可点击 / 可聚焦 / 可拖拽的触发区。
|
|
3
|
+
*
|
|
4
|
+
* 触发区始终带 role="button" 与 tabindex,Enter / Space 可唤起文件选择,
|
|
5
|
+
* 拖拽模式额外绑定拖入高亮与释放上传。
|
|
6
|
+
*/
|
|
7
|
+
declare const _default: import('vue').DefineComponent<{}, () => VNode, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
|
|
8
|
+
export default _default;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { UploadFile, UploadRequest, UploadRequestOption } from './interface';
|
|
2
|
+
/** 生成列表项 uid,同时刻多次调用也能保持唯一 */
|
|
3
|
+
export declare const genUid: () => string;
|
|
4
|
+
export declare const normalizeMime: (mime?: string) => string;
|
|
5
|
+
export declare const getExtension: (name: string) => string;
|
|
6
|
+
/** 按原生 accept 规则校验文件,用于选择与拖拽两条路径 */
|
|
7
|
+
export declare const matchAccept: (file: File, accept?: string) => boolean;
|
|
8
|
+
export declare const isImageMime: (mime?: string) => boolean;
|
|
9
|
+
/** 判断 File 是否为图片:优先 MIME,缺失时按扩展名 */
|
|
10
|
+
export declare const isImageFile: (file: File) => boolean;
|
|
11
|
+
/** 判断列表项是否可作为图片预览 */
|
|
12
|
+
export declare const isImageItem: (item: UploadFile) => boolean;
|
|
13
|
+
/**
|
|
14
|
+
* 规范化外部file列表项:补 uid 与默认状态。
|
|
15
|
+
* 用 WeakMap 缓存生成的 uid,保证同一对象多次渲染标识稳定。
|
|
16
|
+
*/
|
|
17
|
+
export declare const normalizeFile: (item: UploadFile) => UploadFile;
|
|
18
|
+
export declare const normalizeFileList: (list?: UploadFile[]) => UploadFile[];
|
|
19
|
+
export declare const createThumbUrl: (file: File) => string | undefined;
|
|
20
|
+
/** 只回收组件自己创建的 blob 地址,外部传入的地址不动 */
|
|
21
|
+
export declare const revokeThumbUrl: (url?: string) => void;
|
|
22
|
+
/**
|
|
23
|
+
* 判断 customRequest 的返回值是否为 Promise。
|
|
24
|
+
*
|
|
25
|
+
* 用 thenable 判定而不是 `instanceof Promise` / `isPromise`:
|
|
26
|
+
* axios、flyio、async 函数与跨 iframe 的 Promise 都能命中,
|
|
27
|
+
* 同时兼容自定义 thenable。
|
|
28
|
+
*/
|
|
29
|
+
export declare const isPromiseLike: (value: unknown) => value is PromiseLike<unknown>;
|
|
30
|
+
/** 取出 Promise / 请求句柄上挂载的 abort 方法 */
|
|
31
|
+
export declare const resolveAbortHandle: (value: unknown) => (() => void) | undefined;
|
|
32
|
+
/**
|
|
33
|
+
* Promise 模式下 resolve 值的归一化。
|
|
34
|
+
*
|
|
35
|
+
* 业务方法直接返回 fetch 的 Response 时:`!ok` 按失败处理,JSON / text 解析后
|
|
36
|
+
* 写入 file.response(与内置 XHR 的 parseResponse 行为一致),二进制等其它类型
|
|
37
|
+
* 保留 Response 本体;axios / flyio 等已解析的响应原样返回。
|
|
38
|
+
*/
|
|
39
|
+
export declare const normalizePromiseResponse: (value: unknown) => Promise<unknown>;
|
|
40
|
+
/** 内置 XHR 上传,customRequest 未提供时使用 */
|
|
41
|
+
export declare const uploadRequest: (option: UploadRequestOption) => UploadRequest;
|
|
42
|
+
/**
|
|
43
|
+
* 从拖拽数据中收集文件。
|
|
44
|
+
* directory 模式下递归读取目录,并补 webkitRelativePath,便于展示相对路径。
|
|
45
|
+
*/
|
|
46
|
+
export declare const collectDropFiles: (dataTransfer: DataTransfer) => Promise<File[]>;
|
|
47
|
+
/** 从粘贴板数据中取文件 */
|
|
48
|
+
export declare const collectPasteFiles: (dataTransfer: DataTransfer | null) => File[];
|
|
@@ -231,13 +231,13 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
|
|
|
231
231
|
rotate: number;
|
|
232
232
|
repeat: boolean;
|
|
233
233
|
content: string | string[];
|
|
234
|
+
alpha: number;
|
|
234
235
|
height: number;
|
|
235
236
|
width: number;
|
|
236
237
|
zIndex: number;
|
|
237
238
|
font: WatermarkFont;
|
|
238
239
|
gap: WatermarkGap;
|
|
239
240
|
offset: WatermarkGap;
|
|
240
|
-
alpha: number;
|
|
241
241
|
antiTamper: boolean;
|
|
242
242
|
grayscale: boolean;
|
|
243
243
|
staggered: boolean;
|
|
@@ -64,13 +64,13 @@ export declare const Watermark: {
|
|
|
64
64
|
rotate: number;
|
|
65
65
|
repeat: boolean;
|
|
66
66
|
content: string | string[];
|
|
67
|
+
alpha: number;
|
|
67
68
|
height: number;
|
|
68
69
|
width: number;
|
|
69
70
|
zIndex: number;
|
|
70
71
|
font: import('./interface').WatermarkFont;
|
|
71
72
|
gap: import('./interface').WatermarkGap;
|
|
72
73
|
offset: import('./interface').WatermarkGap;
|
|
73
|
-
alpha: number;
|
|
74
74
|
antiTamper: boolean;
|
|
75
75
|
grayscale: boolean;
|
|
76
76
|
staggered: boolean;
|
|
@@ -143,13 +143,13 @@ export declare const Watermark: {
|
|
|
143
143
|
rotate: number;
|
|
144
144
|
repeat: boolean;
|
|
145
145
|
content: string | string[];
|
|
146
|
+
alpha: number;
|
|
146
147
|
height: number;
|
|
147
148
|
width: number;
|
|
148
149
|
zIndex: number;
|
|
149
150
|
font: import('./interface').WatermarkFont;
|
|
150
151
|
gap: import('./interface').WatermarkGap;
|
|
151
152
|
offset: import('./interface').WatermarkGap;
|
|
152
|
-
alpha: number;
|
|
153
153
|
antiTamper: boolean;
|
|
154
154
|
grayscale: boolean;
|
|
155
155
|
staggered: boolean;
|
|
@@ -219,13 +219,13 @@ export declare const Watermark: {
|
|
|
219
219
|
rotate: number;
|
|
220
220
|
repeat: boolean;
|
|
221
221
|
content: string | string[];
|
|
222
|
+
alpha: number;
|
|
222
223
|
height: number;
|
|
223
224
|
width: number;
|
|
224
225
|
zIndex: number;
|
|
225
226
|
font: import('./interface').WatermarkFont;
|
|
226
227
|
gap: import('./interface').WatermarkGap;
|
|
227
228
|
offset: import('./interface').WatermarkGap;
|
|
228
|
-
alpha: number;
|
|
229
229
|
antiTamper: boolean;
|
|
230
230
|
grayscale: boolean;
|
|
231
231
|
staggered: boolean;
|
|
@@ -13,6 +13,8 @@ const r = {
|
|
|
13
13
|
"--x-color-border-focus": "var(--x-color-primary-6)",
|
|
14
14
|
"--x-color-menu-dark-hover": "var(--x-color-primary)",
|
|
15
15
|
"--x-color-menu-dark-submenu-selected-bg": "color-mix(in srgb, var(--x-color-primary) 45%, transparent)",
|
|
16
|
+
"--x-color-picker-color-swatch_active": "var(--x-color-primary-text)",
|
|
17
|
+
"--x-color-picker-color-text_active": "var(--x-color-primary-text)",
|
|
16
18
|
"--x-color-primary-button-text": "var(--x-color-primary-text)",
|
|
17
19
|
"--x-color-primary-light-1": "var(--x-color-primary-1)",
|
|
18
20
|
"--x-color-primary-light-2": "var(--x-color-primary-light-1)",
|
|
@@ -40,9 +42,12 @@ const r = {
|
|
|
40
42
|
"--x-field-status-validating-text": "var(--x-color-primary-text)",
|
|
41
43
|
"--x-focus-bc": "var(--x-color-primary)",
|
|
42
44
|
"--x-form-border-color-focus": "var(--x-field-color-border-focus)",
|
|
45
|
+
"--x-heatmap-color-level-1": "var(--x-color-primary-1)",
|
|
46
|
+
"--x-heatmap-color-level-2": "var(--x-color-primary-2)",
|
|
47
|
+
"--x-heatmap-color-level-3": "var(--x-color-primary-3)",
|
|
48
|
+
"--x-heatmap-color-level-4": "var(--x-color-primary-5)",
|
|
49
|
+
"--x-heatmap-color-level-5": "var(--x-color-primary-6)",
|
|
43
50
|
"--x-hover-color": "var(--x-color-primary)",
|
|
44
|
-
"--x-image-preview-color-action-hover-bg": "var(--x-color-primary-subtle)",
|
|
45
|
-
"--x-image-preview-color-action-hover-text": "var(--x-color-primary-solid)",
|
|
46
51
|
"--x-input-color-border_focus": "var(--x-field-color-border-focus)",
|
|
47
52
|
"--x-input-color-shadow_focus": "var(--x-field-color-shadow-focus)",
|
|
48
53
|
"--x-input-feedback-icon-color_validating": "var(--x-field-status-validating-icon)",
|
|
@@ -81,6 +86,7 @@ const r = {
|
|
|
81
86
|
"--x-radio-color-bg_checked_disabled": "var(--x-color-primary-light-3)",
|
|
82
87
|
"--x-select-bc": "var(--x-color-primary)",
|
|
83
88
|
"--x-select-color": "var(--x-color-primary)",
|
|
89
|
+
"--x-spin-tip-shimmer-color-highlight": "color-mix( in srgb, var(--x-color-primary-text) 30%, var(--x-color-white) )",
|
|
84
90
|
"--x-table-color-bg-body-row_active": "var(--x-color-primary-subtle)",
|
|
85
91
|
"--x-table-color-border_resizing": "var(--x-color-primary-6)",
|
|
86
92
|
"--x-table-color-header-filters-icon_active": "var(--x-color-primary-6)",
|
|
@@ -96,7 +102,8 @@ const r = {
|
|
|
96
102
|
"--x-time-picker-confirm-color": "var(--x-color-primary-text)",
|
|
97
103
|
"--x-time-range-selector-color-default": "var(--x-color-primary-6)",
|
|
98
104
|
"--x-timeline-dot-hollow-shadow": "0 0 0 1px color-mix( in srgb, var(--x-color-primary-solid) 10%, var(--x-color-transparent) )",
|
|
99
|
-
"--x-timeline-dot-shadow": "0 0 0 1px color-mix(in srgb, var(--x-color-primary-solid) 8%, var(--x-color-transparent))"
|
|
105
|
+
"--x-timeline-dot-shadow": "0 0 0 1px color-mix(in srgb, var(--x-color-primary-solid) 8%, var(--x-color-transparent))",
|
|
106
|
+
"--x-upload-color-border-hover": "var(--x-color-primary)"
|
|
100
107
|
},
|
|
101
108
|
success: {
|
|
102
109
|
"--x-button-color-bg-success-solid": "var(--x-color-success-solid)",
|
|
@@ -159,7 +166,6 @@ const r = {
|
|
|
159
166
|
"--x-field-status-error-shadow-color-focus": "var(--x-color-danger-2)",
|
|
160
167
|
"--x-field-status-error-text": "var(--x-color-danger-text)",
|
|
161
168
|
"--x-form-border-color-error": "var(--x-field-color-border-error)",
|
|
162
|
-
"--x-image-color-error-bg": "var(--x-color-danger-solid)",
|
|
163
169
|
"--x-input-color-bg_error": "var(--x-field-color-bg-error)",
|
|
164
170
|
"--x-input-color-bg_error_hover": "var(--x-field-color-bg-error-hover)",
|
|
165
171
|
"--x-input-color-border_error": "var(--x-field-color-border-error)",
|