@whitesev/pops 3.3.4 → 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 (42) hide show
  1. package/dist/index.amd.js +36 -10
  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 +36 -10
  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 +36 -10
  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 +36 -10
  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 +36 -10
  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 +36 -10
  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 +4 -0
  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/types/index.ts +4 -0
  37. package/src/components/iframe/defaultConfig.ts +1 -0
  38. package/src/components/loading/defaultConfig.ts +1 -0
  39. package/src/components/panel/defaultConfig.ts +1 -0
  40. package/src/components/prompt/defaultConfig.ts +1 -0
  41. package/src/handler/PopsHandler.ts +34 -10
  42. package/src/types/components.d.ts +7 -0
@@ -37,16 +37,16 @@ declare class Pops {
37
37
  };
38
38
  /** icon图标的svg代码 */
39
39
  iconSVG: {
40
- loading: string;
41
40
  min: string;
42
- max: string;
43
- search: string;
44
41
  mise: string;
42
+ max: string;
45
43
  close: string;
46
44
  edit: string;
47
45
  share: string;
48
46
  delete: string;
47
+ search: string;
49
48
  upload: string;
49
+ loading: string;
50
50
  next: string;
51
51
  prev: string;
52
52
  eleme: string;
@@ -72,14 +72,14 @@ declare class Pops {
72
72
  };
73
73
  /** 存储已创建的元素 */
74
74
  instData: {
75
- iframe: import("./types/inst").PopsInstGeneralConfig[];
76
- folder: import("./types/inst").PopsInstGeneralConfig[];
77
75
  loading: import("./types/inst").PopsInstGeneralConfig[];
78
76
  alert: import("./types/inst").PopsInstGeneralConfig[];
79
77
  confirm: import("./types/inst").PopsInstGeneralConfig[];
80
78
  prompt: import("./types/inst").PopsInstGeneralConfig[];
79
+ iframe: import("./types/inst").PopsInstGeneralConfig[];
81
80
  tooltip: import("./types/inst").PopsInstGeneralConfig[];
82
81
  drawer: import("./types/inst").PopsInstGeneralConfig[];
82
+ folder: import("./types/inst").PopsInstGeneralConfig[];
83
83
  panel: import("./types/inst").PopsInstGeneralConfig[];
84
84
  rightClickMenu: import("./types/inst").PopsInstGeneralConfig[];
85
85
  };
@@ -726,6 +726,7 @@ declare class Pops {
726
726
  forbiddenScroll?: boolean | undefined;
727
727
  lightStyle?: string | undefined;
728
728
  darkStyle?: string | undefined;
729
+ stopKeyDownEventPropagation?: boolean | undefined;
729
730
  beforeAppendToPageCallBack?: void;
730
731
  drag?: boolean | undefined;
731
732
  dragLimit?: boolean | undefined;
@@ -788,16 +789,16 @@ declare class Pops {
788
789
  showArrow: boolean;
789
790
  arrowDistance: number;
790
791
  otherDistance: number;
791
- useShadowRoot: boolean;
792
- only: boolean;
793
792
  zIndex: IFunction<number>;
794
793
  style: string | null;
794
+ useShadowRoot: boolean;
795
+ only: boolean;
795
796
  lightStyle: string | null;
796
797
  darkStyle: string | null;
797
798
  beforeAppendToPageCallBack: ($shadowRoot: ShadowRoot | HTMLElement, $shadowContainer: HTMLDivElement) => void;
798
799
  };
799
800
  $shadowContainer: HTMLDivElement;
800
- $shadowRoot: HTMLDivElement | ShadowRoot;
801
+ $shadowRoot: ShadowRoot | HTMLElement;
801
802
  toolTip: import("./components/tooltip").ToolTip;
802
803
  };
803
804
  /**
@@ -817,9 +818,9 @@ declare class Pops {
817
818
  panel: (config: PopsPanelConfig) => {
818
819
  addEventListener: <K extends keyof import("./components/panel/types").PopsPanelEventType>(event: K, listener: (evt: CustomEvent<import("./components/panel/types").PopsPanelEventType[K]>) => void, options?: boolean | EventListenerOptions) => void;
819
820
  removeEventListener: <K extends keyof import("./components/panel/types").PopsPanelEventType>(event: K, listener: (evt: CustomEvent<import("./components/panel/types").PopsPanelEventType[K]>) => void, options?: boolean | EventListenerOptions) => void;
820
- mode: import("./types/main").PopsType;
821
821
  close: () => Promise<void>;
822
822
  hide: () => Promise<void>;
823
+ mode: import("./types/main").PopsType;
823
824
  show: ($parent?: HTMLElement | Document | ShadowRoot) => Promise<void>;
824
825
  $shadowContainer: HTMLDivElement;
825
826
  $shadowRoot: ShadowRoot | HTMLElement;
@@ -907,7 +908,7 @@ declare class Pops {
907
908
  * searchSuggestion.setAllEvent();
908
909
  */
909
910
  searchSuggestion: <T = any>(config: PopsSearchSuggestionConfig<T>) => {
910
- selfDocument: Document | ShadowRoot | (Document | ShadowRoot)[];
911
+ selfDocument: ShadowRoot | Document | (ShadowRoot | Document)[];
911
912
  $el: {
912
913
  root: HTMLElement;
913
914
  $dropdownWrapper: HTMLElement;
@@ -4,8 +4,12 @@ import type { PopsTitleConfig, PopsDragConfig, PopsGeneralConfig, PopsMoreButton
4
4
  */
5
5
  export type PopsFolderDownloadOption = {
6
6
  /**
7
+ *
8
+ * 前置条件:url不为空
9
+ *
7
10
  * 下载方式,不传入就不下载(不做任何处理)
8
11
  *
12
+ *
9
13
  * + `a`: 使用`a标签`进行下载
10
14
  * + `aBlank`: 使用`a标签`进行下载(添加属性`target="_blank"`)
11
15
  * + `iframe`: 使用`iframe`进行下载
@@ -213,7 +213,7 @@ export declare const PopsTooltip: {
213
213
  beforeAppendToPageCallBack: ($shadowRoot: ShadowRoot | HTMLElement, $shadowContainer: HTMLDivElement) => void;
214
214
  };
215
215
  $shadowContainer: HTMLDivElement;
216
- $shadowRoot: HTMLDivElement | ShadowRoot;
216
+ $shadowRoot: HTMLElement | ShadowRoot;
217
217
  toolTip: ToolTip;
218
218
  };
219
219
  };
@@ -27,6 +27,7 @@ export declare const GlobalConfig: {
27
27
  forbiddenScroll?: boolean | undefined;
28
28
  lightStyle?: string | undefined;
29
29
  darkStyle?: string | undefined;
30
+ stopKeyDownEventPropagation?: boolean | undefined;
30
31
  beforeAppendToPageCallBack?: void;
31
32
  drag?: boolean | undefined;
32
33
  dragLimit?: boolean | undefined;
@@ -14,12 +14,9 @@ export declare const PopsHandler: {
14
14
  /**
15
15
  * 创建shadow
16
16
  */
17
- handlerShadow(config: Pick<PopsGeneralConfig, "useShadowRoot">): {
17
+ handlerShadow(config: Pick<PopsGeneralConfig, "useShadowRoot" | "stopKeyDownEventPropagation">): {
18
18
  $shadowContainer: HTMLDivElement;
19
- $shadowRoot: ShadowRoot;
20
- } | {
21
- $shadowContainer: HTMLDivElement;
22
- $shadowRoot: HTMLDivElement;
19
+ $shadowRoot: HTMLElement | ShadowRoot;
23
20
  };
24
21
  /**
25
22
  * 处理初始化
@@ -214,6 +214,13 @@ export interface PopsGeneralConfig {
214
214
  * 传入的css都在dark内
215
215
  */
216
216
  darkStyle?: string | null;
217
+ /**
218
+ * (可选)是否阻止`keydown`事件传播
219
+ *
220
+ * 主要是阻止当`keydown`触发来源为输入框时,即在输入框内按下按键不会触发页面的快捷键
221
+ * @default true
222
+ */
223
+ stopKeyDownEventPropagation?: boolean;
217
224
  /**
218
225
  * 在元素添加到页面前的事件
219
226
  * @param $shadowRoot 根元素
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@whitesev/pops",
3
- "version": "3.3.4",
3
+ "version": "3.3.5",
4
4
  "description": "弹窗库,包含了alert、confirm、prompt、drawer、folder、loading、iframe、panel、tooltip、searchSuggestion、rightClickMenu组件",
5
5
  "keywords": [
6
6
  "ScriptCat",
@@ -60,5 +60,6 @@ export const PopsAlertDefaultConfig = (): DeepRequired<PopsAlertConfig> => {
60
60
  lightStyle: null,
61
61
  darkStyle: null,
62
62
  beforeAppendToPageCallBack() {},
63
+ stopKeyDownEventPropagation: true,
63
64
  } as DeepRequired<PopsAlertConfig>;
64
65
  };
@@ -88,5 +88,6 @@ export const PopsConfirmDefaultConfig = (): DeepRequired<PopsConfirmConfig> => {
88
88
  lightStyle: null,
89
89
  darkStyle: null,
90
90
  beforeAppendToPageCallBack() {},
91
+ stopKeyDownEventPropagation: true,
91
92
  } as DeepRequired<PopsConfirmConfig>;
92
93
  };
@@ -87,5 +87,6 @@ export const PopsDrawerDefaultConfig = (): DeepRequired<PopsDrawerConfig> => {
87
87
  darkStyle: null,
88
88
  beforeAppendToPageCallBack() {},
89
89
  forbiddenScroll: false,
90
+ stopKeyDownEventPropagation: true,
90
91
  };
91
92
  };
@@ -149,5 +149,6 @@ export const PopsFolderDefaultConfig = (): DeepRequired<PopsFolderConfig> => {
149
149
  lightStyle: null,
150
150
  darkStyle: null,
151
151
  beforeAppendToPageCallBack() {},
152
+ stopKeyDownEventPropagation: true,
152
153
  };
153
154
  };
@@ -10,8 +10,12 @@ import type {
10
10
  */
11
11
  export type PopsFolderDownloadOption = {
12
12
  /**
13
+ *
14
+ * 前置条件:url不为空
15
+ *
13
16
  * 下载方式,不传入就不下载(不做任何处理)
14
17
  *
18
+ *
15
19
  * + `a`: 使用`a标签`进行下载
16
20
  * + `aBlank`: 使用`a标签`进行下载(添加属性`target="_blank"`)
17
21
  * + `iframe`: 使用`iframe`进行下载
@@ -58,5 +58,6 @@ export const PopsIframeDefaultConfig = (): DeepRequired<PopsIframeConfig> => {
58
58
  lightStyle: null,
59
59
  darkStyle: null,
60
60
  beforeAppendToPageCallBack() {},
61
+ stopKeyDownEventPropagation: true,
61
62
  };
62
63
  };
@@ -27,5 +27,6 @@ export const PopsLoadingDefaultConfig = (): DeepRequired<PopsLoadingConfig> => {
27
27
  lightStyle: null,
28
28
  darkStyle: null,
29
29
  addIndexCSS: true,
30
+ stopKeyDownEventPropagation: true,
30
31
  };
31
32
  };
@@ -866,5 +866,6 @@ export const PopsPanelDefaultConfig = (): DeepRequired<PopsPanelConfig> => {
866
866
  lightStyle: null,
867
867
  darkStyle: null,
868
868
  beforeAppendToPageCallBack() {},
869
+ stopKeyDownEventPropagation: true,
869
870
  };
870
871
  };
@@ -92,5 +92,6 @@ export const PopsPromptDefaultConfig = (): DeepRequired<PopsPromptConfig> => {
92
92
  lightStyle: null,
93
93
  darkStyle: null,
94
94
  beforeAppendToPageCallBack() {},
95
+ stopKeyDownEventPropagation: true,
95
96
  };
96
97
  };
@@ -21,22 +21,46 @@ export const PopsHandler = {
21
21
  /**
22
22
  * 创建shadow
23
23
  */
24
- handlerShadow(config: Pick<PopsGeneralConfig, "useShadowRoot">) {
24
+ handlerShadow(config: Pick<PopsGeneralConfig, "useShadowRoot" | "stopKeyDownEventPropagation">) {
25
25
  const $shadowContainer = popsDOMUtils.createElement("div", {
26
26
  className: "pops-shadow-container",
27
27
  });
28
+ let $shadowRoot: ShadowRoot | HTMLElement;
28
29
  if (config.useShadowRoot) {
29
- const $shadowRoot = $shadowContainer.attachShadow({ mode: "open" });
30
- return {
31
- $shadowContainer,
32
- $shadowRoot,
33
- };
30
+ $shadowRoot = $shadowContainer.attachShadow({ mode: "open" });
34
31
  } else {
35
- return {
36
- $shadowContainer,
37
- $shadowRoot: $shadowContainer,
38
- };
32
+ $shadowRoot = $shadowContainer;
39
33
  }
34
+ // 添加键盘监听
35
+ // rightClickMenu
36
+ // searchSuggestion
37
+ // tooltip
38
+ // 以上都不需要添加该事件监听
39
+ if (config.stopKeyDownEventPropagation) {
40
+ popsDOMUtils.on(
41
+ $shadowRoot,
42
+ "keydown",
43
+ [
44
+ 'input[type="text"]',
45
+ 'input[type="password"]',
46
+ 'input[type="number"]',
47
+ 'input[type="email"]',
48
+ 'input[type="url"]',
49
+ 'input[type="search"]',
50
+ "input:not([type])",
51
+ "textarea",
52
+ ],
53
+ (evt) => {
54
+ evt.stopImmediatePropagation();
55
+ evt.stopPropagation();
56
+ },
57
+ { capture: true }
58
+ );
59
+ }
60
+ return {
61
+ $shadowContainer,
62
+ $shadowRoot,
63
+ };
40
64
  },
41
65
  /**
42
66
  * 处理初始化
@@ -214,6 +214,13 @@ export interface PopsGeneralConfig {
214
214
  * 传入的css都在dark内
215
215
  */
216
216
  darkStyle?: string | null;
217
+ /**
218
+ * (可选)是否阻止`keydown`事件传播
219
+ *
220
+ * 主要是阻止当`keydown`触发来源为输入框时,即在输入框内按下按键不会触发页面的快捷键
221
+ * @default true
222
+ */
223
+ stopKeyDownEventPropagation?: boolean;
217
224
  /**
218
225
  * 在元素添加到页面前的事件
219
226
  * @param $shadowRoot 根元素