@topvisor/ui 0.9.23 → 0.9.24-0

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 (104) hide show
  1. package/.chunks/datepicker-CQs26CC6.amd.js +247 -0
  2. package/.chunks/datepicker-CQs26CC6.amd.js.map +1 -0
  3. package/.chunks/datepicker-HwhZ99xe.es.js +290 -0
  4. package/.chunks/datepicker-HwhZ99xe.es.js.map +1 -0
  5. package/.chunks/forms-BBbBD32l.amd.js +3 -0
  6. package/.chunks/forms-BBbBD32l.amd.js.map +1 -0
  7. package/.chunks/{forms-U97cW1zp.es.js → forms-CMU4ajdz.es.js} +39 -39
  8. package/.chunks/forms-CMU4ajdz.es.js.map +1 -0
  9. package/.chunks/{listItem.vue_vue_type_script_setup_true_lang-C_o5sC8m.es.js → listItem.vue_vue_type_script_setup_true_lang-BPa6m9N6.es.js} +2 -2
  10. package/.chunks/listItem.vue_vue_type_script_setup_true_lang-BPa6m9N6.es.js.map +1 -0
  11. package/.chunks/{listItem.vue_vue_type_script_setup_true_lang-C67aHWhi.amd.js → listItem.vue_vue_type_script_setup_true_lang-CXLZpO9U.amd.js} +2 -2
  12. package/.chunks/listItem.vue_vue_type_script_setup_true_lang-CXLZpO9U.amd.js.map +1 -0
  13. package/.chunks/popup-CAjyI5nT.es.js +796 -0
  14. package/.chunks/popup-CAjyI5nT.es.js.map +1 -0
  15. package/.chunks/popup-DgxCokgg.amd.js +389 -0
  16. package/.chunks/popup-DgxCokgg.amd.js.map +1 -0
  17. package/.chunks/store-Bl79G7T_.amd.js.map +1 -1
  18. package/.chunks/store-PoMCiuBr.es.js.map +1 -1
  19. package/.chunks/{widgetInput-DmpYL1aA.es.js → widgetInput-Dglsn0CF.es.js} +2 -2
  20. package/.chunks/widgetInput-Dglsn0CF.es.js.map +1 -0
  21. package/.chunks/{widgetInput-DgylW6NK.amd.js → widgetInput-Dm3FgvaC.amd.js} +2 -2
  22. package/.chunks/widgetInput-Dm3FgvaC.amd.js.map +1 -0
  23. package/README.md +86 -86
  24. package/assets/core.css +1 -1
  25. package/assets/dark.css +1 -1
  26. package/assets/forms.css +1 -1
  27. package/assets/formsExt.css +1 -1
  28. package/assets/light.css +1 -1
  29. package/assets/tabs.css +1 -1
  30. package/assets/tabsView.css +1 -1
  31. package/assets/widgetInput.css +1 -1
  32. package/core/core.amd.js +1 -1
  33. package/core/core.js +1 -1
  34. package/forms/forms.amd.js +1 -1
  35. package/forms/forms.js +1 -1
  36. package/forms/helpers.amd.js.map +1 -1
  37. package/forms/helpers.js.map +1 -1
  38. package/formsExt/formsExt.amd.js +1 -1
  39. package/formsExt/formsExt.amd.js.map +1 -1
  40. package/formsExt/formsExt.js +5 -4
  41. package/formsExt/formsExt.js.map +1 -1
  42. package/icomoon/Read Me.txt +7 -7
  43. package/icomoon/demo-files/demo.css +161 -161
  44. package/icomoon/demo-files/demo.js +30 -30
  45. package/icomoon/demo.html +3225 -3225
  46. package/icomoon/fonts/Topvisor-2.svg +252 -252
  47. package/icomoon/style.css +707 -707
  48. package/package.json +20 -20
  49. package/popup/popup.amd.js +1 -1
  50. package/popup/popup.js +2 -2
  51. package/popup/worker.amd.js +1 -1
  52. package/popup/worker.amd.js.map +1 -1
  53. package/popup/worker.js +27 -31
  54. package/popup/worker.js.map +1 -1
  55. package/require/css.amd.js +11 -11
  56. package/src/components/formsExt/selector2/selector2.stories.d.ts +16 -16
  57. package/src/components/formsExt/selector2/selector2.vue.d.ts +8 -8
  58. package/src/components/popup/lib/popup.d.ts +40 -46
  59. package/src/components/popup/lib/popup.globalEvents.d.ts +2 -4
  60. package/src/components/popup/lib/worker.d.ts +24 -33
  61. package/src/components/popup/lib/worker.globalEvents.d.ts +1 -2
  62. package/src/components/popup/popup/popup.stories.d.ts +6 -6
  63. package/src/core/utils/dom.d.ts +3 -3
  64. package/tabs/tabs.amd.js +1 -1
  65. package/tabs/tabs.js +1 -1
  66. package/tabsView/tabsView.amd.js +1 -1
  67. package/tabsView/tabsView.amd.js.map +1 -1
  68. package/tabsView/tabsView.js +2 -2
  69. package/tabsView/tabsView.js.map +1 -1
  70. package/utils/css.amd.js.map +1 -1
  71. package/utils/css.js.map +1 -1
  72. package/utils/date.amd.js +1 -1
  73. package/utils/date.js +1 -1
  74. package/utils/device.amd.js +1 -1
  75. package/utils/device.js +1 -1
  76. package/utils/dom.amd.js.map +1 -1
  77. package/utils/dom.js.map +1 -1
  78. package/utils/keyboard.amd.js.map +1 -1
  79. package/utils/keyboard.js.map +1 -1
  80. package/utils/route.amd.js.map +1 -1
  81. package/utils/route.js.map +1 -1
  82. package/utils/scroll.amd.js +1 -1
  83. package/utils/scroll.amd.js.map +1 -1
  84. package/utils/scroll.js +1 -1
  85. package/utils/scroll.js.map +1 -1
  86. package/utils/system.amd.js.map +1 -1
  87. package/utils/system.js.map +1 -1
  88. package/utils/window.amd.js +1 -1
  89. package/utils/window.js +1 -1
  90. package/.chunks/datepicker-B28_yC8V.es.js +0 -277
  91. package/.chunks/datepicker-B28_yC8V.es.js.map +0 -1
  92. package/.chunks/datepicker-CDoo2d0x.amd.js +0 -234
  93. package/.chunks/datepicker-CDoo2d0x.amd.js.map +0 -1
  94. package/.chunks/forms-DNRGCC9P.amd.js +0 -3
  95. package/.chunks/forms-DNRGCC9P.amd.js.map +0 -1
  96. package/.chunks/forms-U97cW1zp.es.js.map +0 -1
  97. package/.chunks/listItem.vue_vue_type_script_setup_true_lang-C67aHWhi.amd.js.map +0 -1
  98. package/.chunks/listItem.vue_vue_type_script_setup_true_lang-C_o5sC8m.es.js.map +0 -1
  99. package/.chunks/popup-C1hmF9NI.es.js +0 -765
  100. package/.chunks/popup-C1hmF9NI.es.js.map +0 -1
  101. package/.chunks/popup-Cg-GRa9u.amd.js +0 -386
  102. package/.chunks/popup-Cg-GRa9u.amd.js.map +0 -1
  103. package/.chunks/widgetInput-DgylW6NK.amd.js.map +0 -1
  104. package/.chunks/widgetInput-DmpYL1aA.es.js.map +0 -1
@@ -0,0 +1,796 @@
1
+ import { C as f } from "./forms-CMU4ajdz.es.js";
2
+ import r from "../utils/dom.js";
3
+ import { PopupWorker as l } from "../popup/worker.js";
4
+ class v {
5
+ static componentName = "Top";
6
+ componentName;
7
+ // имя класса компонента
8
+ className;
9
+ // имя css класса компонента
10
+ uid;
11
+ // уникальный id компонента
12
+ el;
13
+ // элемент, связанный с компонентом
14
+ options = {};
15
+ // параметры компонента
16
+ unmountEls = [];
17
+ unmountEvents = [];
18
+ // переопредлять нельзя
19
+ // если компонент инициирован, необходимо сразу его вернуть и выполнить reInit() вместо mount()
20
+ // используется init вместо constructor, так как super constructor выполняется до Object.defineProperty() параметров класса
21
+ init(t, p, o) {
22
+ if (!p)
23
+ throw t + ": el is undefined";
24
+ const e = v.getComponent(p, t);
25
+ if (e)
26
+ return e.reInit(o), e;
27
+ this.componentName = t, this.className = "top" + t[0].toUpperCase() + t.substring(1), this.uid = this.componentName + (Math.random() + "").replace(".", ""), this._setComponent(p), this.el = p, this.el.classList.add(this.className), this.options = Object.assign(this.options, o), this.mount();
28
+ }
29
+ // получить инициированный компонент
30
+ static getComponent(t, p) {
31
+ return r.storage(t, "#" + p);
32
+ }
33
+ // устанвоить компонент
34
+ _setComponent(t) {
35
+ r.storage(t, "#" + this.componentName, this);
36
+ }
37
+ // функция подключения компонента
38
+ mount() {
39
+ throw "Please, add method mount() to component: " + this.componentName;
40
+ }
41
+ // функция отключения компонента
42
+ unmount() {
43
+ r.storage(this.el, "#" + this.componentName, null), this.unmountEls.forEach((t) => {
44
+ t.remove();
45
+ }), this.unmountEls = [], this.unmountEvents.forEach((t) => {
46
+ t.el.removeEventListener(t.type, t.listener, t.options);
47
+ }), this.unmountEvents = [];
48
+ }
49
+ // указание новые элементы, которые должны будут удалиться после unmount
50
+ registerElForUnmount(t) {
51
+ this.unmountEls.push(t);
52
+ }
53
+ // указание новые события, которые должны будут удалиться после unmount
54
+ addEventListenerWithUnmount(t, p, o, e) {
55
+ t.addEventListener(p, o, e), this.registerEventForUnmount(t, p, o, e);
56
+ }
57
+ // указание новые события, которые должны будут удалиться после unmount
58
+ registerEventForUnmount(t, p, o, e) {
59
+ const i = {
60
+ el: t,
61
+ type: p,
62
+ listener: o,
63
+ options: e
64
+ };
65
+ this.unmountEvents.push(i);
66
+ }
67
+ // функция перенастройки уже подключенного компонента
68
+ reInit(t) {
69
+ throw "Please, add method reInit() to component: " + this.componentName;
70
+ }
71
+ // удалить элементы из DOM, но не из памяти
72
+ static detach(t) {
73
+ var p;
74
+ if (t.forEach)
75
+ t.forEach((o) => {
76
+ var e;
77
+ return (e = o.parentElement) == null ? void 0 : e.removeChild(o);
78
+ });
79
+ else {
80
+ const o = t;
81
+ (p = o.parentElement) == null || p.removeChild(o);
82
+ }
83
+ }
84
+ }
85
+ class P {
86
+ static init() {
87
+ document.addEventListener("click", this.onclick), document.addEventListener("keydown", this.onkeydown);
88
+ }
89
+ /**
90
+ * Глобальный обработчик кликов
91
+ * обрабатывает клики внутри Popup
92
+ */
93
+ static onclick(t) {
94
+ var o;
95
+ if (!(t.target instanceof Element))
96
+ return;
97
+ const p = t.target.closest(".closer, a, .a, .top-button");
98
+ if (p) {
99
+ const e = t.target.closest(".top-popup-wrapper");
100
+ if (!e || p.matches(".top-popup-noCloser"))
101
+ return;
102
+ if (p.getAttribute("href") === "." && t.preventDefault(), t.target.matches("[data-top-popup]")) {
103
+ const i = t.target.closest("ul"), s = t.target.closest("a, .a");
104
+ i && ((o = i.querySelector("a.top-active, .a.top-active")) == null || o.classList.remove("top-active")), s && s.classList.add("top-active");
105
+ return;
106
+ }
107
+ l.close(e);
108
+ }
109
+ if (t.target.matches(".top-popup-wrapper")) {
110
+ const e = t.target;
111
+ l.close(e);
112
+ }
113
+ }
114
+ /**
115
+ * Глобальный обработчик нажатия кнопки на клавиатуре
116
+ */
117
+ static onkeydown(t) {
118
+ var e, i;
119
+ if (!(t.target instanceof Element))
120
+ return;
121
+ const p = t.target.closest(".top-popup-wrapper");
122
+ if (!p)
123
+ return;
124
+ const o = p.querySelector("ul.top-popup_content");
125
+ switch (t.key) {
126
+ case "Escape":
127
+ l.close(p);
128
+ break;
129
+ case "Enter":
130
+ if (!o) {
131
+ if (r.querySelectorVisible(p, ".preloader"))
132
+ break;
133
+ const c = r.querySelectorVisible(p, ".top-popup_footer .go, .top-popup_footer [data-action]");
134
+ if (c instanceof HTMLElement) {
135
+ c.click();
136
+ break;
137
+ }
138
+ const m = r.querySelectorVisibleLast(p, ".top-popup_footer .top-button");
139
+ m instanceof HTMLElement && m.click();
140
+ break;
141
+ }
142
+ const s = r.querySelectorVisible(p, "li > a.top-active");
143
+ s && s.getAttribute("href") && (t.preventDefault(), location.href = s.getAttribute("href"));
144
+ const a = p.querySelector("li > .top-active");
145
+ a instanceof HTMLElement && a.click();
146
+ break;
147
+ case "ArrowUp":
148
+ case "ArrowRight":
149
+ case "ArrowDown":
150
+ case "ArrowLeft":
151
+ if (!o)
152
+ break;
153
+ t.key === "ArrowRight" || t.key === "ArrowLeft" ? r.querySelectorVisible(
154
+ p,
155
+ "ul.top-popup_content > li:not(.top-popup_liNoSelectable) > .top-active > .top-popup_listMore"
156
+ ) && t.preventDefault() : t.preventDefault();
157
+ const n = (e = p.querySelector("ul.top-popup_content > li:not(.top-popup_liNoSelectable) > .top-active")) == null ? void 0 : e.parentElement;
158
+ if (t.key === "ArrowRight" && n) {
159
+ const c = n.querySelector(".top-active > .top-popup_listMore");
160
+ if (c instanceof HTMLElement)
161
+ return c.click();
162
+ }
163
+ const d = r.querySelectorAllVisible(p, "ul.top-popup_content > li:not(.top-popup_liNoSelectable)"), h = d.length;
164
+ if (!h)
165
+ return;
166
+ let u = -1;
167
+ if (n && (u = d.indexOf(n)), t.key === "ArrowUp" || t.key === "ArrowLeft" ? u-- : u++, t.key === "ArrowLeft" && u === -1)
168
+ return t.target.matches("input") ? void 0 : l.close(p);
169
+ if (t.key === "ArrowRight" && u === h)
170
+ return;
171
+ u < 0 && (u = h - 1), u > h - 1 && (u = 0), p.querySelectorAll("ul.top-popup_content > li > .top-active").forEach((c) => c.classList.remove("top-active")), (i = d[u].querySelector(":scope > a, :scope > .a")) == null || i.classList.add("top-active"), l.scrollToActive(p);
172
+ break;
173
+ }
174
+ }
175
+ }
176
+ const w = `:root {\r
177
+ --top-popup-z-index: 200000;\r
178
+ --top-popup-transition-delay: 100ms;\r
179
+ \r
180
+ --top-popup-background-color: var(--color-bg-3);\r
181
+ --top-popup-background-color-hover: var(--color-layer-secondary-1);\r
182
+ --top-popup-background-color-active: var(--color-layer-secondary-2);\r
183
+ \r
184
+ --top-popup-border-color: var(--color-line-2-opacity);\r
185
+ --top-popup-title-background-color: var(--color-theme-50);\r
186
+ \r
187
+ /* суммарный отсуп от каря popup до элемента */\r
188
+ --top-popup-content-padding: calc(var(--top-popup-list-padding) + var(--top-popup-listItem-padding));\r
189
+ \r
190
+ /* списки */\r
191
+ --top-popup-list-padding: var(--top-padding-2);\r
192
+ \r
193
+ --top-popup-listItem-radius: var(--top-radius-2);\r
194
+ --top-popup-listItem-padding: var(--top-padding-2);\r
195
+ }\r
196
+ \r
197
+ .top-popup-front { position: relative; }\r
198
+ \r
199
+ .top-popup-wrapper {\r
200
+ /* см. recalcPosition() */\r
201
+ --top-popup-height: 0px;\r
202
+ --top-popup-right-bounding: 0px;\r
203
+ --top-popup-bottom-bounding: 0px;\r
204
+ --top-popup-top: 0px;\r
205
+ --top-popup-right: calc(100vw - var(--top-popup-right-bounding));\r
206
+ --top-popup-bottom: calc(var(--100vh) - var(--top-popup-bottom-bounding));\r
207
+ --top-popup-left: 0px;\r
208
+ \r
209
+ text-align: initial; white-space: normal; word-break: normal;\r
210
+ position: absolute; z-index: 200000;\r
211
+ }\r
212
+ .top-popup-wrapper:not(.top-popup-wrapper-shown) { overflow: hidden; }\r
213
+ \r
214
+ /* top-popupPanel */\r
215
+ .top-popupPanel {\r
216
+ cursor: default;\r
217
+ box-shadow: var(--top-shadow-b);\r
218
+ border-radius: 8px;\r
219
+ background: var(--top-popup-background-color);\r
220
+ position: absolute; overflow: hidden;\r
221
+ display: flex; flex-direction: column;\r
222
+ }\r
223
+ \r
224
+ /* position */\r
225
+ .top-popup-wrapper > * {\r
226
+ opacity: 0;\r
227
+ transition: opacity var(--top-popup-transition-delay) linear, transform var(--top-popup-transition-delay) linear;\r
228
+ }\r
229
+ .top-popup-wrapper.p0 > * { transform: translateY(-8px); }\r
230
+ .top-popup-wrapper.p1 > * { transform: translateY(8px); }\r
231
+ .top-popup-wrapper.p2 > * { transform: translateX(8px); }\r
232
+ .top-popup-wrapper.p3 > * { transform: translateY(8px); }\r
233
+ .top-popup-wrapper.p4 > * { transform: translateX(-8px); }\r
234
+ .top-popup-wrapper-shown:not(.top-popup-wrapper-closed) > * {opacity: 1;transform: translate(0, 0) !important;}\r
235
+ \r
236
+ .top-popup-wrapper.p0 > .top-popup { top: calc(-16px); left: calc(0px - 8px); }\r
237
+ .top-popup-wrapper.p1 > .top-popup { bottom: calc(100% + 8px); }\r
238
+ .top-popup-wrapper.p2 > .top-popup { left: calc(100% + 8px); }\r
239
+ .top-popup-wrapper.p3 > .top-popup { top: calc(100% + 8px); }\r
240
+ .top-popup-wrapper.p4 > .top-popup { right: calc(100% + 8px); }\r
241
+ .top-popup-wrapper.p2 > .top-popup,\r
242
+ .top-popup-wrapper.p4 > .top-popup { margin-top: -10px; }\r
243
+ \r
244
+ .top-popup-wrapper.p1.with_notch > .top-popup { margin-bottom: 5px; }\r
245
+ .top-popup-wrapper.p2.with_notch > .top-popup { margin-left: 5px; }\r
246
+ .top-popup-wrapper.p3.with_notch > .top-popup { margin-top: 5px; }\r
247
+ .top-popup-wrapper.p4.with_notch > .top-popup { margin-right: 5px; }\r
248
+ \r
249
+ .top-popup-wrapper.invert-x > .top-popup { right: 0; }\r
250
+ .top-popup-wrapper.invert-y > .top-popup { bottom: 0; }\r
251
+ \r
252
+ /* notch */\r
253
+ .top-popup-wrapper > .notch { border: 7.4px solid transparent; position: absolute; display: block; }\r
254
+ \r
255
+ .top-popup-wrapper.p1 > .notch { border-bottom: 0; border-top: 7.4px solid var(--content-background-color); margin: 0 0 7.4px -7.4px; bottom: 100%; left: 50% }\r
256
+ .top-popup-wrapper.p2 > .notch { border-left: 0; border-right: 7.4px solid var(--content-background-color); margin: 0 0 -7.4px 7.4px; bottom: 50%; left: 100%; }\r
257
+ .top-popup-wrapper.p3 > .notch { border-top: 0; border-bottom: 7.4px solid var(--content-background-color); margin: 7.4px 0 0 -7.4px; top: 100%; left: 50%; }\r
258
+ .top-popup-wrapper.p4 > .notch { border-right: 0; border-left: 7.4px solid var(--content-background-color); margin: 0 7.4px -7.4px 0; bottom: 50%; right: 100%; }\r
259
+ \r
260
+ .top-popup-wrapper.p1 > .notch-border { border-top-color: rgba(0, 0, 0, 0.05); margin-bottom: 6px; }\r
261
+ .top-popup-wrapper.p2 > .notch-border { border-right-color: rgba(0, 0, 0, 0.05); margin-left: 6px; }\r
262
+ .top-popup-wrapper.p3 > .notch-border { border-bottom-color: rgba(0, 0, 0, 0.05); margin-top: 6px; }\r
263
+ .top-popup-wrapper.p4 > .notch-border { border-left-color: rgba(0, 0, 0, 0.05); margin-right: 6px; }\r
264
+ \r
265
+ /* common */\r
266
+ .top-popup_header,\r
267
+ .top-popup_content,\r
268
+ .top-popup_footer { font-size: 14px; }\r
269
+ .top-popup_header,\r
270
+ .top-popup_footer { display: flex; align-items: center; justify-content: space-between; }\r
271
+ \r
272
+ /* header */\r
273
+ .top-popup_header {\r
274
+ color: var(--color-text-1);\r
275
+ border-bottom: 1px solid var(--top-popup-border-color);\r
276
+ padding: var(--top-padding-3);\r
277
+ font-weight: 600;\r
278
+ }\r
279
+ .top-popup_header > * { font-weight: 400; }\r
280
+ .top-popup_header > .a { cursor: pointer;}\r
281
+ .top-popup_header > .a:hover { color: var(--color-text-primary-2); }\r
282
+ \r
283
+ .top-popup_headerButton { width: 60px; }\r
284
+ \r
285
+ /* widget */\r
286
+ .top-popup_widget {\r
287
+ padding: var(--top-padding-2) var(--top-padding-2) 0 var(--top-padding-2);\r
288
+ }\r
289
+ \r
290
+ /* content */\r
291
+ .top-popup_content {\r
292
+ margin: 0;\r
293
+ flex-grow: 1;\r
294
+ overflow-y: auto;\r
295
+ display: flex;\r
296
+ flex-direction: column;\r
297
+ gap: var(--top-gap-4);\r
298
+ \r
299
+ -webkit-overflow-scrolling: touch;\r
300
+ }\r
301
+ \r
302
+ div.top-popup_content {\r
303
+ color: var(--color-text-1);\r
304
+ padding: var(--top-popup-content-padding);\r
305
+ }\r
306
+ div.top-popup_content > * { flex-shrink: 0; }\r
307
+ div.top-popup_content > .top-button { margin: 0; }\r
308
+ \r
309
+ div.top-popup_content .top-unwrap {\r
310
+ --top-unwrap-x: var(--top-popup-content-padding);\r
311
+ }\r
312
+ \r
313
+ ul.top-popup_content {\r
314
+ color: var(--color-text-1);\r
315
+ padding: var(--top-popup-list-padding);\r
316
+ gap: 2px;\r
317
+ }\r
318
+ \r
319
+ ul.top-popup_content .top-unwrap {\r
320
+ --top-unwrap-x: var(--top-popup-list-padding);\r
321
+ }\r
322
+ \r
323
+ .top-popup_listItem {\r
324
+ border-radius: var(--top-popup-listItem-radius);\r
325
+ padding: var(--top-popup-listItem-padding);\r
326
+ line-height: 1 !important;\r
327
+ }\r
328
+ \r
329
+ ul.top-popup_content li { margin: 0; list-style: none; display: flex; position: relative }\r
330
+ ul.top-popup_content li > * { flex-grow: 1; }\r
331
+ ul.top-popup_content li > a:not(.top-button),\r
332
+ ul.top-popup_content li > .a {\r
333
+ cursor: pointer;\r
334
+ box-sizing: border-box;\r
335
+ border-radius: var(--top-popup-listItem-radius);\r
336
+ background: var(--top-popup-background-color);\r
337
+ padding: var(--top-popup-listItem-padding);\r
338
+ color: var(--color-text) !important; font-size: 14px; font-weight: normal !important; text-decoration: none !important; font-style: normal;\r
339
+ line-height: 1 !important;\r
340
+ display: flex; flex: 1 1 100%; align-items: center;\r
341
+ transition: background-color 0.1s ease-in-out;\r
342
+ }\r
343
+ .top-popup-wrapper-no_animate ul.top-popup_content li > a:not(.top-button),\r
344
+ .top-popup-wrapper-no_animate ul.top-popup_content li > .a { transition: none; }\r
345
+ \r
346
+ ul.top-popup_content li > a:not(.top-button):hover,\r
347
+ ul.top-popup_content li > .a:hover { background: var(--top-popup-background-color-hover); }\r
348
+ ul.top-popup_content li > a:not(.top-button).top-active,\r
349
+ ul.top-popup_content li > .a.top-active { background: var(--top-popup-background-color-active); }\r
350
+ \r
351
+ .top-popup_content + .top-popup_content { padding-top: 0; }\r
352
+ \r
353
+ /* listTitle */\r
354
+ .top-popup_listItem-title {\r
355
+ background: var(--color-layer-secondary-1);\r
356
+ color: var(--color-text-2); font-size: 12px;\r
357
+ }\r
358
+ \r
359
+ /* listDelimiter */\r
360
+ .top-popup_listItem-delimiter {\r
361
+ border-radius: 3px;\r
362
+ background: var(--top-popup-border-color);\r
363
+ height: 1px;\r
364
+ padding: 0;\r
365
+ margin: 4px;\r
366
+ }\r
367
+ \r
368
+ /* listMore */\r
369
+ .top-popup_listMore {\r
370
+ font-size: 20px;\r
371
+ margin: calc(0px - var(--top-popup-listItem-padding)) calc(0px - var(--top-popup-listItem-padding) / 2) calc(0px - var(--top-popup-listItem-padding)) 0;\r
372
+ }\r
373
+ \r
374
+ .top-popup_listMore.top-button{ margin: 0; }\r
375
+ \r
376
+ ul.top-popup_content li > .a.top-popup_listMore {\r
377
+ text-align: center;\r
378
+ flex-basis: 10px;\r
379
+ }\r
380
+ ul.top-popup_content li > .a.top-popup_listMore:before { color: var(--color-layer-secondary-3); }\r
381
+ ul.top-popup_content li > * > .top-popup_listMore {\r
382
+ margin-left: auto;\r
383
+ color: var(--color-layer-secondary-4);\r
384
+ font-size: 14px;\r
385
+ }\r
386
+ ul.top-popup_content li > * > i.top-popup_listMore:hover,\r
387
+ ul.top-popup_content li > * > i.top-popup_listMore.top-active { color: var(--color-text-primary-1); }\r
388
+ ul.top-popup_content li > * > i.top-popup_listMore:before {\r
389
+ transform: rotate(90deg);\r
390
+ display: block;\r
391
+ }\r
392
+ \r
393
+ ul.top-popup_content li a.close { background: none !important; }\r
394
+ \r
395
+ /* data-top-icon */\r
396
+ .top-popup_content > [data-top-icon]:before {\r
397
+ --top-icon-size: 20px;\r
398
+ }\r
399
+ \r
400
+ ul.top-popup_content li > [data-top-icon]:not(.top-button):before {\r
401
+ --top-icon-color: var(--color-text-3);\r
402
+ --top-icon-size: 20px;\r
403
+ --top-icon-width: 20px;\r
404
+ \r
405
+ height: 1rem; margin-right: 8px; transition: color 0.1s;\r
406
+ }\r
407
+ ul.top-popup_content li:hover > [data-top-icon]:not(.top-button):before,\r
408
+ ul.top-popup_content li > [data-top-icon]:not(.top-button).top-active:before {\r
409
+ --top-icon-color: var(--color-text-2);\r
410
+ }\r
411
+ \r
412
+ /* footer */\r
413
+ .top-popup_footer {\r
414
+ padding: var(--top-popup-list-padding);\r
415
+ border-top: 1px solid var(--top-popup-border-color);\r
416
+ display: flex;\r
417
+ gap: var(--top-gap-2);\r
418
+ justify-content: flex-end;\r
419
+ }\r
420
+ \r
421
+ /* Виджеты */\r
422
+ .top-popup > [data-widget] { padding: 0 var(--top-popup-list-padding); }\r
423
+ .top-popup > [data-widget] + hr { margin: 0 var(--top-popup-list-padding); }\r
424
+ \r
425
+ .top-popup .placeholder {\r
426
+ border: 1px solid #E0D9D9 !important; border-right: none !important; border-left: none !important; background: #F9F9F9 !important; margin: -1px 0; z-index: 1;\r
427
+ position: relative;\r
428
+ }\r
429
+ \r
430
+ /* компоненты */\r
431
+ .top-popup-wrapper.simple_list > .top-popup { min-width: 0; white-space: nowrap; }\r
432
+ \r
433
+ .top-popup_content .top-column { display: flex; flex-direction: column; gap: 4px; }\r
434
+ html .top-popup .top-popup_content li > .top-button {\r
435
+ margin: calc(var(--top-popup-listItem-padding) / 2) var(--top-popup-listItem-padding);\r
436
+ }\r
437
+ \r
438
+ .top-popup li .check_all,\r
439
+ .top-popup li .clear_all { cursor: pointer; color: var(--color-cyan); padding: 8px; display: inline-block; }\r
440
+ .top-popup li .check_all:hover,\r
441
+ .top-popup li .clear_all:hover { text-decoration: underline; }\r
442
+ .top-popup li .clear_all { display: none; }\r
443
+ \r
444
+ /* table */\r
445
+ .top-popup_content table { margin: -9px 0; }\r
446
+ .top-popup_content table td,\r
447
+ .top-popup_content table th { padding: 9px var(--top-popup-listItem-padding) 9px 0; vertical-align: top; }\r
448
+ .top-popup_content table th { width: 40%; font-weight: 600; white-space: nowrap; }\r
449
+ \r
450
+ /* формы */\r
451
+ ul.top-popup_content .a > [type="checkbox"],\r
452
+ ul.top-popup_content .a > [type="radio"] { margin: -8px 0 -8px auto; }\r
453
+ \r
454
+ /* deprecated */\r
455
+ ul.top-popup_content a > [class*=icon],\r
456
+ ul.top-popup_content i.a > [class*=icon] {\r
457
+ transition: 0.1s;\r
458
+ }\r
459
+ \r
460
+ .top-popup .buttons { border-radius: 0 0 4px 4px; border-top: 1px solid #BDC3C7; background: #ECF0F1; padding: 10px 15px; margin: 10px -15px -10px -15px; white-space: nowrap; }\r
461
+ .top-popup_footer [class*=btn]:not(.btn-transparent) { min-width: 100px; padding: 5px 14px; margin-left: 10px; }\r
462
+ .top-popup_footer [class*=btn]:first-child { margin-left: 0; }\r
463
+ .top-popup_footer .btn.full_width { margin: 0; flex-grow: 1; }`, y = `:root{\r
464
+ --top-popup-list-padding: 0px;\r
465
+ \r
466
+ --top-popup-listItem-radius: 0px;\r
467
+ --top-popup-listItem-padding: var(--top-padding-4);\r
468
+ }\r
469
+ \r
470
+ html.with_popup{ background: #808080; }\r
471
+ \r
472
+ .top-popup-wrapper{\r
473
+ --top-popup-footer-offset: 25px;\r
474
+ \r
475
+ width: auto !important; height: auto !important;\r
476
+ position: fixed; top: 0 !important; right: 0 !important; left: 0 !important; overflow: hidden;\r
477
+ transition: background 0.3s;\r
478
+ }\r
479
+ \r
480
+ .top-popup-wrapper-shown:not(.top-popup-wrapper-closed){ background: rgba(0,0,0,0.5); backdrop-filter: blur(1px); }\r
481
+ .top-popup-wrapper-shown:not(.top-popup-wrapper-closed) > .top-popup{ opacity: 1 !important; }\r
482
+ \r
483
+ .top-popup{\r
484
+ border-radius: 8px 8px 0 0; width: auto !important; max-height: calc(100% - var(--header-height, 0px) - var(--toolbar-height, 0px) - 12px); margin: 0 !important;\r
485
+ top: auto !important; right: 0 !important; bottom: var(--toolbar-height, 0px) !important; left: 0 !important;\r
486
+ display: flex; flex-direction: column;\r
487
+ \r
488
+ /* невозможно опустить элемент вниз за экран на 100%, fix: opacity и translateY(80%) */\r
489
+ transform: translateY(80%);\r
490
+ \r
491
+ transition: opacity 0.3s, transform 0.3s;\r
492
+ }\r
493
+ \r
494
+ \r
495
+ /* from top */\r
496
+ .top-popup-wrapper.p-from-top{\r
497
+ --top-popup-footer-offset: 0px;\r
498
+ \r
499
+ top: var(--header-height, 0px) !important;\r
500
+ }\r
501
+ .with_dialog .top-popup-wrapper.p-from-top{ top: 50px !important; }\r
502
+ .top-popup-wrapper.p-from-top > .top-popup{\r
503
+ border-radius: 0 0 8px 8px; max-height: calc(100% - 24px); top: 0 !important; bottom: auto !important;\r
504
+ transform: translateY(calc(-100% - 24px));\r
505
+ }\r
506
+ \r
507
+ /* widget */\r
508
+ .top-popup_widget{ padding: var(--top-padding-2);}\r
509
+ .top-popup_widget:not(.p-from-top){ order: 10; }\r
510
+ \r
511
+ /* content */\r
512
+ ul.top-popup_content{\r
513
+ gap: 0;\r
514
+ }\r
515
+ ul.top-popup_content li:not(:last-child){ border-bottom: 1px solid var(--top-popup-border-color); }\r
516
+ \r
517
+ .top-popup-wrapper.top-style_alt > .top-popup > ul > li{ border-bottom: none; }\r
518
+ \r
519
+ /* footer */\r
520
+ .top-popup_footer{\r
521
+ flex-direction: column-reverse;\r
522
+ }\r
523
+ .top-popup_footer > .top-button{\r
524
+ --top-forms-base-height: var(--top-forms-base-height_l);\r
525
+ \r
526
+ width: 100%;\r
527
+ }\r
528
+ \r
529
+ /* listTitle */\r
530
+ ul.top-popup_content .top-popup_listItem-title{\r
531
+ --top-popup-padding-v: 12px;\r
532
+ }\r
533
+ \r
534
+ /* listDelimiter */\r
535
+ ul.top-popup_content .top-popup_listItem-delimiter{ background: var(--color-line-1-opacity); height: 4px; margin: 0; }\r
536
+ ul.top-popup_content li:first-child > .top-popup_listItem-delimiter{ border-top: 1px solid var(--top-popup-border-color); }`, _ = `html:not(.with_dialog){ margin-right: 0 !important; }\r
537
+ \r
538
+ .top-popup{ min-width: 250px; max-width: calc(100vw - var(--top-popup-left) - 16px); max-height: calc(var(--top-popup-bottom) + var(--top-popup-height)); }\r
539
+ .top-popup-wrapper.invert-x > .top-popup{ max-width: calc(100vw - var(--top-popup-right) - 16px); }\r
540
+ .top-popup-wrapper.invert-y > .top-popup{ max-height: calc(100vh - var(--top-popup-bottom) - 16px); }\r
541
+ \r
542
+ /* position */\r
543
+ .top-popup-wrapper.p1 > .top-popup{ max-height: calc(var(--top-popup-top) - var(--header-height, 0px) - 16px); }\r
544
+ .top-popup-wrapper.p3 > .top-popup{ max-height: calc(var(--top-popup-bottom) - 16px); }\r
545
+ .top-popup-wrapper.p2 > .top-popup{ max-width: calc(var(--top-popup-right) - 16px); }\r
546
+ .top-popup-wrapper.p4 > .top-popup{ max-width: calc(var(--top-popup-left) - 16px); }\r
547
+ \r
548
+ /* notch */\r
549
+ .top-popup-wrapper.p1.with_notch > .top-popup,\r
550
+ .top-popup-wrapper.p3.with_notch > .top-popup{ margin-left: -16px !important; }\r
551
+ .top-popup-wrapper.p1.with_notch > .notch,\r
552
+ .top-popup-wrapper.p3.with_notch > .notch{ margin-left: -8px !important; }\r
553
+ \r
554
+ .top-popup-wrapper.p1.with_notch.invert-x,\r
555
+ .top-popup-wrapper.p3.with_notch.invert-x{ margin-left: 3px !important; }\r
556
+ .top-popup-wrapper.p1.with_notch.invert-x > .notch,\r
557
+ .top-popup-wrapper.p3.with_notch.invert-x > .notch{ margin-left: -9px !important; }\r
558
+ \r
559
+ /* listMore */\r
560
+ ul.top-popup_content li > * > i.top-popup_listMore{ visibility: hidden; transition: none; }\r
561
+ ul.top-popup_content li:hover > * > i.top-popup_listMore,\r
562
+ ul.top-popup_content li > *.top-active > i.top-popup_listMore,\r
563
+ ul.top-popup_content li > * > i.top-popup_listMore.top-active{ visibility: visible; }`;
564
+ f.appendStyle(w);
565
+ f.appendStyle(y, "m");
566
+ f.appendStyle(_, "pc");
567
+ class x extends v {
568
+ static componentName = "Popup";
569
+ // элемент, вызвавший открытие Popup
570
+ elActiveByDefault;
571
+ // элемент уже имеет класс top-active перед открытием окна
572
+ elPopup;
573
+ // Popup .top-popup-wrapper
574
+ elPopupInner;
575
+ // контентная часть Popup .top-popup
576
+ elPopupHeader;
577
+ elPopupWidget;
578
+ elPopupBody;
579
+ elPopupFooter;
580
+ elFront;
581
+ popupParent;
582
+ $;
583
+ // только, если есть jQuery
584
+ elStartPosition;
585
+ // используется для useOriginal
586
+ shift = {
587
+ top: 0,
588
+ left: 0
589
+ };
590
+ isClosed = !1;
591
+ // флаг того, что меню закрыто
592
+ isFirstClick = !0;
593
+ type;
594
+ // selector или html
595
+ options = {
596
+ popup: "",
597
+ // selector, text
598
+ p: 0,
599
+ // положение меню (0 - над элементом, 1 - сверху, 2 - справа, 3 - снизу, 4 слева)
600
+ notch: !1,
601
+ // отображать ли клювик
602
+ class: "",
603
+ // класс, добавляемый меню
604
+ posBy: "left",
605
+ // способ привязки позиционирования меню (left/right - левый/правый край родителя, fixed - по окну)
606
+ frontSelector: "",
607
+ invertX: !1,
608
+ // базовая ордината - правая граница элемента, а не левая
609
+ openByHover: !1,
610
+ // открывать при наведении
611
+ useOriginal: !1,
612
+ // использовать оригинальный шаблон, без клонирвоания (для сохранения состояния меню)
613
+ transitionDuration: 100,
614
+ // значение прописано в css
615
+ isFullScreen: !1,
616
+ i18n: {}
617
+ };
618
+ events = {};
619
+ // el - элемент, открывающий меню
620
+ constructor(t, p) {
621
+ return super(), this.init(x.componentName, t, p);
622
+ }
623
+ async mount() {
624
+ var e, i, s, a;
625
+ if (!(this.el instanceof HTMLElement))
626
+ return;
627
+ const t = this.vueGetComponent();
628
+ if (this.el.closest(".top-popup-wrapper") && (this.popupParent = l.getPopup(this.el.closest(".top-popup-wrapper"))), await this.mountJQuery(), r.css(this.el, "position") !== "absolute" && (this.el.style.position = "relative"), this.el.dataset.topPopupOpened = "opened", this.elActiveByDefault = this.el.classList.contains("top-active"), this.el.classList.add("top-active"), t)
629
+ this.type = "vue", this.options.popup = "", this.elPopup = r.genEl("div", {}, this.options.popup);
630
+ else if ((e = this.options.popup) != null && e.match(/^[#.]/))
631
+ this.type = "selector", this.elPopup = document.querySelector(`${this.options.popup}.template`);
632
+ else {
633
+ if (this.type = "html", this.options.useOriginal)
634
+ throw "Option useOriginal not allowed for text templates";
635
+ this.elPopup = r.genEl("div", {}, this.options.popup ?? "");
636
+ }
637
+ if (!this.elPopup || t != null && t.opened) {
638
+ if (this.options.useOriginal || t != null && t.opened) {
639
+ if (t != null && t.opened ? this.elPopup = t.popup.elPopup : this.elPopup = document.querySelector(`${this.options.popup}.top-popup-wrapper-shown`), this.elPopup) {
640
+ this.el.dataset.topPopupOpened = "", this.elActiveByDefault || this.el.classList.remove("top-active"), l.close(this.elPopup), setTimeout(() => this.mount(), this.options.transitionDuration);
641
+ return;
642
+ }
643
+ throw "Option useOriginal state allowed only elements .template";
644
+ }
645
+ this.elPopup = document.querySelector(`${this.options.popup}:not(.top-popup-wrapper)`);
646
+ }
647
+ if (!this.elPopup)
648
+ return;
649
+ for (this.options.useOriginal ? (this.elStartPosition = this.elPopup.closest(".top-popup-el-start-position"), this.elStartPosition || (this.elStartPosition = r.wrap(this.elPopup, "i"), this.elStartPosition.classList.add("top-popup-el-start-position", "hidden"))) : (this.elPopup = this.elPopup.cloneNode(!0), this.type === "selector" && !this.elPopup.matches(".template") && (this.elPopup.classList.remove("hidden"), this.elPopup.querySelector(":scope > .top-popup_content") || this.elPopup.classList.add("top-popup_content"), this.elPopup = r.wrap(this.elPopup, "div")), this.type === "html" && (this.elPopup.querySelector(":scope > .top-popup_content") || (this.elPopup.classList.add("top-popup_content"), this.elPopup = r.wrap(this.elPopup, "div"))), (this.type === "selector" && !this.elPopup.matches(".template") || this.type === "html" || this.type === "vue") && (r.querySelectorAllArray(this.elPopup, "[data-top-popup]").forEach((n) => {
650
+ n instanceof HTMLElement && (n.dataset.topPopupPosBy = "fixed");
651
+ }), r.querySelectorAllArray(this.elPopup, ".top-popup-wrapper").forEach((n) => n.remove()))), l.decoratorBeforeOpen(this), t && (this.options.class = t.classRef.value, t.transitionDurationRef.value !== void 0 && (this.options.transitionDuration = t.transitionDurationRef.value, this.elPopup instanceof HTMLElement && this.elPopup.style.setProperty(
652
+ "--top-popup-transition-delay",
653
+ this.options.transitionDuration + "ms"
654
+ ))), this.elPopupInner = document.createElement("div"), this.elPopupInner.classList.add("top-popupPanel", "top-popup"); this.elPopup.firstChild; )
655
+ this.elPopupInner.appendChild(this.elPopup.firstChild);
656
+ if (this.elPopup.append(this.elPopupInner), this.elPopup.classList.add("top-popup-wrapper"), this.options.class) {
657
+ const n = this.options.class.split(" ");
658
+ this.elPopup.classList.add(...n);
659
+ }
660
+ this.options.notch && (this.elPopup.classList.add("with_notch"), this.elPopup.insertAdjacentHTML("beforeend", '<i class="notch notch-border"></i><i class="notch"></i>')), await this.vueOpen(), this.elPopupHeader = this.elPopupInner.querySelector(".top-popup_header"), this.elPopupWidget = this.elPopupInner.querySelector(".top-popup_widget"), this.elPopupBody = this.elPopupInner.querySelector(".top-popup_content"), this.elPopupFooter = this.elPopupInner.querySelector(".top-popup_footer");
661
+ const p = !!this.elPopup.querySelector('[data-widget="search"]');
662
+ this.options.isFullScreen && !p && !this.elPopupHeader && (i = this.options.i18n) != null && i.Close && (this.elPopupHeader = r.genEl("i", { class: "top-popup_header" }), this.elPopupInner.prepend(this.elPopupHeader), this.elPopupHeader.prepend(r.genEl("i", { class: "a closer" }, (s = this.options.i18n) == null ? void 0 : s.Close)), this.elPopupHeader.append(r.genEl("i", { class: "top-popup_headerButton" }))), r.storage(this.elPopup, "Popup", this), this.options.frontSelector && (this.elFront = document.querySelector(this.options.frontSelector)), this.elFront || (this.elFront = this.el.closest(".top-popup-front")), this.elFront || (this.elFront = document.body), this.elPopup instanceof HTMLElement && (this.elPopup.style.width = this.el.offsetWidth + "px", this.elPopup.style.height = this.el.offsetHeight + "px", this.elPopup.style.top = this.el.offsetTop + "px", this.elPopup.style.right = parseInt(this.el.style.right || "0") + "px", this.elPopup.style.bottom = parseInt(this.el.style.bottom || "0") + "px"), (a = this.el.parentElement) == null || a.insertBefore(this.elPopup, this.el), this.elPopup.classList.remove("template"), this.options.invertX && this.elPopup.classList.add("invert-x");
663
+ let o = !!this.el.closest(".modal-header");
664
+ o || (o = !!this.el.closest("#top_panel")), o || (o = !!this.el.closest("#secondmenu")), o && this.elPopup.classList.add("p-from-top"), setTimeout(() => {
665
+ var n;
666
+ return (n = this.elPopup) == null ? void 0 : n.classList.add("top-popup-wrapper-shown");
667
+ }), this.elFront && !this.elFront.matches("body") && (this.elFront.append(this.elPopup), this.shift.top = r.offset(this.el).top - this.el.offsetTop - r.offset(this.elFront).top, this.shift.left = r.offset(this.el).left - this.el.offsetLeft - r.offset(this.elFront).left, this.shift.top -= parseInt(this.el.style["margin-top"] || 0), this.shift.left -= parseInt(this.el.style["margin-left"] || 0), this.elPopup instanceof HTMLElement && (this.elPopup.style.top = parseInt(this.elPopup.style.top || "0") + this.shift.top + "px", this.elPopup.style.left = parseInt(this.elPopup.style.left || "0") + this.shift.left + "px")), this.$ && f.$ && this.$.trigger("aftershow.top-menu-popup", [f.$(this.elPopup)]), this.recalcPosition(), this.elPopup.setAttribute("tabindex", "0"), this.focus(), l.decoratorAfterOpen(this), this.mountEvents();
668
+ }
669
+ async mountJQuery() {
670
+ f.$ && (this.$ = f.$(this.el));
671
+ }
672
+ /**
673
+ * Выполнить фокусировку на нужный элемент после открытия окна
674
+ */
675
+ focus() {
676
+ let t;
677
+ this.elPopup && (t = r.querySelectorVisible(this.elPopup, ".top-popup-autofocus"), t || (t = r.querySelectorVisible(this.elPopup, ":read-write, select:not(:disabled)")), t || (t = r.querySelectorVisible(this.elPopup, ".top-popup_footer .top-button")), t || (t = this.elPopup), t instanceof HTMLElement && t.focus(), setTimeout(() => {
678
+ t instanceof HTMLElement && t.focus();
679
+ }, this.options.transitionDuration));
680
+ }
681
+ mountEvents() {
682
+ this.addEventListenerWithUnmount(document, "mousedown", (t) => this.onMousedown(t)), this.elPopup && this.elPopupInner && (this.addEventListenerWithUnmount(this.elPopup, "focus", (t) => this.onFocus(t)), this.options.openByHover && (this.addEventListenerWithUnmount(this.elPopup, "mouseleave", (t) => this.onMouseleave(t)), this.addEventListenerWithUnmount(this.elPopupInner, "mouseleave", (t) => this.onMouseleave(t)))), this.options.isFullScreen && this.elPopupBody && this.addEventListenerWithUnmount(this.elPopupBody, "touchmove", (t) => this.onTouchmove(t));
683
+ }
684
+ /**
685
+ * Обработка клика вне окна
686
+ */
687
+ onMousedown(t) {
688
+ if (!this.elPopup || !(t.target instanceof Element) || !this.isFirstClick || (this.isFirstClick = !1, setTimeout(() => this.isFirstClick = !0), t instanceof MouseEvent && t.button !== 0))
689
+ return;
690
+ let p = r.querySelectorVisibleLast(document.body, ":scope > .top-popup-wrapper");
691
+ p && p !== this.elPopup || t.target.closest(".top-popup-front") && (p = r.querySelectorVisibleLast(t.target.closest(".top-popup-front"), ":scope > .top-popup-wrapper"), p && p !== this.elPopup) || this.elPopup.contains(t.target) || this.elPopup.closest(".ui-dialog") && !t.target.closest(".ui-dialog") || l.decoratorIsIgnoreOuterClick(t) || l.close(this.elPopup);
692
+ }
693
+ /**
694
+ * Закрыть другие Popup при фокусе на элемент формы в текущем
695
+ */
696
+ onFocus(t) {
697
+ if (t.target instanceof Element && t.target.matches("input") || this.isClosed)
698
+ return;
699
+ l.getAllVisible().forEach((o) => {
700
+ var e, i, s, a;
701
+ (e = this.elPopup) != null && e.contains(o) || ((i = this.popupParent) == null ? void 0 : i.elPopup) === o || ((a = (s = this.popupParent) == null ? void 0 : s.popupParent) == null ? void 0 : a.elPopup) === o || l.close(o);
702
+ });
703
+ }
704
+ /**
705
+ * Закрыть Popup при отведении мыши
706
+ */
707
+ onMouseleave(t) {
708
+ setTimeout(() => {
709
+ this.elPopupInner && this.elPopupInner.matches(":hover") || !this.elPopup || l.close(this.elPopup);
710
+ }, 100);
711
+ }
712
+ /**
713
+ * Контроль положения Popup при fixed позиционировании
714
+ */
715
+ onResize() {
716
+ this.elPopup && this.elPopup.parentElement !== document.body && document.body.append(this.elPopup), this.elPopup instanceof HTMLElement && (this.elPopup.style.top = r.offset(this.el).top + "px", this.elPopup.style.left = r.offset(this.el).left + "px");
717
+ }
718
+ unmount() {
719
+ super.unmount(), this.el instanceof HTMLElement && (this.el.dataset.topPopupOpened = ""), this.elActiveByDefault || this.el.classList.remove("top-active");
720
+ let t = this.el.getAttribute("style");
721
+ t && (t = t.replace(/position:[^;]*;?/g, ""), this.el.setAttribute("style", t));
722
+ }
723
+ // контроль за положением Popup, чтобы оно не вылезало за пределы документа
724
+ recalcPosition() {
725
+ var m, b;
726
+ if (!(this.elPopup instanceof HTMLElement))
727
+ return;
728
+ let t = this.options.p, p;
729
+ if (this.el instanceof HTMLElement)
730
+ switch (this.elPopup.style.height = this.el.offsetHeight + "px", this.elPopup.classList.remove("p0", "p1", "p2", "p3", "p4"), this.elPopup.classList.add("p" + t), this.options.posBy) {
731
+ case "left":
732
+ p = this.el.offsetLeft + parseInt(this.el.style["margin-left"] || "0"), p += this.shift.left, this.elPopup.style.left = p + "px";
733
+ break;
734
+ case "right":
735
+ if (!(this.el.offsetParent instanceof HTMLElement))
736
+ break;
737
+ p = this.el.offsetLeft + parseInt(this.el.style["margin-left"] || "0"), this.elPopup.style.right = this.el.offsetParent.offsetWidth - this.el.offsetWidth - p + "px";
738
+ break;
739
+ case "fixed":
740
+ this.addEventListenerWithUnmount(window, "resize", () => this.onResize()), this.onResize();
741
+ break;
742
+ default:
743
+ (m = this.options.posBy) == null || m.append(this.elPopup);
744
+ }
745
+ const o = this.elPopup.getBoundingClientRect();
746
+ this.elPopup.style.setProperty("--top-popup-height", this.elPopup.offsetHeight + "px"), this.elPopup.style.setProperty("--top-popup-right-bounding", o.right + "px"), this.elPopup.style.setProperty("--top-popup-bottom-bounding", o.bottom + "px"), this.elPopup.style.setProperty("--top-popup-top", o.top + "px"), this.elPopup.style.setProperty("--top-popup-left", o.left + "px"), this.elPopupInner instanceof HTMLElement && (this.elPopupInner.style.maxWidth = "unset", this.elPopupInner.style.maxHeight = "unset");
747
+ let e = !1, i = !1, s = !1, a = !1, n = o.left > window.innerWidth / 2, d = o.top > window.innerHeight / 2;
748
+ t === 4 && (n = !n), t === 1 && (d = !d);
749
+ const h = (b = this.elPopupInner) == null ? void 0 : b.getBoundingClientRect();
750
+ let u, c;
751
+ if (h) {
752
+ u = window.innerWidth - h.right, c = window.innerHeight - h.bottom;
753
+ const g = 8;
754
+ h.top < g && (e = !0), u < g && (i = !0), c < g && (s = !0), h.left < g && (a = !0);
755
+ }
756
+ e && (t === 0 || t === 1) && d && (t = 3), s && t === 3 && d && (t = 1), i && t === 2 && n && (t = 4), a && t === 4 && n && (t = 2), i && (t === 0 || t === 1 || t === 3) && this.elPopup.classList.add("invert-x"), s && (t === 2 || t === 4) && d && (t === 2 && !n && this.elPopup.classList.add("invert-y"), t === 4 && !n && this.elPopup.classList.add("invert-x"), this.elPopup.matches(".invert-y") || (t = 1)), this.elPopup.classList.remove("p0", "p1", "p2", "p3", "p4"), this.elPopup.classList.add("p" + t), this.elPopupInner instanceof HTMLElement && (this.elPopupInner.style.maxWidth = "", this.elPopupInner.style.maxHeight = ""), l.scrollToActive(this.elPopup);
757
+ }
758
+ onTouchmove(t) {
759
+ var p, o, e;
760
+ if (t.currentTarget instanceof HTMLElement && t.target instanceof HTMLElement) {
761
+ if (t.currentTarget.scrollWidth > t.currentTarget.offsetWidth || (p = t.target.parentElement) != null && p.scrollWidth && ((o = t.target.parentElement) != null && o.offsetWidth) && t.target.parentElement.scrollWidth > ((e = t.target.parentElement) == null ? void 0 : e.offsetWidth))
762
+ return;
763
+ t.currentTarget.matches(".has_scroll") || t.preventDefault();
764
+ }
765
+ }
766
+ close() {
767
+ var t;
768
+ this.isClosed || (this.isClosed = !0, this.$ && f.$ && this.elPopup && this.$.trigger("afterclose.top-menu-popup", [f.$(this.elPopup)]), !l.noClose && (this.unmount(), (t = this.elPopup) == null || t.classList.add("top-popup-wrapper-closed"), setTimeout(() => {
769
+ var e, i, s, a, n;
770
+ if (this.vueClose(), !this.elPopup)
771
+ return;
772
+ this.options.useOriginal ? (this.elPopup.removeAttribute("style"), this.elPopup.classList.remove("top-popup-wrapper-shown", "top-popup-wrapper-closed"), this.elPopup.classList.add("template"), (e = this.elStartPosition) == null || e.append(this.elPopup), (i = this.elPopup.querySelector("div.top-popup_content.top-column")) == null || i.classList.remove("top-column"), (s = this.elPopup.querySelector(".notch-border")) == null || s.remove(), (a = this.elPopup.querySelector(".notch")) == null || a.remove(), (n = this.elPopupInner) == null || n.replaceWith(...this.elPopupInner.childNodes), r.storageClear(this.elPopup)) : (r.storageClear(this.elPopup), this.elPopup.remove(), delete this.elPopup);
773
+ const p = l.getAllVisible(), o = p.length && p[p.length - 1];
774
+ o ? l.getPopup(o).focus() : document.documentElement.classList.remove("with_popup");
775
+ }, this.options.transitionDuration)));
776
+ }
777
+ async vueOpen() {
778
+ var t;
779
+ await ((t = this.vueGetComponent()) == null ? void 0 : t.onOpen(this));
780
+ }
781
+ vueClose() {
782
+ var t;
783
+ (t = this.vueGetComponent()) == null || t.onClose(this);
784
+ }
785
+ // получить vueConnectors компонента Popup
786
+ vueGetComponent() {
787
+ if (this.el instanceof HTMLElement)
788
+ return l.vueConnectors.get(this.el.dataset.topPopupId);
789
+ }
790
+ }
791
+ P.init();
792
+ export {
793
+ x as Popup,
794
+ x as default
795
+ };
796
+ //# sourceMappingURL=popup-CAjyI5nT.es.js.map