@whitesev/pops 3.3.3 → 3.3.5

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 (43) hide show
  1. package/dist/index.amd.js +93 -34
  2. package/dist/index.amd.js.map +1 -1
  3. package/dist/index.amd.min.js +1 -1
  4. package/dist/index.amd.min.js.map +1 -1
  5. package/dist/index.cjs.js +93 -34
  6. package/dist/index.cjs.js.map +1 -1
  7. package/dist/index.cjs.min.js +1 -1
  8. package/dist/index.cjs.min.js.map +1 -1
  9. package/dist/index.esm.js +93 -34
  10. package/dist/index.esm.js.map +1 -1
  11. package/dist/index.esm.min.js +1 -1
  12. package/dist/index.esm.min.js.map +1 -1
  13. package/dist/index.iife.js +93 -34
  14. package/dist/index.iife.js.map +1 -1
  15. package/dist/index.iife.min.js +1 -1
  16. package/dist/index.iife.min.js.map +1 -1
  17. package/dist/index.system.js +93 -34
  18. package/dist/index.system.js.map +1 -1
  19. package/dist/index.system.min.js +1 -1
  20. package/dist/index.system.min.js.map +1 -1
  21. package/dist/index.umd.js +93 -34
  22. package/dist/index.umd.js.map +1 -1
  23. package/dist/index.umd.min.js +1 -1
  24. package/dist/index.umd.min.js.map +1 -1
  25. package/dist/types/src/Pops.d.ts +11 -10
  26. package/dist/types/src/components/folder/types/index.d.ts +18 -13
  27. package/dist/types/src/components/tooltip/index.d.ts +1 -1
  28. package/dist/types/src/config/GlobalConfig.d.ts +1 -0
  29. package/dist/types/src/handler/PopsHandler.d.ts +2 -5
  30. package/dist/types/src/types/components.d.ts +7 -0
  31. package/package.json +1 -1
  32. package/src/components/alert/defaultConfig.ts +1 -0
  33. package/src/components/confirm/defaultConfig.ts +1 -0
  34. package/src/components/drawer/defaultConfig.ts +1 -0
  35. package/src/components/folder/defaultConfig.ts +1 -0
  36. package/src/components/folder/index.ts +58 -33
  37. package/src/components/folder/types/index.ts +29 -19
  38. package/src/components/iframe/defaultConfig.ts +1 -0
  39. package/src/components/loading/defaultConfig.ts +1 -0
  40. package/src/components/panel/defaultConfig.ts +1 -0
  41. package/src/components/prompt/defaultConfig.ts +1 -0
  42. package/src/handler/PopsHandler.ts +34 -10
  43. package/src/types/components.d.ts +7 -0
package/dist/index.esm.js CHANGED
@@ -3488,19 +3488,37 @@ const PopsHandler = {
3488
3488
  const $shadowContainer = popsDOMUtils.createElement("div", {
3489
3489
  className: "pops-shadow-container",
3490
3490
  });
3491
+ let $shadowRoot;
3491
3492
  if (config.useShadowRoot) {
3492
- const $shadowRoot = $shadowContainer.attachShadow({ mode: "open" });
3493
- return {
3494
- $shadowContainer,
3495
- $shadowRoot,
3496
- };
3493
+ $shadowRoot = $shadowContainer.attachShadow({ mode: "open" });
3497
3494
  }
3498
3495
  else {
3499
- return {
3500
- $shadowContainer,
3501
- $shadowRoot: $shadowContainer,
3502
- };
3496
+ $shadowRoot = $shadowContainer;
3497
+ }
3498
+ // 添加键盘监听
3499
+ // rightClickMenu
3500
+ // searchSuggestion
3501
+ // tooltip
3502
+ // 以上都不需要添加该事件监听
3503
+ if (config.stopKeyDownEventPropagation) {
3504
+ popsDOMUtils.on($shadowRoot, "keydown", [
3505
+ 'input[type="text"]',
3506
+ 'input[type="password"]',
3507
+ 'input[type="number"]',
3508
+ 'input[type="email"]',
3509
+ 'input[type="url"]',
3510
+ 'input[type="search"]',
3511
+ "input:not([type])",
3512
+ "textarea",
3513
+ ], (evt) => {
3514
+ evt.stopImmediatePropagation();
3515
+ evt.stopPropagation();
3516
+ }, { capture: true });
3503
3517
  }
3518
+ return {
3519
+ $shadowContainer,
3520
+ $shadowRoot,
3521
+ };
3504
3522
  },
3505
3523
  /**
3506
3524
  * 处理初始化
@@ -4027,6 +4045,7 @@ const PopsAlertDefaultConfig = () => {
4027
4045
  lightStyle: null,
4028
4046
  darkStyle: null,
4029
4047
  beforeAppendToPageCallBack() { },
4048
+ stopKeyDownEventPropagation: true,
4030
4049
  };
4031
4050
  };
4032
4051
 
@@ -4235,6 +4254,7 @@ const PopsConfirmDefaultConfig = () => {
4235
4254
  lightStyle: null,
4236
4255
  darkStyle: null,
4237
4256
  beforeAppendToPageCallBack() { },
4257
+ stopKeyDownEventPropagation: true,
4238
4258
  };
4239
4259
  };
4240
4260
 
@@ -4443,6 +4463,7 @@ const PopsDrawerDefaultConfig = () => {
4443
4463
  darkStyle: null,
4444
4464
  beforeAppendToPageCallBack() { },
4445
4465
  forbiddenScroll: false,
4466
+ stopKeyDownEventPropagation: true,
4446
4467
  };
4447
4468
  };
4448
4469
 
@@ -4663,6 +4684,7 @@ const PopsLoadingDefaultConfig = () => {
4663
4684
  lightStyle: null,
4664
4685
  darkStyle: null,
4665
4686
  addIndexCSS: true,
4687
+ stopKeyDownEventPropagation: true,
4666
4688
  };
4667
4689
  };
4668
4690
 
@@ -4891,6 +4913,7 @@ const PopsFolderDefaultConfig = () => {
4891
4913
  lightStyle: null,
4892
4914
  darkStyle: null,
4893
4915
  beforeAppendToPageCallBack() { },
4916
+ stopKeyDownEventPropagation: true,
4894
4917
  };
4895
4918
  };
4896
4919
 
@@ -5348,10 +5371,13 @@ const PopsFolder = {
5348
5371
  </div>`);
5349
5372
  // 存储原来的值
5350
5373
  Reflect.set($fileName, "__value__", folderData);
5351
- Reflect.set($folder, "folderData", folderData);
5374
+ Reflect.set($folder, "__value__", folderData);
5352
5375
  $folder.appendChild($fileName);
5353
5376
  return {
5354
5377
  folderElement: $folder,
5378
+ /**
5379
+ * 超链接标签的容器
5380
+ */
5355
5381
  fileNameElement: $fileName,
5356
5382
  };
5357
5383
  }
@@ -5440,8 +5466,17 @@ const PopsFolder = {
5440
5466
  },
5441
5467
  addIndexCSS: false,
5442
5468
  });
5469
+ let childConfig;
5443
5470
  if (typeof dataConfig.clickEvent === "function") {
5444
- const childConfig = await dataConfig.clickEvent(clickEvent, dataConfig);
5471
+ const result = await dataConfig.clickEvent(clickEvent, dataConfig);
5472
+ if (Array.isArray(result)) {
5473
+ childConfig = result;
5474
+ }
5475
+ }
5476
+ else if (Array.isArray(dataConfig.clickEvent)) {
5477
+ childConfig = dataConfig.clickEvent;
5478
+ }
5479
+ if (childConfig) {
5445
5480
  // 添加顶部导航的箭头
5446
5481
  folderFileListBreadcrumbPrimaryElement.appendChild(this.createHeaderArrowIcon());
5447
5482
  // 添加顶部导航的链接文字
@@ -5455,50 +5490,65 @@ const PopsFolder = {
5455
5490
  }
5456
5491
  loadingMask.close();
5457
5492
  }
5493
+ /**
5494
+ * 更新文件的显示的链接信息
5495
+ *
5496
+ * 这里主要用于鼠标中键或者右键触发,左键触发方式会根据mode进行处理
5497
+ * @returns 更新的文件的下载链接
5498
+ */
5499
+ updateFileLink($row, downloadInfo) {
5500
+ const downloadUrl = typeof downloadInfo?.url === "string" ? downloadInfo.url.trim() : "";
5501
+ if (downloadUrl !== "" && downloadUrl !== "null" && downloadUrl !== "undefined") {
5502
+ const $link = $row.querySelector("a");
5503
+ $link.setAttribute("href", downloadUrl);
5504
+ return downloadUrl;
5505
+ }
5506
+ }
5458
5507
  /**
5459
5508
  * 文件的点击事件 - 下载文件
5460
- * @param $target
5509
+ * @param evt 点击事件
5510
+ * @param $row 列表项
5461
5511
  * @param dataConfig
5462
5512
  */
5463
- async downloadFile(clickEvent, $row, dataConfig) {
5464
- popsDOMUtils.preventEvent(clickEvent);
5465
- const $link = $row.querySelector("a");
5513
+ async onFileClick(evt, $row, dataConfig) {
5514
+ let downloadInfo;
5466
5515
  if (typeof dataConfig.clickEvent === "function") {
5467
- const downloadInfo = await dataConfig.clickEvent(clickEvent, dataConfig);
5468
- if (downloadInfo != null &&
5469
- typeof downloadInfo === "object" &&
5470
- !Array.isArray(downloadInfo) &&
5471
- typeof downloadInfo.url === "string" &&
5472
- downloadInfo.url.trim() !== "") {
5473
- $link.setAttribute("href", downloadInfo.url);
5474
- $link.setAttribute("target", "_blank");
5475
- if (downloadInfo.autoDownload) {
5476
- if (downloadInfo.mode == null || String(downloadInfo.mode) === "") {
5477
- // 未设置mode的话默认为aBlank
5478
- downloadInfo.mode = "aBlank";
5479
- }
5516
+ const result = await dataConfig.clickEvent(evt, dataConfig);
5517
+ if (typeof result === "object" && result != null && !Array.isArray(result)) {
5518
+ downloadInfo = result;
5519
+ }
5520
+ }
5521
+ else if (typeof dataConfig.clickEvent === "object" &&
5522
+ dataConfig.clickEvent != null &&
5523
+ !Array.isArray(dataConfig.clickEvent)) {
5524
+ downloadInfo = dataConfig.clickEvent;
5525
+ }
5526
+ if (downloadInfo) {
5527
+ const downloadUrl = this.updateFileLink($row, downloadInfo);
5528
+ if (downloadUrl) {
5529
+ if (typeof downloadInfo.mode === "string") {
5480
5530
  if (downloadInfo.mode === "a" || downloadInfo.mode === "aBlank") {
5481
5531
  // a标签下载
5482
5532
  const $anchor = popsDOMUtils.createElement("a");
5483
5533
  if (downloadInfo.mode === "aBlank") {
5484
5534
  $anchor.setAttribute("target", "_blank");
5485
5535
  }
5486
- $anchor.href = downloadInfo.url;
5536
+ $anchor.href = downloadUrl;
5487
5537
  $anchor.click();
5488
5538
  }
5489
5539
  else if (downloadInfo.mode === "open" || downloadInfo.mode === "openBlank") {
5490
5540
  // window.open下载
5491
5541
  if (downloadInfo.mode === "openBlank") {
5492
- globalThis.open(downloadInfo.url, "_blank");
5542
+ globalThis.open(downloadUrl, "_blank");
5493
5543
  }
5494
5544
  else {
5495
- globalThis.open(downloadInfo.url);
5545
+ globalThis.open(downloadUrl);
5496
5546
  }
5497
5547
  }
5498
5548
  else if (downloadInfo.mode === "iframe") {
5499
5549
  // iframe下载
5500
5550
  const $downloadIframe = popsDOMUtils.createElement("iframe");
5501
- $downloadIframe.src = downloadInfo.url;
5551
+ $downloadIframe.src = downloadUrl;
5502
5552
  $downloadIframe.onload = function () {
5503
5553
  popsUtils.setTimeout(() => {
5504
5554
  $downloadIframe.remove();
@@ -5680,8 +5730,14 @@ const PopsFolder = {
5680
5730
  // 文件 - 点击事件
5681
5731
  popsDOMUtils.on(fileNameElement, "click", (event) => {
5682
5732
  // 下载文件
5683
- this.downloadFile(event, fileNameElement, item);
5733
+ popsDOMUtils.preventEvent(event);
5734
+ this.onFileClick(event, fileNameElement, item);
5684
5735
  });
5736
+ // 如果clickEvent不是函数,那么现在就可以进行配置
5737
+ if (typeof item.clickEvent === "object" && item.clickEvent !== null && !Array.isArray(item.clickEvent)) {
5738
+ // {} 单文件配置
5739
+ this.updateFileLink(fileNameElement, item.clickEvent);
5740
+ }
5685
5741
  folderListBodyElement.appendChild(folderElement);
5686
5742
  }
5687
5743
  });
@@ -5823,6 +5879,7 @@ const PopsIframeDefaultConfig = () => {
5823
5879
  lightStyle: null,
5824
5880
  darkStyle: null,
5825
5881
  beforeAppendToPageCallBack() { },
5882
+ stopKeyDownEventPropagation: true,
5826
5883
  };
5827
5884
  };
5828
5885
 
@@ -6946,6 +7003,7 @@ const PopsPanelDefaultConfig = () => {
6946
7003
  lightStyle: null,
6947
7004
  darkStyle: null,
6948
7005
  beforeAppendToPageCallBack() { },
7006
+ stopKeyDownEventPropagation: true,
6949
7007
  };
6950
7008
  };
6951
7009
 
@@ -11713,6 +11771,7 @@ const PopsPromptDefaultConfig = () => {
11713
11771
  lightStyle: null,
11714
11772
  darkStyle: null,
11715
11773
  beforeAppendToPageCallBack() { },
11774
+ stopKeyDownEventPropagation: true,
11716
11775
  };
11717
11776
  };
11718
11777
 
@@ -13366,7 +13425,7 @@ const PopsSearchSuggestion = {
13366
13425
  },
13367
13426
  };
13368
13427
 
13369
- const version = "3.3.3";
13428
+ const version = "3.3.5";
13370
13429
 
13371
13430
  class Pops {
13372
13431
  /** 配置 */