@topvisor/ui 0.0.15 → 0.0.17

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 (69) hide show
  1. package/.chunks/core-0b2c7817.es.js +152 -0
  2. package/.chunks/core-0b2c7817.es.js.map +1 -0
  3. package/.chunks/core-51f7b679.amd.js +151 -0
  4. package/.chunks/core-51f7b679.amd.js.map +1 -0
  5. package/.chunks/{forms-5e17154c.es.js → forms-245e3bc0.es.js} +175 -32
  6. package/.chunks/forms-245e3bc0.es.js.map +1 -0
  7. package/.chunks/forms-f7b7b259.amd.js +568 -0
  8. package/.chunks/forms-f7b7b259.amd.js.map +1 -0
  9. package/.chunks/popup-8f650530.amd.js +728 -0
  10. package/.chunks/popup-8f650530.amd.js.map +1 -0
  11. package/.chunks/popup-d240ed19.es.js +731 -0
  12. package/.chunks/popup-d240ed19.es.js.map +1 -0
  13. package/README.md +62 -62
  14. package/common/common.amd.js +1 -1
  15. package/core/core.amd.js +5 -0
  16. package/core/core.amd.js.map +1 -0
  17. package/core/core.js +7 -0
  18. package/core/core.js.map +1 -0
  19. package/core.css +647 -658
  20. package/dark.css +135 -135
  21. package/editArea/editArea.amd.js +126 -0
  22. package/editArea/editArea.amd.js.map +1 -0
  23. package/editArea/editArea.js +123 -0
  24. package/editArea/editArea.js.map +1 -0
  25. package/editArea.css +61 -0
  26. package/forms/forms.amd.js +5 -3
  27. package/forms/forms.amd.js.map +1 -1
  28. package/forms/forms.js +6 -4
  29. package/{helpers → forms}/helpers.amd.js +2 -2
  30. package/{helpers → forms}/helpers.js +1 -1
  31. package/forms.css +344 -254
  32. package/icomoon/demo-files/demo.css +161 -161
  33. package/icomoon/demo-files/demo.js +30 -30
  34. package/icomoon/demo.html +2945 -2931
  35. package/icomoon/fonts/Topvisor-2.svg +232 -231
  36. package/icomoon/fonts/Topvisor-2.ttf +0 -0
  37. package/icomoon/fonts/Topvisor-2.woff +0 -0
  38. package/icomoon/selection.json +1 -1
  39. package/icomoon/style.css +647 -644
  40. package/light.css +135 -135
  41. package/package.json +19 -19
  42. package/popup/popup.amd.js +198 -0
  43. package/popup/popup.amd.js.map +1 -0
  44. package/popup/popup.js +198 -0
  45. package/popup/popup.js.map +1 -0
  46. package/popup/worker.amd.js +234 -0
  47. package/popup/worker.amd.js.map +1 -0
  48. package/popup/worker.js +237 -0
  49. package/popup/worker.js.map +1 -0
  50. package/popup.css +19 -0
  51. package/tabs/tabs.amd.js +123 -0
  52. package/tabs/tabs.amd.js.map +1 -0
  53. package/tabs/tabs.js +120 -0
  54. package/tabs/tabs.js.map +1 -0
  55. package/tabs.css +60 -0
  56. package/utils/device.amd.js +42 -0
  57. package/utils/device.amd.js.map +1 -0
  58. package/utils/device.js +41 -0
  59. package/utils/device.js.map +1 -0
  60. package/utils/dom.amd.js +95 -0
  61. package/utils/dom.amd.js.map +1 -0
  62. package/utils/dom.js +94 -0
  63. package/utils/dom.js.map +1 -0
  64. package/.chunks/forms-2abb7eaa.amd.js +0 -425
  65. package/.chunks/forms-2abb7eaa.amd.js.map +0 -1
  66. package/.chunks/forms-5e17154c.es.js.map +0 -1
  67. package/icomoon/demo-files/Read Me.txt +0 -7
  68. /package/{helpers → forms}/helpers.amd.js.map +0 -0
  69. /package/{helpers → forms}/helpers.js.map +0 -0
package/light.css CHANGED
@@ -1,136 +1,136 @@
1
- :root {
2
- /* Main */
3
- --color-primary: var(--color-blue-500);
4
- --color-primary-light: var(--color-blue-100);
5
- --color-primary-light-opacity: rgba(25, 117, 255, 0.11);
6
- --color-primary-2: var(--color-blue-550);
7
- --color-primary-2-light: var(--color-blue-150);
8
- --color-primary-2-light-opacity: rgba(25, 117, 255, 0.22);
9
-
10
- --color-secondary-opacity: rgba(14, 65, 142, 0.06);
11
- --color-secondary-2-opacity: rgba(14, 65, 142, 0.08);
12
- --color-secondary-3-opacity: rgba(14, 65, 142, 0.12);
13
-
14
- --color-positive: var(--color-green-500);
15
- --color-positive-opacity: rgba(22, 196, 96, 0.3);
16
- --color-positive-light: var(--color-green-100);
17
- --color-positive-light-opacity: rgba(22, 196, 96, 0.11);
18
- --color-positive-2: var(--color-green-500);
19
- --color-positive-2-light: var(--color-green-150);
20
- --color-positive-2-light-opacity: rgba(22, 196, 96, 0.22);
21
-
22
- --color-warning: var(--color-orange-500);
23
- --color-warning-opacity: rgba(255, 170, 51, 0.3);
24
- --color-warning-light: var(--color-orange-100);
25
- --color-warning-light-opacity: rgba(255, 170, 51, 0.12);
26
- --color-warning-2: var(--color-orange-550);
27
- --color-warning-2-light: var(--color-orange-150);
28
- --color-warning-2-light-opacity: rgba(255, 159, 25, 0.22);
29
-
30
- --color-negative: var(--color-red-500);
31
- --color-negative-opacity: rgba(234, 65, 50, 0.3);
32
- --color-negative-light: var(--color-red-100);
33
- --color-negative-light-opacity: rgba(234, 65, 50, 0.11);
34
- --color-negative-2: var(--color-red-550);
35
- --color-negative-2-light: var(--color-red-150);
36
- --color-negative-2-light-opacity: rgba(234, 65, 50, 0.22);
37
-
38
- /* Text */
39
- --color-text-1: var(--color-theme-975);
40
- --color-text-2: var(--color-theme-750);
41
- --color-text-3: var(--color-theme-550);
42
- --color-text-4: var(--color-theme-450);
43
- --color-text: var(--color-text-1);
44
-
45
- --color-text-secondary: var(--color-gray-250);
46
- --color-text-secondary-2: var(--color-gray-350);
47
-
48
- --color-text-link: var(--color-blue-550);
49
- --color-text-link-hover: var(--color-blue-600);
50
-
51
- --color-overlay: rgba(0, 0, 0, 0.5);
52
-
53
- --color-placeholder: var(--color-gray-500);
54
- --color-placeholder-active: var(--color-gray-300);
55
-
56
- /* Background colors */
57
- --color-bg-1: var(--color-steel-300);
58
- --color-bg-2: var(--color-steel-150);
59
- --color-bg-3: var(--color-white);
60
-
61
- /* Line colors */
62
- --color-line-1-opacity: rgba(14, 65, 142, 0.1);
63
- --color-line-2-opacity: rgba(191, 203, 218, 0.67);
64
- --color-line-3-opacity: rgba(143, 158, 178, 0.74);
65
-
66
- /* Scroll */
67
- --scroll-thumb-color: var(--color-theme-250);
68
- --scroll-thumb-color-hover: var(--color-theme-350);
69
- --scroll-thumb-color-active: var(--color-theme-500);
70
-
71
- /* Page */
72
- --body-background-color: var(--content-background-color);
73
- --content-background-color: var(--color-bg-3);
74
-
75
- /* Theme */
76
- --color-theme-0: var(--color-bg-3);
77
- --color-theme-25: rgba(251, 252, 253, 1);
78
- --color-theme-50: rgba(248, 250, 252, 1);
79
- --color-theme-75: rgba(241, 243, 247, 1);
80
- --color-theme-100: rgba(233, 238, 243, 1);
81
- --color-theme-125: rgba(226, 232, 238, 1);
82
- --color-theme-150: rgba(220, 226, 234, 1);
83
- --color-theme-200: rgba(213, 220, 230, 1);
84
- --color-theme-250: rgba(206, 215, 226, 1);
85
- --color-theme-300: rgba(199, 209, 222, 1);
86
- --color-theme-350: rgba(191, 203, 218, 1);
87
- --color-theme-400: rgba(181, 193, 208, 1);
88
- --color-theme-450: rgba(172, 183, 198, 1);
89
- --color-theme-500: rgba(161, 173, 188, 1);
90
- --color-theme-525: rgba(151, 162, 178, 1);
91
- --color-theme-550: rgba(141, 152, 167, 1);
92
- --color-theme-600: rgba(129, 142, 161, 1);
93
- --color-theme-650: rgba(117, 131, 150, 1);
94
- --color-theme-700: rgba(105, 118, 135, 1);
95
- --color-theme-750: rgba(94, 105, 120, 1);
96
- --color-theme-800: rgba(82, 92, 105, 1);
97
- --color-theme-850: rgba(70, 79, 90, 1);
98
- --color-theme-875: rgba(59, 66, 75, 1);
99
- --color-theme-900: rgba(47, 52, 60, 1);
100
- --color-theme-925: rgba(35, 39, 45, 1);
101
- --color-theme-950: rgba(23, 26, 30, 1);
102
- --color-theme-975: rgba(12, 13, 15, 1);
103
- --color-theme-1000: rgba(0, 0, 0, 1);
104
-
105
- /* top-shadow */
106
- --top-shadow-s:
107
- 0px 0px 3px rgba(112, 144, 176, 0.07),
108
- 0px 5px 25px rgba(112, 144, 176, 0.12);
109
- --top-shadow:
110
- 0px 0px 4px rgba(4, 9, 84, 0.08),
111
- 0px 4px 32px rgba(4, 9, 84, 0.1);
112
- --top-shadow-b:
113
- 0px 0px 4px rgba(4, 36, 84, 0.08),
114
- 0px 18px 32px rgba(4, 25, 84, 0.18);
115
-
116
- --top-shadow-darken: inset 1000px 1000px 1000px 1000px rgba(0, 0, 0, 0.03);
117
- --top-shadow-darken-2: inset 1000px 1000px 1000px 1000px rgba(0, 0, 0, 0.07);
118
- --top-shadow-darken-3: inset 1000px 1000px 1000px 1000px rgba(0, 0, 0, 0.14);
119
- }
120
-
121
- /* forms */
122
- :root {
123
- /* for text */
124
- --top-forms-color: var(--color-text-1);
125
- --top-forms-color-disabled: var(--color-text-3);
126
- /* for border */
127
- --top-forms-border-color: var(--color-line-3-opacity);
128
- --top-forms-border-color-hover: var(--color-primary);
129
- --top-forms-border-color-disabled: var(--color-line-1-opacity);
130
- /* for placeholder */
131
- --top-forms-placeholder-color: var(--color-text-3);
132
- --top-forms-placeholder-color-disabled: var(--color-text-4);
133
- /* for background */
134
- --top-forms-background-color: var(--color-bg-3);
135
- --top-forms-background-color-hover: var(--color-bg-3);
1
+ :root {
2
+ /* Main */
3
+ --color-primary: var(--color-blue-500);
4
+ --color-primary-light: var(--color-blue-100);
5
+ --color-primary-light-opacity: rgba(25, 117, 255, 0.11);
6
+ --color-primary-2: var(--color-blue-550);
7
+ --color-primary-2-light: var(--color-blue-150);
8
+ --color-primary-2-light-opacity: rgba(25, 117, 255, 0.22);
9
+
10
+ --color-secondary-opacity: rgba(14, 65, 142, 0.06);
11
+ --color-secondary-2-opacity: rgba(14, 65, 142, 0.08);
12
+ --color-secondary-3-opacity: rgba(14, 65, 142, 0.12);
13
+
14
+ --color-positive: var(--color-green-500);
15
+ --color-positive-opacity: rgba(22, 196, 96, 0.3);
16
+ --color-positive-light: var(--color-green-100);
17
+ --color-positive-light-opacity: rgba(22, 196, 96, 0.11);
18
+ --color-positive-2: var(--color-green-500);
19
+ --color-positive-2-light: var(--color-green-150);
20
+ --color-positive-2-light-opacity: rgba(22, 196, 96, 0.22);
21
+
22
+ --color-warning: var(--color-orange-500);
23
+ --color-warning-opacity: rgba(255, 170, 51, 0.3);
24
+ --color-warning-light: var(--color-orange-100);
25
+ --color-warning-light-opacity: rgba(255, 170, 51, 0.12);
26
+ --color-warning-2: var(--color-orange-550);
27
+ --color-warning-2-light: var(--color-orange-150);
28
+ --color-warning-2-light-opacity: rgba(255, 159, 25, 0.22);
29
+
30
+ --color-negative: var(--color-red-500);
31
+ --color-negative-opacity: rgba(234, 65, 50, 0.3);
32
+ --color-negative-light: var(--color-red-100);
33
+ --color-negative-light-opacity: rgba(234, 65, 50, 0.11);
34
+ --color-negative-2: var(--color-red-550);
35
+ --color-negative-2-light: var(--color-red-150);
36
+ --color-negative-2-light-opacity: rgba(234, 65, 50, 0.22);
37
+
38
+ /* Text */
39
+ --color-text-1: var(--color-theme-975);
40
+ --color-text-2: var(--color-theme-750);
41
+ --color-text-3: var(--color-theme-550);
42
+ --color-text-4: var(--color-theme-450);
43
+ --color-text: var(--color-text-1);
44
+
45
+ --color-text-secondary: var(--color-gray-250);
46
+ --color-text-secondary-2: var(--color-gray-350);
47
+
48
+ --color-text-link: var(--color-blue-550);
49
+ --color-text-link-hover: var(--color-blue-600);
50
+
51
+ --color-overlay: rgba(0, 0, 0, 0.5);
52
+
53
+ --color-placeholder: var(--color-gray-500);
54
+ --color-placeholder-active: var(--color-gray-300);
55
+
56
+ /* Background colors */
57
+ --color-bg-1: var(--color-steel-300);
58
+ --color-bg-2: var(--color-steel-150);
59
+ --color-bg-3: var(--color-white);
60
+
61
+ /* Line colors */
62
+ --color-line-1-opacity: rgba(14, 65, 142, 0.1);
63
+ --color-line-2-opacity: rgba(191, 203, 218, 0.67);
64
+ --color-line-3-opacity: rgba(143, 158, 178, 0.74);
65
+
66
+ /* Scroll */
67
+ --scroll-thumb-color: var(--color-theme-250);
68
+ --scroll-thumb-color-hover: var(--color-theme-350);
69
+ --scroll-thumb-color-active: var(--color-theme-500);
70
+
71
+ /* Page */
72
+ --body-background-color: var(--content-background-color);
73
+ --content-background-color: var(--color-bg-3);
74
+
75
+ /* Theme */
76
+ --color-theme-0: var(--color-bg-3);
77
+ --color-theme-25: rgba(251, 252, 253, 1);
78
+ --color-theme-50: rgba(248, 250, 252, 1);
79
+ --color-theme-75: rgba(241, 243, 247, 1);
80
+ --color-theme-100: rgba(233, 238, 243, 1);
81
+ --color-theme-125: rgba(226, 232, 238, 1);
82
+ --color-theme-150: rgba(220, 226, 234, 1);
83
+ --color-theme-200: rgba(213, 220, 230, 1);
84
+ --color-theme-250: rgba(206, 215, 226, 1);
85
+ --color-theme-300: rgba(199, 209, 222, 1);
86
+ --color-theme-350: rgba(191, 203, 218, 1);
87
+ --color-theme-400: rgba(181, 193, 208, 1);
88
+ --color-theme-450: rgba(172, 183, 198, 1);
89
+ --color-theme-500: rgba(161, 173, 188, 1);
90
+ --color-theme-525: rgba(151, 162, 178, 1);
91
+ --color-theme-550: rgba(141, 152, 167, 1);
92
+ --color-theme-600: rgba(129, 142, 161, 1);
93
+ --color-theme-650: rgba(117, 131, 150, 1);
94
+ --color-theme-700: rgba(105, 118, 135, 1);
95
+ --color-theme-750: rgba(94, 105, 120, 1);
96
+ --color-theme-800: rgba(82, 92, 105, 1);
97
+ --color-theme-850: rgba(70, 79, 90, 1);
98
+ --color-theme-875: rgba(59, 66, 75, 1);
99
+ --color-theme-900: rgba(47, 52, 60, 1);
100
+ --color-theme-925: rgba(35, 39, 45, 1);
101
+ --color-theme-950: rgba(23, 26, 30, 1);
102
+ --color-theme-975: rgba(12, 13, 15, 1);
103
+ --color-theme-1000: rgba(0, 0, 0, 1);
104
+
105
+ /* top-shadow */
106
+ --top-shadow-s:
107
+ 0px 0px 3px rgba(112, 144, 176, 0.07),
108
+ 0px 5px 25px rgba(112, 144, 176, 0.12);
109
+ --top-shadow:
110
+ 0px 0px 4px rgba(4, 9, 84, 0.08),
111
+ 0px 4px 32px rgba(4, 9, 84, 0.1);
112
+ --top-shadow-b:
113
+ 0px 0px 4px rgba(4, 36, 84, 0.08),
114
+ 0px 18px 32px rgba(4, 25, 84, 0.18);
115
+
116
+ --top-shadow-darken: inset 1000px 1000px 1000px 1000px rgba(0, 0, 0, 0.03);
117
+ --top-shadow-darken-2: inset 1000px 1000px 1000px 1000px rgba(0, 0, 0, 0.07);
118
+ --top-shadow-darken-3: inset 1000px 1000px 1000px 1000px rgba(0, 0, 0, 0.14);
119
+ }
120
+
121
+ /* forms */
122
+ :root {
123
+ /* for text */
124
+ --top-forms-color: var(--color-text-1);
125
+ --top-forms-color-disabled: var(--color-text-3);
126
+ /* for border */
127
+ --top-forms-border-color: var(--color-line-2-opacity);
128
+ --top-forms-border-color-hover: var(--color-primary);
129
+ --top-forms-border-color-disabled: var(--color-line-1-opacity);
130
+ /* for placeholder */
131
+ --top-forms-placeholder-color: var(--color-text-3);
132
+ --top-forms-placeholder-color-disabled: var(--color-text-4);
133
+ /* for background */
134
+ --top-forms-background-color: var(--color-bg-3);
135
+ --top-forms-background-color-hover: var(--color-bg-3);
136
136
  }
package/package.json CHANGED
@@ -1,19 +1,19 @@
1
- {
2
- "name": "@topvisor/ui",
3
- "private": false,
4
- "version": "0.0.15",
5
- "type": "module",
6
- "description": "Topvisor UI-kit Vue",
7
- "author": "Topvisor",
8
- "keywords": [
9
- "topvisor",
10
- "vue",
11
- "ui framework",
12
- "component framework",
13
- "component library"
14
- ],
15
- "license": "MIT",
16
- "peerDependencies": {
17
- "vue": "^3.3.4"
18
- }
19
- }
1
+ {
2
+ "name": "@topvisor/ui",
3
+ "private": false,
4
+ "version": "0.0.17",
5
+ "type": "module",
6
+ "description": "Topvisor UI-kit Vue",
7
+ "author": "Topvisor",
8
+ "keywords": [
9
+ "topvisor",
10
+ "vue",
11
+ "ui framework",
12
+ "component framework",
13
+ "component library"
14
+ ],
15
+ "license": "MIT",
16
+ "peerDependencies": {
17
+ "vue": "^3.3.4"
18
+ }
19
+ }
@@ -0,0 +1,198 @@
1
+ define(["exports", "vue", "./worker.amd", "../.chunks/core-51f7b679.amd", "../utils/device.amd", "../utils/dom.amd"], function(exports, vue, popup_worker, core_core, utils_device, utils_dom) {
2
+ "use strict"; if(typeof vue === "undefined") var vue = window.Vue;
3
+ var __vite_style__ = document.createElement("style");
4
+ __vite_style__.textContent = "\nh3[data-top-popup],\ndiv[data-top-popup],\ni[data-top-popup]:not(.btn):not(.g_btn),\nb[data-top-popup]:not(.btn):not(.g_btn) {\n cursor: pointer;\n user-select: none;\n font-style: normal;\n text-decoration: none;\n display: inline-flex;\n align-items: center;\n}\n[data-top-popup][data-top-popup-disabled] {\n pointer-events: none;\n cursor: auto !important;\n}\ni[contenteditable] {\n cursor: text !important;\n}\n";
5
+ document.head.appendChild(__vite_style__);
6
+ var POS = /* @__PURE__ */ ((POS2) => {
7
+ POS2["over"] = "0";
8
+ POS2["top"] = "1";
9
+ POS2["right"] = "2";
10
+ POS2["bottom"] = "3";
11
+ POS2["left"] = "4";
12
+ return POS2;
13
+ })(POS || {});
14
+ var POS_BY = /* @__PURE__ */ ((POS_BY2) => {
15
+ POS_BY2["fixed"] = "fixed";
16
+ POS_BY2["left"] = "left";
17
+ POS_BY2["right"] = "right";
18
+ return POS_BY2;
19
+ })(POS_BY || {});
20
+ const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
21
+ __name: "opener",
22
+ props: {
23
+ id: {},
24
+ pos: { default: POS.bottom },
25
+ notch: { type: Boolean, default: true },
26
+ openByHover: { type: Boolean },
27
+ posBy: { default: POS_BY.fixed }
28
+ },
29
+ setup(__props) {
30
+ const props = __props;
31
+ const id = props.id || Math.random() + "";
32
+ let elOpener;
33
+ function render(el) {
34
+ setTimeout(() => {
35
+ elOpener = el.nextElementSibling;
36
+ if (elOpener) {
37
+ renderOpener(elOpener);
38
+ }
39
+ });
40
+ }
41
+ vue.onUpdated(() => {
42
+ if (elOpener) {
43
+ renderOpener(elOpener);
44
+ }
45
+ });
46
+ function renderOpener(elOpener2) {
47
+ elOpener2.dataset.topPopup = "vue-" + id;
48
+ elOpener2.dataset.topPopupId = id;
49
+ elOpener2.dataset.topPopupP = props.pos;
50
+ elOpener2.dataset.topPopupPosBy = props.posBy;
51
+ elOpener2.dataset.topPopupNotch = props.notch ? "true" : "";
52
+ elOpener2.dataset.topPopupOpenByHover = props.openByHover ? "true" : "";
53
+ }
54
+ return (_ctx, _cache) => {
55
+ return vue.openBlock(), vue.createElementBlock(vue.Fragment, null, [
56
+ vue.createElementVNode("template", { ref: render }),
57
+ vue.renderSlot(_ctx.$slots, "default")
58
+ ], 64);
59
+ };
60
+ }
61
+ });
62
+ const opener_vue_vue_type_style_index_0_lang = "";
63
+ const _hoisted_1 = {
64
+ key: 0,
65
+ class: "top-popup_header"
66
+ };
67
+ const _hoisted_2 = {
68
+ key: 1,
69
+ class: "top-popup_content"
70
+ };
71
+ const _hoisted_3 = {
72
+ key: 2,
73
+ class: "top-popup_content"
74
+ };
75
+ const _hoisted_4 = {
76
+ key: 3,
77
+ class: "top-popup_footer"
78
+ };
79
+ const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
80
+ __name: "popup",
81
+ props: {
82
+ id: { default: "" },
83
+ class: {},
84
+ pos: { default: POS.bottom },
85
+ notch: { type: Boolean, default: true },
86
+ openByHover: { type: Boolean },
87
+ posBy: { default: POS_BY.fixed }
88
+ },
89
+ emits: ["open", "close"],
90
+ setup(__props, { emit }) {
91
+ const props = __props;
92
+ const id = props.id || Math.random() + "";
93
+ const elPopupRef = vue.ref(null);
94
+ const onOpen = async (popup) => {
95
+ popup.elPopupInner.innerText = "";
96
+ elPopupRef.value = popup.elPopupInner;
97
+ vueConnector.opened = true;
98
+ vueConnector.popup = popup;
99
+ emit("open");
100
+ };
101
+ const onClose = (popup) => {
102
+ elPopupRef.value = null;
103
+ vueConnector.opened = false;
104
+ vueConnector.popup = null;
105
+ emit("close");
106
+ };
107
+ const vueConnector = {
108
+ onOpen,
109
+ onClose,
110
+ classRef: vue.toRef(props, "class"),
111
+ opened: false,
112
+ popup: null
113
+ };
114
+ popup_worker.regVueComponent(id, vueConnector);
115
+ vue.onUnmounted(() => {
116
+ popup_worker.unregVueComponent(id);
117
+ });
118
+ return (_ctx, _cache) => {
119
+ return vue.openBlock(), vue.createElementBlock(vue.Fragment, null, [
120
+ _ctx.$slots.opener ? (vue.openBlock(), vue.createBlock(_sfc_main$2, {
121
+ key: 0,
122
+ id: vue.unref(id),
123
+ pos: _ctx.pos,
124
+ posBy: _ctx.posBy,
125
+ notch: _ctx.notch,
126
+ openByHover: _ctx.openByHover
127
+ }, {
128
+ default: vue.withCtx(() => [
129
+ vue.renderSlot(_ctx.$slots, "opener")
130
+ ]),
131
+ _: 3
132
+ }, 8, ["id", "pos", "posBy", "notch", "openByHover"])) : vue.createCommentVNode("", true),
133
+ elPopupRef.value ? (vue.openBlock(), vue.createBlock(vue.Teleport, {
134
+ key: 1,
135
+ to: elPopupRef.value
136
+ }, [
137
+ _ctx.$slots.header ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1, [
138
+ vue.renderSlot(_ctx.$slots, "header")
139
+ ])) : vue.createCommentVNode("", true),
140
+ _ctx.$slots.content ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2, [
141
+ vue.renderSlot(_ctx.$slots, "content")
142
+ ])) : vue.createCommentVNode("", true),
143
+ _ctx.$slots.contentList ? (vue.openBlock(), vue.createElementBlock("ul", _hoisted_3, [
144
+ vue.renderSlot(_ctx.$slots, "contentList")
145
+ ])) : vue.createCommentVNode("", true),
146
+ _ctx.$slots.footer ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4, [
147
+ vue.renderSlot(_ctx.$slots, "footer")
148
+ ])) : vue.createCommentVNode("", true)
149
+ ], 8, ["to"])) : vue.createCommentVNode("", true)
150
+ ], 64);
151
+ };
152
+ }
153
+ });
154
+ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
155
+ ...{
156
+ inheritAttrs: false
157
+ },
158
+ __name: "listItem",
159
+ props: {
160
+ type: { default: "simple" },
161
+ closeByClick: { type: Boolean, default: true }
162
+ },
163
+ setup(__props) {
164
+ const props = __props;
165
+ return (_ctx, _cache) => {
166
+ return vue.openBlock(), vue.createElementBlock("li", {
167
+ class: vue.normalizeClass({
168
+ "top-popup_listDelimiter": _ctx.type === "delimiter",
169
+ "top-popup_listTitle": _ctx.type === "title"
170
+ })
171
+ }, [
172
+ props.type === "simple" || props.type === "link" ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(props.type === "link" ? "a" : "i"), vue.mergeProps({
173
+ key: 0,
174
+ class: {
175
+ "top-popup_item": true,
176
+ "top-popup_item-a": props.type === "simple",
177
+ // имитация оформления ссылки
178
+ "a": true,
179
+ // deprecated
180
+ "top-popup-noCloser": !_ctx.closeByClick
181
+ }
182
+ }, _ctx.$attrs), {
183
+ default: vue.withCtx(() => [
184
+ vue.renderSlot(_ctx.$slots, "default")
185
+ ]),
186
+ _: 3
187
+ }, 16, ["class"])) : vue.createCommentVNode("", true),
188
+ props.type === "title" || props.type === "control" ? vue.renderSlot(_ctx.$slots, "default", { key: 1 }) : vue.createCommentVNode("", true)
189
+ ], 2);
190
+ };
191
+ }
192
+ });
193
+ exports.Popup = _sfc_main$1;
194
+ exports.PopupListItem = _sfc_main;
195
+ exports.PopupOpener = _sfc_main$2;
196
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
197
+ });
198
+ //# sourceMappingURL=popup.amd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"popup.amd.js","sources":["../../src/components/popup/popup/popup.ts","../../src/components/popup/popup/opener.vue","../../src/components/popup/popup/popup.vue"],"sourcesContent":["export interface Props extends OpenerProps {\n\t/**\n\t * Уникальный id компонента, используется только в setup, т.е. изменение id будет проигнорировано\n\t *\n\t * Генерируется автоматически при создании кнопки Popup\n\t *\n\t * Можно задать вручную, если необходимо создать Popup без кнопки для последюущего использования,\n\t * особенно важно при создании большого числа кнопок, например в списках и таблицах\n\t */\n\tid?: string;\n\n\t/**\n\t * Класс, который нужно добавить к Popup, устанавилвается в момент открытия\n\t */\n\tclass?: string;\n}\n\nexport interface Emits {\n\t/**\n\t * Будет вызвано при открытии Popup\n\t */\n\t(e: 'open'): void;\n\n\t/**\n\t * Будет вызвано после закрытия Popup\n\t */\n\t(e: 'close'): void;\n}\n\nexport interface OpenerProps {\n\t/**\n\t * id компонента Popup, который необходимо открыть\n\t */\n\tid?: string;\n\n\t/**\n\t * Положение Popup по часовой стрелке\n\t */\n\tpos?: POS;\n\n\t/**\n\t * Добавить клювик\n\t */\n\tnotch?: boolean;\n\n\t/**\n\t * Открывать / закрывать при наведении / отведении мыши\n\t */\n\topenByHover?: boolean;\n\n\t/**\n\t * Способ привязки позиционирования меню\n\t *\n\t * left/right - левый/правый край родителя\n\t *\n\t * fixed - по окну\n\t */\n\tposBy?: POS_BY;\n}\n\nexport interface ListItemProps {\n\t/**\n\t * Тип элемента списка\n\t * * simple - обычный кликабельный (выбираемый) элемент\n\t * * link - ссылка\n\t * * control - элемент формы, например чекбокс\n\t * * delimiter - разделитель\n\t */\n\ttype?: 'simple' | 'link' | 'control' | 'title' | 'delimiter';\n\n\t/**\n\t * Следует ли закрывать меню по клику на элемент типа simple и link\n\t */\n\tcloseByClick?: boolean;\n}\n\nexport enum POS {\n\tover = '0',\n\ttop = '1',\n\tright = '2',\n\tbottom = '3',\n\tleft = '4'\n}\n\nexport enum POS_BY {\n\tfixed = 'fixed',\n\tleft = 'left',\n\tright = 'right',\n}","<script setup lang=\"ts\">\nimport { onUpdated, ref } from 'vue';\nimport type { OpenerProps } from './popup';\nimport { POS, POS_BY } from './popup';\n\nconst props = withDefaults(defineProps<OpenerProps>(), {\n\tpos: POS.bottom,\n\tnotch: true,\n\tposBy: POS_BY.fixed,\n});\n\nconst id = props.id || Math.random() + '';\n\nlet elOpener: Element;\n\n/**\n * Необычная функция для проброски props внтурь элемента слота\n *\n * @param el - вспомогательрный элемент для доступа к элементам слота\n */\nfunction render (el: any) {\n\tsetTimeout(() => {\n\t\telOpener = el.nextElementSibling;\n\n\t\tif (elOpener) {\n\t\t\trenderOpener(elOpener);\n\t\t}\n\t});\n}\n\nonUpdated(() => {\n\tif (elOpener) {\n\t\trenderOpener(elOpener);\n\t}\n});\n\nfunction renderOpener (elOpener: any) {\n\telOpener.dataset.topPopup = 'vue-' + id;\n\telOpener.dataset.topPopupId = id;\n\telOpener.dataset.topPopupP = props.pos;\n\telOpener.dataset.topPopupPosBy = props.posBy;\n\telOpener.dataset.topPopupNotch = props.notch ? 'true' : '';\n\telOpener.dataset.topPopupOpenByHover = props.openByHover ? 'true' : '';\n}\n</script>\n\n<template>\n\t<template :ref=\"render\"></template>\n\n\t<!-- @slot элемент для открытия Popup -->\n\t<slot></slot>\n</template>\n\n<style>\nh3[data-top-popup],\ndiv[data-top-popup],\ni[data-top-popup]:not(.btn):not(.g_btn),\nb[data-top-popup]:not(.btn):not(.g_btn) {\n\tcursor: pointer;\n\tuser-select: none;\n\tfont-style: normal;\n\ttext-decoration: none;\n\tdisplay: inline-flex;\n\talign-items: center;\n}\n\n[data-top-popup][data-top-popup-disabled] {\n\tpointer-events: none;\n\tcursor: auto !important;\n}\n\ni[contenteditable] {\n\tcursor: text !important;\n}\n</style>","<script setup lang=\"ts\">\nimport { ref, toRef, onUnmounted } from 'vue';\nimport type { Props, Emits } from './popup';\nimport { POS, POS_BY } from './popup';\nimport Opener from './opener.vue';\nimport Worker from '@/components/popup/lib/worker';\n\nconst props = withDefaults(defineProps<Props>(), {\n\tid: '',\n\tpos: POS.bottom,\n\tnotch: true,\n\tposBy: POS_BY.fixed,\n});\n\nconst emit = defineEmits<Emits>();\n\nconst id = props.id || Math.random() + '';\nconst elPopupRef = ref(null);\n\n// см. lib/popup\nconst onOpen = async (popup: any) => {\n\tpopup.elPopupInner.innerText = '';\n\n\telPopupRef.value = popup.elPopupInner;\n\n\tvueConnector.opened = true;\n\tvueConnector.popup = popup;\n\n\temit('open');\n};\n\n// см. lib/popup\nconst onClose = (popup: any) => {\n\telPopupRef.value = null;\n\n\tvueConnector.opened = false;\n\tvueConnector.popup = null;\n\n\temit('close');\n};\n\nconst vueConnector = {\n\tonOpen,\n\tonClose,\n\tclassRef: toRef(props, 'class'),\n\topened: false,\n\tpopup: null,\n};\n\nWorker.regVueComponent(id, vueConnector);\n\nonUnmounted(() => {\n\tWorker.unregVueComponent(id);\n});\n</script>\n\n<template>\n\t<Opener\n\t\tv-if=\"$slots.opener\"\n\t\t:id=\"id\"\n\t\t:pos=\"pos\"\n\t\t:posBy=\"posBy\"\n\t\t:notch=\"notch\"\n\t\t:openByHover=\"openByHover\"\n\t>\n\t\t<!-- @slot элемент для открытия Popup -->\n\t\t<slot name=\"opener\"></slot>\n\t</Opener>\n\n\t<!-- Это шаблон для компонента Popup, сам Popup генерируется в js и может находиться где угодно -->\n\t<!-- elPopupRef будет установлен только после открытия и будет сброшен сразу после закрытия Popup -->\n\t<teleport\n\t\tv-if=\"elPopupRef\"\n\t\t:to=\"elPopupRef\"\n\t>\n\t\t<div v-if=\"$slots.header\" class=\"top-popup_header\">\n\t\t\t<!-- @slot Шапка -->\n\t\t\t<slot name=\"header\"></slot>\n\t\t</div>\n\n\t\t<div v-if=\"$slots.content\" class=\"top-popup_content\">\n\t\t\t<!-- @slot Контент в свободной форме -->\n\t\t\t<slot name=\"content\"></slot>\n\t\t</div>\n\n\t\t<ul v-if=\"$slots.contentList\" class=\"top-popup_content\">\n\t\t\t<!-- @slot Контент в виде списка, для вставки элементов списка испоьзуйте компонент popup/listItem -->\n\t\t\t<slot name=\"contentList\"></slot>\n\t\t</ul>\n\n\t\t<div v-if=\"$slots.footer\" class=\"top-popup_footer\">\n\t\t\t<!-- @slot Футер -->\n\t\t\t<slot name=\"footer\"></slot>\n\t\t</div>\n\t</teleport>\n</template>"],"names":["POS","POS_BY","onUpdated","elOpener","ref","toRef","Worker","onUnmounted"],"mappings":";;;;;AA4EY,MAAA,wBAAAA,SAAL;AACNA,SAAA,MAAO,IAAA;AACPA,SAAA,KAAM,IAAA;AACNA,SAAA,OAAQ,IAAA;AACRA,SAAA,QAAS,IAAA;AACTA,SAAA,MAAO,IAAA;AALIA,WAAAA;AAAAA,EAAA,GAAA,OAAA,CAAA,CAAA;AAQA,MAAA,2BAAAC,YAAL;AACNA,YAAA,OAAQ,IAAA;AACRA,YAAA,MAAO,IAAA;AACPA,YAAA,OAAQ,IAAA;AAHGA,WAAAA;AAAAA,EAAA,GAAA,UAAA,CAAA,CAAA;;;;;;;;;;;;ACzEZ,YAAM,KAAK,MAAM,MAAM,KAAK,OAAW,IAAA;AAEnC,UAAA;AAOJ,eAAS,OAAQ,IAAS;AACzB,mBAAW,MAAM;AAChB,qBAAW,GAAG;AAEd,cAAI,UAAU;AACb,yBAAa,QAAQ;AAAA,UACtB;AAAA,QAAA,CACA;AAAA,MACF;AAEAC,UAAAA,UAAU,MAAM;AACf,YAAI,UAAU;AACb,uBAAa,QAAQ;AAAA,QACtB;AAAA,MAAA,CACA;AAED,eAAS,aAAcC,WAAe;AACrCA,kBAAS,QAAQ,WAAW,SAAS;AACrCA,kBAAS,QAAQ,aAAa;AAC9BA,kBAAS,QAAQ,YAAY,MAAM;AACnCA,kBAAS,QAAQ,gBAAgB,MAAM;AACvCA,kBAAS,QAAQ,gBAAgB,MAAM,QAAQ,SAAS;AACxDA,kBAAS,QAAQ,sBAAsB,MAAM,cAAc,SAAS;AAAA,MACrE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3BA,YAAM,KAAK,MAAM,MAAM,KAAK,OAAW,IAAA;AACjC,YAAA,aAAaC,QAAI,IAAI;AAGrB,YAAA,SAAS,OAAO,UAAe;AACpC,cAAM,aAAa,YAAY;AAE/B,mBAAW,QAAQ,MAAM;AAEzB,qBAAa,SAAS;AACtB,qBAAa,QAAQ;AAErB,aAAK,MAAM;AAAA,MAAA;AAIN,YAAA,UAAU,CAAC,UAAe;AAC/B,mBAAW,QAAQ;AAEnB,qBAAa,SAAS;AACtB,qBAAa,QAAQ;AAErB,aAAK,OAAO;AAAA,MAAA;AAGb,YAAM,eAAe;AAAA,QACpB;AAAA,QACA;AAAA,QACA,UAAUC,IAAAA,MAAM,OAAO,OAAO;AAAA,QAC9B,QAAQ;AAAA,QACR,OAAO;AAAA,MAAA;AAGDC,mBAAA,gBAAgB,IAAI,YAAY;AAEvCC,UAAAA,YAAY,MAAM;AACjBD,qBAAO,kBAAkB,EAAE;AAAA,MAAA,CAC3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}