@topvisor/ui 0.0.18 → 0.0.33

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 (54) hide show
  1. package/.chunks/datepicker-48f2fa8d.es.js +275 -0
  2. package/.chunks/datepicker-48f2fa8d.es.js.map +1 -0
  3. package/.chunks/datepicker-f94ba423.amd.js +234 -0
  4. package/.chunks/datepicker-f94ba423.amd.js.map +1 -0
  5. package/.chunks/forms-6c397f5a.es.js +935 -0
  6. package/.chunks/forms-6c397f5a.es.js.map +1 -0
  7. package/.chunks/forms-cab135c7.amd.js +3 -0
  8. package/.chunks/forms-cab135c7.amd.js.map +1 -0
  9. package/.chunks/{popup-dd9546aa.es.js → popup-04c385e0.es.js} +2 -3
  10. package/.chunks/{popup-dd9546aa.es.js.map → popup-04c385e0.es.js.map} +1 -1
  11. package/.chunks/{popup-b891abb1.amd.js → popup-33f53a1c.amd.js} +2 -2
  12. package/.chunks/{popup-b891abb1.amd.js.map → popup-33f53a1c.amd.js.map} +1 -1
  13. package/core/core.amd.js +1 -1
  14. package/core/core.js +2 -3
  15. package/core/core.js.map +1 -1
  16. package/core.css +1 -1
  17. package/forms/forms.amd.js +1 -1
  18. package/forms/forms.js +9 -7
  19. package/forms.css +1 -1
  20. package/formsExt/formsExt.amd.js +3 -0
  21. package/formsExt/formsExt.amd.js.map +1 -0
  22. package/formsExt/formsExt.js +152 -0
  23. package/formsExt/formsExt.js.map +1 -0
  24. package/{editArea.css → formsExt.css} +1 -1
  25. package/package.json +1 -1
  26. package/popup/popup.amd.js +2 -2
  27. package/popup/popup.js +5 -6
  28. package/popup/popup.js.map +1 -1
  29. package/popup/worker.amd.js +1 -1
  30. package/popup/worker.amd.js.map +1 -1
  31. package/popup/worker.js +2 -3
  32. package/popup/worker.js.map +1 -1
  33. package/tabs/tabs.amd.js +1 -1
  34. package/tabs/tabs.js +1 -1
  35. package/utils/date.amd.js +2 -0
  36. package/utils/date.amd.js.map +1 -0
  37. package/utils/date.js +6 -0
  38. package/utils/date.js.map +1 -0
  39. package/utils/device.amd.js +1 -1
  40. package/utils/device.amd.js.map +1 -1
  41. package/utils/device.js +2 -30
  42. package/utils/device.js.map +1 -1
  43. package/.chunks/core-96a4bfb4.amd.js +0 -2
  44. package/.chunks/core-96a4bfb4.amd.js.map +0 -1
  45. package/.chunks/core-fd9de702.es.js +0 -121
  46. package/.chunks/core-fd9de702.es.js.map +0 -1
  47. package/.chunks/forms-1dc7c6f3.amd.js +0 -3
  48. package/.chunks/forms-1dc7c6f3.amd.js.map +0 -1
  49. package/.chunks/forms-3575c189.es.js +0 -461
  50. package/.chunks/forms-3575c189.es.js.map +0 -1
  51. package/editArea/editArea.amd.js +0 -3
  52. package/editArea/editArea.amd.js.map +0 -1
  53. package/editArea/editArea.js +0 -111
  54. package/editArea/editArea.js.map +0 -1
@@ -0,0 +1,152 @@
1
+ import { defineComponent as B, ref as y, watch as k, toRef as C, computed as I, openBlock as u, createElementBlock as V, normalizeClass as T, toDisplayString as c, createCommentVNode as v, createElementVNode as K, createVNode as b, withKeys as p, withModifiers as f, createBlock as E, withCtx as A, createTextVNode as $, mergeProps as w, renderSlot as M } from "vue";
2
+ import { T as H, B as h, _ as g, I as N } from "../.chunks/forms-6c397f5a.es.js";
3
+ const _ = {
4
+ key: 0,
5
+ class: "top-editArea_title"
6
+ }, S = { class: "top-editArea_footer" }, U = /* @__PURE__ */ B({
7
+ __name: "editArea",
8
+ props: {
9
+ modelValue: {},
10
+ title: {},
11
+ cancelText: { default: "Отмена" },
12
+ submitText: { default: "Отправить" },
13
+ attachToKeyboard: { type: Boolean },
14
+ name: {},
15
+ placeholder: {},
16
+ rows: {},
17
+ minHeight: {},
18
+ expandable: { type: Boolean, default: !0 },
19
+ disabled: { type: Boolean },
20
+ readonly: { type: Boolean },
21
+ isError: { type: Boolean },
22
+ hint: {}
23
+ },
24
+ emits: ["update:modelValue", "cancel"],
25
+ setup(m, { emit: i }) {
26
+ const l = m, t = y(""), o = y(l.modelValue);
27
+ k(C(l, "modelValue"), () => {
28
+ o.value = l.modelValue;
29
+ });
30
+ const d = I(() => o.value !== l.modelValue), r = (e) => {
31
+ i("update:modelValue", e);
32
+ }, n = () => {
33
+ i("cancel"), o.value = l.modelValue;
34
+ };
35
+ return (e, a) => (u(), V("div", {
36
+ class: T({
37
+ "top-editArea": !0,
38
+ "top-editArea-attachedToKeyboard": e.attachToKeyboard
39
+ })
40
+ }, [
41
+ e.title ? (u(), V("div", _, c(e.title), 1)) : v("", !0),
42
+ K("div", {
43
+ class: T({
44
+ "top-editArea_form": !0,
45
+ "top-error": e.isError,
46
+ "top-focus": t.value == "focus"
47
+ })
48
+ }, [
49
+ b(H, {
50
+ modelValue: o.value,
51
+ "onUpdate:modelValue": a[0] || (a[0] = (s) => o.value = s),
52
+ name: e.name,
53
+ placeholder: e.placeholder,
54
+ rows: e.rows,
55
+ minHeight: e.minHeight,
56
+ expandable: e.expandable,
57
+ disabled: e.disabled,
58
+ readonly: e.readonly,
59
+ isError: e.isError,
60
+ hint: e.hint,
61
+ class: "top-editArea_element",
62
+ onFocus: a[1] || (a[1] = (s) => t.value = "focus"),
63
+ onBlur: a[2] || (a[2] = (s) => t.value = ""),
64
+ onKeyup: [
65
+ p(n, ["esc"]),
66
+ a[3] || (a[3] = p(f((s) => r(o.value), ["ctrl"]), ["enter"]))
67
+ ]
68
+ }, null, 8, ["modelValue", "name", "placeholder", "rows", "minHeight", "expandable", "disabled", "readonly", "isError", "hint", "onKeyup"]),
69
+ K("div", S, [
70
+ d.value && (!e.attachToKeyboard || e.modelValue) ? (u(), E(h, {
71
+ key: 0,
72
+ class: "top-editArea_button",
73
+ color: "theme",
74
+ icon: e.attachToKeyboard ? "" : "",
75
+ onClick: n
76
+ }, {
77
+ default: A(() => [
78
+ $(c(e.attachToKeyboard ? "" : e.cancelText), 1)
79
+ ]),
80
+ _: 1
81
+ }, 8, ["icon"])) : v("", !0),
82
+ b(h, {
83
+ class: "top-editArea_button",
84
+ icon: e.attachToKeyboard ? "" : "",
85
+ onClick: a[4] || (a[4] = (s) => r(o.value))
86
+ }, {
87
+ default: A(() => [
88
+ $(c(e.attachToKeyboard ? "" : e.submitText), 1)
89
+ ]),
90
+ _: 1
91
+ }, 8, ["icon"])
92
+ ])
93
+ ], 2)
94
+ ], 2));
95
+ }
96
+ }), z = {
97
+ "top-editArea": "top-editArea",
98
+ "top-editArea_title": "top-editArea_title",
99
+ "top-editArea_form": "top-editArea_form",
100
+ "top-textarea": "top-textarea",
101
+ "top-editArea_element": "top-editArea_element",
102
+ "top-textarea_textarea": "top-textarea_textarea",
103
+ "top-editArea_footer": "top-editArea_footer",
104
+ "top-editArea-attachedToKeyboard": "top-editArea-attachedToKeyboard"
105
+ }, D = {
106
+ $style: z
107
+ }, J = /* @__PURE__ */ g(U, [["__cssModules", D]]), F = { class: "top-editInput" }, P = /* @__PURE__ */ B({
108
+ __name: "editInput",
109
+ props: {
110
+ modelValue: {},
111
+ input: {},
112
+ button: {}
113
+ },
114
+ emits: ["update:modelValue"],
115
+ setup(m, { emit: i }) {
116
+ const l = m, t = y(l.modelValue);
117
+ k(C(l.modelValue), () => {
118
+ t.value = l.modelValue;
119
+ });
120
+ const o = () => {
121
+ i("update:modelValue", t.value);
122
+ };
123
+ return (d, r) => (u(), V("div", F, [
124
+ b(N, w(d.input, {
125
+ onKeydownCapture: r[0] || (r[0] = p(f((n) => t.value = d.modelValue, ["stop"]), ["esc"])),
126
+ onKeydown: p(f(o, ["stop"]), ["enter"]),
127
+ modelValue: t.value,
128
+ "onUpdate:modelValue": r[1] || (r[1] = (n) => t.value = n)
129
+ }), null, 16, ["onKeydown", "modelValue"]),
130
+ t.value !== d.modelValue ? (u(), E(h, w({
131
+ key: 0,
132
+ icon: "",
133
+ styling: "soft"
134
+ }, d.button, { onClick: o }), {
135
+ default: A(() => [
136
+ M(d.$slots, "default")
137
+ ]),
138
+ _: 3
139
+ }, 16)) : v("", !0)
140
+ ]));
141
+ }
142
+ }), R = {
143
+ "top-editInput": "top-editInput",
144
+ "top-input": "top-input"
145
+ }, j = {
146
+ $style: R
147
+ }, L = /* @__PURE__ */ g(P, [["__cssModules", j]]);
148
+ export {
149
+ J as EditArea,
150
+ L as EditInput
151
+ };
152
+ //# sourceMappingURL=formsExt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formsExt.js","sources":["../../src/components/formsExt/editArea/editArea.vue","../../src/components/formsExt/editInput/editInput.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { ref, toRef, watch, computed } from 'vue';\r\nimport Button from '@/components/forms/button/button.vue';\r\nimport type { Props, Emits } from './editArea';\r\nimport Textarea from '@/components/forms/textarea/textarea.vue';\r\n\r\n// TODO: добавить переменную top-forms-fixed-height и использовать ее при добавлении отступов у страницы\r\n\r\nconst props = withDefaults(defineProps<Props>(), {\r\n\tcancelText: 'Отмена',\r\n\tsubmitText: 'Отправить',\r\n\texpandable: true,\r\n});\r\n\r\nconst emit = defineEmits<Emits>();\r\n\r\nconst state = ref('');\r\n\r\n/**\r\n * Локальное значение modelValue, будет проброшено вверх только в случае отправки формы\r\n */\r\nconst localValue = ref(props.modelValue);\r\n\r\nwatch(toRef(props, 'modelValue'), () => {\r\n\tlocalValue.value = props.modelValue;\r\n});\r\n\r\nconst isChanged = computed(() => localValue.value !== props.modelValue);\r\n\r\nconst submit = (value: string) => {\r\n\temit('update:modelValue', value);\r\n};\r\n\r\nconst cancel = () => {\r\n\temit('cancel');\r\n\r\n\t// сброс введенного значения\r\n\tlocalValue.value = props.modelValue;\r\n};\r\n</script>\r\n\r\n<template>\r\n\t<div\r\n\t\t:class=\"{\r\n\t\t\t'top-editArea': true,\r\n\t\t\t'top-editArea-attachedToKeyboard': attachToKeyboard,\r\n\t\t}\"\r\n\t>\r\n\t\t<div\r\n\t\t\tv-if=\"title\"\r\n\t\t\tclass=\"top-editArea_title\"\r\n\t\t>\r\n\t\t\t{{ title }}\r\n\t\t</div>\r\n\r\n\t\t<div\r\n\t\t\t:class=\"{\r\n\t\t\t\t'top-editArea_form': true,\r\n\t\t\t\t'top-error': isError,\r\n\t\t\t\t'top-focus': state == 'focus',\r\n\t\t\t}\"\r\n\t\t>\r\n\t\t\t<Textarea\r\n\t\t\t\tv-model=\"localValue\"\r\n\t\t\t\t:name=\"name\"\r\n\t\t\t\t:placeholder=\"placeholder\"\r\n\t\t\t\t:rows=\"rows\"\r\n\t\t\t\t:minHeight=\"minHeight\"\r\n\t\t\t\t:expandable=\"expandable\"\r\n\t\t\t\t:disabled=\"disabled\"\r\n\t\t\t\t:readonly=\"readonly\"\r\n\t\t\t\t:isError=\"isError\"\r\n\t\t\t\t:hint=\"hint\"\r\n\t\t\t\tclass=\"top-editArea_element\"\r\n\t\t\t\t@focus=\"state = 'focus'\"\r\n\t\t\t\t@blur=\"state = ''\"\r\n\t\t\t\t@keyup.esc=\"cancel\"\r\n\t\t\t\t@keyup.ctrl.enter=\"submit(localValue)\"\r\n\t\t\t/>\r\n\r\n\t\t\t<div class=\"top-editArea_footer\">\r\n\t\t\t\t<Button\r\n\t\t\t\t\tv-if=\"isChanged && (!attachToKeyboard || modelValue)\"\r\n\t\t\t\t\tclass=\"top-editArea_button\"\r\n\t\t\t\t\tcolor=\"theme\"\r\n\t\t\t\t\t:icon=\"attachToKeyboard ? '': ''\"\r\n\t\t\t\t\t@click=\"cancel\"\r\n\t\t\t\t>\r\n\t\t\t\t\t{{ attachToKeyboard ? '' : cancelText }}\r\n\t\t\t\t</Button>\r\n\r\n\t\t\t\t<Button\r\n\t\t\t\t\tclass=\"top-editArea_button\"\r\n\t\t\t\t\t:icon=\"attachToKeyboard ? '': ''\"\r\n\t\t\t\t\t@click=\"submit(localValue)\"\r\n\t\t\t\t>\r\n\t\t\t\t\t{{ attachToKeyboard ? '' : submitText }}\r\n\t\t\t\t</Button>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n</template>\r\n\r\n<style module>\r\n.top-editArea {\r\n\tdisplay: flex;\r\n\tflex-direction: column;\r\n\tgap: 6px;\r\n}\r\n\r\n.top-editArea_title {\r\n\tfont-size: 12px;\r\n}\r\n\r\n.top-editArea_form {\r\n\tbackground: var(--top-forms-background-color);\r\n\toutline-color: var(--color-theme-75);\r\n\toutline-offset: 0;\r\n\tdisplay: flex;\r\n\tflex-direction: column;\r\n}\r\n\r\n.top-editArea_form:hover {\r\n\tbackground: var(--top-forms-background-color-hover);\r\n}\r\n\r\n/* textarea в EditArea */\r\n.top-textarea {\r\n\twidth: 100%;\r\n}\r\n\r\n.top-editArea_element.top-textarea_textarea {\r\n\tborder: none;\r\n\toutline: none;\r\n\tanimation: none;\r\n}\r\n\r\n/* footer */\r\n.top-editArea_footer {\r\n\tpadding: var(--top-forms-padding);\r\n\tdisplay: flex;\r\n\tjustify-content: flex-end;\r\n\tgap: var(--top-forms-padding);\r\n}\r\n\r\n/* attachedToKeyboard */\r\n.top-editArea-attachedToKeyboard {\r\n\tbackground: var(--top-forms-background-color);\r\n\tmargin-bottom: env(keyboard-inset-height, 0);\r\n\tposition: fixed;\r\n\tbottom: 0;\r\n\tright: 0;\r\n\tleft: 0;\r\n\tz-index: 2;\r\n\tgap: 0;\r\n}\r\n\r\n.top-editArea-attachedToKeyboard .top-editArea_form {\r\n\tborder-radius: 0;\r\n\tborder: none;\r\n\tborder-top: 1px solid var(--top-forms-border-color);\r\n}\r\n\r\n.top-editArea-attachedToKeyboard .top-editArea_title {\r\n\tborder-top: 1px solid var(--color-line-2-opacity);\r\n\tpadding: var(--top-forms-padding);\r\n}\r\n\r\n.top-editArea-attachedToKeyboard .top-editArea_footer > [data-top-icon] {\r\n\tborder-radius: 100%;\r\n}\r\n</style>","<script setup lang=\"ts\">\r\nimport { ref, toRef, watch } from 'vue';\r\nimport type { Props, Emits } from './editInput';\r\nimport Input from '@/components/forms/input/input.vue';\r\nimport Button from '@/components/forms/button/button.vue';\r\n\r\nconst props = defineProps<Props>();\r\n\r\nconst intermediateValue = ref(props.modelValue);\r\n\r\nwatch(toRef(props.modelValue), () => {\r\n\tintermediateValue.value = props.modelValue;\r\n});\r\n\r\nconst emit = defineEmits<Emits>();\r\n\r\nconst submit = () => {\r\n\temit('update:modelValue', intermediateValue.value);\r\n};\r\n</script>\r\n\r\n<template>\r\n\t<div class=\"top-editInput\">\r\n\t\t<Input\r\n\t\t\t:=\"input\"\r\n\t\t\t@keydown.esc.capture.stop=\"intermediateValue = modelValue\"\r\n\t\t\t@keydown.enter.stop=\"submit\"\r\n\t\t\tv-model=\"intermediateValue\"\r\n\t\t/>\r\n\r\n\t\t<Button\r\n\t\t\tv-if=\"intermediateValue !== modelValue\"\r\n\t\t\ticon=\"\"\r\n\t\t\tstyling=\"soft\"\r\n\t\t\t:=\"button\"\r\n\t\t\t@click=\"submit\"\r\n\t\t>\r\n\t\t\t<!-- @slot Слот Button -->\r\n\t\t\t<slot></slot>\r\n\t\t</Button>\r\n\t</div>\r\n</template>\r\n\r\n<style module>\r\n.top-editInput {\r\n\twidth: 220px;\r\n\tflex-grow: 1;\r\n\tdisplay: flex;\r\n\talign-items: flex-end;\r\n\tgap: var(--top-gap-1);\r\n}\r\n\r\n.top-editInput .top-input {\r\n\twidth: unset;\r\n\tflex-grow: 1;\r\n}\r\n</style>"],"names":["state","ref","localValue","props","watch","toRef","isChanged","computed","submit","value","emit","cancel","intermediateValue"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;iBAgBMA,IAAQC,EAAI,EAAE,GAKdC,IAAaD,EAAIE,EAAM,UAAU;AAEvC,IAAAC,EAAMC,EAAMF,GAAO,YAAY,GAAG,MAAM;AACvC,MAAAD,EAAW,QAAQC,EAAM;AAAA,IAAA,CACzB;AAED,UAAMG,IAAYC,EAAS,MAAML,EAAW,UAAUC,EAAM,UAAU,GAEhEK,IAAS,CAACC,MAAkB;AACjC,MAAAC,EAAK,qBAAqBD,CAAK;AAAA,IAAA,GAG1BE,IAAS,MAAM;AACpB,MAAAD,EAAK,QAAQ,GAGbR,EAAW,QAAQC,EAAM;AAAA,IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBC7BpBS,IAAoBX,EAAIE,EAAM,UAAU;AAE9C,IAAAC,EAAMC,EAAMF,EAAM,UAAU,GAAG,MAAM;AACpC,MAAAS,EAAkB,QAAQT,EAAM;AAAA,IAAA,CAChC;AAID,UAAMK,IAAS,MAAM;AACf,MAAAE,EAAA,qBAAqBE,EAAkB,KAAK;AAAA,IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- .top-editArea{display:flex;flex-direction:column;gap:6px}.top-editArea_title{font-size:12px}.top-editArea_form{background:var(--top-forms-background-color);outline-color:var(--color-theme-75);outline-offset:0;display:flex;flex-direction:column}.top-editArea_form:hover{background:var(--top-forms-background-color-hover)}.top-textarea{width:100%}.top-editArea_element.top-textarea_textarea{border:none;outline:none;animation:none}.top-editArea_footer{padding:var(--top-forms-padding);display:flex;justify-content:flex-end;gap:var(--top-forms-padding)}.top-editArea-attachedToKeyboard{background:var(--top-forms-background-color);margin-bottom:env(keyboard-inset-height,0);position:fixed;bottom:0;right:0;left:0;z-index:2;gap:0}.top-editArea-attachedToKeyboard .top-editArea_form{border-radius:0;border:none;border-top:1px solid var(--top-forms-border-color)}.top-editArea-attachedToKeyboard .top-editArea_title{border-top:1px solid var(--color-line-2-opacity);padding:var(--top-forms-padding)}.top-editArea-attachedToKeyboard .top-editArea_footer>[data-top-icon]{border-radius:100%}
1
+ .top-editArea{display:flex;flex-direction:column;gap:6px}.top-editArea_title{font-size:12px}.top-editArea_form{background:var(--top-forms-background-color);outline-color:var(--color-theme-75);outline-offset:0;display:flex;flex-direction:column}.top-editArea_form:hover{background:var(--top-forms-background-color-hover)}.top-textarea{width:100%}.top-editArea_element.top-textarea_textarea{border:none;outline:none;animation:none}.top-editArea_footer{padding:var(--top-forms-padding);display:flex;justify-content:flex-end;gap:var(--top-forms-padding)}.top-editArea-attachedToKeyboard{background:var(--top-forms-background-color);margin-bottom:env(keyboard-inset-height,0);position:fixed;bottom:0;right:0;left:0;z-index:2;gap:0}.top-editArea-attachedToKeyboard .top-editArea_form{border-radius:0;border:none;border-top:1px solid var(--top-forms-border-color)}.top-editArea-attachedToKeyboard .top-editArea_title{border-top:1px solid var(--color-line-2-opacity);padding:var(--top-forms-padding)}.top-editArea-attachedToKeyboard .top-editArea_footer>[data-top-icon]{border-radius:100%}.top-editInput{width:220px;flex-grow:1;display:flex;align-items:flex-end;gap:var(--top-gap-1)}.top-editInput .top-input{width:unset;flex-grow:1}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@topvisor/ui",
3
3
  "private": false,
4
- "version": "0.0.18",
4
+ "version": "0.0.33",
5
5
  "type": "module",
6
6
  "description": "Topvisor UI-kit Vue",
7
7
  "author": "Topvisor",
@@ -1,3 +1,3 @@
1
- define(["exports","vue","./worker.amd","../.chunks/core-96a4bfb4.amd","../utils/device.amd","../utils/dom.amd"],function(c,e,i,C,P,$){"use strict"; if(typeof vue === "undefined") var vue = window.Vue;var m=document.createElement("style");m.textContent=`h3[data-top-popup],div[data-top-popup],i[data-top-popup]:not(.btn):not(.g_btn),b[data-top-popup]:not(.btn):not(.g_btn){cursor:pointer;-webkit-user-select:none;user-select:none;font-style:normal;text-decoration:none;display:inline-flex;align-items:center}[data-top-popup][data-top-popup-disabled]{pointer-events:none;cursor:auto!important}i[contenteditable]{cursor:text!important}
2
- `,document.head.appendChild(m);const u=e.defineComponent({__name:"opener",props:{id:{},pos:{default:"3"},notch:{type:Boolean,default:!0},openByHover:{type:Boolean},posBy:{default:"fixed"}},setup(a){const t=a,n=t.id||Math.random()+"";let l;function s(p){setTimeout(()=>{l=p.nextElementSibling,l&&d(l)})}e.onUpdated(()=>{l&&d(l)});function d(p){p.dataset.topPopup="vue-"+n,p.dataset.topPopupId=n,p.dataset.topPopupP=t.pos,p.dataset.topPopupPosBy=t.posBy,p.dataset.topPopupNotch=t.notch?"true":"",p.dataset.topPopupOpenByHover=t.openByHover?"true":""}return(p,r)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("template",{ref:s}),e.renderSlot(p.$slots,"default")],64))}}),g="",y={key:0,class:"top-popup_header"},f={key:1,class:"top-popup_content"},B={key:2,class:"top-popup_content"},k={key:3,class:"top-popup_footer"},_=e.defineComponent({__name:"popup",props:{id:{default:""},class:{},pos:{default:"3"},notch:{type:Boolean,default:!0},openByHover:{type:Boolean},posBy:{default:"fixed"}},emits:["open","close"],setup(a,{emit:t}){const n=a,l=n.id||Math.random()+"",s=e.ref(null),r={onOpen:async o=>{o.elPopupInner.innerText="",s.value=o.elPopupInner,r.opened=!0,r.popup=o,t("open")},onClose:o=>{s.value=null,r.opened=!1,r.popup=null,t("close")},classRef:e.toRef(n,"class"),opened:!1,popup:null};return i.regVueComponent(l,r),e.onUnmounted(()=>{i.unregVueComponent(l)}),(o,b)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[o.$slots.opener?(e.openBlock(),e.createBlock(u,{key:0,id:e.unref(l),pos:o.pos,posBy:o.posBy,notch:o.notch,openByHover:o.openByHover},{default:e.withCtx(()=>[e.renderSlot(o.$slots,"opener")]),_:3},8,["id","pos","posBy","notch","openByHover"])):e.createCommentVNode("",!0),s.value?(e.openBlock(),e.createBlock(e.Teleport,{key:1,to:s.value},[o.$slots.header?(e.openBlock(),e.createElementBlock("div",y,[e.renderSlot(o.$slots,"header")])):e.createCommentVNode("",!0),o.$slots.content?(e.openBlock(),e.createElementBlock("div",f,[e.renderSlot(o.$slots,"content")])):e.createCommentVNode("",!0),o.$slots.contentList?(e.openBlock(),e.createElementBlock("ul",B,[e.renderSlot(o.$slots,"contentList")])):e.createCommentVNode("",!0),o.$slots.footer?(e.openBlock(),e.createElementBlock("div",k,[e.renderSlot(o.$slots,"footer")])):e.createCommentVNode("",!0)],8,["to"])):e.createCommentVNode("",!0)],64))}}),h=e.defineComponent({inheritAttrs:!1,__name:"listItem",props:{type:{default:"simple"},closeByClick:{type:Boolean,default:!0}},setup(a){const t=a;return(n,l)=>(e.openBlock(),e.createElementBlock("li",{class:e.normalizeClass({"top-popup_listDelimiter":n.type==="delimiter","top-popup_listTitle":n.type==="title"})},[t.type==="simple"||t.type==="link"?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.type==="link"?"a":"i"),e.mergeProps({key:0,class:{"top-popup_item":!0,"top-popup_item-a":t.type==="simple",a:!0,"top-popup-noCloser":!n.closeByClick}},n.$attrs),{default:e.withCtx(()=>[e.renderSlot(n.$slots,"default")]),_:3},16,["class"])):e.createCommentVNode("",!0),t.type==="title"||t.type==="control"?e.renderSlot(n.$slots,"default",{key:1}):e.createCommentVNode("",!0)],2))}});c.Popup=_,c.PopupListItem=h,c.PopupOpener=u,Object.defineProperty(c,Symbol.toStringTag,{value:"Module"})});
1
+ define(["exports","vue","./worker.amd","../.chunks/forms-cab135c7.amd","../utils/dom.amd"],function(d,e,i,C,P){"use strict"; if(typeof vue === "undefined") var vue = window.Vue;var m=document.createElement("style");m.textContent=`h3[data-top-popup],div[data-top-popup],i[data-top-popup]:not(.btn):not(.g_btn),b[data-top-popup]:not(.btn):not(.g_btn){cursor:pointer;-webkit-user-select:none;user-select:none;font-style:normal;text-decoration:none;display:inline-flex;align-items:center}[data-top-popup][data-top-popup-disabled]{pointer-events:none;cursor:auto!important}i[contenteditable]{cursor:text!important}
2
+ `,document.head.appendChild(m);const u=e.defineComponent({__name:"opener",props:{id:{},pos:{default:"3"},notch:{type:Boolean,default:!0},openByHover:{type:Boolean},posBy:{default:"fixed"}},setup(a){const t=a,n=t.id||Math.random()+"";let l;function s(p){setTimeout(()=>{l=p.nextElementSibling,l&&c(l)})}e.onUpdated(()=>{l&&c(l)});function c(p){p.dataset.topPopup="vue-"+n,p.dataset.topPopupId=n,p.dataset.topPopupP=t.pos,p.dataset.topPopupPosBy=t.posBy,p.dataset.topPopupNotch=t.notch?"true":"",p.dataset.topPopupOpenByHover=t.openByHover?"true":""}return(p,r)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("template",{ref:s}),e.renderSlot(p.$slots,"default")],64))}}),$="",y={key:0,class:"top-popup_header"},f={key:1,class:"top-popup_content"},B={key:2,class:"top-popup_content"},k={key:3,class:"top-popup_footer"},_=e.defineComponent({__name:"popup",props:{id:{default:""},class:{},pos:{default:"3"},notch:{type:Boolean,default:!0},openByHover:{type:Boolean},posBy:{default:"fixed"}},emits:["open","close"],setup(a,{emit:t}){const n=a,l=n.id||Math.random()+"",s=e.ref(null),r={onOpen:async o=>{o.elPopupInner.innerText="",s.value=o.elPopupInner,r.opened=!0,r.popup=o,t("open")},onClose:o=>{s.value=null,r.opened=!1,r.popup=null,t("close")},classRef:e.toRef(n,"class"),opened:!1,popup:null};return i.regVueComponent(l,r),e.onUnmounted(()=>{i.unregVueComponent(l)}),(o,g)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[o.$slots.opener?(e.openBlock(),e.createBlock(u,{key:0,id:e.unref(l),pos:o.pos,posBy:o.posBy,notch:o.notch,openByHover:o.openByHover},{default:e.withCtx(()=>[e.renderSlot(o.$slots,"opener")]),_:3},8,["id","pos","posBy","notch","openByHover"])):e.createCommentVNode("",!0),s.value?(e.openBlock(),e.createBlock(e.Teleport,{key:1,to:s.value},[o.$slots.header?(e.openBlock(),e.createElementBlock("div",y,[e.renderSlot(o.$slots,"header")])):e.createCommentVNode("",!0),o.$slots.content?(e.openBlock(),e.createElementBlock("div",f,[e.renderSlot(o.$slots,"content")])):e.createCommentVNode("",!0),o.$slots.contentList?(e.openBlock(),e.createElementBlock("ul",B,[e.renderSlot(o.$slots,"contentList")])):e.createCommentVNode("",!0),o.$slots.footer?(e.openBlock(),e.createElementBlock("div",k,[e.renderSlot(o.$slots,"footer")])):e.createCommentVNode("",!0)],8,["to"])):e.createCommentVNode("",!0)],64))}}),h=e.defineComponent({inheritAttrs:!1,__name:"listItem",props:{type:{default:"simple"},closeByClick:{type:Boolean,default:!0}},setup(a){const t=a;return(n,l)=>(e.openBlock(),e.createElementBlock("li",{class:e.normalizeClass({"top-popup_listDelimiter":n.type==="delimiter","top-popup_listTitle":n.type==="title"})},[t.type==="simple"||t.type==="link"?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.type==="link"?"a":"i"),e.mergeProps({key:0,class:{"top-popup_item":!0,"top-popup_item-a":t.type==="simple",a:!0,"top-popup-noCloser":!n.closeByClick}},n.$attrs),{default:e.withCtx(()=>[e.renderSlot(n.$slots,"default")]),_:3},16,["class"])):e.createCommentVNode("",!0),t.type==="title"||t.type==="control"?e.renderSlot(n.$slots,"default",{key:1}):e.createCommentVNode("",!0)],2))}});d.Popup=_,d.PopupListItem=h,d.PopupOpener=u,Object.defineProperty(d,Symbol.toStringTag,{value:"Module"})});
3
3
  //# sourceMappingURL=popup.amd.js.map
package/popup/popup.js CHANGED
@@ -1,7 +1,6 @@
1
1
  import { defineComponent as m, onUpdated as h, openBlock as n, createElementBlock as u, Fragment as B, createElementVNode as v, renderSlot as r, ref as k, toRef as $, onUnmounted as P, createBlock as y, unref as C, withCtx as _, createCommentVNode as l, Teleport as H, normalizeClass as g, resolveDynamicComponent as I, mergeProps as T } from "vue";
2
2
  import f from "./worker.js";
3
- import "../.chunks/core-fd9de702.es.js";
4
- import "../utils/device.js";
3
+ import "../.chunks/forms-6c397f5a.es.js";
5
4
  import "../utils/dom.js";
6
5
  const V = /* @__PURE__ */ m({
7
6
  __name: "opener",
@@ -44,7 +43,7 @@ const E = {
44
43
  }, R = {
45
44
  key: 3,
46
45
  class: "top-popup_footer"
47
- }, z = /* @__PURE__ */ m({
46
+ }, w = /* @__PURE__ */ m({
48
47
  __name: "popup",
49
48
  props: {
50
49
  id: { default: "" },
@@ -102,7 +101,7 @@ const E = {
102
101
  ], 8, ["to"])) : l("", !0)
103
102
  ], 64));
104
103
  }
105
- }), A = /* @__PURE__ */ m({
104
+ }), z = /* @__PURE__ */ m({
106
105
  inheritAttrs: !1,
107
106
  __name: "listItem",
108
107
  props: {
@@ -138,8 +137,8 @@ const E = {
138
137
  }
139
138
  });
140
139
  export {
141
- z as Popup,
142
- A as PopupListItem,
140
+ w as Popup,
141
+ z as PopupListItem,
143
142
  V as PopupOpener
144
143
  };
145
144
  //# sourceMappingURL=popup.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"popup.js","sources":["../../src/components/popup/popup/opener.vue","../../src/components/popup/popup/popup.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { onUpdated, ref } from 'vue';\r\nimport type { OpenerProps } from './popup';\r\n\r\nconst props = withDefaults(defineProps<OpenerProps>(), {\r\n\tpos: '3',\r\n\tnotch: true,\r\n\tposBy: 'fixed',\r\n});\r\n\r\nconst id = props.id || Math.random() + '';\r\n\r\nlet elOpener: Element;\r\n\r\n/**\r\n * Необычная функция для проброски props внтурь элемента слота\r\n *\r\n * @param el - вспомогательрный элемент для доступа к элементам слота\r\n */\r\nfunction render (el: any) {\r\n\tsetTimeout(() => {\r\n\t\telOpener = el.nextElementSibling;\r\n\r\n\t\tif (elOpener) {\r\n\t\t\trenderOpener(elOpener);\r\n\t\t}\r\n\t});\r\n}\r\n\r\nonUpdated(() => {\r\n\tif (elOpener) {\r\n\t\trenderOpener(elOpener);\r\n\t}\r\n});\r\n\r\nfunction renderOpener (elOpener: any) {\r\n\telOpener.dataset.topPopup = 'vue-' + id;\r\n\telOpener.dataset.topPopupId = id;\r\n\telOpener.dataset.topPopupP = props.pos;\r\n\telOpener.dataset.topPopupPosBy = props.posBy;\r\n\telOpener.dataset.topPopupNotch = props.notch ? 'true' : '';\r\n\telOpener.dataset.topPopupOpenByHover = props.openByHover ? 'true' : '';\r\n}\r\n</script>\r\n\r\n<template>\r\n\t<template :ref=\"render\"></template>\r\n\r\n\t<!-- @slot элемент для открытия Popup -->\r\n\t<slot></slot>\r\n</template>\r\n\r\n<style>\r\nh3[data-top-popup],\r\ndiv[data-top-popup],\r\ni[data-top-popup]:not(.btn):not(.g_btn),\r\nb[data-top-popup]:not(.btn):not(.g_btn) {\r\n\tcursor: pointer;\r\n\tuser-select: none;\r\n\tfont-style: normal;\r\n\ttext-decoration: none;\r\n\tdisplay: inline-flex;\r\n\talign-items: center;\r\n}\r\n\r\n[data-top-popup][data-top-popup-disabled] {\r\n\tpointer-events: none;\r\n\tcursor: auto !important;\r\n}\r\n\r\ni[contenteditable] {\r\n\tcursor: text !important;\r\n}\r\n</style>","<script setup lang=\"ts\">\r\nimport { ref, toRef, onUnmounted } from 'vue';\r\nimport type { Props, Emits } from './popup';\r\nimport Opener from './opener.vue';\r\nimport Worker from '@/components/popup/lib/worker';\r\n\r\nconst props = withDefaults(defineProps<Props>(), {\r\n\tid: '',\r\n\tpos: '3',\r\n\tnotch: true,\r\n\tposBy: 'fixed',\r\n});\r\n\r\nconst emit = defineEmits<Emits>();\r\n\r\nconst id = props.id || Math.random() + '';\r\nconst elPopupRef = ref(null);\r\n\r\n// см. lib/popup\r\nconst onOpen = async (popup: any) => {\r\n\tpopup.elPopupInner.innerText = '';\r\n\r\n\telPopupRef.value = popup.elPopupInner;\r\n\r\n\tvueConnector.opened = true;\r\n\tvueConnector.popup = popup;\r\n\r\n\temit('open');\r\n};\r\n\r\n// см. lib/popup\r\nconst onClose = (popup: any) => {\r\n\telPopupRef.value = null;\r\n\r\n\tvueConnector.opened = false;\r\n\tvueConnector.popup = null;\r\n\r\n\temit('close');\r\n};\r\n\r\nconst vueConnector = {\r\n\tonOpen,\r\n\tonClose,\r\n\tclassRef: toRef(props, 'class'),\r\n\topened: false,\r\n\tpopup: null,\r\n};\r\n\r\nWorker.regVueComponent(id, vueConnector);\r\n\r\nonUnmounted(() => {\r\n\tWorker.unregVueComponent(id);\r\n});\r\n</script>\r\n\r\n<template>\r\n\t<Opener\r\n\t\tv-if=\"$slots.opener\"\r\n\t\t:id=\"id\"\r\n\t\t:pos=\"pos\"\r\n\t\t:posBy=\"posBy\"\r\n\t\t:notch=\"notch\"\r\n\t\t:openByHover=\"openByHover\"\r\n\t>\r\n\t\t<!-- @slot элемент для открытия Popup -->\r\n\t\t<slot name=\"opener\"></slot>\r\n\t</Opener>\r\n\r\n\t<!-- Это шаблон для компонента Popup, сам Popup генерируется в js и может находиться где угодно -->\r\n\t<!-- elPopupRef будет установлен только после открытия и будет сброшен сразу после закрытия Popup -->\r\n\t<teleport\r\n\t\tv-if=\"elPopupRef\"\r\n\t\t:to=\"elPopupRef\"\r\n\t>\r\n\t\t<div v-if=\"$slots.header\" class=\"top-popup_header\">\r\n\t\t\t<!-- @slot Шапка -->\r\n\t\t\t<slot name=\"header\"></slot>\r\n\t\t</div>\r\n\r\n\t\t<div v-if=\"$slots.content\" class=\"top-popup_content\">\r\n\t\t\t<!-- @slot Контент в свободной форме -->\r\n\t\t\t<slot name=\"content\"></slot>\r\n\t\t</div>\r\n\r\n\t\t<ul v-if=\"$slots.contentList\" class=\"top-popup_content\">\r\n\t\t\t<!-- @slot Контент в виде списка, для вставки элементов списка испоьзуйте компонент popup/listItem -->\r\n\t\t\t<slot name=\"contentList\"></slot>\r\n\t\t</ul>\r\n\r\n\t\t<div v-if=\"$slots.footer\" class=\"top-popup_footer\">\r\n\t\t\t<!-- @slot Футер -->\r\n\t\t\t<slot name=\"footer\"></slot>\r\n\t\t</div>\r\n\t</teleport>\r\n</template>"],"names":["id","props","elOpener","render","el","renderOpener","onUpdated","elPopupRef","ref","vueConnector","popup","emit","toRef","Worker","onUnmounted"],"mappings":";;;;;;;;;;;;;;;iBAUMA,IAAKC,EAAM,MAAM,KAAK,OAAW,IAAA;AAEnC,QAAAC;AAOJ,aAASC,EAAQC,GAAS;AACzB,iBAAW,MAAM;AAChB,QAAAF,IAAWE,EAAG,oBAEVF,KACHG,EAAaH,CAAQ;AAAA,MACtB,CACA;AAAA,IACF;AAEA,IAAAI,EAAU,MAAM;AACf,MAAIJ,KACHG,EAAaH,CAAQ;AAAA,IACtB,CACA;AAED,aAASG,EAAcH,GAAe;AACrCA,MAAAA,EAAS,QAAQ,WAAW,SAASF,GACrCE,EAAS,QAAQ,aAAaF,GAC9BE,EAAS,QAAQ,YAAYD,EAAM,KACnCC,EAAS,QAAQ,gBAAgBD,EAAM,OACvCC,EAAS,QAAQ,gBAAgBD,EAAM,QAAQ,SAAS,IACxDC,EAAS,QAAQ,sBAAsBD,EAAM,cAAc,SAAS;AAAA,IACrE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBC3BMD,IAAKC,EAAM,MAAM,KAAK,OAAW,IAAA,IACjCM,IAAaC,EAAI,IAAI,GAwBrBC,IAAe;AAAA,MACpB,QAtBc,OAAOC,MAAe;AACpC,QAAAA,EAAM,aAAa,YAAY,IAE/BH,EAAW,QAAQG,EAAM,cAEzBD,EAAa,SAAS,IACtBA,EAAa,QAAQC,GAErBC,EAAK,MAAM;AAAA,MAAA;AAAA,MAeX,SAXe,CAACD,MAAe;AAC/B,QAAAH,EAAW,QAAQ,MAEnBE,EAAa,SAAS,IACtBA,EAAa,QAAQ,MAErBE,EAAK,OAAO;AAAA,MAAA;AAAA,MAMZ,UAAUC,EAAMX,GAAO,OAAO;AAAA,MAC9B,QAAQ;AAAA,MACR,OAAO;AAAA,IAAA;AAGD,WAAAY,EAAA,gBAAgBb,GAAIS,CAAY,GAEvCK,EAAY,MAAM;AACjB,MAAAD,EAAO,kBAAkBb,CAAE;AAAA,IAAA,CAC3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"popup.js","sources":["../../src/components/popup/popup/opener.vue","../../src/components/popup/popup/popup.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { onUpdated, ref } from 'vue';\r\nimport type { OpenerProps } from './popup';\r\n\r\nconst props = withDefaults(defineProps<OpenerProps>(), {\r\n\tpos: '3',\r\n\tnotch: true,\r\n\tposBy: 'fixed',\r\n});\r\n\r\nconst id = props.id || Math.random() + '';\r\n\r\nlet elOpener: Element;\r\n\r\n/**\r\n * Необычная функция для проброски props внтурь элемента слота\r\n *\r\n * @param el - вспомогательрный элемент для доступа к элементам слота\r\n */\r\nfunction render (el: any) {\r\n\tsetTimeout(() => {\r\n\t\telOpener = el.nextElementSibling;\r\n\r\n\t\tif (elOpener) {\r\n\t\t\trenderOpener(elOpener);\r\n\t\t}\r\n\t});\r\n}\r\n\r\nonUpdated(() => {\r\n\tif (elOpener) {\r\n\t\trenderOpener(elOpener);\r\n\t}\r\n});\r\n\r\nfunction renderOpener (elOpener: any) {\r\n\telOpener.dataset.topPopup = 'vue-' + id;\r\n\telOpener.dataset.topPopupId = id;\r\n\telOpener.dataset.topPopupP = props.pos;\r\n\telOpener.dataset.topPopupPosBy = props.posBy;\r\n\telOpener.dataset.topPopupNotch = props.notch ? 'true' : '';\r\n\telOpener.dataset.topPopupOpenByHover = props.openByHover ? 'true' : '';\r\n}\r\n</script>\r\n\r\n<template>\r\n\t<template :ref=\"render\"></template>\r\n\r\n\t<!-- @slot элемент для открытия Popup -->\r\n\t<slot></slot>\r\n</template>\r\n\r\n<style>\r\nh3[data-top-popup],\r\ndiv[data-top-popup],\r\ni[data-top-popup]:not(.btn):not(.g_btn),\r\nb[data-top-popup]:not(.btn):not(.g_btn) {\r\n\tcursor: pointer;\r\n\tuser-select: none;\r\n\tfont-style: normal;\r\n\ttext-decoration: none;\r\n\tdisplay: inline-flex;\r\n\talign-items: center;\r\n}\r\n\r\n[data-top-popup][data-top-popup-disabled] {\r\n\tpointer-events: none;\r\n\tcursor: auto !important;\r\n}\r\n\r\ni[contenteditable] {\r\n\tcursor: text !important;\r\n}\r\n</style>","<script setup lang=\"ts\">\r\nimport { ref, toRef, onUnmounted } from 'vue';\r\nimport type { Props, Emits } from './popup';\r\nimport Opener from './opener.vue';\r\nimport Worker from '@/components/popup/lib/worker';\r\n\r\nconst props = withDefaults(defineProps<Props>(), {\r\n\tid: '',\r\n\tpos: '3',\r\n\tnotch: true,\r\n\tposBy: 'fixed',\r\n});\r\n\r\nconst emit = defineEmits<Emits>();\r\n\r\nconst id = props.id || Math.random() + '';\r\nconst elPopupRef = ref(null);\r\n\r\n// см. lib/popup\r\nconst onOpen = async (popup: any) => {\r\n\tpopup.elPopupInner.innerText = '';\r\n\r\n\telPopupRef.value = popup.elPopupInner;\r\n\r\n\tvueConnector.opened = true;\r\n\tvueConnector.popup = popup;\r\n\r\n\temit('open');\r\n};\r\n\r\n// см. lib/popup\r\nconst onClose = (popup: any) => {\r\n\telPopupRef.value = null;\r\n\r\n\tvueConnector.opened = false;\r\n\tvueConnector.popup = null;\r\n\r\n\temit('close');\r\n};\r\n\r\nconst vueConnector = {\r\n\tonOpen,\r\n\tonClose,\r\n\tclassRef: toRef(props, 'class'),\r\n\topened: false,\r\n\tpopup: null,\r\n};\r\n\r\nWorker.regVueComponent(id, vueConnector);\r\n\r\nonUnmounted(() => {\r\n\tWorker.unregVueComponent(id);\r\n});\r\n</script>\r\n\r\n<template>\r\n\t<Opener\r\n\t\tv-if=\"$slots.opener\"\r\n\t\t:id=\"id\"\r\n\t\t:pos=\"pos\"\r\n\t\t:posBy=\"posBy\"\r\n\t\t:notch=\"notch\"\r\n\t\t:openByHover=\"openByHover\"\r\n\t>\r\n\t\t<!-- @slot элемент для открытия Popup -->\r\n\t\t<slot name=\"opener\"></slot>\r\n\t</Opener>\r\n\r\n\t<!-- Это шаблон для компонента Popup, сам Popup генерируется в js и может находиться где угодно -->\r\n\t<!-- elPopupRef будет установлен только после открытия и будет сброшен сразу после закрытия Popup -->\r\n\t<teleport\r\n\t\tv-if=\"elPopupRef\"\r\n\t\t:to=\"elPopupRef\"\r\n\t>\r\n\t\t<div v-if=\"$slots.header\" class=\"top-popup_header\">\r\n\t\t\t<!-- @slot Шапка -->\r\n\t\t\t<slot name=\"header\"></slot>\r\n\t\t</div>\r\n\r\n\t\t<div v-if=\"$slots.content\" class=\"top-popup_content\">\r\n\t\t\t<!-- @slot Контент в свободной форме -->\r\n\t\t\t<slot name=\"content\"></slot>\r\n\t\t</div>\r\n\r\n\t\t<ul v-if=\"$slots.contentList\" class=\"top-popup_content\">\r\n\t\t\t<!-- @slot Контент в виде списка, для вставки элементов списка испоьзуйте компонент popup/listItem -->\r\n\t\t\t<slot name=\"contentList\"></slot>\r\n\t\t</ul>\r\n\r\n\t\t<div v-if=\"$slots.footer\" class=\"top-popup_footer\">\r\n\t\t\t<!-- @slot Футер -->\r\n\t\t\t<slot name=\"footer\"></slot>\r\n\t\t</div>\r\n\t</teleport>\r\n</template>"],"names":["id","props","elOpener","render","el","renderOpener","onUpdated","elPopupRef","ref","vueConnector","popup","emit","toRef","Worker","onUnmounted"],"mappings":";;;;;;;;;;;;;;iBAUMA,IAAKC,EAAM,MAAM,KAAK,OAAW,IAAA;AAEnC,QAAAC;AAOJ,aAASC,EAAQC,GAAS;AACzB,iBAAW,MAAM;AAChB,QAAAF,IAAWE,EAAG,oBAEVF,KACHG,EAAaH,CAAQ;AAAA,MACtB,CACA;AAAA,IACF;AAEA,IAAAI,EAAU,MAAM;AACf,MAAIJ,KACHG,EAAaH,CAAQ;AAAA,IACtB,CACA;AAED,aAASG,EAAcH,GAAe;AACrCA,MAAAA,EAAS,QAAQ,WAAW,SAASF,GACrCE,EAAS,QAAQ,aAAaF,GAC9BE,EAAS,QAAQ,YAAYD,EAAM,KACnCC,EAAS,QAAQ,gBAAgBD,EAAM,OACvCC,EAAS,QAAQ,gBAAgBD,EAAM,QAAQ,SAAS,IACxDC,EAAS,QAAQ,sBAAsBD,EAAM,cAAc,SAAS;AAAA,IACrE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBC3BMD,IAAKC,EAAM,MAAM,KAAK,OAAW,IAAA,IACjCM,IAAaC,EAAI,IAAI,GAwBrBC,IAAe;AAAA,MACpB,QAtBc,OAAOC,MAAe;AACpC,QAAAA,EAAM,aAAa,YAAY,IAE/BH,EAAW,QAAQG,EAAM,cAEzBD,EAAa,SAAS,IACtBA,EAAa,QAAQC,GAErBC,EAAK,MAAM;AAAA,MAAA;AAAA,MAeX,SAXe,CAACD,MAAe;AAC/B,QAAAH,EAAW,QAAQ,MAEnBE,EAAa,SAAS,IACtBA,EAAa,QAAQ,MAErBE,EAAK,OAAO;AAAA,MAAA;AAAA,MAMZ,UAAUC,EAAMX,GAAO,OAAO;AAAA,MAC9B,QAAQ;AAAA,MACR,OAAO;AAAA,IAAA;AAGD,WAAAY,EAAA,gBAAgBb,GAAIS,CAAY,GAEvCK,EAAY,MAAM;AACjB,MAAAD,EAAO,kBAAkBb,CAAE;AAAA,IAAA,CAC3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,2 +1,2 @@
1
- define(["require","../.chunks/core-96a4bfb4.amd","../utils/dom.amd","vue","../utils/device.amd"],function(require,core_core,utils_dom,vue,utils_device){"use strict"; if(typeof vue === "undefined") var vue = window.Vue;class WorkerEvents{static init(){document.addEventListener("mouseover",t=>{var o;(o=t.target.dataset)!=null&&o.topPopupOpenByHover&&t.target.click()}),document.addEventListener("scroll",()=>{core_core.Core.isMobile||Worker$1.getAll().forEach(t=>Worker$1.close(t))}),core_core.Events.addOnReize(t=>{core_core.Core.state.isMobile&&t.topEvent.widthDiff&&Worker$1.getAll().forEach(o=>Worker$1.close(o))}),document.addEventListener("click",this.onclick)}static async onclick(t){var a,r;let o;switch(!0){case!!((a=t.target.dataset)!=null&&a.topPopup):o=t.target;break;case!!((r=t.target.parentElement)!=null&&r.dataset.topPopup):o=t.target.parentElement;break}o&&(o.dataset.topPopupDisabled||o.dataset.topPopupOpened||(t.preventDefault(),await Worker$1.openByOpener(o)))}}let decoratorBeforeOpen,decoratorAfterOpen,decoratorIsIgnoreOuterClick,i18n={Close:"Close"};class Worker{static noClose=!1;static vueConnectors=new Map;static onInitApp(e){decoratorBeforeOpen=e==null?void 0:e.decoratorBeforeOpen,decoratorAfterOpen=e==null?void 0:e.decoratorAfterOpen,decoratorIsIgnoreOuterClick=e==null?void 0:e.decoratorIsIgnoreOuterClick,i18n=e==null?void 0:e.i18n}static getPopup(e){return utils_dom.storage(e,"Popup")}static getAll(){return utils_dom.querySelectorAllArray(document,".top-popup-wrapper")}static getAllVisible(){return utils_dom.querySelectorAllVisible(document,".top-popup-wrapper")}static async openByOpener(e){const t={};return t.popup=e.dataset.topPopup,e.dataset.topPopupP&&(t.p=parseInt(e.dataset.topPopupP)),e.dataset.topPopupNotch&&(t.notch=e.dataset.topPopupNotch),e.dataset.topPopupClass&&(t.class=e.dataset.topPopupClass),e.dataset.topPopupPosBy&&(t.posBy=e.dataset.topPopupPosBy),e.dataset.topPopupFront&&(t.frontSelector=e.dataset.topPopupFront),e.dataset.topPopupInvertX&&(t.invertX=e.dataset.topPopupInvertX),e.dataset.topPopupOpenByHover&&(t.openByHover=e.dataset.topPopupOpenByHover),e.dataset.topPopupUseOriginal&&(t.useOriginal=e.dataset.topPopupUseOriginal),await Worker.open(e,t)}static async open(elOpener,options){elOpener.dataset.topPopupOpened="opened";const{default:Popup}=await new Promise((e,t)=>require(["../.chunks/popup-b891abb1.amd"],e,t));if(typeof jQuery=="function"){const $elOpener=jQuery(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=core_core.Core.state.isMobile,options.i18n=i18n,await new Popup(elOpener,options)}static close(e){const t=Worker.getPopup(e);t&&t.close()}static recalcPosition(e){const t=Worker.getPopup(e);t&&(t.recalcPosition(),HelperCommon.genHasScroll($(t.elPopupBody)))}static scrollToActive(e){if(!utils_dom.querySelectorVisible(e,"ul.top-popup_content > li > .top-active"))return;const o=e.querySelector("ul.top-popup_content"),a=utils_dom.querySelectorAllVisible(e,"ul.top-popup_content > li");e.classList.add("top-popup-wrapper-no_animate"),setTimeout(()=>e.classList.remove("top-popup-wrapper-no_animate"),100);let r=100;for(const c of a){if(c.querySelector(":scope > .top-active"))break;r+=c.offsetHeight}const p=o.offsetHeight;r>p?o.scrollTop=r-p:o.scrollTop=0}static decoratorBeforeOpen(e){decoratorBeforeOpen&&decoratorBeforeOpen(e)}static decoratorAfterOpen(e){decoratorAfterOpen&&decoratorAfterOpen(e)}static decoratorIsIgnoreOuterClick(e){return decoratorIsIgnoreOuterClick?decoratorIsIgnoreOuterClick(e):!1}static regVueComponent(e,t){if(Worker.vueConnectors.get(e))throw"Vue component Popup use duplicated id: "+e;Worker.vueConnectors.set(e,t)}static unregVueComponent(e){Worker.vueConnectors.delete(e)}}WorkerEvents.init(Worker,core_core.Core);const Worker$1=Worker;return Worker$1});
1
+ define(["require","../.chunks/forms-cab135c7.amd","../utils/dom.amd","vue"],function(require,forms,utils_dom,vue){"use strict"; if(typeof vue === "undefined") var vue = window.Vue;class WorkerEvents{static init(){document.addEventListener("mouseover",t=>{var o;(o=t.target.dataset)!=null&&o.topPopupOpenByHover&&t.target.click()}),document.addEventListener("scroll",()=>{forms.Core.isMobile||Worker$1.getAll().forEach(t=>Worker$1.close(t))}),forms.Events.addOnReize(t=>{forms.Core.state.isMobile&&t.topEvent.widthDiff&&Worker$1.getAll().forEach(o=>Worker$1.close(o))}),document.addEventListener("click",this.onclick)}static async onclick(t){var a,r;let o;switch(!0){case!!((a=t.target.dataset)!=null&&a.topPopup):o=t.target;break;case!!((r=t.target.parentElement)!=null&&r.dataset.topPopup):o=t.target.parentElement;break}o&&(o.dataset.topPopupDisabled||o.dataset.topPopupOpened||(t.preventDefault(),await Worker$1.openByOpener(o)))}}let decoratorBeforeOpen,decoratorAfterOpen,decoratorIsIgnoreOuterClick,i18n={Close:"Close"};class Worker{static noClose=!1;static vueConnectors=new Map;static onInitApp(e){decoratorBeforeOpen=e==null?void 0:e.decoratorBeforeOpen,decoratorAfterOpen=e==null?void 0:e.decoratorAfterOpen,decoratorIsIgnoreOuterClick=e==null?void 0:e.decoratorIsIgnoreOuterClick,i18n=e==null?void 0:e.i18n}static getPopup(e){return utils_dom.storage(e,"Popup")}static getAll(){return utils_dom.querySelectorAllArray(document,".top-popup-wrapper")}static getAllVisible(){return utils_dom.querySelectorAllVisible(document,".top-popup-wrapper")}static async openByOpener(e){const t={};return t.popup=e.dataset.topPopup,e.dataset.topPopupP&&(t.p=parseInt(e.dataset.topPopupP)),e.dataset.topPopupNotch&&(t.notch=e.dataset.topPopupNotch),e.dataset.topPopupClass&&(t.class=e.dataset.topPopupClass),e.dataset.topPopupPosBy&&(t.posBy=e.dataset.topPopupPosBy),e.dataset.topPopupFront&&(t.frontSelector=e.dataset.topPopupFront),e.dataset.topPopupInvertX&&(t.invertX=e.dataset.topPopupInvertX),e.dataset.topPopupOpenByHover&&(t.openByHover=e.dataset.topPopupOpenByHover),e.dataset.topPopupUseOriginal&&(t.useOriginal=e.dataset.topPopupUseOriginal),await Worker.open(e,t)}static async open(elOpener,options){elOpener.dataset.topPopupOpened="opened";const{default:Popup}=await new Promise((e,t)=>require(["../.chunks/popup-33f53a1c.amd"],e,t));if(typeof jQuery=="function"){const $elOpener=jQuery(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,options.i18n=i18n,await new Popup(elOpener,options)}static close(e){const t=Worker.getPopup(e);t&&t.close()}static recalcPosition(e){const t=Worker.getPopup(e);t&&(t.recalcPosition(),HelperCommon.genHasScroll($(t.elPopupBody)))}static scrollToActive(e){if(!utils_dom.querySelectorVisible(e,"ul.top-popup_content > li > .top-active"))return;const o=e.querySelector("ul.top-popup_content"),a=utils_dom.querySelectorAllVisible(e,"ul.top-popup_content > li");e.classList.add("top-popup-wrapper-no_animate"),setTimeout(()=>e.classList.remove("top-popup-wrapper-no_animate"),100);let r=100;for(const s of a){if(s.querySelector(":scope > .top-active"))break;r+=s.offsetHeight}const p=o.offsetHeight;r>p?o.scrollTop=r-p:o.scrollTop=0}static decoratorBeforeOpen(e){decoratorBeforeOpen&&decoratorBeforeOpen(e)}static decoratorAfterOpen(e){decoratorAfterOpen&&decoratorAfterOpen(e)}static decoratorIsIgnoreOuterClick(e){return decoratorIsIgnoreOuterClick?decoratorIsIgnoreOuterClick(e):!1}static regVueComponent(e,t){if(Worker.vueConnectors.get(e))throw"Vue component Popup use duplicated id: "+e;Worker.vueConnectors.set(e,t)}static unregVueComponent(e){Worker.vueConnectors.delete(e)}}WorkerEvents.init(Worker,forms.Core);const Worker$1=Worker;return Worker$1});
2
2
  //# sourceMappingURL=worker.amd.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"worker.amd.js","sources":["../../src/components/popup/lib/worker.globalEvents.js","../../src/components/popup/lib/worker.js"],"sourcesContent":["import Core from '@/core/core/core';\r\nimport Events from '@/core/core/events';\r\nimport Worker from '@/components/popup/lib/worker';\r\n\r\n/**\r\n * Глобальные события, для реализации Popup\r\n */\r\nclass WorkerEvents {\r\n\tstatic init () {\r\n\t\t// автоматическое открытие при наведении мыши, событие глобальное, так как инициализация popup отложена\r\n\t\tdocument.addEventListener('mouseover', (e) => {\r\n\t\t\tif (!e.target.dataset?.topPopupOpenByHover) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\te.target.click();\r\n\t\t});\r\n\r\n\t\t// при скролле страницы убирать закрыть Popup\r\n\t\tdocument.addEventListener('scroll', () => {\r\n\t\t\tif (Core.isMobile) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tWorker.getAll().forEach(elPopup => Worker.close(elPopup));\r\n\t\t});\r\n\r\n\t\tEvents.addOnReize(e => {\r\n\t\t\t// закрыть popup при повороте экрана телефона\r\n\t\t\t// если была отображена ПК версия, она будет закрыта\r\n\t\t\tif (Core.state.isMobile && e.topEvent.widthDiff) {\r\n\t\t\t\tWorker.getAll().forEach(elPopup => Worker.close(elPopup));\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tdocument.addEventListener('click', this.onclick);\r\n\t}\r\n\r\n\t/**\r\n\t * Глобальный обработчик кликов\r\n\t * обрабатывает клики на открытие Popup\r\n\t * @param {Event} e\r\n\t */\r\n\tstatic async onclick (e) {\r\n\t\tlet elOpener;\r\n\r\n\t\tswitch (true) {\r\n\t\t\tcase !!e.target.dataset?.topPopup:\r\n\t\t\t\telOpener = e.target;\r\n\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase !!e.target.parentElement?.dataset.topPopup:\r\n\t\t\t\telOpener = e.target.parentElement;\r\n\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tif (!elOpener) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (elOpener.dataset.topPopupDisabled) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// меню уже открыто\r\n\t\tif (elOpener.dataset.topPopupOpened) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\tawait Worker.openByOpener(elOpener);\r\n\t}\r\n}\r\n\r\nexport default WorkerEvents;\r\n","import Core from '@/core/core/core';\r\nimport DOM from '@/core/utils/dom';\r\nimport GlobalEvents from '@/components/popup/lib/worker.globalEvents';\r\n\r\nlet decoratorBeforeOpen;\r\nlet decoratorAfterOpen;\r\nlet decoratorIsIgnoreOuterClick;\r\nlet i18n = {\r\n\tClose: 'Close',\r\n};\r\n\r\nclass Worker {\r\n\r\n\t// глобальное выключение закрытия меню, используется при различных оверлеях\r\n\tstatic noClose = false;\r\n\r\n\tstatic vueConnectors = new Map();\r\n\r\n\t/**\r\n\t * Вызывается при инициализаци приложения\r\n\t * устанавливает глобальные статические декортаоры для компонента Popup\r\n\t * @param {{\r\n\t * \tdecoratorBeforeOpen: (object) => void\r\n\t * \tdecoratorAfterOpen: (object) => void,\r\n\t * \tdecoratorIsIgnoreOuterClick: (e) => void,\r\n\t * \ti18n: {Close: string}\r\n\t * }} options\r\n\t */\r\n\tstatic onInitApp (options) {\r\n\t\tdecoratorBeforeOpen = options?.decoratorBeforeOpen;\r\n\t\tdecoratorAfterOpen = options?.decoratorAfterOpen;\r\n\t\tdecoratorIsIgnoreOuterClick = options?.decoratorIsIgnoreOuterClick;\r\n\t\ti18n = options?.i18n;\r\n\t}\r\n\r\n\t// вернуть объект компонента popup, привязанный к элементу\r\n\tstatic getPopup (elPopup) {\r\n\t\treturn DOM.storage(elPopup, 'Popup');\r\n\t}\r\n\r\n\tstatic getAll () {\r\n\t\treturn DOM.querySelectorAllArray(document, '.top-popup-wrapper');\r\n\t}\r\n\r\n\tstatic getAllVisible () {\r\n\t\treturn DOM.querySelectorAllVisible(document, '.top-popup-wrapper');\r\n\t}\r\n\r\n\t/**\r\n\t * Открть Popup от указанного elOpener\r\n\t * @param {Element} elOpener - элемент, который должен вызвать открытие Popup\r\n\t */\r\n\tstatic async openByOpener (elOpener) {\r\n\t\tconst options = {};\r\n\r\n\t\toptions.popup = elOpener.dataset.topPopup;\r\n\r\n\t\tif (elOpener.dataset.topPopupP) {\r\n\t\t\toptions.p = parseInt(elOpener.dataset.topPopupP);\r\n\t\t}\r\n\r\n\t\tif (elOpener.dataset.topPopupNotch) {\r\n\t\t\toptions.notch = elOpener.dataset.topPopupNotch;\r\n\t\t}\r\n\r\n\t\tif (elOpener.dataset.topPopupClass) {\r\n\t\t\toptions.class = elOpener.dataset.topPopupClass;\r\n\t\t}\r\n\r\n\t\tif (elOpener.dataset.topPopupPosBy) {\r\n\t\t\toptions.posBy = elOpener.dataset.topPopupPosBy;\r\n\t\t}\r\n\r\n\t\tif (elOpener.dataset.topPopupFront) {\r\n\t\t\toptions.frontSelector = elOpener.dataset.topPopupFront;\r\n\t\t}\r\n\r\n\t\tif (elOpener.dataset.topPopupInvertX) {\r\n\t\t\toptions.invertX = elOpener.dataset.topPopupInvertX;\r\n\t\t}\r\n\r\n\t\tif (elOpener.dataset.topPopupOpenByHover) {\r\n\t\t\toptions.openByHover = elOpener.dataset.topPopupOpenByHover;\r\n\t\t}\r\n\r\n\t\tif (elOpener.dataset.topPopupUseOriginal) {\r\n\t\t\toptions.useOriginal = elOpener.dataset.topPopupUseOriginal;\r\n\t\t}\r\n\r\n\t\treturn await Worker.open(elOpener, options);\r\n\t}\r\n\r\n\t/**\r\n\t * Создать и открыть Popup\r\n\t * @param {Element} elOpener - элемент, вызвавший открытие Popup\r\n\t * @param {object} options - опции Popup\r\n\t */\r\n\tstatic async open (elOpener, options) {\r\n\t\telOpener.dataset.topPopupOpened = 'opened';\r\n\r\n\t\tconst { default: Popup } = await import('./popup');\r\n\r\n\t\tif (typeof (jQuery) === 'function') {\r\n\t\t\tconst $elOpener = jQuery(elOpener);\r\n\r\n\t\t\t// deprecated, используется aftershow.top-menu-popup\r\n\t\t\tif ($elOpener.data('aftershow')) {\r\n\t\t\t\tlet afterShow = $elOpener.data('aftershow');\r\n\t\t\t\tif (typeof (afterShow) == 'string') {\r\n\t\t\t\t\tafterShow = eval(afterShow.replace(/\\W/g, ''));\r\n\t\t\t\t}\r\n\r\n\t\t\t\t$elOpener.one('aftershow.top-menu-popup', afterShow);\r\n\t\t\t}\r\n\r\n\t\t\t// deprecated, используется afterclose.top-menu-popup\r\n\t\t\tif ($elOpener.data('afterclose')) {\r\n\t\t\t\tlet afterclose = $elOpener.data('afterclose');\r\n\t\t\t\tif (typeof (afterclose) == 'string') {\r\n\t\t\t\t\tafterclose = eval(afterclose.replace(/\\W/g, ''));\r\n\t\t\t\t}\r\n\r\n\t\t\t\t$elOpener.one('afterclose.top-menu-popup', afterclose);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\toptions.isFullScreen = Core.state.isMobile;\r\n\t\toptions.i18n = i18n;\r\n\r\n\t\treturn await new Popup(elOpener, options);\r\n\t}\r\n\r\n\tstatic close (elPopup) {\r\n\t\tconst popup = Worker.getPopup(elPopup);\r\n\t\tif (popup) {\r\n\t\t\tpopup.close();\r\n\t\t}\r\n\t}\r\n\r\n\tstatic recalcPosition (elPopup) {\r\n\t\tconst popup = Worker.getPopup(elPopup);\r\n\t\tif (popup) {\r\n\t\t\tpopup.recalcPosition();\r\n\r\n\t\t\t// контроль за состоянием тени скролла\r\n\t\t\t// вызывать после имзенения высоты скролла popup.elPopupBody\r\n\t\t\tHelperCommon.genHasScroll($(popup.elPopupBody));\r\n\t\t}\r\n\t}\r\n\r\n\t// скролл к активному элементу списка\r\n\tstatic scrollToActive (elPopup) {\r\n\t\tconst elItemActive = DOM.querySelectorVisible(elPopup, 'ul.top-popup_content > li > .top-active');\r\n\t\tif (!elItemActive) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst elUl = elPopup.querySelector('ul.top-popup_content');\r\n\t\tconst elsLi = DOM.querySelectorAllVisible(elPopup, 'ul.top-popup_content > li');\r\n\r\n\t\telPopup.classList.add('top-popup-wrapper-no_animate');\r\n\t\tsetTimeout(() => elPopup.classList.remove('top-popup-wrapper-no_animate'), 100);\r\n\r\n\t\tlet top = 100;\r\n\t\tfor (const elLi of elsLi) {\r\n\t\t\tif (elLi.querySelector(':scope > .top-active')) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\ttop += elLi.offsetHeight;\r\n\t\t}\r\n\r\n\t\tconst heightWrapper = elUl.offsetHeight;\r\n\t\tif (top > heightWrapper) {\r\n\t\t\telUl.scrollTop = top - heightWrapper;\r\n\t\t} else {\r\n\t\t\telUl.scrollTop = 0;\r\n\t\t}\r\n\t}\r\n\r\n\tstatic decoratorBeforeOpen (popup) {\r\n\t\tif (decoratorBeforeOpen) {\r\n\t\t\tdecoratorBeforeOpen(popup);\r\n\t\t}\r\n\t};\r\n\r\n\tstatic decoratorAfterOpen (popup) {\r\n\t\tif (decoratorAfterOpen) {\r\n\t\t\tdecoratorAfterOpen(popup);\r\n\t\t}\r\n\t};\r\n\r\n\t/**\r\n\t * Определитель того, что клик вне Popup нужно игнорировать\r\n\t * @returns {boolean} - игнорировать клик, то есть не закрывать Popup\r\n\t */\r\n\tstatic decoratorIsIgnoreOuterClick (e) {\r\n\t\tif (decoratorIsIgnoreOuterClick) {\r\n\t\t\treturn decoratorIsIgnoreOuterClick(e);\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t * Зарегистрировать Vue компонент\r\n\t *\r\n\t * Каждый экземляр Popup регистрируется в словаре vueConnectors для последующего доступа из js\r\n\t * @param {string} id\r\n\t * @param {any} vueConnector\r\n\t */\r\n\tstatic regVueComponent (id, vueConnector) {\r\n\t\tif (Worker.vueConnectors.get(id)) {\r\n\t\t\tthrow 'Vue component Popup use duplicated id: ' + id;\r\n\t\t}\r\n\r\n\t\tWorker.vueConnectors.set(id, vueConnector);\r\n\t}\r\n\r\n\t/**\r\n\t * Снять с регистрации Vue компонент\r\n\t * @param {string} id\r\n\t */\r\n\tstatic unregVueComponent (id) {\r\n\t\tWorker.vueConnectors.delete(id);\r\n\t}\r\n\r\n}\r\n\r\nGlobalEvents.init(Worker, Core);\r\n\r\nexport default Worker;\r\n"],"names":["e","_a","Core","Worker","elPopup","Events","elOpener","_b","options","DOM","resolve","reject","popup","elUl","elsLi","top","elLi","heightWrapper","id","vueConnector","GlobalEvents"],"mappings":"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"}
1
+ {"version":3,"file":"worker.amd.js","sources":["../../src/components/popup/lib/worker.globalEvents.js","../../src/components/popup/lib/worker.js"],"sourcesContent":["import Core from '@/core/core/core';\r\nimport Events from '@/core/core/events';\r\nimport Worker from '@/components/popup/lib/worker';\r\n\r\n/**\r\n * Глобальные события, для реализации Popup\r\n */\r\nclass WorkerEvents {\r\n\tstatic init () {\r\n\t\t// автоматическое открытие при наведении мыши, событие глобальное, так как инициализация popup отложена\r\n\t\tdocument.addEventListener('mouseover', (e) => {\r\n\t\t\tif (!e.target.dataset?.topPopupOpenByHover) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\te.target.click();\r\n\t\t});\r\n\r\n\t\t// при скролле страницы убирать закрыть Popup\r\n\t\tdocument.addEventListener('scroll', () => {\r\n\t\t\tif (Core.isMobile) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tWorker.getAll().forEach(elPopup => Worker.close(elPopup));\r\n\t\t});\r\n\r\n\t\tEvents.addOnReize(e => {\r\n\t\t\t// закрыть popup при повороте экрана телефона\r\n\t\t\t// если была отображена ПК версия, она будет закрыта\r\n\t\t\tif (Core.state.isMobile && e.topEvent.widthDiff) {\r\n\t\t\t\tWorker.getAll().forEach(elPopup => Worker.close(elPopup));\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tdocument.addEventListener('click', this.onclick);\r\n\t}\r\n\r\n\t/**\r\n\t * Глобальный обработчик кликов\r\n\t * обрабатывает клики на открытие Popup\r\n\t * @param {Event} e\r\n\t */\r\n\tstatic async onclick (e) {\r\n\t\tlet elOpener;\r\n\r\n\t\tswitch (true) {\r\n\t\t\tcase !!e.target.dataset?.topPopup:\r\n\t\t\t\telOpener = e.target;\r\n\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase !!e.target.parentElement?.dataset.topPopup:\r\n\t\t\t\telOpener = e.target.parentElement;\r\n\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tif (!elOpener) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (elOpener.dataset.topPopupDisabled) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// меню уже открыто\r\n\t\tif (elOpener.dataset.topPopupOpened) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\tawait Worker.openByOpener(elOpener);\r\n\t}\r\n}\r\n\r\nexport default WorkerEvents;\r\n","import Core from '@/core/core/core';\r\nimport DOM from '@/core/utils/dom';\r\nimport GlobalEvents from '@/components/popup/lib/worker.globalEvents';\r\n\r\nlet decoratorBeforeOpen;\r\nlet decoratorAfterOpen;\r\nlet decoratorIsIgnoreOuterClick;\r\nlet i18n = {\r\n\tClose: 'Close',\r\n};\r\n\r\nclass Worker {\r\n\r\n\t// глобальное выключение закрытия меню, используется при различных оверлеях\r\n\tstatic noClose = false;\r\n\r\n\tstatic vueConnectors = new Map();\r\n\r\n\t/**\r\n\t * Вызывается при инициализаци приложения\r\n\t * устанавливает глобальные статические декортаоры для компонента Popup\r\n\t * @param {{\r\n\t * \tdecoratorBeforeOpen: (object) => void\r\n\t * \tdecoratorAfterOpen: (object) => void,\r\n\t * \tdecoratorIsIgnoreOuterClick: (e) => void,\r\n\t * \ti18n: {Close: string}\r\n\t * }} options\r\n\t */\r\n\tstatic onInitApp (options) {\r\n\t\tdecoratorBeforeOpen = options?.decoratorBeforeOpen;\r\n\t\tdecoratorAfterOpen = options?.decoratorAfterOpen;\r\n\t\tdecoratorIsIgnoreOuterClick = options?.decoratorIsIgnoreOuterClick;\r\n\t\ti18n = options?.i18n;\r\n\t}\r\n\r\n\t// вернуть объект компонента popup, привязанный к элементу\r\n\tstatic getPopup (elPopup) {\r\n\t\treturn DOM.storage(elPopup, 'Popup');\r\n\t}\r\n\r\n\tstatic getAll () {\r\n\t\treturn DOM.querySelectorAllArray(document, '.top-popup-wrapper');\r\n\t}\r\n\r\n\tstatic getAllVisible () {\r\n\t\treturn DOM.querySelectorAllVisible(document, '.top-popup-wrapper');\r\n\t}\r\n\r\n\t/**\r\n\t * Открть Popup от указанного elOpener\r\n\t * @param {Element} elOpener - элемент, который должен вызвать открытие Popup\r\n\t */\r\n\tstatic async openByOpener (elOpener) {\r\n\t\tconst options = {};\r\n\r\n\t\toptions.popup = elOpener.dataset.topPopup;\r\n\r\n\t\tif (elOpener.dataset.topPopupP) {\r\n\t\t\toptions.p = parseInt(elOpener.dataset.topPopupP);\r\n\t\t}\r\n\r\n\t\tif (elOpener.dataset.topPopupNotch) {\r\n\t\t\toptions.notch = elOpener.dataset.topPopupNotch;\r\n\t\t}\r\n\r\n\t\tif (elOpener.dataset.topPopupClass) {\r\n\t\t\toptions.class = elOpener.dataset.topPopupClass;\r\n\t\t}\r\n\r\n\t\tif (elOpener.dataset.topPopupPosBy) {\r\n\t\t\toptions.posBy = elOpener.dataset.topPopupPosBy;\r\n\t\t}\r\n\r\n\t\tif (elOpener.dataset.topPopupFront) {\r\n\t\t\toptions.frontSelector = elOpener.dataset.topPopupFront;\r\n\t\t}\r\n\r\n\t\tif (elOpener.dataset.topPopupInvertX) {\r\n\t\t\toptions.invertX = elOpener.dataset.topPopupInvertX;\r\n\t\t}\r\n\r\n\t\tif (elOpener.dataset.topPopupOpenByHover) {\r\n\t\t\toptions.openByHover = elOpener.dataset.topPopupOpenByHover;\r\n\t\t}\r\n\r\n\t\tif (elOpener.dataset.topPopupUseOriginal) {\r\n\t\t\toptions.useOriginal = elOpener.dataset.topPopupUseOriginal;\r\n\t\t}\r\n\r\n\t\treturn await Worker.open(elOpener, options);\r\n\t}\r\n\r\n\t/**\r\n\t * Создать и открыть Popup\r\n\t * @param {Element} elOpener - элемент, вызвавший открытие Popup\r\n\t * @param {object} options - опции Popup\r\n\t */\r\n\tstatic async open (elOpener, options) {\r\n\t\telOpener.dataset.topPopupOpened = 'opened';\r\n\r\n\t\tconst { default: Popup } = await import('./popup');\r\n\r\n\t\tif (typeof (jQuery) === 'function') {\r\n\t\t\tconst $elOpener = jQuery(elOpener);\r\n\r\n\t\t\t// deprecated, используется aftershow.top-menu-popup\r\n\t\t\tif ($elOpener.data('aftershow')) {\r\n\t\t\t\tlet afterShow = $elOpener.data('aftershow');\r\n\t\t\t\tif (typeof (afterShow) == 'string') {\r\n\t\t\t\t\tafterShow = eval(afterShow.replace(/\\W/g, ''));\r\n\t\t\t\t}\r\n\r\n\t\t\t\t$elOpener.one('aftershow.top-menu-popup', afterShow);\r\n\t\t\t}\r\n\r\n\t\t\t// deprecated, используется afterclose.top-menu-popup\r\n\t\t\tif ($elOpener.data('afterclose')) {\r\n\t\t\t\tlet afterclose = $elOpener.data('afterclose');\r\n\t\t\t\tif (typeof (afterclose) == 'string') {\r\n\t\t\t\t\tafterclose = eval(afterclose.replace(/\\W/g, ''));\r\n\t\t\t\t}\r\n\r\n\t\t\t\t$elOpener.one('afterclose.top-menu-popup', afterclose);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\toptions.isFullScreen = Core.state.isMobile;\r\n\t\toptions.i18n = i18n;\r\n\r\n\t\treturn await new Popup(elOpener, options);\r\n\t}\r\n\r\n\tstatic close (elPopup) {\r\n\t\tconst popup = Worker.getPopup(elPopup);\r\n\t\tif (popup) {\r\n\t\t\tpopup.close();\r\n\t\t}\r\n\t}\r\n\r\n\tstatic recalcPosition (elPopup) {\r\n\t\tconst popup = Worker.getPopup(elPopup);\r\n\t\tif (popup) {\r\n\t\t\tpopup.recalcPosition();\r\n\r\n\t\t\t// контроль за состоянием тени скролла\r\n\t\t\t// вызывать после имзенения высоты скролла popup.elPopupBody\r\n\t\t\tHelperCommon.genHasScroll($(popup.elPopupBody));\r\n\t\t}\r\n\t}\r\n\r\n\t// скролл к активному элементу списка\r\n\tstatic scrollToActive (elPopup) {\r\n\t\tconst elItemActive = DOM.querySelectorVisible(elPopup, 'ul.top-popup_content > li > .top-active');\r\n\t\tif (!elItemActive) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst elUl = elPopup.querySelector('ul.top-popup_content');\r\n\t\tconst elsLi = DOM.querySelectorAllVisible(elPopup, 'ul.top-popup_content > li');\r\n\r\n\t\telPopup.classList.add('top-popup-wrapper-no_animate');\r\n\t\tsetTimeout(() => elPopup.classList.remove('top-popup-wrapper-no_animate'), 100);\r\n\r\n\t\tlet top = 100;\r\n\t\tfor (const elLi of elsLi) {\r\n\t\t\tif (elLi.querySelector(':scope > .top-active')) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\ttop += elLi.offsetHeight;\r\n\t\t}\r\n\r\n\t\tconst heightWrapper = elUl.offsetHeight;\r\n\t\tif (top > heightWrapper) {\r\n\t\t\telUl.scrollTop = top - heightWrapper;\r\n\t\t} else {\r\n\t\t\telUl.scrollTop = 0;\r\n\t\t}\r\n\t}\r\n\r\n\tstatic decoratorBeforeOpen (popup) {\r\n\t\tif (decoratorBeforeOpen) {\r\n\t\t\tdecoratorBeforeOpen(popup);\r\n\t\t}\r\n\t};\r\n\r\n\tstatic decoratorAfterOpen (popup) {\r\n\t\tif (decoratorAfterOpen) {\r\n\t\t\tdecoratorAfterOpen(popup);\r\n\t\t}\r\n\t};\r\n\r\n\t/**\r\n\t * Определитель того, что клик вне Popup нужно игнорировать\r\n\t * @returns {boolean} - игнорировать клик, то есть не закрывать Popup\r\n\t */\r\n\tstatic decoratorIsIgnoreOuterClick (e) {\r\n\t\tif (decoratorIsIgnoreOuterClick) {\r\n\t\t\treturn decoratorIsIgnoreOuterClick(e);\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t * Зарегистрировать Vue компонент\r\n\t *\r\n\t * Каждый экземляр Popup регистрируется в словаре vueConnectors для последующего доступа из js\r\n\t * @param {string} id\r\n\t * @param {any} vueConnector\r\n\t */\r\n\tstatic regVueComponent (id, vueConnector) {\r\n\t\tif (Worker.vueConnectors.get(id)) {\r\n\t\t\tthrow 'Vue component Popup use duplicated id: ' + id;\r\n\t\t}\r\n\r\n\t\tWorker.vueConnectors.set(id, vueConnector);\r\n\t}\r\n\r\n\t/**\r\n\t * Снять с регистрации Vue компонент\r\n\t * @param {string} id\r\n\t */\r\n\tstatic unregVueComponent (id) {\r\n\t\tWorker.vueConnectors.delete(id);\r\n\t}\r\n\r\n}\r\n\r\nGlobalEvents.init(Worker, Core);\r\n\r\nexport default Worker;\r\n"],"names":["e","_a","Core","Worker","elPopup","Events","elOpener","_b","options","DOM","resolve","reject","popup","elUl","elsLi","top","elLi","heightWrapper","id","vueConnector","GlobalEvents"],"mappings":"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"}
package/popup/worker.js CHANGED
@@ -1,7 +1,6 @@
1
- import { C as Core, E as Events } from "../.chunks/core-fd9de702.es.js";
1
+ import { C as Core, E as Events } from "../.chunks/forms-6c397f5a.es.js";
2
2
  import DOM from "../utils/dom.js";
3
3
  import "vue";
4
- import "../utils/device.js";
5
4
  class WorkerEvents {
6
5
  static init() {
7
6
  document.addEventListener("mouseover", (t) => {
@@ -77,7 +76,7 @@ class Worker {
77
76
  */
78
77
  static async open(elOpener, options) {
79
78
  elOpener.dataset.topPopupOpened = "opened";
80
- const { default: Popup } = await import("../.chunks/popup-dd9546aa.es.js");
79
+ const { default: Popup } = await import("../.chunks/popup-04c385e0.es.js");
81
80
  if (typeof jQuery == "function") {
82
81
  const $elOpener = jQuery(elOpener);
83
82
  if ($elOpener.data("aftershow")) {
@@ -1 +1 @@
1
- {"version":3,"file":"worker.js","sources":["../../src/components/popup/lib/worker.globalEvents.js","../../src/components/popup/lib/worker.js"],"sourcesContent":["import Core from '@/core/core/core';\r\nimport Events from '@/core/core/events';\r\nimport Worker from '@/components/popup/lib/worker';\r\n\r\n/**\r\n * Глобальные события, для реализации Popup\r\n */\r\nclass WorkerEvents {\r\n\tstatic init () {\r\n\t\t// автоматическое открытие при наведении мыши, событие глобальное, так как инициализация popup отложена\r\n\t\tdocument.addEventListener('mouseover', (e) => {\r\n\t\t\tif (!e.target.dataset?.topPopupOpenByHover) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\te.target.click();\r\n\t\t});\r\n\r\n\t\t// при скролле страницы убирать закрыть Popup\r\n\t\tdocument.addEventListener('scroll', () => {\r\n\t\t\tif (Core.isMobile) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tWorker.getAll().forEach(elPopup => Worker.close(elPopup));\r\n\t\t});\r\n\r\n\t\tEvents.addOnReize(e => {\r\n\t\t\t// закрыть popup при повороте экрана телефона\r\n\t\t\t// если была отображена ПК версия, она будет закрыта\r\n\t\t\tif (Core.state.isMobile && e.topEvent.widthDiff) {\r\n\t\t\t\tWorker.getAll().forEach(elPopup => Worker.close(elPopup));\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tdocument.addEventListener('click', this.onclick);\r\n\t}\r\n\r\n\t/**\r\n\t * Глобальный обработчик кликов\r\n\t * обрабатывает клики на открытие Popup\r\n\t * @param {Event} e\r\n\t */\r\n\tstatic async onclick (e) {\r\n\t\tlet elOpener;\r\n\r\n\t\tswitch (true) {\r\n\t\t\tcase !!e.target.dataset?.topPopup:\r\n\t\t\t\telOpener = e.target;\r\n\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase !!e.target.parentElement?.dataset.topPopup:\r\n\t\t\t\telOpener = e.target.parentElement;\r\n\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tif (!elOpener) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (elOpener.dataset.topPopupDisabled) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// меню уже открыто\r\n\t\tif (elOpener.dataset.topPopupOpened) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\tawait Worker.openByOpener(elOpener);\r\n\t}\r\n}\r\n\r\nexport default WorkerEvents;\r\n","import Core from '@/core/core/core';\r\nimport DOM from '@/core/utils/dom';\r\nimport GlobalEvents from '@/components/popup/lib/worker.globalEvents';\r\n\r\nlet decoratorBeforeOpen;\r\nlet decoratorAfterOpen;\r\nlet decoratorIsIgnoreOuterClick;\r\nlet i18n = {\r\n\tClose: 'Close',\r\n};\r\n\r\nclass Worker {\r\n\r\n\t// глобальное выключение закрытия меню, используется при различных оверлеях\r\n\tstatic noClose = false;\r\n\r\n\tstatic vueConnectors = new Map();\r\n\r\n\t/**\r\n\t * Вызывается при инициализаци приложения\r\n\t * устанавливает глобальные статические декортаоры для компонента Popup\r\n\t * @param {{\r\n\t * \tdecoratorBeforeOpen: (object) => void\r\n\t * \tdecoratorAfterOpen: (object) => void,\r\n\t * \tdecoratorIsIgnoreOuterClick: (e) => void,\r\n\t * \ti18n: {Close: string}\r\n\t * }} options\r\n\t */\r\n\tstatic onInitApp (options) {\r\n\t\tdecoratorBeforeOpen = options?.decoratorBeforeOpen;\r\n\t\tdecoratorAfterOpen = options?.decoratorAfterOpen;\r\n\t\tdecoratorIsIgnoreOuterClick = options?.decoratorIsIgnoreOuterClick;\r\n\t\ti18n = options?.i18n;\r\n\t}\r\n\r\n\t// вернуть объект компонента popup, привязанный к элементу\r\n\tstatic getPopup (elPopup) {\r\n\t\treturn DOM.storage(elPopup, 'Popup');\r\n\t}\r\n\r\n\tstatic getAll () {\r\n\t\treturn DOM.querySelectorAllArray(document, '.top-popup-wrapper');\r\n\t}\r\n\r\n\tstatic getAllVisible () {\r\n\t\treturn DOM.querySelectorAllVisible(document, '.top-popup-wrapper');\r\n\t}\r\n\r\n\t/**\r\n\t * Открть Popup от указанного elOpener\r\n\t * @param {Element} elOpener - элемент, который должен вызвать открытие Popup\r\n\t */\r\n\tstatic async openByOpener (elOpener) {\r\n\t\tconst options = {};\r\n\r\n\t\toptions.popup = elOpener.dataset.topPopup;\r\n\r\n\t\tif (elOpener.dataset.topPopupP) {\r\n\t\t\toptions.p = parseInt(elOpener.dataset.topPopupP);\r\n\t\t}\r\n\r\n\t\tif (elOpener.dataset.topPopupNotch) {\r\n\t\t\toptions.notch = elOpener.dataset.topPopupNotch;\r\n\t\t}\r\n\r\n\t\tif (elOpener.dataset.topPopupClass) {\r\n\t\t\toptions.class = elOpener.dataset.topPopupClass;\r\n\t\t}\r\n\r\n\t\tif (elOpener.dataset.topPopupPosBy) {\r\n\t\t\toptions.posBy = elOpener.dataset.topPopupPosBy;\r\n\t\t}\r\n\r\n\t\tif (elOpener.dataset.topPopupFront) {\r\n\t\t\toptions.frontSelector = elOpener.dataset.topPopupFront;\r\n\t\t}\r\n\r\n\t\tif (elOpener.dataset.topPopupInvertX) {\r\n\t\t\toptions.invertX = elOpener.dataset.topPopupInvertX;\r\n\t\t}\r\n\r\n\t\tif (elOpener.dataset.topPopupOpenByHover) {\r\n\t\t\toptions.openByHover = elOpener.dataset.topPopupOpenByHover;\r\n\t\t}\r\n\r\n\t\tif (elOpener.dataset.topPopupUseOriginal) {\r\n\t\t\toptions.useOriginal = elOpener.dataset.topPopupUseOriginal;\r\n\t\t}\r\n\r\n\t\treturn await Worker.open(elOpener, options);\r\n\t}\r\n\r\n\t/**\r\n\t * Создать и открыть Popup\r\n\t * @param {Element} elOpener - элемент, вызвавший открытие Popup\r\n\t * @param {object} options - опции Popup\r\n\t */\r\n\tstatic async open (elOpener, options) {\r\n\t\telOpener.dataset.topPopupOpened = 'opened';\r\n\r\n\t\tconst { default: Popup } = await import('./popup');\r\n\r\n\t\tif (typeof (jQuery) === 'function') {\r\n\t\t\tconst $elOpener = jQuery(elOpener);\r\n\r\n\t\t\t// deprecated, используется aftershow.top-menu-popup\r\n\t\t\tif ($elOpener.data('aftershow')) {\r\n\t\t\t\tlet afterShow = $elOpener.data('aftershow');\r\n\t\t\t\tif (typeof (afterShow) == 'string') {\r\n\t\t\t\t\tafterShow = eval(afterShow.replace(/\\W/g, ''));\r\n\t\t\t\t}\r\n\r\n\t\t\t\t$elOpener.one('aftershow.top-menu-popup', afterShow);\r\n\t\t\t}\r\n\r\n\t\t\t// deprecated, используется afterclose.top-menu-popup\r\n\t\t\tif ($elOpener.data('afterclose')) {\r\n\t\t\t\tlet afterclose = $elOpener.data('afterclose');\r\n\t\t\t\tif (typeof (afterclose) == 'string') {\r\n\t\t\t\t\tafterclose = eval(afterclose.replace(/\\W/g, ''));\r\n\t\t\t\t}\r\n\r\n\t\t\t\t$elOpener.one('afterclose.top-menu-popup', afterclose);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\toptions.isFullScreen = Core.state.isMobile;\r\n\t\toptions.i18n = i18n;\r\n\r\n\t\treturn await new Popup(elOpener, options);\r\n\t}\r\n\r\n\tstatic close (elPopup) {\r\n\t\tconst popup = Worker.getPopup(elPopup);\r\n\t\tif (popup) {\r\n\t\t\tpopup.close();\r\n\t\t}\r\n\t}\r\n\r\n\tstatic recalcPosition (elPopup) {\r\n\t\tconst popup = Worker.getPopup(elPopup);\r\n\t\tif (popup) {\r\n\t\t\tpopup.recalcPosition();\r\n\r\n\t\t\t// контроль за состоянием тени скролла\r\n\t\t\t// вызывать после имзенения высоты скролла popup.elPopupBody\r\n\t\t\tHelperCommon.genHasScroll($(popup.elPopupBody));\r\n\t\t}\r\n\t}\r\n\r\n\t// скролл к активному элементу списка\r\n\tstatic scrollToActive (elPopup) {\r\n\t\tconst elItemActive = DOM.querySelectorVisible(elPopup, 'ul.top-popup_content > li > .top-active');\r\n\t\tif (!elItemActive) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst elUl = elPopup.querySelector('ul.top-popup_content');\r\n\t\tconst elsLi = DOM.querySelectorAllVisible(elPopup, 'ul.top-popup_content > li');\r\n\r\n\t\telPopup.classList.add('top-popup-wrapper-no_animate');\r\n\t\tsetTimeout(() => elPopup.classList.remove('top-popup-wrapper-no_animate'), 100);\r\n\r\n\t\tlet top = 100;\r\n\t\tfor (const elLi of elsLi) {\r\n\t\t\tif (elLi.querySelector(':scope > .top-active')) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\ttop += elLi.offsetHeight;\r\n\t\t}\r\n\r\n\t\tconst heightWrapper = elUl.offsetHeight;\r\n\t\tif (top > heightWrapper) {\r\n\t\t\telUl.scrollTop = top - heightWrapper;\r\n\t\t} else {\r\n\t\t\telUl.scrollTop = 0;\r\n\t\t}\r\n\t}\r\n\r\n\tstatic decoratorBeforeOpen (popup) {\r\n\t\tif (decoratorBeforeOpen) {\r\n\t\t\tdecoratorBeforeOpen(popup);\r\n\t\t}\r\n\t};\r\n\r\n\tstatic decoratorAfterOpen (popup) {\r\n\t\tif (decoratorAfterOpen) {\r\n\t\t\tdecoratorAfterOpen(popup);\r\n\t\t}\r\n\t};\r\n\r\n\t/**\r\n\t * Определитель того, что клик вне Popup нужно игнорировать\r\n\t * @returns {boolean} - игнорировать клик, то есть не закрывать Popup\r\n\t */\r\n\tstatic decoratorIsIgnoreOuterClick (e) {\r\n\t\tif (decoratorIsIgnoreOuterClick) {\r\n\t\t\treturn decoratorIsIgnoreOuterClick(e);\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t * Зарегистрировать Vue компонент\r\n\t *\r\n\t * Каждый экземляр Popup регистрируется в словаре vueConnectors для последующего доступа из js\r\n\t * @param {string} id\r\n\t * @param {any} vueConnector\r\n\t */\r\n\tstatic regVueComponent (id, vueConnector) {\r\n\t\tif (Worker.vueConnectors.get(id)) {\r\n\t\t\tthrow 'Vue component Popup use duplicated id: ' + id;\r\n\t\t}\r\n\r\n\t\tWorker.vueConnectors.set(id, vueConnector);\r\n\t}\r\n\r\n\t/**\r\n\t * Снять с регистрации Vue компонент\r\n\t * @param {string} id\r\n\t */\r\n\tstatic unregVueComponent (id) {\r\n\t\tWorker.vueConnectors.delete(id);\r\n\t}\r\n\r\n}\r\n\r\nGlobalEvents.init(Worker, Core);\r\n\r\nexport default Worker;\r\n"],"names":["e","_a","Worker","elPopup","elOpener","_b","options","popup","elUl","elsLi","top","elLi","heightWrapper","id","vueConnector","GlobalEvents"],"mappings":"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"}
1
+ {"version":3,"file":"worker.js","sources":["../../src/components/popup/lib/worker.globalEvents.js","../../src/components/popup/lib/worker.js"],"sourcesContent":["import Core from '@/core/core/core';\r\nimport Events from '@/core/core/events';\r\nimport Worker from '@/components/popup/lib/worker';\r\n\r\n/**\r\n * Глобальные события, для реализации Popup\r\n */\r\nclass WorkerEvents {\r\n\tstatic init () {\r\n\t\t// автоматическое открытие при наведении мыши, событие глобальное, так как инициализация popup отложена\r\n\t\tdocument.addEventListener('mouseover', (e) => {\r\n\t\t\tif (!e.target.dataset?.topPopupOpenByHover) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\te.target.click();\r\n\t\t});\r\n\r\n\t\t// при скролле страницы убирать закрыть Popup\r\n\t\tdocument.addEventListener('scroll', () => {\r\n\t\t\tif (Core.isMobile) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tWorker.getAll().forEach(elPopup => Worker.close(elPopup));\r\n\t\t});\r\n\r\n\t\tEvents.addOnReize(e => {\r\n\t\t\t// закрыть popup при повороте экрана телефона\r\n\t\t\t// если была отображена ПК версия, она будет закрыта\r\n\t\t\tif (Core.state.isMobile && e.topEvent.widthDiff) {\r\n\t\t\t\tWorker.getAll().forEach(elPopup => Worker.close(elPopup));\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tdocument.addEventListener('click', this.onclick);\r\n\t}\r\n\r\n\t/**\r\n\t * Глобальный обработчик кликов\r\n\t * обрабатывает клики на открытие Popup\r\n\t * @param {Event} e\r\n\t */\r\n\tstatic async onclick (e) {\r\n\t\tlet elOpener;\r\n\r\n\t\tswitch (true) {\r\n\t\t\tcase !!e.target.dataset?.topPopup:\r\n\t\t\t\telOpener = e.target;\r\n\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase !!e.target.parentElement?.dataset.topPopup:\r\n\t\t\t\telOpener = e.target.parentElement;\r\n\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tif (!elOpener) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (elOpener.dataset.topPopupDisabled) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// меню уже открыто\r\n\t\tif (elOpener.dataset.topPopupOpened) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\tawait Worker.openByOpener(elOpener);\r\n\t}\r\n}\r\n\r\nexport default WorkerEvents;\r\n","import Core from '@/core/core/core';\r\nimport DOM from '@/core/utils/dom';\r\nimport GlobalEvents from '@/components/popup/lib/worker.globalEvents';\r\n\r\nlet decoratorBeforeOpen;\r\nlet decoratorAfterOpen;\r\nlet decoratorIsIgnoreOuterClick;\r\nlet i18n = {\r\n\tClose: 'Close',\r\n};\r\n\r\nclass Worker {\r\n\r\n\t// глобальное выключение закрытия меню, используется при различных оверлеях\r\n\tstatic noClose = false;\r\n\r\n\tstatic vueConnectors = new Map();\r\n\r\n\t/**\r\n\t * Вызывается при инициализаци приложения\r\n\t * устанавливает глобальные статические декортаоры для компонента Popup\r\n\t * @param {{\r\n\t * \tdecoratorBeforeOpen: (object) => void\r\n\t * \tdecoratorAfterOpen: (object) => void,\r\n\t * \tdecoratorIsIgnoreOuterClick: (e) => void,\r\n\t * \ti18n: {Close: string}\r\n\t * }} options\r\n\t */\r\n\tstatic onInitApp (options) {\r\n\t\tdecoratorBeforeOpen = options?.decoratorBeforeOpen;\r\n\t\tdecoratorAfterOpen = options?.decoratorAfterOpen;\r\n\t\tdecoratorIsIgnoreOuterClick = options?.decoratorIsIgnoreOuterClick;\r\n\t\ti18n = options?.i18n;\r\n\t}\r\n\r\n\t// вернуть объект компонента popup, привязанный к элементу\r\n\tstatic getPopup (elPopup) {\r\n\t\treturn DOM.storage(elPopup, 'Popup');\r\n\t}\r\n\r\n\tstatic getAll () {\r\n\t\treturn DOM.querySelectorAllArray(document, '.top-popup-wrapper');\r\n\t}\r\n\r\n\tstatic getAllVisible () {\r\n\t\treturn DOM.querySelectorAllVisible(document, '.top-popup-wrapper');\r\n\t}\r\n\r\n\t/**\r\n\t * Открть Popup от указанного elOpener\r\n\t * @param {Element} elOpener - элемент, который должен вызвать открытие Popup\r\n\t */\r\n\tstatic async openByOpener (elOpener) {\r\n\t\tconst options = {};\r\n\r\n\t\toptions.popup = elOpener.dataset.topPopup;\r\n\r\n\t\tif (elOpener.dataset.topPopupP) {\r\n\t\t\toptions.p = parseInt(elOpener.dataset.topPopupP);\r\n\t\t}\r\n\r\n\t\tif (elOpener.dataset.topPopupNotch) {\r\n\t\t\toptions.notch = elOpener.dataset.topPopupNotch;\r\n\t\t}\r\n\r\n\t\tif (elOpener.dataset.topPopupClass) {\r\n\t\t\toptions.class = elOpener.dataset.topPopupClass;\r\n\t\t}\r\n\r\n\t\tif (elOpener.dataset.topPopupPosBy) {\r\n\t\t\toptions.posBy = elOpener.dataset.topPopupPosBy;\r\n\t\t}\r\n\r\n\t\tif (elOpener.dataset.topPopupFront) {\r\n\t\t\toptions.frontSelector = elOpener.dataset.topPopupFront;\r\n\t\t}\r\n\r\n\t\tif (elOpener.dataset.topPopupInvertX) {\r\n\t\t\toptions.invertX = elOpener.dataset.topPopupInvertX;\r\n\t\t}\r\n\r\n\t\tif (elOpener.dataset.topPopupOpenByHover) {\r\n\t\t\toptions.openByHover = elOpener.dataset.topPopupOpenByHover;\r\n\t\t}\r\n\r\n\t\tif (elOpener.dataset.topPopupUseOriginal) {\r\n\t\t\toptions.useOriginal = elOpener.dataset.topPopupUseOriginal;\r\n\t\t}\r\n\r\n\t\treturn await Worker.open(elOpener, options);\r\n\t}\r\n\r\n\t/**\r\n\t * Создать и открыть Popup\r\n\t * @param {Element} elOpener - элемент, вызвавший открытие Popup\r\n\t * @param {object} options - опции Popup\r\n\t */\r\n\tstatic async open (elOpener, options) {\r\n\t\telOpener.dataset.topPopupOpened = 'opened';\r\n\r\n\t\tconst { default: Popup } = await import('./popup');\r\n\r\n\t\tif (typeof (jQuery) === 'function') {\r\n\t\t\tconst $elOpener = jQuery(elOpener);\r\n\r\n\t\t\t// deprecated, используется aftershow.top-menu-popup\r\n\t\t\tif ($elOpener.data('aftershow')) {\r\n\t\t\t\tlet afterShow = $elOpener.data('aftershow');\r\n\t\t\t\tif (typeof (afterShow) == 'string') {\r\n\t\t\t\t\tafterShow = eval(afterShow.replace(/\\W/g, ''));\r\n\t\t\t\t}\r\n\r\n\t\t\t\t$elOpener.one('aftershow.top-menu-popup', afterShow);\r\n\t\t\t}\r\n\r\n\t\t\t// deprecated, используется afterclose.top-menu-popup\r\n\t\t\tif ($elOpener.data('afterclose')) {\r\n\t\t\t\tlet afterclose = $elOpener.data('afterclose');\r\n\t\t\t\tif (typeof (afterclose) == 'string') {\r\n\t\t\t\t\tafterclose = eval(afterclose.replace(/\\W/g, ''));\r\n\t\t\t\t}\r\n\r\n\t\t\t\t$elOpener.one('afterclose.top-menu-popup', afterclose);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\toptions.isFullScreen = Core.state.isMobile;\r\n\t\toptions.i18n = i18n;\r\n\r\n\t\treturn await new Popup(elOpener, options);\r\n\t}\r\n\r\n\tstatic close (elPopup) {\r\n\t\tconst popup = Worker.getPopup(elPopup);\r\n\t\tif (popup) {\r\n\t\t\tpopup.close();\r\n\t\t}\r\n\t}\r\n\r\n\tstatic recalcPosition (elPopup) {\r\n\t\tconst popup = Worker.getPopup(elPopup);\r\n\t\tif (popup) {\r\n\t\t\tpopup.recalcPosition();\r\n\r\n\t\t\t// контроль за состоянием тени скролла\r\n\t\t\t// вызывать после имзенения высоты скролла popup.elPopupBody\r\n\t\t\tHelperCommon.genHasScroll($(popup.elPopupBody));\r\n\t\t}\r\n\t}\r\n\r\n\t// скролл к активному элементу списка\r\n\tstatic scrollToActive (elPopup) {\r\n\t\tconst elItemActive = DOM.querySelectorVisible(elPopup, 'ul.top-popup_content > li > .top-active');\r\n\t\tif (!elItemActive) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst elUl = elPopup.querySelector('ul.top-popup_content');\r\n\t\tconst elsLi = DOM.querySelectorAllVisible(elPopup, 'ul.top-popup_content > li');\r\n\r\n\t\telPopup.classList.add('top-popup-wrapper-no_animate');\r\n\t\tsetTimeout(() => elPopup.classList.remove('top-popup-wrapper-no_animate'), 100);\r\n\r\n\t\tlet top = 100;\r\n\t\tfor (const elLi of elsLi) {\r\n\t\t\tif (elLi.querySelector(':scope > .top-active')) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\ttop += elLi.offsetHeight;\r\n\t\t}\r\n\r\n\t\tconst heightWrapper = elUl.offsetHeight;\r\n\t\tif (top > heightWrapper) {\r\n\t\t\telUl.scrollTop = top - heightWrapper;\r\n\t\t} else {\r\n\t\t\telUl.scrollTop = 0;\r\n\t\t}\r\n\t}\r\n\r\n\tstatic decoratorBeforeOpen (popup) {\r\n\t\tif (decoratorBeforeOpen) {\r\n\t\t\tdecoratorBeforeOpen(popup);\r\n\t\t}\r\n\t};\r\n\r\n\tstatic decoratorAfterOpen (popup) {\r\n\t\tif (decoratorAfterOpen) {\r\n\t\t\tdecoratorAfterOpen(popup);\r\n\t\t}\r\n\t};\r\n\r\n\t/**\r\n\t * Определитель того, что клик вне Popup нужно игнорировать\r\n\t * @returns {boolean} - игнорировать клик, то есть не закрывать Popup\r\n\t */\r\n\tstatic decoratorIsIgnoreOuterClick (e) {\r\n\t\tif (decoratorIsIgnoreOuterClick) {\r\n\t\t\treturn decoratorIsIgnoreOuterClick(e);\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t * Зарегистрировать Vue компонент\r\n\t *\r\n\t * Каждый экземляр Popup регистрируется в словаре vueConnectors для последующего доступа из js\r\n\t * @param {string} id\r\n\t * @param {any} vueConnector\r\n\t */\r\n\tstatic regVueComponent (id, vueConnector) {\r\n\t\tif (Worker.vueConnectors.get(id)) {\r\n\t\t\tthrow 'Vue component Popup use duplicated id: ' + id;\r\n\t\t}\r\n\r\n\t\tWorker.vueConnectors.set(id, vueConnector);\r\n\t}\r\n\r\n\t/**\r\n\t * Снять с регистрации Vue компонент\r\n\t * @param {string} id\r\n\t */\r\n\tstatic unregVueComponent (id) {\r\n\t\tWorker.vueConnectors.delete(id);\r\n\t}\r\n\r\n}\r\n\r\nGlobalEvents.init(Worker, Core);\r\n\r\nexport default Worker;\r\n"],"names":["e","_a","Worker","elPopup","elOpener","_b","options","popup","elUl","elsLi","top","elLi","heightWrapper","id","vueConnector","GlobalEvents"],"mappings":"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"}
package/tabs/tabs.amd.js CHANGED
@@ -1,3 +1,3 @@
1
- define(["exports","vue","../.chunks/forms-1dc7c6f3.amd"],function(o,t,a){"use strict"; if(typeof vue === "undefined") var vue = window.Vue;var s=document.createElement("style");s.textContent=`.top-tabs{background:var(--content-background-color);border-radius:8px;border:1px solid var(--color-line-2-opacity);padding:0;display:flex;flex-wrap:wrap;align-items:stretch}.top-tabs_header{padding:6px;margin-left:auto;display:flex;align-items:center;gap:8px;flex-wrap:wrap}.top-tabs_contents{border-top:1px solid var(--color-line-2-opacity);width:100%;margin-top:-1px}.top-tabs_tabInput:checked:nth-child(1)~.top-tabs_contents>.top-tabs_content:nth-child(1),.top-tabs_tabInput:checked:nth-child(3)~.top-tabs_contents>.top-tabs_content:nth-child(2),.top-tabs_tabInput:checked:nth-child(5)~.top-tabs_contents>.top-tabs_content:nth-child(3),.top-tabs_tabInput:checked:nth-child(7)~.top-tabs_contents>.top-tabs_content:nth-child(4),.top-tabs_tabInput:checked:nth-child(9)~.top-tabs_contents>.top-tabs_content:nth-child(5),.top-tabs_tabInput:checked:nth-child(11)~.top-tabs_contents>.top-tabs_content:nth-child(6){display:block}.top-tabs_tabLabel{cursor:pointer;border-bottom:2px solid transparent;padding:14px 20px;position:relative;display:flex;align-items:center}.top-tabs_tabLabel:hover{border-color:var(--color-line-2-opacity)}.top-tabs_tabInput:checked+.top-tabs_tabLabel{border-color:var(--color-primary);color:var(--color-primary)}.top-tabs_tabLabel.top-disabled{color:var(--color-text-3)}.top-tabs_content{padding:14px;overflow:auto;display:none}
1
+ define(["exports","vue","../.chunks/forms-cab135c7.amd"],function(o,t,a){"use strict"; if(typeof vue === "undefined") var vue = window.Vue;var s=document.createElement("style");s.textContent=`.top-tabs{background:var(--content-background-color);border-radius:8px;border:1px solid var(--color-line-2-opacity);padding:0;display:flex;flex-wrap:wrap;align-items:stretch}.top-tabs_header{padding:6px;margin-left:auto;display:flex;align-items:center;gap:8px;flex-wrap:wrap}.top-tabs_contents{border-top:1px solid var(--color-line-2-opacity);width:100%;margin-top:-1px}.top-tabs_tabInput:checked:nth-child(1)~.top-tabs_contents>.top-tabs_content:nth-child(1),.top-tabs_tabInput:checked:nth-child(3)~.top-tabs_contents>.top-tabs_content:nth-child(2),.top-tabs_tabInput:checked:nth-child(5)~.top-tabs_contents>.top-tabs_content:nth-child(3),.top-tabs_tabInput:checked:nth-child(7)~.top-tabs_contents>.top-tabs_content:nth-child(4),.top-tabs_tabInput:checked:nth-child(9)~.top-tabs_contents>.top-tabs_content:nth-child(5),.top-tabs_tabInput:checked:nth-child(11)~.top-tabs_contents>.top-tabs_content:nth-child(6){display:block}.top-tabs_tabLabel{cursor:pointer;border-bottom:2px solid transparent;padding:14px 20px;position:relative;display:flex;align-items:center}.top-tabs_tabLabel:hover{border-color:var(--color-line-2-opacity)}.top-tabs_tabInput:checked+.top-tabs_tabLabel{border-color:var(--color-primary);color:var(--color-primary)}.top-tabs_tabLabel.top-disabled{color:var(--color-text-3)}.top-tabs_content{padding:14px;overflow:auto;display:none}
2
2
  `,document.head.appendChild(s);const c={class:t.normalizeClass({"top-tabs":!0})},p={key:0,class:"top-tabs_header"},d={class:"top-tabs_contents"},r=t.defineComponent({__name:"tabs",props:{id:{}},setup(n){return(e,l)=>(t.openBlock(),t.createElementBlock("div",c,[t.renderSlot(e.$slots,"buttons"),e.$slots.header?(t.openBlock(),t.createElementBlock("div",p,[t.renderSlot(e.$slots,"header")])):t.createCommentVNode("",!0),t.createElementVNode("div",d,[t.renderSlot(e.$slots,"contents")])]))}}),b={$style:{"top-tabs":"top-tabs","top-tabs_header":"top-tabs_header","top-tabs_contents":"top-tabs_contents","top-tabs_tabInput":"top-tabs_tabInput","top-tabs_content":"top-tabs_content"}},i=a._export_sfc(r,[["__cssModules",b]]),_=["id","name","value","checked","disabled"],h=["for"],m=t.defineComponent({__name:"tab",props:{tabsId:{},name:{},title:{},active:{type:Boolean},disabled:{type:Boolean}},setup(n){return(e,l)=>(t.openBlock(),t.createElementBlock(t.Fragment,null,[t.createElementVNode("input",{type:"radio",class:"top-tabs_tabInput top-unvisible",id:e.tabsId+e.name,name:e.tabsId,value:e.name,checked:e.active,disabled:e.disabled},null,8,_),t.createElementVNode("label",{class:t.normalizeClass({"top-tabs_tabLabel":!0,"top-forms-focusable":!0,"top-disabled":e.disabled}),for:e.tabsId+e.name},[t.renderSlot(e.$slots,"default")],10,h)],64))}}),u={$style:{"top-tabs_tabLabel":"top-tabs_tabLabel","top-tabs_tabInput":"top-tabs_tabInput","top-disabled":"top-disabled"}},y=a._export_sfc(m,[["__cssModules",u]]),f=["data-tabs-name"],k=t.defineComponent({__name:"content",props:{name:{}},setup(n){return(e,l)=>(t.openBlock(),t.createElementBlock("div",{class:t.normalizeClass({"top-tabs_content":!0}),"data-tabs-name":e.name},[t.renderSlot(e.$slots,"default")],8,f))}}),$={$style:{"top-tabs_content":"top-tabs_content"}},I=a._export_sfc(k,[["__cssModules",$]]);o.Tabs=i,o.TabsContent=I,o.TabsTab=y,Object.defineProperty(o,Symbol.toStringTag,{value:"Module"})});
3
3
  //# sourceMappingURL=tabs.amd.js.map
package/tabs/tabs.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { defineComponent as n, openBlock as e, createElementBlock as a, renderSlot as s, createCommentVNode as c, createElementVNode as o, normalizeClass as b, Fragment as _ } from "vue";
2
- import { _ as l } from "../.chunks/forms-3575c189.es.js";
2
+ import { _ as l } from "../.chunks/forms-6c397f5a.es.js";
3
3
  const r = {
4
4
  class: /* @__PURE__ */ b({
5
5
  "top-tabs": !0
@@ -0,0 +1,2 @@
1
+ define(["../.chunks/forms-cab135c7.amd","vue"],function(e,t){"use strict"; if(typeof vue === "undefined") var vue = window.Vue;return e.UtilsDate});
2
+ //# sourceMappingURL=date.amd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date.amd.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
package/utils/date.js ADDED
@@ -0,0 +1,6 @@
1
+ import { U as a } from "../.chunks/forms-6c397f5a.es.js";
2
+ import "vue";
3
+ export {
4
+ a as default
5
+ };
6
+ //# sourceMappingURL=date.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
@@ -1,2 +1,2 @@
1
- define(function(){"use strict"; if(typeof vue === "undefined") var vue = window.Vue;class e{static isRetina(){return"devicePixelRatio"in window&&window.devicePixelRatio>1}static isMobile(){return!!navigator.userAgent.match(/Android|BlackBerry|iPhone|iPad|iPod|IEMobile|Opera Mini/i)}static isApp(){return navigator.userAgent.indexOf("Topvisor_App")!=-1}static isMacOS(){return navigator.userAgent.indexOf("Mac OS X")!==-1}static isSafari(){const t=/Chrome|Android/.test(navigator.userAgent);let i=/Safari/.test(navigator.userAgent);return t&&i&&(i=!1),i}static getCommandKeyLabel(){return this.isMacOS()?"⌘":"Ctrl"}}return e});
1
+ define(["../.chunks/forms-cab135c7.amd","vue"],function(e,u){"use strict"; if(typeof vue === "undefined") var vue = window.Vue;return e.Device});
2
2
  //# sourceMappingURL=device.amd.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"device.amd.js","sources":["../../src/core/utils/device.ts"],"sourcesContent":["class Device {\r\n\r\n\tstatic isRetina () {\r\n\t\treturn ('devicePixelRatio' in window && window.devicePixelRatio > 1);\r\n\t}\r\n\r\n\t// определить, является ли устройство мобильным\r\n\tstatic isMobile (): boolean {\r\n\t\treturn !!navigator.userAgent.match(/Android|BlackBerry|iPhone|iPad|iPod|IEMobile|Opera Mini/i);\r\n\t}\r\n\r\n\t// определить, открыт ли сайт в приложении\r\n\tstatic isApp () {\r\n\t\treturn (navigator.userAgent.indexOf('Topvisor_App') != -1);\r\n\t}\r\n\r\n\t// определить, является ли OS пользователя macOS\r\n\tstatic isMacOS () {\r\n\t\treturn navigator.userAgent.indexOf('Mac OS X') !== -1;\r\n\t}\r\n\r\n\t// определить, является ли текущий браузер пользователя Safari\r\n\tstatic isSafari () {\r\n\t\tconst isChrome = /Chrome|Android/.test(navigator.userAgent);\r\n\r\n\t\tlet isSafari = /Safari/.test(navigator.userAgent);\r\n\t\tif (isChrome && isSafari) {\r\n\t\t\tisSafari = false;\r\n\t\t}\r\n\r\n\t\treturn isSafari;\r\n\t};\r\n\r\n\t/**\r\n\t * Вернуть текст для обозначения клавиши Ctrl / Command в зависимости от OS\r\n\t * @returns {'Ctrl'|'⌘'}\r\n\t */\r\n\tstatic getCommandKeyLabel (): 'Ctrl' | '⌘' {\r\n\t\tif (this.isMacOS()) {\r\n\t\t\treturn '⌘';\r\n\t\t} else {\r\n\t\t\treturn 'Ctrl';\r\n\t\t}\r\n\t}\r\n\r\n}\r\n\r\nexport default Device;\r\n"],"names":["Device","isChrome","isSafari"],"mappings":"+BAAA,MAAMA,CAAO,CAEZ,OAAO,UAAY,CACV,MAAA,qBAAsB,QAAU,OAAO,iBAAmB,CACnE,CAGA,OAAO,UAAqB,CAC3B,MAAO,CAAC,CAAC,UAAU,UAAU,MAAM,0DAA0D,CAC9F,CAGA,OAAO,OAAS,CACf,OAAQ,UAAU,UAAU,QAAQ,cAAc,GAAK,EACxD,CAGA,OAAO,SAAW,CACjB,OAAO,UAAU,UAAU,QAAQ,UAAU,IAAM,EACpD,CAGA,OAAO,UAAY,CAClB,MAAMC,EAAW,iBAAiB,KAAK,UAAU,SAAS,EAE1D,IAAIC,EAAW,SAAS,KAAK,UAAU,SAAS,EAChD,OAAID,GAAYC,IACJA,EAAA,IAGLA,CACR,CAMA,OAAO,oBAAoC,CACtC,OAAA,KAAK,UACD,IAEA,MAET,CAED"}
1
+ {"version":3,"file":"device.amd.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
package/utils/device.js CHANGED
@@ -1,33 +1,5 @@
1
- class a {
2
- static isRetina() {
3
- return "devicePixelRatio" in window && window.devicePixelRatio > 1;
4
- }
5
- // определить, является ли устройство мобильным
6
- static isMobile() {
7
- return !!navigator.userAgent.match(/Android|BlackBerry|iPhone|iPad|iPod|IEMobile|Opera Mini/i);
8
- }
9
- // определить, открыт ли сайт в приложении
10
- static isApp() {
11
- return navigator.userAgent.indexOf("Topvisor_App") != -1;
12
- }
13
- // определить, является ли OS пользователя macOS
14
- static isMacOS() {
15
- return navigator.userAgent.indexOf("Mac OS X") !== -1;
16
- }
17
- // определить, является ли текущий браузер пользователя Safari
18
- static isSafari() {
19
- const e = /Chrome|Android/.test(navigator.userAgent);
20
- let i = /Safari/.test(navigator.userAgent);
21
- return e && i && (i = !1), i;
22
- }
23
- /**
24
- * Вернуть текст для обозначения клавиши Ctrl / Command в зависимости от OS
25
- * @returns {'Ctrl'|'⌘'}
26
- */
27
- static getCommandKeyLabel() {
28
- return this.isMacOS() ? "⌘" : "Ctrl";
29
- }
30
- }
1
+ import { D as a } from "../.chunks/forms-6c397f5a.es.js";
2
+ import "vue";
31
3
  export {
32
4
  a as default
33
5
  };
@@ -1 +1 @@
1
- {"version":3,"file":"device.js","sources":["../../src/core/utils/device.ts"],"sourcesContent":["class Device {\r\n\r\n\tstatic isRetina () {\r\n\t\treturn ('devicePixelRatio' in window && window.devicePixelRatio > 1);\r\n\t}\r\n\r\n\t// определить, является ли устройство мобильным\r\n\tstatic isMobile (): boolean {\r\n\t\treturn !!navigator.userAgent.match(/Android|BlackBerry|iPhone|iPad|iPod|IEMobile|Opera Mini/i);\r\n\t}\r\n\r\n\t// определить, открыт ли сайт в приложении\r\n\tstatic isApp () {\r\n\t\treturn (navigator.userAgent.indexOf('Topvisor_App') != -1);\r\n\t}\r\n\r\n\t// определить, является ли OS пользователя macOS\r\n\tstatic isMacOS () {\r\n\t\treturn navigator.userAgent.indexOf('Mac OS X') !== -1;\r\n\t}\r\n\r\n\t// определить, является ли текущий браузер пользователя Safari\r\n\tstatic isSafari () {\r\n\t\tconst isChrome = /Chrome|Android/.test(navigator.userAgent);\r\n\r\n\t\tlet isSafari = /Safari/.test(navigator.userAgent);\r\n\t\tif (isChrome && isSafari) {\r\n\t\t\tisSafari = false;\r\n\t\t}\r\n\r\n\t\treturn isSafari;\r\n\t};\r\n\r\n\t/**\r\n\t * Вернуть текст для обозначения клавиши Ctrl / Command в зависимости от OS\r\n\t * @returns {'Ctrl'|'⌘'}\r\n\t */\r\n\tstatic getCommandKeyLabel (): 'Ctrl' | '⌘' {\r\n\t\tif (this.isMacOS()) {\r\n\t\t\treturn '⌘';\r\n\t\t} else {\r\n\t\t\treturn 'Ctrl';\r\n\t\t}\r\n\t}\r\n\r\n}\r\n\r\nexport default Device;\r\n"],"names":["Device","isChrome","isSafari"],"mappings":"AAAA,MAAMA,EAAO;AAAA,EAEZ,OAAO,WAAY;AACV,WAAA,sBAAsB,UAAU,OAAO,mBAAmB;AAAA,EACnE;AAAA;AAAA,EAGA,OAAO,WAAqB;AAC3B,WAAO,CAAC,CAAC,UAAU,UAAU,MAAM,0DAA0D;AAAA,EAC9F;AAAA;AAAA,EAGA,OAAO,QAAS;AACf,WAAQ,UAAU,UAAU,QAAQ,cAAc,KAAK;AAAA,EACxD;AAAA;AAAA,EAGA,OAAO,UAAW;AACjB,WAAO,UAAU,UAAU,QAAQ,UAAU,MAAM;AAAA,EACpD;AAAA;AAAA,EAGA,OAAO,WAAY;AAClB,UAAMC,IAAW,iBAAiB,KAAK,UAAU,SAAS;AAE1D,QAAIC,IAAW,SAAS,KAAK,UAAU,SAAS;AAChD,WAAID,KAAYC,MACJA,IAAA,KAGLA;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,OAAO,qBAAoC;AACtC,WAAA,KAAK,YACD,MAEA;AAAA,EAET;AAED;"}
1
+ {"version":3,"file":"device.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
@@ -1,2 +0,0 @@
1
- define(["exports","vue","../utils/device.amd"],function(h,m,o){"use strict";let l;const a=new Map,n={width:window.innerWidth,height:window.innerHeight};function r(t){a.set(t,t)}function M(t){a.delete(t)}function f(t){clearTimeout(l),l=setTimeout(function(){t.topEvent={widthDiff:n.width-window.innerWidth,hightDiff:n.height-window.innerHeight},n.width=window.innerWidth,n.height=window.innerHeight,a.forEach(e=>e(t))},100)}window.addEventListener("resize",f);const p={addOnReize:r,removeOnResize:M},b={widthForMobile:900},z={isMobile:!1,isMobileUA:!1,isRetina:!1,isApp:!1,isLandscape:!0,isPortrait:!1,size:0},d=window;class i{static page=(d==null?void 0:d.page)||{};static options=b;static state=m.reactive({...z});static matchMediaIsMobile;static appendStyle(e,s){let w="all";s==="m"&&(w="(max-width: "+this.options.widthForMobile+"px)"),s==="pc"&&(w="(min-width: "+this.options.widthForMobile+"px)");const c=document.createElement("style");c.innerHTML=e,c.media=w,document.head.append(c)}static install(e,s){i.defineOptions(s),e.provide("top-core",i)}static defineOptions(e){e.widthForMobile&&(this.options.widthForMobile=e.widthForMobile),i.setState()}static setState(){i.matchMediaIsMobile=window.matchMedia(`(max-width: ${i.options.widthForMobile}px)`),i.state.isMobileUA=o.isMobile(),i.state.isRetina=o.isRetina(),i.state.isApp=o.isApp(),i.setStateByWindowSize(),p.addOnReize(i.onResize),i.onResize(),i.saveToCookie()}static onResize(){i.setStateByWindowSize(),document.documentElement.style.setProperty("--100vh",window.innerHeight+"px")}static setStateByWindowSize(){var e;i.state.isMobile=!!((e=i.matchMediaIsMobile)!=null&&e.matches),i.state.isLandscape=window.innerWidth>window.innerHeight,i.state.isPortrait=!i.state.isLandscape,i.state.size=window.innerWidth>window.innerHeight?window.innerWidth:window.innerHeight,i.saveToCookie()}static saveToCookie(){const e=[1,window.innerWidth,window.innerHeight,window.devicePixelRatio,Number(i.state.isMobile),Number(i.state.isRetina)];document.cookie="device="+e.join(",")+"; path=/;"}}h.Core=i,h.Events=p});
2
- //# sourceMappingURL=core-96a4bfb4.amd.js.map