@topvisor/ui 1.0.0-rc-1 → 1.0.0-rc-3
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.
- package/.chunks/{datepicker-tHefOW_3.es.js → datepicker-CS24dmLk.es.js} +2 -2
- package/.chunks/{datepicker-tHefOW_3.es.js.map → datepicker-CS24dmLk.es.js.map} +1 -1
- package/.chunks/{datepicker-B1O2dXDP.amd.js → datepicker-DsMs2YKL.amd.js} +2 -2
- package/.chunks/{datepicker-B1O2dXDP.amd.js.map → datepicker-DsMs2YKL.amd.js.map} +1 -1
- package/.chunks/{forms-ById2XG3.amd.js → forms-DKL0e9tp.amd.js} +3 -3
- package/.chunks/{forms-ById2XG3.amd.js.map → forms-DKL0e9tp.amd.js.map} +1 -1
- package/.chunks/{forms-BXL9jNnO.es.js → forms-DT_fsN6V.es.js} +30 -29
- package/.chunks/{forms-BXL9jNnO.es.js.map → forms-DT_fsN6V.es.js.map} +1 -1
- package/.chunks/i18n-C_OH9IT3.amd.js +2 -0
- package/.chunks/{i18n-e0RWAonB.amd.js.map → i18n-C_OH9IT3.amd.js.map} +1 -1
- package/.chunks/{i18n-BOfwnWEJ.es.js → i18n-DuTvft1T.es.js} +12 -12
- package/.chunks/{i18n-BOfwnWEJ.es.js.map → i18n-DuTvft1T.es.js.map} +1 -1
- package/.chunks/listItem.vue_vue_type_script_setup_true_lang-B3E-SDdg.es.js +174 -0
- package/.chunks/listItem.vue_vue_type_script_setup_true_lang-B3E-SDdg.es.js.map +1 -0
- package/.chunks/listItem.vue_vue_type_script_setup_true_lang-uKhci19t.amd.js +2 -0
- package/.chunks/listItem.vue_vue_type_script_setup_true_lang-uKhci19t.amd.js.map +1 -0
- package/.chunks/{menu-DLu4YIFo.es.js → menu-CcyqVSfg.es.js} +2 -2
- package/.chunks/{menu-DLu4YIFo.es.js.map → menu-CcyqVSfg.es.js.map} +1 -1
- package/.chunks/{menu-DsNT8QIC.amd.js → menu-DTbsTDGK.amd.js} +2 -2
- package/.chunks/{menu-DsNT8QIC.amd.js.map → menu-DTbsTDGK.amd.js.map} +1 -1
- package/.chunks/{popup-BfA-88r7.es.js → popup-C5yk4q8p.es.js} +35 -18
- package/.chunks/popup-C5yk4q8p.es.js.map +1 -0
- package/.chunks/popup-DAruCfQv.amd.js +447 -0
- package/.chunks/popup-DAruCfQv.amd.js.map +1 -0
- package/assets/listItem.css +1 -1
- package/components/formsExt/editArea/editArea.vue.d.ts +2 -2
- package/components/popup/alert/alert.d.ts +8 -0
- package/components/popup/alert/alert.vue.d.ts +33 -0
- package/components/popup/confirm/confirm.d.ts +21 -0
- package/components/popup/confirm/confirm.vue.d.ts +35 -0
- package/components/popup/lib/popup.d.ts +11 -5
- package/components/popup/lib/popup.globalEvents.d.ts +10 -3
- package/components/popup/lib/worker.d.ts +40 -21
- package/components/popup/lib/worker.globalEvents.d.ts +9 -2
- package/components/popup/popup/opener.vue.d.ts +3 -3
- package/components/popup/popup/popup.d.ts +25 -15
- package/components/popup/popup/popup.vue.d.ts +3 -3
- package/components/popup/popup.d.ts +6 -0
- package/components/popup/prompt/prompt.d.ts +21 -0
- package/components/popup/prompt/prompt.vue.d.ts +35 -0
- package/core/app.amd.js +1 -1
- package/core/app.amd.js.map +1 -1
- package/core/app.js +102 -61
- package/core/app.js.map +1 -1
- package/core/core.amd.js +1 -1
- package/core/core.js +1 -1
- package/core/plugins/core.d.ts +4 -1
- package/core/utils/dom.d.ts +1 -1
- package/forms/forms.amd.js +1 -1
- package/forms/forms.js +1 -1
- package/formsExt/formsExt.amd.js +1 -1
- package/formsExt/formsExt.amd.js.map +1 -1
- package/formsExt/formsExt.js +2 -2
- package/package.json +1 -1
- package/popup/popup.amd.js +1 -1
- package/popup/popup.amd.js.map +1 -1
- package/popup/popup.js +219 -21
- package/popup/popup.js.map +1 -1
- package/popup/worker.amd.js +1 -1
- package/popup/worker.amd.js.map +1 -1
- package/popup/worker.js +52 -74
- package/popup/worker.js.map +1 -1
- package/project/project.amd.js +1 -1
- package/project/project.amd.js.map +1 -1
- package/project/project.js +20 -20
- package/tabs/tabs.amd.js +1 -1
- package/tabs/tabs.js +1 -1
- package/tabsView/tabsView.amd.js +1 -1
- package/tabsView/tabsView.js +1 -1
- package/utils/date.amd.js +1 -1
- package/utils/date.js +2 -2
- package/utils/device.amd.js +1 -1
- package/utils/device.js +1 -1
- package/utils/dom.amd.js.map +1 -1
- package/utils/dom.js.map +1 -1
- package/utils/price.amd.js +1 -1
- package/utils/price.js +2 -2
- package/utils/string.amd.js +1 -1
- package/utils/string.js +1 -1
- package/.chunks/i18n-e0RWAonB.amd.js +0 -2
- package/.chunks/listItem.vue_vue_type_script_setup_true_lang-MnlZ62d8.es.js +0 -161
- package/.chunks/listItem.vue_vue_type_script_setup_true_lang-MnlZ62d8.es.js.map +0 -1
- package/.chunks/listItem.vue_vue_type_script_setup_true_lang-UtYu0iBq.amd.js +0 -2
- package/.chunks/listItem.vue_vue_type_script_setup_true_lang-UtYu0iBq.amd.js.map +0 -1
- package/.chunks/popup-BfA-88r7.es.js.map +0 -1
- package/.chunks/popup-DG309bnz.amd.js +0 -441
- package/.chunks/popup-DG309bnz.amd.js.map +0 -1
package/popup/popup.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import { defineComponent as
|
|
4
|
-
import {
|
|
5
|
-
const
|
|
6
|
-
|
|
7
|
-
const
|
|
1
|
+
import k from "../core/core.js";
|
|
2
|
+
import { P as v, a as I, _ as M } from "../.chunks/listItem.vue_vue_type_script_setup_true_lang-B3E-SDdg.es.js";
|
|
3
|
+
import { defineComponent as y, mergeModels as O, useModel as D, openBlock as b, createBlock as B, mergeProps as V, createSlots as S, withCtx as o, renderSlot as l, createVNode as c, createTextVNode as $, toDisplayString as T, ref as P, watch as w } from "vue";
|
|
4
|
+
import { q as H, _ as N, T as C } from "../.chunks/forms-DT_fsN6V.es.js";
|
|
5
|
+
const W = ["../assets/popup.css"].map((i) => import.meta.resolve(i));
|
|
6
|
+
k.insertCSSLinkToPage(W, !0);
|
|
7
|
+
const h = /* @__PURE__ */ y({
|
|
8
8
|
__name: "widgetInput",
|
|
9
|
-
props: /* @__PURE__ */
|
|
9
|
+
props: /* @__PURE__ */ O({
|
|
10
10
|
modelValue: {},
|
|
11
11
|
name: {},
|
|
12
12
|
disabled: { type: Boolean },
|
|
@@ -27,24 +27,222 @@ const y = /* @__PURE__ */ d({
|
|
|
27
27
|
modelModifiers: {}
|
|
28
28
|
}),
|
|
29
29
|
emits: ["update:modelValue"],
|
|
30
|
-
setup(
|
|
31
|
-
const
|
|
32
|
-
return (
|
|
30
|
+
setup(i) {
|
|
31
|
+
const r = D(i, "modelValue");
|
|
32
|
+
return (p, e) => (b(), B(H, V(p.$props, {
|
|
33
33
|
modificator: "popupWidgetInput",
|
|
34
|
-
modelValue:
|
|
35
|
-
"onUpdate:modelValue":
|
|
34
|
+
modelValue: r.value,
|
|
35
|
+
"onUpdate:modelValue": e[0] || (e[0] = (t) => r.value = t)
|
|
36
36
|
}), null, 16, ["modelValue"]));
|
|
37
37
|
}
|
|
38
|
-
}),
|
|
38
|
+
}), A = {
|
|
39
39
|
"top-input-popupWidgetInput": "top-input-popupWidgetInput",
|
|
40
40
|
"top-input_input-popupWidgetInput": "top-input_input-popupWidgetInput"
|
|
41
|
-
},
|
|
42
|
-
$style:
|
|
43
|
-
},
|
|
41
|
+
}, U = {
|
|
42
|
+
$style: A
|
|
43
|
+
}, L = /* @__PURE__ */ N(h, [["__cssModules", U]]), q = /* @__PURE__ */ y({
|
|
44
|
+
__name: "alert",
|
|
45
|
+
props: {
|
|
46
|
+
submitText: {},
|
|
47
|
+
id: {},
|
|
48
|
+
class: {},
|
|
49
|
+
transitionDuration: {},
|
|
50
|
+
footerSupportLink: {},
|
|
51
|
+
pos: {},
|
|
52
|
+
notch: { type: Boolean },
|
|
53
|
+
openByHover: { type: Boolean },
|
|
54
|
+
posBy: {}
|
|
55
|
+
},
|
|
56
|
+
emits: ["open", "close", "scrollContentList"],
|
|
57
|
+
setup(i) {
|
|
58
|
+
const p = { ...i, submitText: void 0 };
|
|
59
|
+
return delete p.submitText, (e, t) => (b(), B(v, V({ class: "top-popupAlert" }, p, {
|
|
60
|
+
onOpen: t[0] || (t[0] = () => e.$emit("open")),
|
|
61
|
+
onClose: t[1] || (t[1] = () => e.$emit("close")),
|
|
62
|
+
onScrollContentList: t[2] || (t[2] = (...a) => e.$emit("scrollContentList", ...a))
|
|
63
|
+
}), S({
|
|
64
|
+
opener: o(() => [
|
|
65
|
+
l(e.$slots, "opener")
|
|
66
|
+
]),
|
|
67
|
+
footer: o(() => [
|
|
68
|
+
l(e.$slots, "footer"),
|
|
69
|
+
c(C, null, {
|
|
70
|
+
default: o(() => [
|
|
71
|
+
$(T(e.submitText || e.$i18n.Common.Close), 1)
|
|
72
|
+
]),
|
|
73
|
+
_: 1
|
|
74
|
+
})
|
|
75
|
+
]),
|
|
76
|
+
_: 2
|
|
77
|
+
}, [
|
|
78
|
+
e.$slots.header ? {
|
|
79
|
+
name: "header",
|
|
80
|
+
fn: o(() => [
|
|
81
|
+
l(e.$slots, "header")
|
|
82
|
+
]),
|
|
83
|
+
key: "0"
|
|
84
|
+
} : void 0,
|
|
85
|
+
e.$slots.default ? {
|
|
86
|
+
name: "content",
|
|
87
|
+
fn: o(() => [
|
|
88
|
+
l(e.$slots, "default")
|
|
89
|
+
]),
|
|
90
|
+
key: "1"
|
|
91
|
+
} : void 0
|
|
92
|
+
]), 1040));
|
|
93
|
+
}
|
|
94
|
+
}), z = /* @__PURE__ */ y({
|
|
95
|
+
__name: "confirm",
|
|
96
|
+
props: {
|
|
97
|
+
cancelText: {},
|
|
98
|
+
submitText: {},
|
|
99
|
+
isWarning: { type: Boolean },
|
|
100
|
+
id: {},
|
|
101
|
+
class: {},
|
|
102
|
+
transitionDuration: {},
|
|
103
|
+
footerSupportLink: {},
|
|
104
|
+
pos: {},
|
|
105
|
+
notch: { type: Boolean },
|
|
106
|
+
openByHover: { type: Boolean },
|
|
107
|
+
posBy: {}
|
|
108
|
+
},
|
|
109
|
+
emits: ["open", "close", "scrollContentList", "submit"],
|
|
110
|
+
setup(i, { emit: r }) {
|
|
111
|
+
const p = i, e = r, t = P(!1), a = () => {
|
|
112
|
+
t.value = !0, e("submit");
|
|
113
|
+
}, m = () => {
|
|
114
|
+
if (t.value) {
|
|
115
|
+
t.value = !1;
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
e("close");
|
|
119
|
+
}, d = { ...p, submitText: void 0, cancelText: void 0, isWarning: void 0 };
|
|
120
|
+
return delete d.submitText, delete d.cancelText, delete d.isWarning, (n, u) => (b(), B(v, V({ class: "top-popupConfirm" }, d, {
|
|
121
|
+
onOpen: u[0] || (u[0] = () => n.$emit("open")),
|
|
122
|
+
onClose: m,
|
|
123
|
+
onScrollContentList: u[1] || (u[1] = (...s) => n.$emit("scrollContentList", ...s))
|
|
124
|
+
}), S({
|
|
125
|
+
opener: o(() => [
|
|
126
|
+
l(n.$slots, "opener")
|
|
127
|
+
]),
|
|
128
|
+
footer: o(() => [
|
|
129
|
+
l(n.$slots, "footer"),
|
|
130
|
+
c(C, { color: "theme" }, {
|
|
131
|
+
default: o(() => [
|
|
132
|
+
$(T(n.cancelText || n.$i18n.Common.Cancel), 1)
|
|
133
|
+
]),
|
|
134
|
+
_: 1
|
|
135
|
+
}),
|
|
136
|
+
c(C, {
|
|
137
|
+
onClick: a,
|
|
138
|
+
color: n.isWarning ? "red" : "blue"
|
|
139
|
+
}, {
|
|
140
|
+
default: o(() => [
|
|
141
|
+
$(T(n.submitText || n.$i18n.Common.Continue), 1)
|
|
142
|
+
]),
|
|
143
|
+
_: 1
|
|
144
|
+
}, 8, ["color"])
|
|
145
|
+
]),
|
|
146
|
+
_: 2
|
|
147
|
+
}, [
|
|
148
|
+
n.$slots.header ? {
|
|
149
|
+
name: "header",
|
|
150
|
+
fn: o(() => [
|
|
151
|
+
l(n.$slots, "header")
|
|
152
|
+
]),
|
|
153
|
+
key: "0"
|
|
154
|
+
} : void 0,
|
|
155
|
+
n.$slots.default ? {
|
|
156
|
+
name: "content",
|
|
157
|
+
fn: o(() => [
|
|
158
|
+
l(n.$slots, "default")
|
|
159
|
+
]),
|
|
160
|
+
key: "1"
|
|
161
|
+
} : void 0
|
|
162
|
+
]), 1040));
|
|
163
|
+
}
|
|
164
|
+
}), E = /* @__PURE__ */ y({
|
|
165
|
+
__name: "prompt",
|
|
166
|
+
props: {
|
|
167
|
+
submitText: {},
|
|
168
|
+
cancelText: {},
|
|
169
|
+
defaultValue: {},
|
|
170
|
+
id: {},
|
|
171
|
+
class: {},
|
|
172
|
+
transitionDuration: {},
|
|
173
|
+
footerSupportLink: {},
|
|
174
|
+
pos: {},
|
|
175
|
+
notch: { type: Boolean },
|
|
176
|
+
openByHover: { type: Boolean },
|
|
177
|
+
posBy: {}
|
|
178
|
+
},
|
|
179
|
+
emits: ["open", "close", "scrollContentList", "submit"],
|
|
180
|
+
setup(i, { emit: r }) {
|
|
181
|
+
const p = i, e = r, t = () => m.value = p.defaultValue ?? "", a = P(!1), m = P();
|
|
182
|
+
w(() => p.defaultValue, () => t(), { immediate: !0 });
|
|
183
|
+
const d = () => {
|
|
184
|
+
a.value = !0;
|
|
185
|
+
}, n = () => {
|
|
186
|
+
if (a.value) {
|
|
187
|
+
a.value = !1, e("submit", m.value), t();
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
190
|
+
t(), e("close");
|
|
191
|
+
}, u = { ...p, submitText: void 0, cancelText: void 0, defaultValue: void 0 };
|
|
192
|
+
return delete u.submitText, delete u.cancelText, delete u.defaultValue, (s, f) => (b(), B(v, V({ class: "top-popupPrompt" }, u, {
|
|
193
|
+
onOpen: f[1] || (f[1] = () => s.$emit("open")),
|
|
194
|
+
onClose: n,
|
|
195
|
+
onScrollContentList: f[2] || (f[2] = (...g) => s.$emit("scrollContentList", ...g))
|
|
196
|
+
}), S({
|
|
197
|
+
opener: o(() => [
|
|
198
|
+
l(s.$slots, "opener")
|
|
199
|
+
]),
|
|
200
|
+
footer: o(() => [
|
|
201
|
+
l(s.$slots, "footer"),
|
|
202
|
+
c(C, { color: "theme" }, {
|
|
203
|
+
default: o(() => [
|
|
204
|
+
$(T(s.cancelText || s.$i18n.Common.Cancel), 1)
|
|
205
|
+
]),
|
|
206
|
+
_: 1
|
|
207
|
+
}),
|
|
208
|
+
c(C, { onClick: d }, {
|
|
209
|
+
default: o(() => [
|
|
210
|
+
$(T(s.submitText || s.$i18n.Common.OK), 1)
|
|
211
|
+
]),
|
|
212
|
+
_: 1
|
|
213
|
+
})
|
|
214
|
+
]),
|
|
215
|
+
_: 2
|
|
216
|
+
}, [
|
|
217
|
+
s.$slots.header ? {
|
|
218
|
+
name: "header",
|
|
219
|
+
fn: o(() => [
|
|
220
|
+
l(s.$slots, "header")
|
|
221
|
+
]),
|
|
222
|
+
key: "0"
|
|
223
|
+
} : void 0,
|
|
224
|
+
s.$slots.default ? {
|
|
225
|
+
name: "content",
|
|
226
|
+
fn: o(() => [
|
|
227
|
+
l(s.$slots, "default"),
|
|
228
|
+
c(L, {
|
|
229
|
+
modelValue: m.value,
|
|
230
|
+
"onUpdate:modelValue": f[0] || (f[0] = (g) => m.value = g),
|
|
231
|
+
modelModifiers: { trim: !0 }
|
|
232
|
+
}, null, 8, ["modelValue"])
|
|
233
|
+
]),
|
|
234
|
+
key: "1"
|
|
235
|
+
} : void 0
|
|
236
|
+
]), 1040));
|
|
237
|
+
}
|
|
238
|
+
}), J = v, Q = I, R = M, X = L, Y = q, Z = z, x = E;
|
|
44
239
|
export {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
240
|
+
J as TopPopup,
|
|
241
|
+
Y as TopPopupAlert,
|
|
242
|
+
Z as TopPopupConfirm,
|
|
243
|
+
R as TopPopupListItem,
|
|
244
|
+
Q as TopPopupOpener,
|
|
245
|
+
x as TopPopupPrompt,
|
|
246
|
+
X as TopPopupWidgetInput
|
|
49
247
|
};
|
|
50
248
|
//# sourceMappingURL=popup.js.map
|
package/popup/popup.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"popup.js","sources":["../../src/components/popup/popup/widgetInput.vue","../../src/components/popup/popup.ts"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { ModelRef } from 'vue';\nimport type { Props } from '@/components/forms/input/input';\nimport TopInput from '@/components/forms/input/input.vue';\n\nwithDefaults(defineProps<Props>(), {\n\taddCleaner: true,\n});\n\nconst model: ModelRef<string> = defineModel({\n\tdefault: '',\n});\n</script>\n\n<template>\n\t<TopInput\n\t\t:=\"$props\"\n\t\tmodificator=\"popupWidgetInput\"\n\t\tv-model=\"model\"\n\t/>\n</template>\n\n<style module>\n.top-input-popupWidgetInput {\n\t--top-loadbar-color: var(--color-line-2);\n\n\twidth: 100%;\n}\n\n.top-input_input-popupWidgetInput {\n\tborder: none;\n\tbackground: var(--color-layer-secondary-1);\n}\n\n.top-input_input-popupWidgetInput:hover {\n\tbackground: var(--color-layer-secondary-2);\n}\n\n.top-input_input-popupWidgetInput:focus {\n\tbackground: var(--color-layer-secondary-3);\n\toutline: unset;\n}\n</style>\n","import type { ComponentCustomProps } from 'vue';\n\nimport Popup from './popup/popup.vue';\nimport PopupOpener from './popup/opener.vue';\nimport PopupListItem from './popup/listItem.vue';\nimport PopupWidgetInput from './popup/widgetInput.vue';\n\nexport const TopPopup = Popup as typeof Popup & ComponentCustomProps;\nexport const TopPopupOpener = PopupOpener as typeof PopupOpener & ComponentCustomProps;\nexport const TopPopupListItem = PopupListItem as typeof PopupListItem & ComponentCustomProps;\nexport const TopPopupWidgetInput = PopupWidgetInput as typeof PopupWidgetInput & ComponentCustomProps;\n"],"names":["model","useModel","__props","TopPopup","
|
|
1
|
+
{"version":3,"file":"popup.js","sources":["../../src/components/popup/popup/widgetInput.vue","../../src/components/popup/alert/alert.vue","../../src/components/popup/confirm/confirm.vue","../../src/components/popup/prompt/prompt.vue","../../src/components/popup/popup.ts"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { ModelRef } from 'vue';\nimport type { Props } from '@/components/forms/input/input';\nimport TopInput from '@/components/forms/input/input.vue';\n\nwithDefaults(defineProps<Props>(), {\n\taddCleaner: true,\n});\n\nconst model: ModelRef<string> = defineModel({\n\tdefault: '',\n});\n</script>\n\n<template>\n\t<TopInput\n\t\t:=\"$props\"\n\t\tmodificator=\"popupWidgetInput\"\n\t\tv-model=\"model\"\n\t/>\n</template>\n\n<style module>\n.top-input-popupWidgetInput {\n\t--top-loadbar-color: var(--color-line-2);\n\n\twidth: 100%;\n}\n\n.top-input_input-popupWidgetInput {\n\tborder: none;\n\tbackground: var(--color-layer-secondary-1);\n}\n\n.top-input_input-popupWidgetInput:hover {\n\tbackground: var(--color-layer-secondary-2);\n}\n\n.top-input_input-popupWidgetInput:focus {\n\tbackground: var(--color-layer-secondary-3);\n\toutline: unset;\n}\n</style>\n","<script setup lang=\"ts\">\nimport type { Emits, Props } from './alert';\nimport TopButton from '@/components/forms/button/button.vue';\nimport TopPopup from '@/components/popup/popup/popup.vue';\n\nconst props = defineProps<Props>();\n\ndefineEmits<Emits>();\n\nconst $propsPopup = { ...props, submitText: undefined };\ndelete $propsPopup.submitText;\n</script>\n\n<template>\n\t<TopPopup\n\t\tclass=\"top-popupAlert\"\n\t\t:=$propsPopup\n\t\t@open=\"() => $emit('open')\"\n\t\t@close=\"() => $emit('close')\"\n\t\t@scrollContentList=\"(...args) => $emit('scrollContentList', ...args)\"\n\t>\n\t\t<template #opener>\n\t\t\t<!-- @slot Элемент для открытия Popup -->\n\t\t\t<slot name=\"opener\"></slot>\n\t\t</template>\n\n\t\t<template #header v-if=\"$slots.header\">\n\t\t\t<!-- @slot Шапка -->\n\t\t\t<slot name=\"header\"></slot>\n\t\t</template>\n\n\t\t<template #content v-if=\"$slots.default\">\n\t\t\t<!-- @slot Контент в свободной форме -->\n\t\t\t<slot></slot>\n\t\t</template>\n\n\t\t<template #footer>\n\t\t\t<!-- @slot Футер -->\n\t\t\t<slot name=\"footer\"></slot>\n\n\t\t\t<TopButton>\n\t\t\t\t{{ submitText || $i18n.Common.Close }}\n\t\t\t</TopButton>\n\t\t</template>\n\t</TopPopup>\n</template>\n","<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport type { Emits, Props } from './confirm';\nimport TopButton from '@/components/forms/button/button.vue';\nimport TopPopup from '@/components/popup/popup/popup.vue';\n\nconst props = defineProps<Props>();\n\nconst emit = defineEmits<Emits>();\n\nconst isSubmit = ref(false);\n\nconst onSubmit = () => {\n\tisSubmit.value = true;\n\n\temit('submit');\n};\n\nconst onClose = () => {\n\tif (isSubmit.value) {\n\t\tisSubmit.value = false;\n\n\t\treturn;\n\t}\n\n\temit('close');\n};\n\nconst $propsPopup = { ...props, submitText: undefined, cancelText: undefined, isWarning: undefined };\ndelete $propsPopup.submitText;\ndelete $propsPopup.cancelText;\ndelete $propsPopup.isWarning;\n</script>\n\n<template>\n\t<TopPopup\n\t\tclass=\"top-popupConfirm\"\n\t\t:=$propsPopup\n\t\t@open=\"() => $emit('open')\"\n\t\t@close=\"onClose\"\n\t\t@scrollContentList=\"(...args) => $emit('scrollContentList', ...args)\"\n\t>\n\t\t<template #opener>\n\t\t\t<!-- @slot Элемент для открытия TopPopup -->\n\t\t\t<slot name=\"opener\"></slot>\n\t\t</template>\n\n\t\t<template #header v-if=\"$slots.header\">\n\t\t\t<!-- @slot Шапка -->\n\t\t\t<slot name=\"header\"></slot>\n\t\t</template>\n\n\t\t<template #content v-if=\"$slots.default\">\n\t\t\t<!-- @slot Контент в свободной форме -->\n\t\t\t<slot></slot>\n\t\t</template>\n\n\t\t<template #footer>\n\t\t\t<!-- @slot Футер -->\n\t\t\t<slot name=\"footer\"></slot>\n\n\t\t\t<TopButton color=\"theme\">\n\t\t\t\t{{ cancelText || $i18n.Common.Cancel }}\n\t\t\t</TopButton>\n\n\t\t\t<TopButton\n\t\t\t\t@click=\"onSubmit\"\n\t\t\t\t:color=\"isWarning ? 'red' : 'blue'\"\n\t\t\t>\n\t\t\t\t{{ submitText || $i18n.Common.Continue }}\n\t\t\t</TopButton>\n\t\t</template>\n\t</TopPopup>\n</template>\n","<script setup lang=\"ts\">\nimport { ref, watch } from 'vue';\nimport type { Emits, Props } from './prompt';\nimport TopButton from '@/components/forms/button/button.vue';\nimport TopPopup from '@/components/popup/popup/popup.vue';\nimport TopPopupWidgetInput from '@/components/popup/popup/widgetInput.vue';\n\nconst props = defineProps<Props>();\n\nconst emit = defineEmits<Emits>();\n\nconst reset = () => localValue.value = props.defaultValue ?? '';\n\nconst isSubmit = ref(false);\n\nconst localValue = ref();\nwatch(() => props.defaultValue, () => reset(), { immediate: true });\n\nconst onSubmit = () => {\n\tisSubmit.value = true;\n};\n\nconst onClose = () => {\n\tif (isSubmit.value) {\n\t\tisSubmit.value = false;\n\n\t\temit('submit', localValue.value);\n\n\t\treset();\n\n\t\treturn;\n\t}\n\n\treset();\n\n\temit('close');\n};\n\nconst $propsPopup = { ...props, submitText: undefined, cancelText: undefined, defaultValue: undefined };\ndelete $propsPopup.submitText;\ndelete $propsPopup.cancelText;\ndelete $propsPopup.defaultValue;\n</script>\n\n<template>\n\t<TopPopup\n\t\tclass=\"top-popupPrompt\"\n\t\t:=$propsPopup\n\t\t@open=\"() => $emit('open')\"\n\t\t@close=\"onClose\"\n\t\t@scrollContentList=\"(...args) => $emit('scrollContentList', ...args)\"\n\t>\n\t\t<template #opener>\n\t\t\t<!-- @slot Элемент для открытия TopPopup -->\n\t\t\t<slot name=\"opener\"></slot>\n\t\t</template>\n\n\t\t<template #header v-if=\"$slots.header\">\n\t\t\t<!-- @slot Шапка -->\n\t\t\t<slot name=\"header\"></slot>\n\t\t</template>\n\n\t\t<template #content v-if=\"$slots.default\">\n\t\t\t<!-- @slot Контент в свободной форме -->\n\t\t\t<slot></slot>\n\n\t\t\t<TopPopupWidgetInput v-model.trim=\"localValue\"/>\n\t\t</template>\n\n\t\t<template #footer>\n\t\t\t<!-- @slot Футер -->\n\t\t\t<slot name=\"footer\"></slot>\n\n\t\t\t<TopButton color=\"theme\">\n\t\t\t\t{{ cancelText || $i18n.Common.Cancel }}\n\t\t\t</TopButton>\n\n\t\t\t<TopButton @click=\"onSubmit\">\n\t\t\t\t{{ submitText || $i18n.Common.OK }}\n\t\t\t</TopButton>\n\t\t</template>\n\t</TopPopup>\n</template>\n","import type { ComponentCustomProps } from 'vue';\n\nimport Popup from './popup/popup.vue';\nimport PopupOpener from './popup/opener.vue';\nimport PopupListItem from './popup/listItem.vue';\nimport PopupWidgetInput from './popup/widgetInput.vue';\nimport PopupAlert from './alert/alert.vue';\nimport PopupConfirm from './confirm/confirm.vue';\nimport PopupPrompt from './prompt/prompt.vue';\n\nexport const TopPopup = Popup as typeof Popup & ComponentCustomProps;\nexport const TopPopupOpener = PopupOpener as typeof PopupOpener & ComponentCustomProps;\nexport const TopPopupListItem = PopupListItem as typeof PopupListItem & ComponentCustomProps;\nexport const TopPopupWidgetInput = PopupWidgetInput as typeof PopupWidgetInput & ComponentCustomProps;\nexport const TopPopupAlert = PopupAlert as typeof PopupAlert & ComponentCustomProps;\nexport const TopPopupConfirm = PopupConfirm as typeof PopupConfirm & ComponentCustomProps;\nexport const TopPopupPrompt = PopupPrompt as typeof PopupPrompt & ComponentCustomProps;\n"],"names":["model","useModel","__props","$propsPopup","props","emit","__emit","isSubmit","ref","onSubmit","onClose","reset","localValue","watch","TopPopup","Popup","TopPopupOpener","_sfc_main$4","TopPopupListItem","_sfc_main$5","TopPopupWidgetInput","PopupWidgetInput","TopPopupAlert","_sfc_main$2","TopPopupConfirm","_sfc_main$1","TopPopupPrompt","_sfc_main"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,UAAAA,IAAAC,EAAAC,GAAA,YAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA,UAAAC,IAAA,EAAA,GAJAD,GAIA,YAAA,OAAA;AACA,kBAAAC,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACJA,UAAAC,IAAAF,GAEAG,IAAAC,GAEAC,IAAAC,EAAA,EAAA,GAEAC,IAAA,MAAA;AACC,MAAAF,EAAA,QAAA,IAEAF,EAAA,QAAA;AAAA,IAAa,GAGdK,IAAA,MAAA;AACC,UAAAH,EAAA,OAAA;AACC,QAAAA,EAAA,QAAA;AAEA;AAAA,MAAA;AAGD,MAAAF,EAAA,OAAA;AAAA,IAAY,GAGbF,IAAA,EAAA,GAAAC,GAAA,YAAA,QAAA,YAAA,QAAA,WAAA,OAAA;AACA,kBAAAD,EAAA,YACA,OAAAA,EAAA,YACA,OAAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxBA,UAAAC,IAAAF,GAEAG,IAAAC,GAEAK,IAAA,MAAAC,EAAA,QAAAR,EAAA,gBAAA,IAEAG,IAAAC,EAAA,EAAA,GAEAI,IAAAJ,EAAA;AACA,IAAAK,EAAA,MAAAT,EAAA,cAAA,MAAAO,EAAA,GAAA,EAAA,WAAA,GAAA,CAAA;AAEA,UAAAF,IAAA,MAAA;AACC,MAAAF,EAAA,QAAA;AAAA,IAAiB,GAGlBG,IAAA,MAAA;AACC,UAAAH,EAAA,OAAA;AACC,QAAAA,EAAA,QAAA,IAEAF,EAAA,UAAAO,EAAA,KAAA,GAEAD,EAAA;AAEA;AAAA,MAAA;AAGD,MAAAA,EAAA,GAEAN,EAAA,OAAA;AAAA,IAAY,GAGbF,IAAA,EAAA,GAAAC,GAAA,YAAA,QAAA,YAAA,QAAA,cAAA,OAAA;AACA,kBAAAD,EAAA,YACA,OAAAA,EAAA,YACA,OAAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IC/BOW,IAAAC,GACAC,IAAAC,GACAC,IAAAC,GACAC,IAAAC,GACAC,IAAAC,GACAC,IAAAC,GACAC,IAAAC;"}
|
package/popup/worker.amd.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
define(["require","exports","../.chunks/forms-
|
|
1
|
+
define(["require","exports","../.chunks/forms-DKL0e9tp.amd","../utils/dom.amd","../utils/scroll.amd"],function(require,exports,forms,utils_dom,utils_scroll){"use strict";if(typeof vue>"u")var vue=window.Vue;class Worker{static noClose=!1;static vueConnectors=new Map;static options={};static getPopup(t){return utils_dom.default.storage(t,"TopPopup")}static getAll(){return utils_dom.default.querySelectorAllArray(document,".top-popup-wrapper")}static getAllVisible(){return utils_dom.default.querySelectorAllVisible(document,".top-popup-wrapper")}static async openByOpener(t){if(!(t instanceof HTMLElement))return;const o={};return o.popup=t.dataset.topPopup,o.id=t.dataset.topPopupId,t.dataset.topPopupP&&(o.p=parseInt(t.dataset.topPopupP)),t.dataset.topPopupPos&&(o.p=parseInt(t.dataset.topPopupPos)),t.dataset.topPopupNotch&&(o.notch=t.dataset.topPopupNotch==="true"||t.dataset.topPopupNotch==="1"),t.dataset.topPopupClass&&(o.class=t.dataset.topPopupClass),t.dataset.topPopupPosBy&&(o.posBy=t.dataset.topPopupPosBy),t.dataset.topPopupFront&&(o.frontSelector=t.dataset.topPopupFront),t.dataset.topPopupInvertX&&(o.invertX=t.dataset.topPopupInvertX==="true"||t.dataset.topPopupInvertX==="1"),t.dataset.topPopupOpenByHover&&(o.openByHover=t.dataset.topPopupOpenByHover==="true"||t.dataset.topPopupOpenByHover==="1"),t.dataset.topPopupUseOriginal&&(o.useOriginal=t.dataset.topPopupUseOriginal==="true"||t.dataset.topPopupUseOriginal==="1"),await Worker.open(t,o)}static async open(elOpener,options){elOpener instanceof HTMLElement&&(elOpener.dataset.topPopupOpened="opened");const{default:Popup}=await new Promise((t,o)=>require(["../.chunks/popup-DAruCfQv.amd"],t,o));if(forms.Core.$){const $elOpener=forms.Core.$(elOpener);if($elOpener.data("aftershow")){let afterShow=$elOpener.data("aftershow");typeof afterShow=="string"&&(afterShow=eval(afterShow.replace(/\W/g,""))),$elOpener.one("aftershow.top-menu-popup",afterShow)}if($elOpener.data("afterclose")){let afterclose=$elOpener.data("afterclose");typeof afterclose=="string"&&(afterclose=eval(afterclose.replace(/\W/g,""))),$elOpener.one("afterclose.top-menu-popup",afterclose)}}return options.isFullScreen=forms.Core.state.isMobile,new Popup(elOpener,options)}static close(t){const o=Worker.getPopup(t);o&&o.close()}static recalcPosition(t){const o=Worker.getPopup(t);o&&o.elPopupBody instanceof HTMLElement&&(o.recalcPosition(),utils_scroll.genHasScroll(o.elPopupBody))}static scrollToActive(t){if(!utils_dom.default.querySelectorVisible(t,"ul.top-popup_content > li > .top-active"))return;const s=t.querySelector("ul.top-popup_content"),a=utils_dom.default.querySelectorAllVisible(t,"ul.top-popup_content > li");t.classList.add("top-popup-wrapper-no_animate"),setTimeout(()=>t.classList.remove("top-popup-wrapper-no_animate"),100);let p=100;for(const e of a){if(e.querySelector(":scope > .top-active"))break;e instanceof HTMLElement&&(p+=e.offsetHeight)}if(s instanceof HTMLElement){const e=s.offsetHeight;p>e?s.scrollTop=p-e:s.scrollTop=0}}static decoratorBeforeOpen(t){this.options.decoratorBeforeOpen&&this.options.decoratorBeforeOpen(t)}static decoratorAfterOpen(t){this.options.decoratorAfterOpen&&this.options.decoratorAfterOpen(t)}static decoratorIsIgnoreOuterClick(t){return this.options.decoratorIsIgnoreOuterClick?this.options.decoratorIsIgnoreOuterClick(t):!1}static regVueComponent(t,o){if(Worker.vueConnectors.get(t))throw"Vue component Popup use duplicated id: "+t;Worker.vueConnectors.set(t,o)}static unregVueComponent(t){Worker.vueConnectors.delete(t)}static genElPopupOpener(t,o,...s){const a=utils_dom.default.genEl(t,{},...s);a.dataset.topPopup="#"+o.id;for(let p in o){const e="topPopup"+p.charAt(0).toUpperCase()+p.slice(1);a.dataset[e]=o[p]}return a}}exports.TopPopupWorker=Worker,exports.default=Worker,Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
|
|
2
2
|
//# sourceMappingURL=worker.amd.js.map
|
package/popup/worker.amd.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker.amd.js","sources":["../../src/components/popup/lib/worker.globalEvents.ts","../../src/components/popup/lib/worker.ts"],"sourcesContent":["import Core from '@/core/core/core';\nimport Events from '@/core/core/events';\nimport Worker from '@/components/popup/lib/worker';\n\n/**\n * Глобальные события, для реализации Popup\n */\nclass WorkerEvents {\n\tstatic init(): void {\n\t\t// автоматическое открытие при наведении мыши, событие глобальное, так как инициализация popup отложена\n\t\tdocument.addEventListener('mouseover', (e) => {\n\t\t\tif (!(e.target instanceof HTMLElement) || !e.target.dataset?.topPopupOpenByHover) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\te.target.click();\n\t\t});\n\n\t\t// при скролле страницы убирать закрыть Popup\n\t\tdocument.addEventListener('scroll', () => {\n\t\t\tif (Core.state.isMobile || Core.state.isMobileUA) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tWorker.getAll().forEach(elPopup => Worker.close(elPopup));\n\t\t});\n\n\t\tEvents.addOnReize(e => {\n\t\t\t// закрыть popup при повороте экрана телефона\n\t\t\t// если была отображена ПК версия, она будет закрыта\n\t\t\tif (Core.state.isMobile && e.topEvent.widthDiff) {\n\t\t\t\tWorker.getAll().forEach(elPopup => Worker.close(elPopup));\n\t\t\t}\n\t\t});\n\n\t\tdocument.addEventListener('click', this.onclick);\n\t}\n\n\t/**\n\t * Глобальный обработчик кликов\n\t * обрабатывает клики на открытие Popup\n\t */\n\tstatic async onclick(e: Event): Promise<void> {\n\t\tif (!(e.target instanceof HTMLElement)) return;\n\n\t\tlet elOpener: HTMLElement | null | undefined;\n\n\t\tswitch (true) {\n\t\t\tcase !!e.target.dataset?.topPopup:\n\t\t\t\telOpener = e.target;\n\n\t\t\t\tbreak;\n\n\t\t\tcase !!e.target.parentElement?.dataset.topPopup:\n\t\t\t\telOpener = e.target.parentElement;\n\n\t\t\t\tbreak;\n\n\t\t\tcase !!e.target.parentElement?.parentElement?.dataset.topPopup:\n\t\t\t\telOpener = e.target.parentElement?.parentElement;\n\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif (!elOpener) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (elOpener.dataset.topPopupDisabled) {\n\t\t\treturn;\n\t\t}\n\n\t\t// меню уже открыто\n\t\tif (elOpener.dataset.topPopupOpened) {\n\t\t\treturn;\n\t\t}\n\n\t\te.preventDefault();\n\n\t\tawait Worker.openByOpener(elOpener);\n\t}\n}\n\nexport default WorkerEvents;\n","import Core from '@/core/core/core';\nimport DOM from '@/core/utils/dom';\nimport GlobalEvents from '@/components/popup/lib/worker.globalEvents';\nimport { genHasScroll } from '@/core/utils/scroll';\nimport type { Popup, PopupOptions } from '@/components/popup/lib/popup';\n\nlet decoratorBeforeOpen: (arg0: Popup) => void;\nlet decoratorAfterOpen: (arg0: Popup) => void;\nlet decoratorIsIgnoreOuterClick: (arg0: Event) => boolean;\n\ninterface Options {\n\tdecoratorBeforeOpen: typeof decoratorBeforeOpen,\n\tdecoratorAfterOpen: typeof decoratorAfterOpen,\n\tdecoratorIsIgnoreOuterClick: typeof decoratorIsIgnoreOuterClick,\n}\n\nclass Worker {\n\n\t// глобальное выключение закрытия меню, используется при различных оверлеях\n\tstatic noClose = false;\n\n\tstatic vueConnectors = new Map();\n\n\t/**\n\t * Вызывается при инициализаци приложения\n\t *\n\t * Устанавливает глобальные статические декортаоры для компонента Popup\n\t *\n\t * @todo Вынести в настройки плагина corePlugin\n\t */\n\tstatic onInitApp(options: Options): void {\n\t\tif (options) {\n\t\t\tdecoratorBeforeOpen = options.decoratorBeforeOpen;\n\t\t\tdecoratorAfterOpen = options.decoratorAfterOpen;\n\t\t\tdecoratorIsIgnoreOuterClick = options.decoratorIsIgnoreOuterClick;\n\t\t}\n\t}\n\n\t// вернуть объект компонента popup, привязанный к элементу\n\tstatic getPopup(elPopup: HTMLElement): Popup {\n\t\treturn DOM.storage(elPopup, 'Popup') as Popup;\n\t}\n\n\tstatic getAll(): HTMLElement[] {\n\t\treturn DOM.querySelectorAllArray(document, '.top-popup-wrapper');\n\t}\n\n\tstatic getAllVisible(): HTMLElement[] {\n\t\treturn DOM.querySelectorAllVisible(document, '.top-popup-wrapper');\n\t}\n\n\t/**\n\t * Открть Popup от указанного elOpener\n\t * @param {HTMLElement} elOpener - элемент, который должен вызвать открытие Popup\n\t */\n\tstatic async openByOpener(elOpener: HTMLElement): Promise<Popup | undefined> {\n\t\tif (!(elOpener instanceof HTMLElement)) return;\n\n\t\tconst options: PopupOptions = {};\n\n\t\toptions.popup = elOpener.dataset.topPopup;\n\n\t\tif (elOpener.dataset.topPopupP) {\n\t\t\toptions.p = parseInt(elOpener.dataset.topPopupP);\n\t\t}\n\n\t\t// '1' - добалено для обратной совместимости\n\t\tif (elOpener.dataset.topPopupNotch) {\n\t\t\toptions.notch = elOpener.dataset.topPopupNotch === 'true' || elOpener.dataset.topPopupNotch === '1';\n\t\t}\n\n\t\tif (elOpener.dataset.topPopupClass) {\n\t\t\toptions.class = elOpener.dataset.topPopupClass;\n\t\t}\n\n\t\tif (elOpener.dataset.topPopupPosBy) {\n\t\t\toptions.posBy = elOpener.dataset.topPopupPosBy as PopupOptions['posBy'];\n\t\t}\n\n\t\tif (elOpener.dataset.topPopupFront) {\n\t\t\toptions.frontSelector = elOpener.dataset.topPopupFront;\n\t\t}\n\n\t\t// '1' - добалено для обратной совместимости\n\t\tif (elOpener.dataset.topPopupInvertX) {\n\t\t\toptions.invertX = elOpener.dataset.topPopupInvertX === 'true' || elOpener.dataset.topPopupInvertX === '1';\n\t\t}\n\n\t\t// '1' - добалено для обратной совместимости\n\t\tif (elOpener.dataset.topPopupOpenByHover) {\n\t\t\toptions.openByHover = elOpener.dataset.topPopupOpenByHover === 'true' || elOpener.dataset.topPopupOpenByHover === '1';\n\t\t}\n\n\t\t// '1' - добалено для обратной совместимости\n\t\tif (elOpener.dataset.topPopupUseOriginal) {\n\t\t\toptions.useOriginal = elOpener.dataset.topPopupUseOriginal === 'true' || elOpener.dataset.topPopupUseOriginal === '1';\n\t\t}\n\n\t\treturn await Worker.open(elOpener, options);\n\t}\n\n\t/**\n\t * Создать и открыть Popup\n\t * @param elOpener - элемент, вызвавший открытие Popup\n\t * @param options - опции Popup\n\t */\n\tstatic async open(elOpener: HTMLElement, options: PopupOptions): Promise<Popup> {\n\t\tif (elOpener instanceof HTMLElement) elOpener.dataset.topPopupOpened = 'opened';\n\n\t\tconst { default: Popup } = await import('./popup');\n\n\t\tif (Core.$) {\n\t\t\tconst $elOpener = Core.$(elOpener);\n\n\t\t\t// deprecated, используется aftershow.top-menu-popup\n\t\t\tif ($elOpener.data('aftershow')) {\n\t\t\t\tlet afterShow = $elOpener.data('aftershow');\n\t\t\t\tif (typeof (afterShow) == 'string') {\n\t\t\t\t\t// TODO: Удалить с сайта указание кода функции в html\n\t\t\t\t\t// @deprecated\n\t\t\t\t\tafterShow = eval(afterShow.replace(/\\W/g, ''));\n\t\t\t\t}\n\n\t\t\t\t$elOpener.one('aftershow.top-menu-popup', afterShow);\n\t\t\t}\n\n\t\t\t// deprecated, используется afterclose.top-menu-popup\n\t\t\tif ($elOpener.data('afterclose')) {\n\t\t\t\tlet afterclose = $elOpener.data('afterclose');\n\t\t\t\tif (typeof (afterclose) == 'string') {\n\t\t\t\t\t// TODO: Удалить с сайта указание кода функции в html\n\t\t\t\t\t// @deprecated\n\t\t\t\t\tafterclose = eval(afterclose.replace(/\\W/g, ''));\n\t\t\t\t}\n\n\t\t\t\t$elOpener.one('afterclose.top-menu-popup', afterclose);\n\t\t\t}\n\t\t}\n\n\t\toptions.isFullScreen = Core.state.isMobile;\n\n\t\treturn new Popup(elOpener, options);\n\t}\n\n\tstatic close(elPopup: HTMLElement): void {\n\t\tconst popup = Worker.getPopup(elPopup);\n\t\tif (popup) {\n\t\t\tpopup.close();\n\t\t}\n\t}\n\n\tstatic recalcPosition(elPopup: HTMLElement): void {\n\t\tconst popup = Worker.getPopup(elPopup);\n\t\tif (popup && popup.elPopupBody instanceof HTMLElement) {\n\t\t\tpopup.recalcPosition();\n\n\t\t\t// контроль за состоянием тени скролла\n\t\t\t// вызывать после имзенения высоты скролла popup.elPopupBody\n\t\t\tgenHasScroll(popup.elPopupBody);\n\t\t}\n\t}\n\n\t// скролл к активному элементу списка\n\tstatic scrollToActive(elPopup: HTMLElement): void {\n\t\tconst elItemActive = DOM.querySelectorVisible(elPopup, 'ul.top-popup_content > li > .top-active');\n\t\tif (!elItemActive) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst elUl = elPopup.querySelector('ul.top-popup_content');\n\t\tconst elsLi = DOM.querySelectorAllVisible(elPopup, 'ul.top-popup_content > li');\n\n\t\telPopup.classList.add('top-popup-wrapper-no_animate');\n\t\tsetTimeout(() => elPopup.classList.remove('top-popup-wrapper-no_animate'), 100);\n\n\t\tlet top = 100;\n\t\tfor (const elLi of elsLi) {\n\t\t\tif (elLi.querySelector(':scope > .top-active')) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif (elLi instanceof HTMLElement) top += elLi.offsetHeight;\n\t\t}\n\n\t\tif (elUl instanceof HTMLElement) {\n\t\t\tconst heightWrapper = elUl.offsetHeight;\n\t\t\tif (top > heightWrapper) {\n\t\t\t\telUl.scrollTop = top - heightWrapper;\n\t\t\t} else {\n\t\t\t\telUl.scrollTop = 0;\n\t\t\t}\n\t\t}\n\t}\n\n\tstatic decoratorBeforeOpen(popup: Popup): void {\n\t\tif (decoratorBeforeOpen) {\n\t\t\tdecoratorBeforeOpen(popup);\n\t\t}\n\t};\n\n\tstatic decoratorAfterOpen(popup: Popup): void {\n\t\tif (decoratorAfterOpen) {\n\t\t\tdecoratorAfterOpen(popup);\n\t\t}\n\t};\n\n\t/**\n\t * Определитель того, что клик вне Popup нужно игнорировать\n\t * @returns {boolean} - игнорировать клик, то есть не закрывать Popup\n\t */\n\tstatic decoratorIsIgnoreOuterClick(e: Event): boolean {\n\t\tif (decoratorIsIgnoreOuterClick) {\n\t\t\treturn decoratorIsIgnoreOuterClick(e);\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t * Зарегистрировать Vue компонент\n\t *\n\t * Каждый экземляр Popup регистрируется в словаре vueConnectors для последующего доступа из js\n\t */\n\tstatic regVueComponent(id: string, vueConnector: any): void {\n\t\tif (Worker.vueConnectors.get(id)) {\n\t\t\tthrow 'Vue component Popup use duplicated id: ' + id;\n\t\t}\n\n\t\tWorker.vueConnectors.set(id, vueConnector);\n\t}\n\n\t/**\n\t * Снять с регистрации Vue компонент\n\t */\n\tstatic unregVueComponent(id: string): void {\n\t\tWorker.vueConnectors.delete(id);\n\t}\n\n}\n\nGlobalEvents.init();\n\nexport default Worker;\n"],"names":["e","_a","elPopup","elOpener","_d","_c","options2","elOpener2","popup","top","elLi","elsLi","elUl","heightWrapper","id","vueConnector","GlobalEvents"],"mappings":"+MAOA,MAAA,YAAA,+DAIG,EAAAA,EAAA,kBAAA,cAAA,GAAAC,EAAAD,EAAA,OAAA,UAAA,MAAAC,EAAA,sBAIAD,EAAA,OAAA,MAAA,CAAe,CAAA,EAIhB,SAAA,iBAAA,SAAA,IAAA,CACC,MAAA,KAAA,MAAA,UAAA,MAAA,KAAA,MAAA,YAIA,SAAA,OAAA,EAAA,QAAAE,GAAA,SAAA,MAAAA,CAAA,CAAA,CAAwD,CAAA,EAGzD,MAAA,OAAA,WAAAF,GAAA,CAGC,MAAA,KAAA,MAAA,UAAAA,EAAA,SAAA,WACC,SAAA,OAAA,EAAA,QAAAE,GAAA,SAAA,MAAAA,CAAA,CAAA,CACD,CAAA,kDAIF,aAAA,QAAAF,EAAA,kEAWC,OAAA,GAAA,gDAEEG,EAAAH,EAAA,OAEA,mEAGAG,EAAAH,EAAA,OAAA,cAEA,MAAA,IAAA,CAAA,GAAAI,GAAAC,EAAAL,EAAA,OAAA,gBAAA,YAAAK,EAAA,gBAAA,MAAAD,EAAA,QAAA,oEAKA,UAOFD,EAAA,QAAA,kBAKAA,EAAA,QAAA,iBAIAH,EAAA,eAAA,EAEA,MAAA,SAAA,aAAAG,CAAA,IAEF,CC3EA,IAAA,oBACA,mBACA,4BAQA,MAAA,MAAA,CAAa,OAAA,QAAA,GAGK,OAAA,cAAA,IAAA,IAEc,OAAA,UAAAG,EAAA,KAW7B,oBAAAA,EAAA,oBACA,mBAAAA,EAAA,mBACA,4BAAAA,EAAA,6BAEF,OAAA,SAAAJ,EAAA,kPAaA,aAAA,aAAAK,EAAA,CAOC,GAAA,EAAAA,aAAA,aAAA,OAEA,MAAAD,EAAA,CAAA,oCAIAC,EAAA,QAAA,YACCD,EAAA,EAAA,SAAAC,EAAA,QAAA,SAAA,GAIDA,EAAA,QAAA,gBACCD,EAAA,MAAAC,EAAA,QAAA,gBAAA,QAAAA,EAAA,QAAA,gBAAA,KAGDA,EAAA,QAAA,iDAIAA,EAAA,QAAA,iDAIAA,EAAA,QAAA,yDAKAA,EAAA,QAAA,kBACCD,EAAA,QAAAC,EAAA,QAAA,kBAAA,QAAAA,EAAA,QAAA,kBAAA,KAIDA,EAAA,QAAA,sBACCD,EAAA,YAAAC,EAAA,QAAA,sBAAA,QAAAA,EAAA,QAAA,sBAAA,KAIDA,EAAA,QAAA,sBACCD,EAAA,YAAAC,EAAA,QAAA,sBAAA,QAAAA,EAAA,QAAA,sBAAA,4BAIF,aAAA,KAAA,SAAA,QAAA,CAQC,oBAAA,cAAA,SAAA,QAAA,eAAA,wGAIA,GAAA,MAAA,KAAA,EAAA,wCAIC,GAAA,UAAA,KAAA,WAAA,EAAA,2CAEC,OAAA,WAAA,WAGC,UAAA,KAAA,UAAA,QAAA,MAAA,EAAA,CAAA,uDAOF,GAAA,UAAA,KAAA,YAAA,EAAA,6CAEC,OAAA,YAAA,WAGC,WAAA,KAAA,WAAA,QAAA,MAAA,EAAA,CAAA,4IAUJ,OAAA,MAAAL,EAAA,+BAKEM,EAAA,MAAA,EAEF,OAAA,eAAAN,EAAA,sEAKEM,EAAA,eAAA,EAIA,aAAA,aAAAA,EAAA,WAAA,GAEF,OAAA,eAAAN,EAAA,yFAME,kLAOD,WAAA,IAAAA,EAAA,UAAA,OAAA,8BAAA,EAAA,GAAA,EAEA,IAAAO,EAAA,IACA,UAAAC,KAAAC,EAAA,CACC,GAAAD,EAAA,cAAA,sBAAA,EACC,oDAMF,GAAAE,aAAA,YAAA,CACC,MAAAC,EAAAD,EAAA,aACAH,EAAAI,EACCD,EAAA,UAAAH,EAAAI,EAEAD,EAAA,UAAA,GAGH,OAAA,oBAAAJ,EAAA,sBAIE,oBAAAA,CAAA,EAEF,OAAA,mBAAAA,EAAA,qBAIE,mBAAAA,CAAA,EAEF,OAAA,4BAAA,EAAA,oCAQE,4BAAA,CAAA,KAIF,OAAA,gBAAAM,EAAAC,EAAA,gCASE,KAAA,0CAAAD,gCAIF,OAAA,kBAAAA,EAAA,iCAWDE,aAAAA,KAAAA,EAEA,MAAA,SAAA"}
|
|
1
|
+
{"version":3,"file":"worker.amd.js","sources":["../../src/components/popup/lib/worker.ts"],"sourcesContent":["/**\n * PopupWorker управлеяет работой Popup\n *\n * Должен грузить Popup только в отложенном режиме\n */\n\nimport Core from '@/core/core/core';\nimport DOM from '@/core/utils/dom';\nimport { genHasScroll } from '@/core/utils/scroll';\nimport type { Popup, PopupOptions } from '@/components/popup/lib/popup';\nimport type { OpenerProps } from '@/components/popup/popup/popup';\n\nexport type Options = {\n\t/**\n\t * Глобальное событие, которое будет вызвано перед открытием TopPopup\n\t */\n\tdecoratorBeforeOpen?: (TopPopupInstance: Popup) => void,\n\n\t/**\n\t * Глобальное событие, которое будет вызвано после открытия TopPopup\n\t */\n\tdecoratorAfterOpen?: (TopPopupInstance: Popup) => void;\n\n\t/**\n\t * Определитель того, что клик вне Popup нужно игнорировать\n\t * @returns {boolean} - если true, то click не приведет к закрытию Popup\n\t */\n\tdecoratorIsIgnoreOuterClick?: (e: MouseEvent) => boolean\n}\n\nclass Worker {\n\n\t/**\n\t * Глобальное выключение закрытия меню, используется при различных оверлеях\n\t */\n\tstatic noClose = false;\n\n\t/**\n\t * Для взаимодействия с vue\n\t */\n\tstatic vueConnectors = new Map();\n\n\tstatic options: Options = {};\n\n\t/**\n\t * Вернуть объект компонента popup, привязанный к элементу\n\t */\n\tstatic getPopup(elPopup: HTMLElement): Popup {\n\t\treturn DOM.storage(elPopup, 'TopPopup') as Popup;\n\t}\n\n\t/**\n\t * Вернуть все элементы с Popup\n\t */\n\tstatic getAll(): HTMLElement[] {\n\t\treturn DOM.querySelectorAllArray(document, '.top-popup-wrapper');\n\t}\n\n\t/**\n\t * Вернуть все элементы с открытыми Popup\n\t */\n\tstatic getAllVisible(): HTMLElement[] {\n\t\treturn DOM.querySelectorAllVisible(document, '.top-popup-wrapper');\n\t}\n\n\t/**\n\t * Открть Popup от указанного elOpener\n\t * @param {HTMLElement} elOpener - элемент, который должен вызвать открытие Popup\n\t */\n\tstatic async openByOpener(elOpener: HTMLElement): Promise<Popup | undefined> {\n\t\tif (!(elOpener instanceof HTMLElement)) return;\n\n\t\tconst options: PopupOptions = {};\n\n\t\toptions.popup = elOpener.dataset.topPopup;\n\n\t\toptions.id = elOpener.dataset.topPopupId;\n\n\t\t/**\n\t\t * @deprecated topPopupP - добавлено для обратной совместимости\n\t\t */\n\t\tif (elOpener.dataset.topPopupP) {\n\t\t\toptions.p = parseInt(elOpener.dataset.topPopupP);\n\t\t}\n\n\t\tif (elOpener.dataset.topPopupPos) {\n\t\t\toptions.p = parseInt(elOpener.dataset.topPopupPos);\n\t\t}\n\n\t\t/**\n\t\t * @deprecated '1' - добавлено для обратной совместимости\n\t\t */\n\t\tif (elOpener.dataset.topPopupNotch) {\n\t\t\toptions.notch = elOpener.dataset.topPopupNotch === 'true' || elOpener.dataset.topPopupNotch === '1';\n\t\t}\n\n\t\tif (elOpener.dataset.topPopupClass) {\n\t\t\toptions.class = elOpener.dataset.topPopupClass;\n\t\t}\n\n\t\tif (elOpener.dataset.topPopupPosBy) {\n\t\t\toptions.posBy = elOpener.dataset.topPopupPosBy as PopupOptions['posBy'];\n\t\t}\n\n\t\tif (elOpener.dataset.topPopupFront) {\n\t\t\toptions.frontSelector = elOpener.dataset.topPopupFront;\n\t\t}\n\n\t\t/**\n\t\t * @deprecated '1' - добавлено для обратной совместимости\n\t\t */\n\t\tif (elOpener.dataset.topPopupInvertX) {\n\t\t\toptions.invertX = elOpener.dataset.topPopupInvertX === 'true' || elOpener.dataset.topPopupInvertX === '1';\n\t\t}\n\n\t\t/**\n\t\t * @deprecated '1' - добавлено для обратной совместимости\n\t\t */\n\t\tif (elOpener.dataset.topPopupOpenByHover) {\n\t\t\toptions.openByHover = elOpener.dataset.topPopupOpenByHover === 'true' || elOpener.dataset.topPopupOpenByHover === '1';\n\t\t}\n\n\t\t/**\n\t\t * @deprecated '1' - добавлено для обратной совместимости\n\t\t */\n\t\tif (elOpener.dataset.topPopupUseOriginal) {\n\t\t\toptions.useOriginal = elOpener.dataset.topPopupUseOriginal === 'true' || elOpener.dataset.topPopupUseOriginal === '1';\n\t\t}\n\n\t\treturn await Worker.open(elOpener, options);\n\t}\n\n\t/**\n\t * Создать и открыть Popup\n\t * @param elOpener - элемент, вызвавший открытие Popup\n\t * @param options - опции Popup\n\t */\n\tprivate static async open(elOpener: HTMLElement, options: PopupOptions): Promise<Popup> {\n\t\tif (elOpener instanceof HTMLElement) elOpener.dataset.topPopupOpened = 'opened';\n\n\t\tconst { default: Popup } = await import('./popup');\n\n\t\tif (Core.$) {\n\t\t\tconst $elOpener = Core.$(elOpener);\n\n\t\t\t// deprecated, используется aftershow.top-menu-popup\n\t\t\tif ($elOpener.data('aftershow')) {\n\t\t\t\tlet afterShow = $elOpener.data('aftershow');\n\t\t\t\tif (typeof (afterShow) == 'string') {\n\t\t\t\t\t// TODO: Удалить с сайта указание кода функции в html\n\t\t\t\t\t// @deprecated\n\t\t\t\t\tafterShow = eval(afterShow.replace(/\\W/g, ''));\n\t\t\t\t}\n\n\t\t\t\t$elOpener.one('aftershow.top-menu-popup', afterShow);\n\t\t\t}\n\n\t\t\t// deprecated, используется afterclose.top-menu-popup\n\t\t\tif ($elOpener.data('afterclose')) {\n\t\t\t\tlet afterclose = $elOpener.data('afterclose');\n\t\t\t\tif (typeof (afterclose) == 'string') {\n\t\t\t\t\t// TODO: Удалить с сайта указание кода функции в html\n\t\t\t\t\t// @deprecated\n\t\t\t\t\tafterclose = eval(afterclose.replace(/\\W/g, ''));\n\t\t\t\t}\n\n\t\t\t\t$elOpener.one('afterclose.top-menu-popup', afterclose);\n\t\t\t}\n\t\t}\n\n\t\toptions.isFullScreen = Core.state.isMobile;\n\n\t\treturn new Popup(elOpener, options);\n\t}\n\n\tstatic close(elPopup: HTMLElement): void {\n\t\tconst popup = Worker.getPopup(elPopup);\n\t\tif (popup) {\n\t\t\tpopup.close();\n\t\t}\n\t}\n\n\tstatic recalcPosition(elPopup: HTMLElement): void {\n\t\tconst popup = Worker.getPopup(elPopup);\n\t\tif (popup && popup.elPopupBody instanceof HTMLElement) {\n\t\t\tpopup.recalcPosition();\n\n\t\t\t// контроль за состоянием тени скролла\n\t\t\t// вызывать после имзенения высоты скролла popup.elPopupBody\n\t\t\tgenHasScroll(popup.elPopupBody);\n\t\t}\n\t}\n\n\t/**\n\t * Скролл к активному элементу списка\n\t */\n\tstatic scrollToActive(elPopup: HTMLElement): void {\n\t\tconst elItemActive = DOM.querySelectorVisible(elPopup, 'ul.top-popup_content > li > .top-active');\n\t\tif (!elItemActive) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst elUl = elPopup.querySelector('ul.top-popup_content');\n\t\tconst elsLi = DOM.querySelectorAllVisible(elPopup, 'ul.top-popup_content > li');\n\n\t\telPopup.classList.add('top-popup-wrapper-no_animate');\n\t\tsetTimeout(() => elPopup.classList.remove('top-popup-wrapper-no_animate'), 100);\n\n\t\tlet top = 100;\n\t\tfor (const elLi of elsLi) {\n\t\t\tif (elLi.querySelector(':scope > .top-active')) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif (elLi instanceof HTMLElement) top += elLi.offsetHeight;\n\t\t}\n\n\t\tif (elUl instanceof HTMLElement) {\n\t\t\tconst heightWrapper = elUl.offsetHeight;\n\t\t\tif (top > heightWrapper) {\n\t\t\t\telUl.scrollTop = top - heightWrapper;\n\t\t\t} else {\n\t\t\t\telUl.scrollTop = 0;\n\t\t\t}\n\t\t}\n\t}\n\n\tstatic decoratorBeforeOpen(popup: Popup): void {\n\t\tif (this.options.decoratorBeforeOpen) {\n\t\t\tthis.options.decoratorBeforeOpen(popup);\n\t\t}\n\t};\n\n\tstatic decoratorAfterOpen(popup: Popup): void {\n\t\tif (this.options.decoratorAfterOpen) {\n\t\t\tthis.options.decoratorAfterOpen(popup);\n\t\t}\n\t};\n\n\tstatic decoratorIsIgnoreOuterClick(e: MouseEvent): boolean {\n\t\tif (this.options.decoratorIsIgnoreOuterClick) {\n\t\t\treturn this.options.decoratorIsIgnoreOuterClick(e);\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t * Зарегистрировать Vue компонент\n\t *\n\t * Каждый экземляр Popup регистрируется в словаре vueConnectors для последующего доступа из js\n\t */\n\tstatic regVueComponent(id: string, vueConnector: any): void {\n\t\tif (Worker.vueConnectors.get(id)) {\n\t\t\tthrow 'Vue component Popup use duplicated id: ' + id;\n\t\t}\n\n\t\tWorker.vueConnectors.set(id, vueConnector);\n\t}\n\n\t/**\n\t * Снять с регистрации Vue компонент\n\t */\n\tstatic unregVueComponent(id: string): void {\n\t\tWorker.vueConnectors.delete(id);\n\t}\n\n\t/**\n\t * Сгенерировтаь элемент для открытия popup\n\t */\n\tstatic genElPopupOpener(tagName: string, props: OpenerProps, ...elsChildrens: HTMLElement[] | string[]): HTMLElement {\n\t\tconst el = DOM.genEl(tagName, {}, ...elsChildrens);\n\n\t\tel.dataset.topPopup = '#' + props.id;\n\n\t\tfor (let name in props) {\n\t\t\tconst attrName = 'topPopup' + name.charAt(0).toUpperCase() + name.slice(1);\n\n\t\t\tel.dataset[attrName] = props[name];\n\t\t}\n\n\t\treturn el;\n\t}\n\n}\n\nexport default Worker;\n"],"names":["elPopup","elOpener2","options2","popup","top","elLi","elsLi","elUl","heightWrapper","e","id","vueConnector","el","tagName","elsChildrens","name","props"],"mappings":"+MA8BA,MAAA,MAAA,CAAa,OAAA,QAAA,GAKK,OAAA,cAAA,IAAA,IAKc,OAAA,QAAA,CAAA,EAEJ,OAAA,SAAAA,EAAA,qPAqB3B,aAAA,aAAAC,EAAA,CAOC,GAAA,EAAAA,aAAA,aAAA,OAEA,MAAAC,EAAA,CAAA,8DASAD,EAAA,QAAA,YACCC,EAAA,EAAA,SAAAD,EAAA,QAAA,SAAA,GAGDA,EAAA,QAAA,cACCC,EAAA,EAAA,SAAAD,EAAA,QAAA,WAAA,GAMDA,EAAA,QAAA,gBACCC,EAAA,MAAAD,EAAA,QAAA,gBAAA,QAAAA,EAAA,QAAA,gBAAA,KAGDA,EAAA,QAAA,iDAIAA,EAAA,QAAA,iDAIAA,EAAA,QAAA,yDAOAA,EAAA,QAAA,kBACCC,EAAA,QAAAD,EAAA,QAAA,kBAAA,QAAAA,EAAA,QAAA,kBAAA,KAMDA,EAAA,QAAA,sBACCC,EAAA,YAAAD,EAAA,QAAA,sBAAA,QAAAA,EAAA,QAAA,sBAAA,KAMDA,EAAA,QAAA,sBACCC,EAAA,YAAAD,EAAA,QAAA,sBAAA,QAAAA,EAAA,QAAA,sBAAA,4BAIF,aAAA,KAAA,SAAA,QAAA,CAQC,oBAAA,cAAA,SAAA,QAAA,eAAA,wGAIA,GAAA,MAAA,KAAA,EAAA,wCAIC,GAAA,UAAA,KAAA,WAAA,EAAA,2CAEC,OAAA,WAAA,WAGC,UAAA,KAAA,UAAA,QAAA,MAAA,EAAA,CAAA,uDAOF,GAAA,UAAA,KAAA,YAAA,EAAA,6CAEC,OAAA,YAAA,WAGC,WAAA,KAAA,WAAA,QAAA,MAAA,EAAA,CAAA,4IAUJ,OAAA,MAAAD,EAAA,+BAKEG,EAAA,MAAA,EAEF,OAAA,eAAAH,EAAA,sEAKEG,EAAA,eAAA,EAIA,aAAA,aAAAA,EAAA,WAAA,GAEF,OAAA,eAAAH,EAAA,yFAQE,kLAOD,WAAA,IAAAA,EAAA,UAAA,OAAA,8BAAA,EAAA,GAAA,EAEA,IAAAI,EAAA,IACA,UAAAC,KAAAC,EAAA,CACC,GAAAD,EAAA,cAAA,sBAAA,EACC,oDAMF,GAAAE,aAAA,YAAA,CACC,MAAAC,EAAAD,EAAA,aACAH,EAAAI,EACCD,EAAA,UAAAH,EAAAI,EAEAD,EAAA,UAAA,GAGH,OAAA,oBAAAJ,EAAA,CAGC,KAAA,QAAA,yDAGD,OAAA,mBAAAA,EAAA,CAGC,KAAA,QAAA,uDAGD,OAAA,4BAAAM,EAAA,CAGC,OAAA,KAAA,QAAA,2EAKD,OAAA,gBAAAC,EAAAC,EAAA,gCASE,KAAA,0CAAAD,gCAIF,OAAA,kBAAAA,EAAA,kEAaC,MAAAE,EAAA,UAAA,QAAA,MAAAC,EAAA,CAAA,EAAA,GAAAC,CAAA,8BAIA,QAAAC,KAAAC,EAAA,oFASF"}
|
package/popup/worker.js
CHANGED
|
@@ -1,61 +1,31 @@
|
|
|
1
|
-
import { C as Core
|
|
1
|
+
import { C as Core } from "../.chunks/forms-DT_fsN6V.es.js";
|
|
2
2
|
import DOM from "../utils/dom.js";
|
|
3
3
|
import { genHasScroll } from "../utils/scroll.js";
|
|
4
|
-
class
|
|
5
|
-
static init() {
|
|
6
|
-
document.addEventListener("mouseover", (e) => {
|
|
7
|
-
var o;
|
|
8
|
-
!(e.target instanceof HTMLElement) || !((o = e.target.dataset) != null && o.topPopupOpenByHover) || e.target.click();
|
|
9
|
-
}), document.addEventListener("scroll", () => {
|
|
10
|
-
Core.state.isMobile || Core.state.isMobileUA || Worker$1.getAll().forEach((e) => Worker$1.close(e));
|
|
11
|
-
}), Events.addOnReize((e) => {
|
|
12
|
-
Core.state.isMobile && e.topEvent.widthDiff && Worker$1.getAll().forEach((o) => Worker$1.close(o));
|
|
13
|
-
}), document.addEventListener("click", this.onclick);
|
|
14
|
-
}
|
|
4
|
+
class Worker {
|
|
15
5
|
/**
|
|
16
|
-
*
|
|
17
|
-
* обрабатывает клики на открытие Popup
|
|
6
|
+
* Глобальное выключение закрытия меню, используется при различных оверлеях
|
|
18
7
|
*/
|
|
19
|
-
static async onclick(e) {
|
|
20
|
-
var p, a, r, s, n;
|
|
21
|
-
if (!(e.target instanceof HTMLElement)) return;
|
|
22
|
-
let o;
|
|
23
|
-
switch (!0) {
|
|
24
|
-
case !!((p = e.target.dataset) != null && p.topPopup):
|
|
25
|
-
o = e.target;
|
|
26
|
-
break;
|
|
27
|
-
case !!((a = e.target.parentElement) != null && a.dataset.topPopup):
|
|
28
|
-
o = e.target.parentElement;
|
|
29
|
-
break;
|
|
30
|
-
case !!((s = (r = e.target.parentElement) == null ? void 0 : r.parentElement) != null && s.dataset.topPopup):
|
|
31
|
-
o = (n = e.target.parentElement) == null ? void 0 : n.parentElement;
|
|
32
|
-
break;
|
|
33
|
-
}
|
|
34
|
-
o && (o.dataset.topPopupDisabled || o.dataset.topPopupOpened || (e.preventDefault(), await Worker$1.openByOpener(o)));
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
let decoratorBeforeOpen, decoratorAfterOpen, decoratorIsIgnoreOuterClick;
|
|
38
|
-
class Worker {
|
|
39
|
-
// глобальное выключение закрытия меню, используется при различных оверлеях
|
|
40
8
|
static noClose = !1;
|
|
9
|
+
/**
|
|
10
|
+
* Для взаимодействия с vue
|
|
11
|
+
*/
|
|
41
12
|
static vueConnectors = /* @__PURE__ */ new Map();
|
|
13
|
+
static options = {};
|
|
42
14
|
/**
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
* Устанавливает глобальные статические декортаоры для компонента Popup
|
|
46
|
-
*
|
|
47
|
-
* @todo Вынести в настройки плагина corePlugin
|
|
15
|
+
* Вернуть объект компонента popup, привязанный к элементу
|
|
48
16
|
*/
|
|
49
|
-
static onInitApp(t) {
|
|
50
|
-
t && (decoratorBeforeOpen = t.decoratorBeforeOpen, decoratorAfterOpen = t.decoratorAfterOpen, decoratorIsIgnoreOuterClick = t.decoratorIsIgnoreOuterClick);
|
|
51
|
-
}
|
|
52
|
-
// вернуть объект компонента popup, привязанный к элементу
|
|
53
17
|
static getPopup(t) {
|
|
54
|
-
return DOM.storage(t, "
|
|
18
|
+
return DOM.storage(t, "TopPopup");
|
|
55
19
|
}
|
|
20
|
+
/**
|
|
21
|
+
* Вернуть все элементы с Popup
|
|
22
|
+
*/
|
|
56
23
|
static getAll() {
|
|
57
24
|
return DOM.querySelectorAllArray(document, ".top-popup-wrapper");
|
|
58
25
|
}
|
|
26
|
+
/**
|
|
27
|
+
* Вернуть все элементы с открытыми Popup
|
|
28
|
+
*/
|
|
59
29
|
static getAllVisible() {
|
|
60
30
|
return DOM.querySelectorAllVisible(document, ".top-popup-wrapper");
|
|
61
31
|
}
|
|
@@ -65,8 +35,8 @@ class Worker {
|
|
|
65
35
|
*/
|
|
66
36
|
static async openByOpener(t) {
|
|
67
37
|
if (!(t instanceof HTMLElement)) return;
|
|
68
|
-
const
|
|
69
|
-
return
|
|
38
|
+
const o = {};
|
|
39
|
+
return o.popup = t.dataset.topPopup, o.id = t.dataset.topPopupId, t.dataset.topPopupP && (o.p = parseInt(t.dataset.topPopupP)), t.dataset.topPopupPos && (o.p = parseInt(t.dataset.topPopupPos)), t.dataset.topPopupNotch && (o.notch = t.dataset.topPopupNotch === "true" || t.dataset.topPopupNotch === "1"), t.dataset.topPopupClass && (o.class = t.dataset.topPopupClass), t.dataset.topPopupPosBy && (o.posBy = t.dataset.topPopupPosBy), t.dataset.topPopupFront && (o.frontSelector = t.dataset.topPopupFront), t.dataset.topPopupInvertX && (o.invertX = t.dataset.topPopupInvertX === "true" || t.dataset.topPopupInvertX === "1"), t.dataset.topPopupOpenByHover && (o.openByHover = t.dataset.topPopupOpenByHover === "true" || t.dataset.topPopupOpenByHover === "1"), t.dataset.topPopupUseOriginal && (o.useOriginal = t.dataset.topPopupUseOriginal === "true" || t.dataset.topPopupUseOriginal === "1"), await Worker.open(t, o);
|
|
70
40
|
}
|
|
71
41
|
/**
|
|
72
42
|
* Создать и открыть Popup
|
|
@@ -75,7 +45,7 @@ class Worker {
|
|
|
75
45
|
*/
|
|
76
46
|
static async open(elOpener, options) {
|
|
77
47
|
elOpener instanceof HTMLElement && (elOpener.dataset.topPopupOpened = "opened");
|
|
78
|
-
const { default: Popup } = await import("../.chunks/popup-
|
|
48
|
+
const { default: Popup } = await import("../.chunks/popup-C5yk4q8p.es.js");
|
|
79
49
|
if (Core.$) {
|
|
80
50
|
const $elOpener = Core.$(elOpener);
|
|
81
51
|
if ($elOpener.data("aftershow")) {
|
|
@@ -90,52 +60,50 @@ class Worker {
|
|
|
90
60
|
return options.isFullScreen = Core.state.isMobile, new Popup(elOpener, options);
|
|
91
61
|
}
|
|
92
62
|
static close(t) {
|
|
93
|
-
const
|
|
94
|
-
|
|
63
|
+
const o = Worker.getPopup(t);
|
|
64
|
+
o && o.close();
|
|
95
65
|
}
|
|
96
66
|
static recalcPosition(t) {
|
|
97
|
-
const
|
|
98
|
-
|
|
67
|
+
const o = Worker.getPopup(t);
|
|
68
|
+
o && o.elPopupBody instanceof HTMLElement && (o.recalcPosition(), genHasScroll(o.elPopupBody));
|
|
99
69
|
}
|
|
100
|
-
|
|
70
|
+
/**
|
|
71
|
+
* Скролл к активному элементу списка
|
|
72
|
+
*/
|
|
101
73
|
static scrollToActive(t) {
|
|
102
74
|
if (!DOM.querySelectorVisible(t, "ul.top-popup_content > li > .top-active"))
|
|
103
75
|
return;
|
|
104
|
-
const
|
|
76
|
+
const a = t.querySelector("ul.top-popup_content"), r = DOM.querySelectorAllVisible(t, "ul.top-popup_content > li");
|
|
105
77
|
t.classList.add("top-popup-wrapper-no_animate"), setTimeout(() => t.classList.remove("top-popup-wrapper-no_animate"), 100);
|
|
106
|
-
let
|
|
107
|
-
for (const
|
|
108
|
-
if (
|
|
78
|
+
let p = 100;
|
|
79
|
+
for (const e of r) {
|
|
80
|
+
if (e.querySelector(":scope > .top-active"))
|
|
109
81
|
break;
|
|
110
|
-
|
|
82
|
+
e instanceof HTMLElement && (p += e.offsetHeight);
|
|
111
83
|
}
|
|
112
|
-
if (
|
|
113
|
-
const
|
|
114
|
-
|
|
84
|
+
if (a instanceof HTMLElement) {
|
|
85
|
+
const e = a.offsetHeight;
|
|
86
|
+
p > e ? a.scrollTop = p - e : a.scrollTop = 0;
|
|
115
87
|
}
|
|
116
88
|
}
|
|
117
89
|
static decoratorBeforeOpen(t) {
|
|
118
|
-
decoratorBeforeOpen && decoratorBeforeOpen(t);
|
|
90
|
+
this.options.decoratorBeforeOpen && this.options.decoratorBeforeOpen(t);
|
|
119
91
|
}
|
|
120
92
|
static decoratorAfterOpen(t) {
|
|
121
|
-
decoratorAfterOpen && decoratorAfterOpen(t);
|
|
93
|
+
this.options.decoratorAfterOpen && this.options.decoratorAfterOpen(t);
|
|
122
94
|
}
|
|
123
|
-
/**
|
|
124
|
-
* Определитель того, что клик вне Popup нужно игнорировать
|
|
125
|
-
* @returns {boolean} - игнорировать клик, то есть не закрывать Popup
|
|
126
|
-
*/
|
|
127
95
|
static decoratorIsIgnoreOuterClick(t) {
|
|
128
|
-
return decoratorIsIgnoreOuterClick ? decoratorIsIgnoreOuterClick(t) : !1;
|
|
96
|
+
return this.options.decoratorIsIgnoreOuterClick ? this.options.decoratorIsIgnoreOuterClick(t) : !1;
|
|
129
97
|
}
|
|
130
98
|
/**
|
|
131
99
|
* Зарегистрировать Vue компонент
|
|
132
100
|
*
|
|
133
101
|
* Каждый экземляр Popup регистрируется в словаре vueConnectors для последующего доступа из js
|
|
134
102
|
*/
|
|
135
|
-
static regVueComponent(t,
|
|
103
|
+
static regVueComponent(t, o) {
|
|
136
104
|
if (Worker.vueConnectors.get(t))
|
|
137
105
|
throw "Vue component Popup use duplicated id: " + t;
|
|
138
|
-
Worker.vueConnectors.set(t,
|
|
106
|
+
Worker.vueConnectors.set(t, o);
|
|
139
107
|
}
|
|
140
108
|
/**
|
|
141
109
|
* Снять с регистрации Vue компонент
|
|
@@ -143,11 +111,21 @@ class Worker {
|
|
|
143
111
|
static unregVueComponent(t) {
|
|
144
112
|
Worker.vueConnectors.delete(t);
|
|
145
113
|
}
|
|
114
|
+
/**
|
|
115
|
+
* Сгенерировтаь элемент для открытия popup
|
|
116
|
+
*/
|
|
117
|
+
static genElPopupOpener(t, o, ...a) {
|
|
118
|
+
const r = DOM.genEl(t, {}, ...a);
|
|
119
|
+
r.dataset.topPopup = "#" + o.id;
|
|
120
|
+
for (let p in o) {
|
|
121
|
+
const e = "topPopup" + p.charAt(0).toUpperCase() + p.slice(1);
|
|
122
|
+
r.dataset[e] = o[p];
|
|
123
|
+
}
|
|
124
|
+
return r;
|
|
125
|
+
}
|
|
146
126
|
}
|
|
147
|
-
WorkerEvents.init();
|
|
148
|
-
const Worker$1 = Worker;
|
|
149
127
|
export {
|
|
150
|
-
Worker
|
|
151
|
-
Worker
|
|
128
|
+
Worker as TopPopupWorker,
|
|
129
|
+
Worker as default
|
|
152
130
|
};
|
|
153
131
|
//# sourceMappingURL=worker.js.map
|