@ibiz-template/runtime 0.7.41-alpha.139 → 0.7.41-alpha.140

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.
@@ -1 +1 @@
1
- {"version":3,"file":"file-util.d.ts","sourceRoot":"","sources":["../../../src/utils/file-util/file-util.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"file-util.d.ts","sourceRoot":"","sources":["../../../src/utils/file-util/file-util.ts"],"names":[],"mappings":"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"}
@@ -323,36 +323,45 @@ export class FileUtil {
323
323
  */
324
324
  chooseFile(accept = '', multiple = false) {
325
325
  return new Promise(resolve => {
326
- // 创建 input 元素
327
- let inputElement = document.createElement('input');
328
- inputElement.type = 'file';
329
- inputElement.accept = accept;
330
- inputElement.multiple = multiple;
331
- inputElement.webkitdirectory = false;
332
- // 添加事件监听器,处理文件上传逻辑
333
- inputElement.addEventListener('change', (e) => {
334
- if (inputElement) {
335
- document.body.removeChild(inputElement);
336
- inputElement = null;
337
- }
338
- resolve(e.target.files);
339
- }, { once: true });
340
- // 将 input 元素添加到页面中
341
- document.body.appendChild(inputElement);
342
- // 执行文件上传操作
343
- inputElement.click();
344
- // 监听取消操作
345
- window.addEventListener('focus', () => {
346
- // 确保执行在 change 之后
326
+ const input = document.createElement('input');
327
+ input.type = 'file';
328
+ input.accept = accept;
329
+ input.multiple = multiple;
330
+ input.webkitdirectory = false;
331
+ let settled = false;
332
+ const settle = (result) => {
333
+ if (settled)
334
+ return;
335
+ settled = true;
336
+ input.remove();
337
+ resolve(result);
338
+ };
339
+ // 1. 选中文件
340
+ input.onchange = (e) => {
341
+ var _a;
342
+ const files = (_a = e.target.files) !== null && _a !== void 0 ? _a : undefined;
343
+ settle(files);
344
+ };
345
+ // 2. 现代浏览器:用户取消会触发 cancel 事件
346
+ input.oncancel = () => {
347
+ settle(undefined);
348
+ };
349
+ // 3. 挂载元素触发文件上传
350
+ document.body.appendChild(input);
351
+ input.click();
352
+ // 4. 兜底:focus 回来之后 change 迟迟没来
353
+ const onFocus = () => {
354
+ window.removeEventListener('focus', onFocus);
347
355
  setTimeout(() => {
348
- // 方法结束后销毁 input 元素
349
- if (inputElement) {
350
- document.body.removeChild(inputElement);
351
- inputElement = null;
352
- }
353
- resolve(undefined);
356
+ if (settled)
357
+ return;
358
+ // 关键:如果 input 里已经有文件,说明 change 一定会来,绝不当成取消
359
+ if (input.files && input.files.length > 0)
360
+ return;
361
+ settle(undefined);
354
362
  }, 1000);
355
- }, { once: true });
363
+ };
364
+ window.addEventListener('focus', onFocus);
356
365
  });
357
366
  }
358
367
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ibiz-template/runtime",
3
- "version": "0.7.41-alpha.139",
3
+ "version": "0.7.41-alpha.140",
4
4
  "description": "运行时逻辑库",
5
5
  "type": "module",
6
6
  "main": "out/index.js",
@@ -39,7 +39,7 @@
39
39
  "jsencrypt": "^3.3.2"
40
40
  },
41
41
  "devDependencies": {
42
- "@ibiz-template/core": "^0.7.41-alpha.138",
42
+ "@ibiz-template/core": "^0.7.41-alpha.140",
43
43
  "@ibiz/model-core": "^0.1.89",
44
44
  "@types/animejs": "^3.1.12",
45
45
  "@types/path-browserify": "^1.0.2",
@@ -70,5 +70,5 @@
70
70
  "qx-util": "^0.4.8",
71
71
  "ramda": "^0.29.0"
72
72
  },
73
- "gitHead": "b875543c236f00a5838e22a3ebe97ac773bee9f8"
73
+ "gitHead": "29a5a4315ab5fc1780030f02bc6ceaa8af60738c"
74
74
  }
@@ -413,48 +413,46 @@ export class FileUtil implements IApiFileUtil {
413
413
  multiple: boolean = false,
414
414
  ): Promise<FileList | undefined> {
415
415
  return new Promise(resolve => {
416
- // 创建 input 元素
417
- let inputElement: HTMLInputElement | null =
418
- document.createElement('input');
419
- inputElement.type = 'file';
420
- inputElement.accept = accept;
421
- inputElement.multiple = multiple;
422
- inputElement.webkitdirectory = false;
423
- // 添加事件监听器,处理文件上传逻辑
424
- inputElement.addEventListener(
425
- 'change',
426
- (e: IData) => {
427
- if (inputElement) {
428
- document.body.removeChild(inputElement);
429
- inputElement = null;
430
- }
431
- resolve(e.target.files);
432
- },
433
- { once: true },
434
- );
416
+ const input = document.createElement('input');
417
+ input.type = 'file';
418
+ input.accept = accept;
419
+ input.multiple = multiple;
420
+ input.webkitdirectory = false;
435
421
 
436
- // 将 input 元素添加到页面中
437
- document.body.appendChild(inputElement);
422
+ let settled = false;
423
+ const settle = (result: FileList | undefined): void => {
424
+ if (settled) return;
425
+ settled = true;
426
+ input.remove();
427
+ resolve(result);
428
+ };
438
429
 
439
- // 执行文件上传操作
440
- inputElement.click();
430
+ // 1. 选中文件
431
+ input.onchange = (e: Event): void => {
432
+ const files = (e.target as HTMLInputElement).files ?? undefined;
433
+ settle(files);
434
+ };
441
435
 
442
- // 监听取消操作
443
- window.addEventListener(
444
- 'focus',
445
- () => {
446
- // 确保执行在 change 之后
447
- setTimeout(() => {
448
- // 方法结束后销毁 input 元素
449
- if (inputElement) {
450
- document.body.removeChild(inputElement);
451
- inputElement = null;
452
- }
453
- resolve(undefined);
454
- }, 1000);
455
- },
456
- { once: true },
457
- );
436
+ // 2. 现代浏览器:用户取消会触发 cancel 事件
437
+ input.oncancel = (): void => {
438
+ settle(undefined);
439
+ };
440
+
441
+ // 3. 挂载元素触发文件上传
442
+ document.body.appendChild(input);
443
+ input.click();
444
+
445
+ // 4. 兜底:focus 回来之后 change 迟迟没来
446
+ const onFocus = (): void => {
447
+ window.removeEventListener('focus', onFocus);
448
+ setTimeout(() => {
449
+ if (settled) return;
450
+ // 关键:如果 input 里已经有文件,说明 change 一定会来,绝不当成取消
451
+ if (input.files && input.files.length > 0) return;
452
+ settle(undefined);
453
+ }, 1000);
454
+ };
455
+ window.addEventListener('focus', onFocus);
458
456
  });
459
457
  }
460
458