@rainbow-oh/yee-c 0.9.2 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (162) hide show
  1. package/dist/cjs/Button/demo/icon.js +1 -1
  2. package/dist/cjs/Input/style/index.less +1 -0
  3. package/dist/cjs/Table/demo/resizable.d.ts +3 -0
  4. package/dist/cjs/Table/demo/resizable.js +143 -0
  5. package/dist/cjs/Table/hooks/useColumnResize.d.ts +30 -0
  6. package/dist/cjs/Table/hooks/useColumnResize.js +217 -0
  7. package/dist/cjs/Table/hooks/useColumns.d.ts +3 -1
  8. package/dist/cjs/Table/hooks/useColumns.js +14 -3
  9. package/dist/cjs/Table/interface.d.ts +49 -0
  10. package/dist/cjs/Table/style/index.less +42 -0
  11. package/dist/cjs/Table/table.js +62 -9
  12. package/dist/cjs/Table/theader/cell.js +46 -4
  13. package/dist/cjs/Table/util/index.d.ts +19 -1
  14. package/dist/cjs/Table/util/index.js +22 -0
  15. package/dist/cjs/Tabs/demo/overflow-center.d.ts +3 -0
  16. package/dist/cjs/Tabs/demo/overflow-center.js +54 -0
  17. package/dist/cjs/Tabs/hooks/useNavListMove.d.ts +2 -1
  18. package/dist/cjs/Tabs/hooks/useNavListMove.js +51 -16
  19. package/dist/cjs/Tabs/hooks/useTabScroll.d.ts +1 -0
  20. package/dist/cjs/Tabs/hooks/useTabScroll.js +5 -1
  21. package/dist/cjs/Tabs/interface.d.ts +10 -1
  22. package/dist/cjs/Tabs/style/index.less +5 -0
  23. package/dist/cjs/Tabs/tab-header/index.d.ts +1 -0
  24. package/dist/cjs/Tabs/tab-header/index.js +11 -3
  25. package/dist/cjs/Tabs/tabs.js +4 -1
  26. package/dist/cjs/Upload/demo/auto-upload.d.ts +3 -0
  27. package/dist/cjs/Upload/demo/auto-upload.js +65 -0
  28. package/dist/cjs/Upload/demo/basic.js +5 -10
  29. package/dist/cjs/Upload/demo/controlled.js +4 -4
  30. package/dist/cjs/Upload/demo/pictureWall.js +14 -13
  31. package/dist/cjs/Upload/dragger.d.ts +2 -1
  32. package/dist/cjs/Upload/dragger.js +32 -21
  33. package/dist/cjs/Upload/index.d.ts +1 -1
  34. package/dist/cjs/Upload/interface.d.ts +67 -120
  35. package/dist/cjs/Upload/style/index.less +40 -13
  36. package/dist/cjs/Upload/upload.d.ts +2 -2
  37. package/dist/cjs/Upload/upload.js +435 -185
  38. package/dist/cjs/Upload/uploaded-list/index.d.ts +2 -1
  39. package/dist/cjs/Upload/uploaded-list/index.js +6 -3
  40. package/dist/cjs/Upload/uploaded-list/uploaded-item.d.ts +6 -3
  41. package/dist/cjs/Upload/uploaded-list/uploaded-item.js +127 -138
  42. package/dist/cjs/locale/interface.d.ts +1 -0
  43. package/dist/cjs/locale/lang/en_US.js +2 -1
  44. package/dist/cjs/locale/lang/ja_JP.js +2 -1
  45. package/dist/cjs/locale/lang/zh_CN.js +2 -1
  46. package/dist/cjs/locale/lang/zh_TW.js +2 -1
  47. package/dist/cjs/style/size.css +2 -1
  48. package/dist/cjs/style/themes.css +1 -1
  49. package/dist/cjs/style/variables.css +3 -2
  50. package/dist/cjs/utils/ax/core.d.ts +3 -1
  51. package/dist/cjs/utils/ax/core.js +24 -37
  52. package/dist/cjs/utils/ax/index.d.ts +3 -1
  53. package/dist/cjs/utils/folder-scanner.d.ts +1 -1
  54. package/dist/cjs/utils/folder-scanner.js +43 -34
  55. package/dist/cjs/version.d.ts +1 -1
  56. package/dist/cjs/version.js +1 -1
  57. package/dist/esm/Button/demo/icon.js +7 -4
  58. package/dist/esm/Input/style/index.less +1 -0
  59. package/dist/esm/Table/demo/resizable.d.ts +3 -0
  60. package/dist/esm/Table/demo/resizable.js +110 -0
  61. package/dist/esm/Table/hooks/useColumnResize.d.ts +30 -0
  62. package/dist/esm/Table/hooks/useColumnResize.js +206 -0
  63. package/dist/esm/Table/hooks/useColumns.d.ts +3 -1
  64. package/dist/esm/Table/hooks/useColumns.js +9 -4
  65. package/dist/esm/Table/interface.d.ts +49 -0
  66. package/dist/esm/Table/style/index.less +42 -0
  67. package/dist/esm/Table/table.js +83 -13
  68. package/dist/esm/Table/theader/cell.js +38 -3
  69. package/dist/esm/Table/util/index.d.ts +19 -1
  70. package/dist/esm/Table/util/index.js +37 -0
  71. package/dist/esm/Tabs/demo/overflow-center.d.ts +3 -0
  72. package/dist/esm/Tabs/demo/overflow-center.js +61 -0
  73. package/dist/esm/Tabs/hooks/useNavListMove.d.ts +2 -1
  74. package/dist/esm/Tabs/hooks/useNavListMove.js +62 -25
  75. package/dist/esm/Tabs/hooks/useTabScroll.d.ts +1 -0
  76. package/dist/esm/Tabs/hooks/useTabScroll.js +9 -0
  77. package/dist/esm/Tabs/interface.d.ts +10 -1
  78. package/dist/esm/Tabs/style/index.less +5 -0
  79. package/dist/esm/Tabs/tab-header/index.d.ts +1 -0
  80. package/dist/esm/Tabs/tab-header/index.js +15 -3
  81. package/dist/esm/Tabs/tabs.js +4 -2
  82. package/dist/esm/Upload/demo/auto-upload.d.ts +3 -0
  83. package/dist/esm/Upload/demo/auto-upload.js +42 -0
  84. package/dist/esm/Upload/demo/basic.js +5 -11
  85. package/dist/esm/Upload/demo/controlled.js +8 -6
  86. package/dist/esm/Upload/demo/pictureWall.js +17 -14
  87. package/dist/esm/Upload/dragger.d.ts +2 -1
  88. package/dist/esm/Upload/dragger.js +10 -5
  89. package/dist/esm/Upload/index.d.ts +1 -1
  90. package/dist/esm/Upload/interface.d.ts +67 -120
  91. package/dist/esm/Upload/style/index.less +40 -13
  92. package/dist/esm/Upload/upload.d.ts +2 -2
  93. package/dist/esm/Upload/upload.js +573 -271
  94. package/dist/esm/Upload/uploaded-list/index.d.ts +2 -1
  95. package/dist/esm/Upload/uploaded-list/index.js +9 -4
  96. package/dist/esm/Upload/uploaded-list/uploaded-item.d.ts +6 -3
  97. package/dist/esm/Upload/uploaded-list/uploaded-item.js +145 -150
  98. package/dist/esm/locale/interface.d.ts +1 -0
  99. package/dist/esm/locale/lang/en_US.js +2 -1
  100. package/dist/esm/locale/lang/ja_JP.js +2 -1
  101. package/dist/esm/locale/lang/zh_CN.js +2 -1
  102. package/dist/esm/locale/lang/zh_TW.js +2 -1
  103. package/dist/esm/style/size.css +2 -1
  104. package/dist/esm/style/themes.css +1 -1
  105. package/dist/esm/style/variables.css +3 -2
  106. package/dist/esm/utils/ax/core.d.ts +3 -1
  107. package/dist/esm/utils/ax/core.js +32 -40
  108. package/dist/esm/utils/ax/index.d.ts +3 -1
  109. package/dist/esm/utils/folder-scanner.d.ts +1 -1
  110. package/dist/esm/utils/folder-scanner.js +76 -75
  111. package/dist/esm/version.d.ts +1 -1
  112. package/dist/esm/version.js +1 -1
  113. package/dist/umd/yee-c.min.css +2 -2
  114. package/dist/umd/yee-c.min.js +1 -1
  115. package/package.json +1 -1
  116. package/src/Button/demo/icon.tsx +5 -3
  117. package/src/Input/style/index.less +1 -0
  118. package/src/Table/demo/resizable.tsx +106 -0
  119. package/src/Table/hooks/useColumnResize.ts +224 -0
  120. package/src/Table/hooks/useColumns.ts +18 -3
  121. package/src/Table/index.en-US.md +7 -0
  122. package/src/Table/index.zh-CN.md +7 -0
  123. package/src/Table/interface.ts +52 -0
  124. package/src/Table/style/index.less +42 -0
  125. package/src/Table/table-resize.test.tsx +234 -0
  126. package/src/Table/table.tsx +90 -13
  127. package/src/Table/theader/cell.tsx +52 -2
  128. package/src/Table/util/index.ts +44 -1
  129. package/src/Tabs/demo/overflow-center.tsx +35 -0
  130. package/src/Tabs/hooks/useNavListMove.ts +60 -18
  131. package/src/Tabs/hooks/useTabScroll.ts +7 -1
  132. package/src/Tabs/index.en-US.md +33 -31
  133. package/src/Tabs/index.zh-CN.md +33 -31
  134. package/src/Tabs/interface.ts +10 -1
  135. package/src/Tabs/style/index.less +5 -0
  136. package/src/Tabs/tab-header/index.tsx +14 -3
  137. package/src/Tabs/tabs.tsx +2 -0
  138. package/src/Upload/demo/auto-upload.tsx +35 -0
  139. package/src/Upload/demo/basic.tsx +7 -11
  140. package/src/Upload/demo/controlled.tsx +12 -8
  141. package/src/Upload/demo/directory.tsx +3 -4
  142. package/src/Upload/demo/drag.tsx +5 -12
  143. package/src/Upload/demo/multiple.tsx +3 -4
  144. package/src/Upload/demo/pictureWall.tsx +22 -21
  145. package/src/Upload/dragger.tsx +47 -34
  146. package/src/Upload/index.en-US.md +63 -43
  147. package/src/Upload/index.ts +8 -1
  148. package/src/Upload/index.zh-CN.md +62 -42
  149. package/src/Upload/interface.ts +68 -120
  150. package/src/Upload/style/index.less +40 -13
  151. package/src/Upload/upload.tsx +546 -215
  152. package/src/Upload/uploaded-list/index.tsx +9 -5
  153. package/src/Upload/uploaded-list/uploaded-item.tsx +199 -228
  154. package/src/locale/interface.ts +1 -0
  155. package/src/locale/lang/en_US.ts +1 -0
  156. package/src/locale/lang/ja_JP.ts +1 -0
  157. package/src/locale/lang/zh_CN.ts +1 -0
  158. package/src/locale/lang/zh_TW.ts +1 -0
  159. package/src/style/size.css +2 -1
  160. package/src/utils/ax/core.ts +28 -41
  161. package/src/utils/folder-scanner.ts +51 -37
  162. package/src/version.ts +1 -1
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { UploadFile } from '../interface';
2
+ import type { UploadFile } from '../interface';
3
3
  interface UploadListProps {
4
4
  prefixCls?: string;
5
5
  fileList: UploadFile[];
@@ -18,6 +18,7 @@ interface UploadListProps {
18
18
  onRemove?: (file: UploadFile) => void;
19
19
  onReUpload?: (file: UploadFile) => void;
20
20
  onPreview?: (file: UploadFile) => void;
21
+ isPreviewable?: (file: UploadFile) => boolean;
21
22
  renderUploadTrigger?: () => React.ReactNode;
22
23
  }
23
24
  declare const UploadList: (props: UploadListProps) => string | number | bigint | boolean | Iterable<React.ReactNode> | Promise<string | number | bigint | boolean | React.ReactPortal | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | null | undefined> | React.JSX.Element | null | undefined;
@@ -64,17 +64,20 @@ module.exports = __toCommonJS(uploaded_list_exports);
64
64
  var import_react = __toESM(require("react"));
65
65
  var import_uploaded_item = __toESM(require("./uploaded-item"));
66
66
  var UploadList = (props) => {
67
- const _a = props, { prefixCls, fileList, renderUploadTrigger } = _a, rest = __objRest(_a, ["prefixCls", "fileList", "renderUploadTrigger"]);
67
+ const _a = props, { prefixCls, fileList, isPreviewable, renderUploadTrigger } = _a, rest = __objRest(_a, ["prefixCls", "fileList", "isPreviewable", "renderUploadTrigger"]);
68
68
  if (!Array.isArray(fileList) || fileList.length === 0) {
69
69
  return renderUploadTrigger == null ? void 0 : renderUploadTrigger();
70
70
  }
71
- return /* @__PURE__ */ import_react.default.createElement("div", { className: `${prefixCls}-list` }, fileList.map((file) => {
71
+ return /* @__PURE__ */ import_react.default.createElement("div", { className: `${prefixCls}-list`, "aria-live": "polite" }, fileList.map((file, index) => {
72
+ var _a2;
72
73
  return /* @__PURE__ */ import_react.default.createElement(
73
74
  import_uploaded_item.default,
74
75
  __spreadProps(__spreadValues({}, rest), {
75
76
  prefixCls,
76
77
  file,
77
- key: file.uid
78
+ fileList,
79
+ previewable: (_a2 = isPreviewable == null ? void 0 : isPreviewable(file)) != null ? _a2 : false,
80
+ key: file.uid || `${file.name}-${index}`
78
81
  })
79
82
  );
80
83
  }), renderUploadTrigger == null ? void 0 : renderUploadTrigger());
@@ -1,8 +1,9 @@
1
1
  import React from 'react';
2
- import { UploadFile } from '../interface';
3
- declare function UploadedItem(props: {
2
+ import type { UploadFile } from '../interface';
3
+ interface UploadedItemProps {
4
4
  prefixCls?: string;
5
5
  file: UploadFile;
6
+ fileList: UploadFile[];
6
7
  listType?: string;
7
8
  progress?: boolean | object;
8
9
  showUploadList?: boolean | {
@@ -18,5 +19,7 @@ declare function UploadedItem(props: {
18
19
  onRemove?: (file: UploadFile) => void;
19
20
  onReUpload?: (file: UploadFile) => void;
20
21
  onPreview?: (file: UploadFile) => void;
21
- }): React.JSX.Element;
22
+ previewable?: boolean;
23
+ }
24
+ declare function UploadedItem(props: UploadedItemProps): React.JSX.Element;
22
25
  export default UploadedItem;
@@ -36,17 +36,15 @@ var import_clsx = __toESM(require("clsx"));
36
36
  var import_lucide_react = require("lucide-react");
37
37
  var import_react = __toESM(require("react"));
38
38
  var import_Button = __toESM(require("../../Button"));
39
- var import_Dialog = __toESM(require("../../Dialog"));
40
- var import_useEvent = __toESM(require("../../hooks/useEvent"));
41
39
  var import_Space = __toESM(require("../../Space"));
42
40
  var import_Spin = __toESM(require("../../Spin"));
43
41
  var import_Tooltip = __toESM(require("../../Tooltip"));
44
42
  var import_upload_progress = __toESM(require("../upload-progress"));
45
43
  var fileState = {
46
44
  uploading: /* @__PURE__ */ import_react.default.createElement(import_Spin.default, { type: "spin", size: "small" }),
47
- error: /* @__PURE__ */ import_react.default.createElement(import_lucide_react.CircleX, null),
48
- success: /* @__PURE__ */ import_react.default.createElement(import_lucide_react.CircleCheck, null),
49
- ready: /* @__PURE__ */ import_react.default.createElement(import_lucide_react.Paperclip, null)
45
+ error: /* @__PURE__ */ import_react.default.createElement(import_lucide_react.CircleX, { size: 14 }),
46
+ success: /* @__PURE__ */ import_react.default.createElement(import_lucide_react.CircleCheck, { size: 14 }),
47
+ ready: /* @__PURE__ */ import_react.default.createElement(import_lucide_react.Paperclip, { size: 14 })
50
48
  };
51
49
  var fileStatusTitle = {
52
50
  ready: "Upload Ready",
@@ -55,91 +53,85 @@ var fileStatusTitle = {
55
53
  success: "Upload Success"
56
54
  };
57
55
  var fileIcon = {
58
- image: /* @__PURE__ */ import_react.default.createElement(import_lucide_react.Image, null),
59
- xlsx: /* @__PURE__ */ import_react.default.createElement(import_lucide_react.Paperclip, null),
60
- docx: /* @__PURE__ */ import_react.default.createElement(import_lucide_react.Paperclip, null),
61
- pdf: /* @__PURE__ */ import_react.default.createElement(import_lucide_react.Paperclip, null),
62
- zip: /* @__PURE__ */ import_react.default.createElement(import_lucide_react.Paperclip, null),
63
- unknown: /* @__PURE__ */ import_react.default.createElement(import_lucide_react.Paperclip, null)
56
+ image: /* @__PURE__ */ import_react.default.createElement(import_lucide_react.Image, { size: 14 }),
57
+ xlsx: /* @__PURE__ */ import_react.default.createElement(import_lucide_react.Paperclip, { size: 14 }),
58
+ docx: /* @__PURE__ */ import_react.default.createElement(import_lucide_react.Paperclip, { size: 14 }),
59
+ pdf: /* @__PURE__ */ import_react.default.createElement(import_lucide_react.Paperclip, { size: 14 }),
60
+ zip: /* @__PURE__ */ import_react.default.createElement(import_lucide_react.Paperclip, { size: 14 }),
61
+ unknown: /* @__PURE__ */ import_react.default.createElement(import_lucide_react.Paperclip, { size: 14 })
64
62
  };
65
63
  var getFileType = (type) => {
66
64
  const lower = (type == null ? void 0 : type.toLowerCase()) || "";
67
- const images = ["jpg", "jpeg", "png", "gif", "bmp"];
68
- if (images.includes(lower)) {
65
+ const images = ["jpg", "jpeg", "png", "gif", "bmp", "webp", "svg"];
66
+ if (lower.startsWith("image/") || images.includes(lower)) {
69
67
  return "image";
70
68
  }
71
69
  if (lower === "xlsx" || lower === "xls") {
72
70
  return "xlsx";
73
71
  }
74
- if (lower === "pdf") {
72
+ if (lower === "pdf" || lower === "application/pdf") {
75
73
  return "pdf";
76
74
  }
77
75
  if (lower === "docx" || lower === "doc") {
78
76
  return "docx";
79
77
  }
80
- if (lower === "zip") {
78
+ if (lower === "zip" || lower.includes("zip")) {
81
79
  return "zip";
82
80
  }
83
81
  return "unknown";
84
82
  };
85
83
  function UploadedItem(props) {
84
+ var _a, _b, _c, _d;
86
85
  const {
87
- prefixCls,
86
+ prefixCls = "yee-upload",
88
87
  file,
88
+ fileList,
89
89
  listType,
90
90
  progress,
91
91
  showUploadList,
92
92
  itemRender,
93
93
  onRemove,
94
94
  onReUpload,
95
- onPreview
95
+ onPreview,
96
+ previewable = false
96
97
  } = props;
97
- const {
98
- showTooltip = true,
99
- showReload = true,
100
- showRemoveIcon = true,
101
- showPreviewIcon = true,
102
- reloadIcon,
103
- removeIcon,
104
- previewIcon
105
- } = typeof showUploadList === "object" ? showUploadList : {};
98
+ const uploadListConfig = typeof showUploadList === "object" ? showUploadList : void 0;
99
+ const showTooltip = (_a = uploadListConfig == null ? void 0 : uploadListConfig.showTooltip) != null ? _a : true;
100
+ const showReload = (_b = uploadListConfig == null ? void 0 : uploadListConfig.showReload) != null ? _b : true;
101
+ const showRemoveIcon = (_c = uploadListConfig == null ? void 0 : uploadListConfig.showRemoveIcon) != null ? _c : true;
102
+ const showPreviewIcon = (_d = uploadListConfig == null ? void 0 : uploadListConfig.showPreviewIcon) != null ? _d : true;
103
+ const reloadIcon = uploadListConfig == null ? void 0 : uploadListConfig.reloadIcon;
104
+ const removeIcon = uploadListConfig == null ? void 0 : uploadListConfig.removeIcon;
105
+ const previewIcon = uploadListConfig == null ? void 0 : uploadListConfig.previewIcon;
106
106
  const [objectUrl, setObjectUrl] = (0, import_react.useState)("");
107
- const [imagePreviewOpen, setImagePreviewOpen] = (0, import_react.useState)(false);
108
- const previewImageSrc = (0, import_react.useRef)("");
109
107
  (0, import_react.useEffect)(() => {
110
- if (file.raw && file.raw instanceof File) {
108
+ if (file.raw instanceof File) {
111
109
  const url = URL.createObjectURL(file.raw);
112
110
  setObjectUrl(url);
113
- return () => {
114
- URL.revokeObjectURL(url);
115
- };
111
+ return () => URL.revokeObjectURL(url);
116
112
  }
113
+ setObjectUrl("");
114
+ return void 0;
117
115
  }, [file.raw]);
118
- const closeDialog = (0, import_useEvent.default)(() => {
119
- setImagePreviewOpen(false);
120
- });
121
- const showImage = () => {
122
- if (onPreview) {
123
- onPreview(file);
124
- } else if (objectUrl) {
125
- previewImageSrc.current = objectUrl;
126
- setImagePreviewOpen(true);
127
- }
128
- };
116
+ const previewSrc = file.url || objectUrl;
117
+ const inferredType = file.type || file.name.split(".").pop() || "";
118
+ const fileType = getFileType(inferredType);
119
+ const isImage = fileType === "image";
129
120
  const renderReload = () => {
130
121
  if (!showReload) {
131
122
  return null;
132
123
  }
133
- const icon = reloadIcon || /* @__PURE__ */ import_react.default.createElement(import_lucide_react.RotateCcw, { size: 18 });
134
124
  return /* @__PURE__ */ import_react.default.createElement(
135
125
  import_Button.default,
136
126
  {
137
127
  size: "small",
138
- icon,
128
+ icon: reloadIcon || /* @__PURE__ */ import_react.default.createElement(import_lucide_react.RotateCcw, { size: 18 }),
139
129
  variant: "text",
140
130
  color: "danger",
141
- onClick: (e) => {
142
- e.stopPropagation();
131
+ "aria-label": `Retry ${file.name}`,
132
+ title: `Retry ${file.name}`,
133
+ onClick: (event) => {
134
+ event.stopPropagation();
143
135
  onReUpload == null ? void 0 : onReUpload(file);
144
136
  }
145
137
  }
@@ -149,137 +141,134 @@ function UploadedItem(props) {
149
141
  if (!showRemoveIcon) {
150
142
  return null;
151
143
  }
152
- const icon = removeIcon || /* @__PURE__ */ import_react.default.createElement(import_lucide_react.Trash2, { size: 18 });
153
144
  return /* @__PURE__ */ import_react.default.createElement(
154
145
  import_Button.default,
155
146
  {
156
147
  size: "small",
157
- icon,
148
+ icon: removeIcon || /* @__PURE__ */ import_react.default.createElement(import_lucide_react.Trash2, { size: 16 }),
158
149
  variant: "text",
159
150
  color: "danger",
160
- onClick: (e) => {
161
- e.stopPropagation();
151
+ "aria-label": `Remove ${file.name}`,
152
+ title: `Remove ${file.name}`,
153
+ onClick: (event) => {
154
+ event.stopPropagation();
162
155
  onRemove == null ? void 0 : onRemove(file);
163
156
  }
164
157
  }
165
158
  );
166
159
  };
167
160
  const renderPreview = () => {
168
- var _a;
169
- if (!showPreviewIcon) {
161
+ if (!showPreviewIcon || !isImage || !previewable) {
170
162
  return null;
171
163
  }
172
- const icon = previewIcon || /* @__PURE__ */ import_react.default.createElement(import_lucide_react.Eye, { size: 18 });
173
- const fileType = getFileType(file.type || "");
174
- if (fileType === "image" || ((_a = file.type) == null ? void 0 : _a.startsWith("image/"))) {
175
- return /* @__PURE__ */ import_react.default.createElement(
176
- import_Button.default,
177
- {
178
- size: "small",
179
- icon,
180
- variant: "text",
181
- onClick: (e) => {
182
- e.stopPropagation();
183
- showImage();
184
- }
164
+ return /* @__PURE__ */ import_react.default.createElement(
165
+ import_Button.default,
166
+ {
167
+ size: "small",
168
+ icon: previewIcon || /* @__PURE__ */ import_react.default.createElement(import_lucide_react.Eye, { size: 16 }),
169
+ variant: "text",
170
+ "aria-label": `Preview ${file.name}`,
171
+ title: `Preview ${file.name}`,
172
+ onClick: (event) => {
173
+ event.stopPropagation();
174
+ onPreview == null ? void 0 : onPreview(file);
185
175
  }
186
- );
176
+ }
177
+ );
178
+ };
179
+ const getShowCase = () => {
180
+ if (file.status === "error" || !isImage) {
181
+ return fileIcon[fileType] || /* @__PURE__ */ import_react.default.createElement(import_lucide_react.Paperclip, { size: 14 });
187
182
  }
188
- return null;
183
+ if (previewSrc) {
184
+ return /* @__PURE__ */ import_react.default.createElement("img", { src: previewSrc, alt: file.name });
185
+ }
186
+ return fileIcon[fileType] || /* @__PURE__ */ import_react.default.createElement(import_lucide_react.Paperclip, { size: 14 });
189
187
  };
190
188
  if (listType === "picture-wall") {
191
- const fileType = getFileType(file.type || "");
192
- const getShowCase = () => {
193
- if (file.status === "error" || fileType !== "image") {
194
- return fileIcon[fileType] || /* @__PURE__ */ import_react.default.createElement(import_lucide_react.Paperclip, { size: 18 });
195
- }
196
- if (fileType === "image" && objectUrl) {
197
- return /* @__PURE__ */ import_react.default.createElement("img", { src: objectUrl, alt: file.name });
198
- }
199
- return fileIcon[fileType] || /* @__PURE__ */ import_react.default.createElement(import_lucide_react.Paperclip, { size: 18 });
200
- };
201
- return /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, /* @__PURE__ */ import_react.default.createElement(
189
+ return /* @__PURE__ */ import_react.default.createElement(
202
190
  "div",
203
191
  {
204
192
  className: (0, import_clsx.default)(`${prefixCls}-picture-wall-item`, {
205
- [`${prefixCls}-state-` + file.status]: file.status
193
+ [`${prefixCls}-state-${file.status}`]: file.status
206
194
  }),
207
- key: file.uid
195
+ "aria-label": `${file.name}: ${fileStatusTitle[file.status]}`
208
196
  },
209
- file.status === "uploading" ? /* @__PURE__ */ import_react.default.createElement(import_upload_progress.default, { file, progress }) : /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, file.status === "error" ? /* @__PURE__ */ import_react.default.createElement("div", { className: `${prefixCls}-picture-wall-item-error` }, getShowCase(), /* @__PURE__ */ import_react.default.createElement("span", { className: `${prefixCls}-picture-wall-name` }, file.name)) : /* @__PURE__ */ import_react.default.createElement("div", { className: `${prefixCls}-picture-wall-item-content` }, getShowCase(), fileType !== "image" && /* @__PURE__ */ import_react.default.createElement("span", { className: `${prefixCls}-picture-wall-name` }, file.name)), /* @__PURE__ */ import_react.default.createElement("div", { className: `${prefixCls}-picture-wall-item-operate` }, file.status === "error" ? renderReload() : /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, renderPreview(), renderTrash())))
210
- ), /* @__PURE__ */ import_react.default.createElement(
211
- import_Dialog.default,
212
- {
213
- className: `${prefixCls}-picture-dialog`,
214
- open: imagePreviewOpen,
215
- onCancel: closeDialog,
216
- footer: false
217
- },
218
- /* @__PURE__ */ import_react.default.createElement(
219
- "img",
197
+ file.status === "uploading" ? /* @__PURE__ */ import_react.default.createElement(
198
+ import_upload_progress.default,
220
199
  {
221
- src: previewImageSrc.current,
222
- alt: "preview",
223
- style: { maxWidth: "100%" }
200
+ prefixCls,
201
+ file,
202
+ progress
224
203
  }
225
- )
226
- ));
204
+ ) : /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, file.status === "error" ? /* @__PURE__ */ import_react.default.createElement("div", { className: `${prefixCls}-picture-wall-item-error` }, getShowCase(), /* @__PURE__ */ import_react.default.createElement("span", { className: `${prefixCls}-picture-wall-name` }, file.name)) : /* @__PURE__ */ import_react.default.createElement("div", { className: `${prefixCls}-picture-wall-item-content` }, getShowCase(), !isImage && /* @__PURE__ */ import_react.default.createElement("span", { className: `${prefixCls}-picture-wall-name` }, file.name)), /* @__PURE__ */ import_react.default.createElement("div", { className: `${prefixCls}-picture-wall-item-operate` }, file.status === "error" ? renderReload() : /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, renderPreview(), renderTrash())))
205
+ );
227
206
  }
228
207
  if (listType === "picture-list") {
229
- const fileType = getFileType(file.type || "");
230
- return /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, /* @__PURE__ */ import_react.default.createElement(
208
+ return /* @__PURE__ */ import_react.default.createElement(
231
209
  "div",
232
210
  {
233
211
  className: (0, import_clsx.default)(`${prefixCls}-picture-list-item`, {
234
- [`${prefixCls}-state-` + file.status]: file.status
212
+ [`${prefixCls}-state-${file.status}`]: file.status
235
213
  }),
236
- key: file.uid
214
+ "aria-label": `${file.name}: ${fileStatusTitle[file.status]}`
237
215
  },
238
- file.status === "uploading" ? /* @__PURE__ */ import_react.default.createElement("div", { className: `${prefixCls}-uploading` }, /* @__PURE__ */ import_react.default.createElement(import_Spin.default, { className: `${prefixCls}-uploading-spin`, type: "spin" }), /* @__PURE__ */ import_react.default.createElement("div", { className: `${prefixCls}-uploading-content` }, /* @__PURE__ */ import_react.default.createElement("div", null, file.name ? file.name : "Uploading..."), /* @__PURE__ */ import_react.default.createElement(import_upload_progress.default, { file, progress }))) : /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, /* @__PURE__ */ import_react.default.createElement("div", { className: `${prefixCls}-picture-list-item-content` }, file.status === "error" ? /* @__PURE__ */ import_react.default.createElement(import_lucide_react.Image, null) : /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, fileType === "image" && objectUrl ? /* @__PURE__ */ import_react.default.createElement(
216
+ file.status === "uploading" ? /* @__PURE__ */ import_react.default.createElement("div", { className: `${prefixCls}-uploading` }, /* @__PURE__ */ import_react.default.createElement(import_Spin.default, { className: `${prefixCls}-uploading-spin`, type: "spin" }), /* @__PURE__ */ import_react.default.createElement("div", { className: `${prefixCls}-uploading-content` }, /* @__PURE__ */ import_react.default.createElement("div", null, file.name || "Uploading..."), /* @__PURE__ */ import_react.default.createElement(
217
+ import_upload_progress.default,
218
+ {
219
+ prefixCls,
220
+ file,
221
+ progress
222
+ }
223
+ ))) : /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, /* @__PURE__ */ import_react.default.createElement("div", { className: `${prefixCls}-picture-list-item-content` }, file.status === "error" ? /* @__PURE__ */ import_react.default.createElement(import_lucide_react.Image, null) : isImage && previewSrc ? /* @__PURE__ */ import_react.default.createElement(
239
224
  "img",
240
225
  {
241
226
  className: `${prefixCls}-picture-list-header-img`,
242
- src: objectUrl,
227
+ src: previewSrc,
243
228
  alt: file.name
244
229
  }
245
- ) : fileIcon[fileType] || /* @__PURE__ */ import_react.default.createElement(import_lucide_react.Image, null)), /* @__PURE__ */ import_react.default.createElement("span", null, file.name)), /* @__PURE__ */ import_react.default.createElement("div", { className: `${prefixCls}-picture-list-item-operate` }, file.status === "error" && renderReload(), renderPreview(), renderTrash()))
246
- ));
230
+ ) : fileIcon[fileType] || /* @__PURE__ */ import_react.default.createElement(import_lucide_react.Image, { size: 14 }), /* @__PURE__ */ import_react.default.createElement("span", null, file.name)), /* @__PURE__ */ import_react.default.createElement("div", { className: `${prefixCls}-picture-list-item-operate` }, file.status === "error" && renderReload(), renderPreview(), renderTrash()))
231
+ );
247
232
  }
248
- const renderItem = () => {
249
- const node = /* @__PURE__ */ import_react.default.createElement(
250
- "div",
233
+ const itemNode = /* @__PURE__ */ import_react.default.createElement(
234
+ "div",
235
+ {
236
+ className: (0, import_clsx.default)(`${prefixCls}-list-item`, {
237
+ [`${prefixCls}-state-${file.status}`]: file.status,
238
+ [`${prefixCls}-list-item-clickable`]: previewable
239
+ }),
240
+ role: previewable ? "button" : void 0,
241
+ tabIndex: previewable ? 0 : void 0,
242
+ "aria-label": `${file.name}: ${fileStatusTitle[file.status]}`,
243
+ onClick: () => previewable && (onPreview == null ? void 0 : onPreview(file)),
244
+ onKeyDown: (event) => {
245
+ if (previewable && (event.key === "Enter" || event.key === " ")) {
246
+ event.preventDefault();
247
+ onPreview == null ? void 0 : onPreview(file);
248
+ }
249
+ }
250
+ },
251
+ /* @__PURE__ */ import_react.default.createElement("div", { className: `${prefixCls}-item-label` }, /* @__PURE__ */ import_react.default.createElement("div", { className: `${prefixCls}-item-icon`, "aria-hidden": "true" }, fileState[file.status] || /* @__PURE__ */ import_react.default.createElement(import_lucide_react.Paperclip, { size: 14 })), /* @__PURE__ */ import_react.default.createElement("span", { className: `${prefixCls}-item-name-content` }, file.name)),
252
+ file.status !== "uploading" && /* @__PURE__ */ import_react.default.createElement(
253
+ import_Space.default,
251
254
  {
252
- className: (0, import_clsx.default)(`${prefixCls}-list-item`, {
253
- [`${prefixCls}-state-` + file.status]: file.status,
254
- [`${prefixCls}-list-item-clickable`]: !!onPreview
255
- }),
256
- onClick: () => onPreview == null ? void 0 : onPreview(file),
257
- key: file.uid
255
+ className: `${prefixCls}-item-operate`,
256
+ gap: 8,
257
+ onClick: (event) => event.stopPropagation()
258
258
  },
259
- /* @__PURE__ */ import_react.default.createElement("div", { style: { display: "flex", alignItems: "center" } }, /* @__PURE__ */ import_react.default.createElement("div", { className: `${prefixCls}-item-icon` }, fileState[file.status] || /* @__PURE__ */ import_react.default.createElement(import_lucide_react.Paperclip, { size: 18 })), /* @__PURE__ */ import_react.default.createElement("span", { className: `${prefixCls}-item-name-content` }, file.name)),
260
- file.status !== "uploading" && /* @__PURE__ */ import_react.default.createElement(
261
- import_Space.default,
262
- {
263
- className: `${prefixCls}-item-operate`,
264
- gap: 8,
265
- onClick: (event) => event.stopPropagation()
266
- },
267
- itemRender == null ? void 0 : itemRender(file, []),
268
- file.status === "error" ? renderReload() : renderPreview(),
269
- renderTrash()
270
- )
271
- );
272
- if (showTooltip) {
273
- return /* @__PURE__ */ import_react.default.createElement(
274
- import_Tooltip.default,
275
- {
276
- title: fileStatusTitle[file.status] || fileStatusTitle.ready
277
- },
278
- node
279
- );
259
+ itemRender == null ? void 0 : itemRender(file, fileList),
260
+ file.status === "error" ? renderReload() : renderPreview(),
261
+ renderTrash()
262
+ )
263
+ );
264
+ return /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, showTooltip ? /* @__PURE__ */ import_react.default.createElement(import_Tooltip.default, { title: fileStatusTitle[file.status] }, itemNode) : itemNode, file.status === "uploading" && /* @__PURE__ */ import_react.default.createElement("div", { className: `${prefixCls}-item-progress`, title: file.name }, /* @__PURE__ */ import_react.default.createElement(
265
+ import_upload_progress.default,
266
+ {
267
+ prefixCls,
268
+ file,
269
+ progress,
270
+ showInfo: true
280
271
  }
281
- return node;
282
- };
283
- return /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, renderItem(), file.status === "uploading" && /* @__PURE__ */ import_react.default.createElement("div", { className: `${prefixCls}-item-progress`, title: file.name }, /* @__PURE__ */ import_react.default.createElement(import_upload_progress.default, { file, progress, showInfo: true })));
272
+ )));
284
273
  }
285
274
  var uploaded_item_default = UploadedItem;
@@ -55,6 +55,7 @@ export interface LocaleTable {
55
55
  sortAscending?: string;
56
56
  sortDescending?: string;
57
57
  sortCancel?: string;
58
+ resizeColumn?: string;
58
59
  }
59
60
  export interface LocalePagination {
60
61
  total?: string;
@@ -115,7 +115,8 @@ var locale = {
115
115
  selectionNone: "Clear Selection on Page",
116
116
  sortAscending: "Click to sort ascending",
117
117
  sortDescending: "Click to sort descending",
118
- sortCancel: "Click to cancel sorting"
118
+ sortCancel: "Click to cancel sorting",
119
+ resizeColumn: "Drag to resize column"
119
120
  },
120
121
  pagination: {
121
122
  total: "Total {total} items",
@@ -115,7 +115,8 @@ var locale = {
115
115
  selectionNone: "ページ内選択をクリア",
116
116
  sortAscending: "クリックで昇順に並べ替え",
117
117
  sortDescending: "クリックで降順に並べ替え",
118
- sortCancel: "クリックで並べ替えを解除"
118
+ sortCancel: "クリックで並べ替えを解除",
119
+ resizeColumn: "ドラッグで列幅を変更"
119
120
  },
120
121
  pagination: {
121
122
  total: "合計 {total} 件",
@@ -106,7 +106,8 @@ var locale = {
106
106
  selectionNone: "清空当页选择",
107
107
  sortAscending: "点击升序排列",
108
108
  sortDescending: "点击降序排列",
109
- sortCancel: "点击取消排序"
109
+ sortCancel: "点击取消排序",
110
+ resizeColumn: "拖动调整列宽"
110
111
  },
111
112
  pagination: {
112
113
  total: "共 {total} 条",
@@ -106,7 +106,8 @@ var locale = {
106
106
  selectionNone: "清空當頁選擇",
107
107
  sortAscending: "點擊升序排列",
108
108
  sortDescending: "點擊降序排列",
109
- sortCancel: "點擊取消排序"
109
+ sortCancel: "點擊取消排序",
110
+ resizeColumn: "拖動調整欄寬"
110
111
  },
111
112
  pagination: {
112
113
  total: "共 {total} 條",
@@ -674,6 +674,7 @@
674
674
  --yee-table-bordered-cell-border-width: 1px;
675
675
  --yee-table-bordered-thead-border-width: 1px;
676
676
  --yee-table-thead-action-gap: 8px;
677
+ --yee-table-resize-handle-width: 8px;
677
678
  --yee-table-filter-popup-padding: 8px;
678
679
  --yee-table-content-border-radius: 6px 6px 0 0;
679
680
  --yee-table-cell-padding: 13px 16px;
@@ -743,7 +744,7 @@
743
744
  --yee-tabs-operation-container-margin-top: -8px;
744
745
  --yee-tabs-operation-container-padding: 4px 0;
745
746
  --yee-tabs-operation-tab-height: 32px;
746
- --yee-tabs-operation-tab-padding: 5px 12px;
747
+ --yee-tabs-operation-tab-padding: 0 12px;
747
748
  --yee-tabs-tab-group-margin-left: 4px;
748
749
  --yee-tabs-tab-group-container-padding: 8px;
749
750
  --yee-tabs-tab-group-container-line-height: 32px;
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * @rainbow-oh/yee-c CSS Variables
3
3
  * Auto-generated, do not edit manually
4
- * Generated on 2026-08-26T07:19:52.815Z
4
+ * Generated on 2026-09-10T06:30:03.660Z
5
5
  */
6
6
 
7
7
  /* ========== color.blue.css ========== */
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * @rainbow-oh/yee-c CSS Variables
3
3
  * Auto-generated, do not edit manually
4
- * Generated on 2026-08-26T07:19:52.815Z
4
+ * Generated on 2026-09-10T06:30:03.660Z
5
5
  */
6
6
 
7
7
  /* ========== color.css ========== */
@@ -1796,6 +1796,7 @@
1796
1796
  --yee-table-bordered-cell-border-width: 1px;
1797
1797
  --yee-table-bordered-thead-border-width: 1px;
1798
1798
  --yee-table-thead-action-gap: 8px;
1799
+ --yee-table-resize-handle-width: 8px;
1799
1800
  --yee-table-filter-popup-padding: 8px;
1800
1801
  --yee-table-content-border-radius: 6px 6px 0 0;
1801
1802
  --yee-table-cell-padding: 13px 16px;
@@ -1865,7 +1866,7 @@
1865
1866
  --yee-tabs-operation-container-margin-top: -8px;
1866
1867
  --yee-tabs-operation-container-padding: 4px 0;
1867
1868
  --yee-tabs-operation-tab-height: 32px;
1868
- --yee-tabs-operation-tab-padding: 5px 12px;
1869
+ --yee-tabs-operation-tab-padding: 0 12px;
1869
1870
  --yee-tabs-tab-group-margin-left: 4px;
1870
1871
  --yee-tabs-tab-group-container-padding: 8px;
1871
1872
  --yee-tabs-tab-group-container-line-height: 32px;
@@ -1,5 +1,7 @@
1
1
  import { AxConfig } from './interface';
2
2
  declare class Ax {
3
- request(configOrUrl: AxConfig | string): Promise<unknown>;
3
+ request(configOrUrl: AxConfig | string): Promise<Response> | (Promise<any> & {
4
+ abort: () => void;
5
+ });
4
6
  }
5
7
  export default Ax;