@topvisor/ui 0.0.41 → 0.0.43
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.chunks/datepicker-92744062.es.js +275 -0
- package/.chunks/datepicker-92744062.es.js.map +1 -0
- package/.chunks/datepicker-a9226b0f.amd.js +234 -0
- package/.chunks/datepicker-a9226b0f.amd.js.map +1 -0
- package/.chunks/{forms-7f061546.es.js → forms-727cc6aa.es.js} +51 -47
- package/.chunks/forms-727cc6aa.es.js.map +1 -0
- package/.chunks/forms-771091d4.amd.js +3 -0
- package/.chunks/forms-771091d4.amd.js.map +1 -0
- package/.chunks/{popup-05538243.es.js → popup-a622fe31.es.js} +429 -427
- package/.chunks/popup-a622fe31.es.js.map +1 -0
- package/.chunks/popup-de28e508.amd.js +377 -0
- package/.chunks/popup-de28e508.amd.js.map +1 -0
- package/README.md +80 -80
- package/assets/core.css +1 -1
- package/assets/forms.css +1 -1
- package/build/cssModules.d.ts +13 -0
- package/build/plugin/amdFix.d.ts +8 -0
- package/build/plugin/autoloadCSS.d.ts +19 -0
- package/build/rollup.config.d.ts +15 -0
- package/common/common.d.ts +1 -0
- package/core/core.amd.js +1 -1
- package/core/core.d.ts +3 -0
- package/core/core.js +1 -1
- package/forms/forms.amd.js +1 -1
- package/forms/forms.d.ts +1 -0
- package/forms/forms.js +1 -1
- package/forms/helpers.amd.js.map +1 -1
- package/forms/helpers.d.ts +1 -0
- package/forms/helpers.js.map +1 -1
- package/formsExt/formsExt.amd.js +1 -1
- package/formsExt/formsExt.amd.js.map +1 -1
- package/formsExt/formsExt.d.ts +1 -0
- package/formsExt/formsExt.js +1 -1
- package/formsExt/formsExt.js.map +1 -1
- package/icomoon/demo-files/demo.css +161 -161
- package/icomoon/demo-files/demo.js +30 -30
- package/icomoon/demo.html +2945 -2945
- package/icomoon/fonts/Topvisor-2.svg +232 -232
- package/icomoon/style.css +647 -647
- package/package.json +19 -19
- package/popup/popup.amd.js +1 -1
- package/popup/popup.amd.js.map +1 -1
- package/popup/popup.d.ts +1 -0
- package/popup/popup.js +17 -17
- package/popup/popup.js.map +1 -1
- package/popup/worker.amd.js +1 -1
- package/popup/worker.amd.js.map +1 -1
- package/popup/worker.d.ts +1 -0
- package/popup/worker.js +3 -2
- package/popup/worker.js.map +1 -1
- package/src/components/common/common.d.ts +0 -0
- package/src/components/common/icon/icon.d.ts +4 -0
- package/src/components/component.d.ts +25 -0
- package/src/components/forms/avatar/avatar.d.ts +29 -0
- package/src/components/forms/avatar/avatar.stories.d.ts +59 -0
- package/src/components/forms/avatar/avatar.vue.d.ts +26 -0
- package/src/components/forms/button/button.d.ts +40 -0
- package/src/components/forms/button/button.stories.d.ts +313 -0
- package/src/components/forms/button/button.vue.d.ts +39 -0
- package/src/components/forms/checkbox/checkbox.d.ts +22 -0
- package/src/components/forms/checkbox/checkbox.stories.d.ts +176 -0
- package/src/components/forms/checkbox/checkbox.vue.d.ts +23 -0
- package/src/components/forms/controlLabel/controlLabel.d.ts +4 -0
- package/src/components/forms/controlLabel/controlLabel.stories.d.ts +97 -0
- package/src/components/forms/controlLabel/controlLabel.vue.d.ts +19 -0
- package/src/components/forms/forms.d.ts +12 -0
- package/src/components/forms/helpers.d.ts +10 -0
- package/src/components/forms/hint/hint.d.ts +8 -0
- package/src/components/forms/hint/hint.stories.d.ts +138 -0
- package/src/components/forms/hint/hint.vue.d.ts +12 -0
- package/src/components/forms/input/input.d.ts +26 -0
- package/src/components/forms/input/input.stories.d.ts +255 -0
- package/src/components/forms/input/input.vue.d.ts +40 -0
- package/src/components/forms/inputDate/datepicker.d.ts +5 -0
- package/src/components/forms/inputDate/inputDate.d.ts +3 -0
- package/src/components/forms/inputDate/inputDate.stories.d.ts +108 -0
- package/src/components/forms/inputDate/inputDate.vue.d.ts +30 -0
- package/src/components/forms/inputRange/inputRange.d.ts +2 -0
- package/src/components/forms/inputRange/inputRange.stories.d.ts +405 -0
- package/src/components/forms/inputRange/inputRange.vue.d.ts +10 -0
- package/src/components/forms/radio/radio.d.ts +14 -0
- package/src/components/forms/radio/radio.stories.d.ts +168 -0
- package/src/components/forms/radio/radio.vue.d.ts +23 -0
- package/src/components/forms/select/select.d.ts +31 -0
- package/src/components/forms/select/select.stories.d.ts +83 -0
- package/src/components/forms/select/select.vue.d.ts +30 -0
- package/src/components/forms/select/stories/exampleOptions.d.ts +4 -0
- package/src/components/forms/switcher/switcher.d.ts +21 -0
- package/src/components/forms/switcher/switcher.stories.d.ts +163 -0
- package/src/components/forms/switcher/switcher.vue.d.ts +23 -0
- package/src/components/forms/textarea/textarea.d.ts +33 -0
- package/src/components/forms/textarea/textarea.stories.d.ts +88 -0
- package/src/components/forms/textarea/textarea.vue.d.ts +33 -0
- package/src/components/formsExt/editArea/editArea.d.ts +20 -0
- package/src/components/formsExt/editArea/editArea.stories.d.ts +140 -0
- package/src/components/formsExt/editArea/editArea.vue.d.ts +38 -0
- package/src/components/formsExt/editInput/editInput.d.ts +16 -0
- package/src/components/formsExt/editInput/editInput.stories.d.ts +129 -0
- package/src/components/formsExt/editInput/editInput.vue.d.ts +23 -0
- package/src/components/formsExt/formsExt.d.ts +3 -0
- package/src/components/formsExt/radioGroup/radioGroup.d.ts +22 -0
- package/src/components/formsExt/radioGroup/radioGroup.stories.d.ts +64 -0
- package/src/components/formsExt/radioGroup/radioGroup.vue.d.ts +30 -0
- package/src/components/helpersStories.d.ts +28 -0
- package/src/components/popup/popup/listItem.vue.d.ts +36 -0
- package/src/components/popup/popup/opener.vue.d.ts +39 -0
- package/src/components/popup/popup/popup.d.ts +79 -0
- package/src/components/popup/popup/popup.stories.d.ts +742 -0
- package/src/components/popup/popup/popup.vue.d.ts +52 -0
- package/src/components/popup/popup.d.ts +3 -0
- package/src/components/popup/worker.d.ts +2 -0
- package/src/components/tabs/tabs/content.vue.d.ts +19 -0
- package/src/components/tabs/tabs/tab.vue.d.ts +19 -0
- package/src/components/tabs/tabs/tabs.d.ts +19 -0
- package/src/components/tabs/tabs/tabs.stories.d.ts +774 -0
- package/src/components/tabs/tabs/tabs.vue.d.ts +21 -0
- package/src/components/tabs/tabs.d.ts +3 -0
- package/src/core/base/Colors.stories.d.ts +19 -0
- package/src/core/base/Layout.stories.d.ts +19 -0
- package/src/core/base/Properties.stories.d.ts +19 -0
- package/src/core/core/core.d.ts +58 -0
- package/src/core/core/events.d.ts +20 -0
- package/src/core/core/options.d.ts +13 -0
- package/src/core/core/page.d.ts +10 -0
- package/src/core/core/state.d.ts +34 -0
- package/src/core/directives/tooltip.d.ts +7 -0
- package/src/core/theme/Colors.stories.d.ts +19 -0
- package/src/core/theme/Properties.stories.d.ts +19 -0
- package/src/core/utils/date.d.ts +27 -0
- package/src/core/utils/device.d.ts +13 -0
- package/src/core/utils/dom.d.ts +98 -0
- package/src/core//320/235/320/260/320/261/320/276/321/200 /320/270/320/272/320/276/320/275/320/276/320/272//320/235/320/260/320/261/320/276/321/200 /320/270/320/272/320/276/320/275/320/276/320/272.stories.d.ts" +6 -0
- package/src/d.d.ts +4 -0
- package/src/resources/styles/core/core.d.ts +0 -0
- package/src/resources/styles/themes/dark.d.ts +0 -0
- package/src/resources/styles/themes/light.d.ts +0 -0
- package/src/storybook/components/icomoon.d.ts +2 -0
- package/tabs/tabs.amd.js +1 -1
- package/tabs/tabs.d.ts +1 -0
- package/tabs/tabs.js +1 -1
- package/utils/date.amd.js +1 -1
- package/utils/date.d.ts +3 -0
- package/utils/date.js +1 -1
- package/utils/device.amd.js +1 -1
- package/utils/device.d.ts +3 -0
- package/utils/device.js +1 -1
- package/utils/dom.amd.js +1 -1
- package/utils/dom.d.ts +3 -0
- package/utils/dom.js +1 -1
- package/.chunks/datepicker-7f54fd80.es.js +0 -275
- package/.chunks/datepicker-7f54fd80.es.js.map +0 -1
- package/.chunks/datepicker-858c1cb6.amd.js +0 -234
- package/.chunks/datepicker-858c1cb6.amd.js.map +0 -1
- package/.chunks/forms-7f061546.es.js.map +0 -1
- package/.chunks/forms-b9e5edd2.amd.js +0 -3
- package/.chunks/forms-b9e5edd2.amd.js.map +0 -1
- package/.chunks/popup-05538243.es.js.map +0 -1
- package/.chunks/popup-a531e9ad.amd.js +0 -377
- package/.chunks/popup-a531e9ad.amd.js.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { reactive as H, defineComponent as
|
|
1
|
+
import { reactive as H, defineComponent as g, useCssVars as X, computed as b, openBlock as u, createElementBlock as m, createElementVNode as w, createCommentVNode as v, createBlock as k, resolveDynamicComponent as x, normalizeClass as h, withCtx as B, renderSlot as $, createTextVNode as ee, toDisplayString as _, withDirectives as M, vModelCheckbox as J, mergeProps as D, withKeys as te, withModifiers as I, vModelText as Z, ref as oe, unref as S, onUnmounted as ae, vModelRadio as se, resolveDirective as ne, watch as ie, toRef as le, Fragment as F, renderList as N, vModelSelect as re } from "vue";
|
|
2
2
|
import("../core/core.js").then((s) => {
|
|
3
3
|
const e = ["../assets/forms.css"].map((a) => import.meta.resolve(a));
|
|
4
4
|
s.default.Page.addCss(e);
|
|
@@ -126,7 +126,7 @@ class P {
|
|
|
126
126
|
}
|
|
127
127
|
const ye = 100;
|
|
128
128
|
let j;
|
|
129
|
-
const W = /* @__PURE__ */ new Map(),
|
|
129
|
+
const W = /* @__PURE__ */ new Map(), L = {
|
|
130
130
|
width: window.innerWidth,
|
|
131
131
|
height: window.innerHeight
|
|
132
132
|
};
|
|
@@ -139,9 +139,9 @@ function $e(s) {
|
|
|
139
139
|
function _e(s) {
|
|
140
140
|
clearTimeout(j), j = setTimeout(function() {
|
|
141
141
|
s.topEvent = {
|
|
142
|
-
widthDiff:
|
|
143
|
-
hightDiff:
|
|
144
|
-
},
|
|
142
|
+
widthDiff: L.width - window.innerWidth,
|
|
143
|
+
hightDiff: L.height - window.innerHeight
|
|
144
|
+
}, L.width = window.innerWidth, L.height = window.innerHeight, W.forEach((e) => e(s));
|
|
145
145
|
}, ye);
|
|
146
146
|
}
|
|
147
147
|
window.addEventListener("resize", _e);
|
|
@@ -190,13 +190,13 @@ const Se = {
|
|
|
190
190
|
dateFormat: "Y-m-d",
|
|
191
191
|
// См. core.options
|
|
192
192
|
gmt: (Q = (/* @__PURE__ */ new Date()).toString().match(/GMT(\S+)/)) == null ? void 0 : Q[1]
|
|
193
|
-
},
|
|
193
|
+
}, z = window, A = (s) => {
|
|
194
194
|
var e, a;
|
|
195
|
-
if (!((a = (e =
|
|
195
|
+
if (!((a = (e = z == null ? void 0 : z.jQuery) == null ? void 0 : e.ui) != null && a.tooltip)) {
|
|
196
196
|
console.info("Для работы v-top-tooltip требуется глобальная загрузка jQuery UI Tooltip");
|
|
197
197
|
return;
|
|
198
198
|
}
|
|
199
|
-
return
|
|
199
|
+
return z.jQuery(s);
|
|
200
200
|
}, Y = (s, e) => {
|
|
201
201
|
var n;
|
|
202
202
|
const a = s.value ?? {};
|
|
@@ -371,7 +371,7 @@ class V {
|
|
|
371
371
|
return d.match(/\d\d\d\d-\d\d-\d\d/) || (console.info("Неверный формат даты, будет возращена текущая дата, " + d), d = this.ms2Date((/* @__PURE__ */ new Date()).getTime(), !1).substring(0, 10)), d;
|
|
372
372
|
}
|
|
373
373
|
}
|
|
374
|
-
const Be = { class: "top-avatar" }, Ee = ["src", "title"],
|
|
374
|
+
const Be = { class: "top-avatar" }, Ee = ["src", "title"], Le = ["title"], ze = /* @__PURE__ */ g({
|
|
375
375
|
__name: "avatar",
|
|
376
376
|
props: {
|
|
377
377
|
size: { default: 64 },
|
|
@@ -382,7 +382,7 @@ const Be = { class: "top-avatar" }, Ee = ["src", "title"], ze = ["title"], Le =
|
|
|
382
382
|
},
|
|
383
383
|
setup(s) {
|
|
384
384
|
X((o) => ({
|
|
385
|
-
"
|
|
385
|
+
"4ca8e42a": o.size + "px"
|
|
386
386
|
}));
|
|
387
387
|
const e = s, a = {
|
|
388
388
|
user: {
|
|
@@ -407,21 +407,24 @@ ${n.value}` : ""),
|
|
|
407
407
|
key: 0,
|
|
408
408
|
class: "top-avatar_status",
|
|
409
409
|
title: n.value
|
|
410
|
-
}, null, 8,
|
|
410
|
+
}, null, 8, Le)) : v("", !0)
|
|
411
411
|
]));
|
|
412
412
|
}
|
|
413
413
|
}), De = {
|
|
414
414
|
"top-avatar": "top-avatar",
|
|
415
415
|
"top-avatar_image": "top-avatar_image",
|
|
416
416
|
"top-avatar_status": "top-avatar_status"
|
|
417
|
-
},
|
|
417
|
+
}, y = (s, e) => {
|
|
418
418
|
const a = s.__vccOpts || s;
|
|
419
419
|
for (const [n, o] of e)
|
|
420
420
|
a[n] = o;
|
|
421
421
|
return a;
|
|
422
422
|
}, Ce = {
|
|
423
423
|
$style: De
|
|
424
|
-
}, Pt = /* @__PURE__ */
|
|
424
|
+
}, Pt = /* @__PURE__ */ y(ze, [["__cssModules", Ce]]), Re = {
|
|
425
|
+
key: 0,
|
|
426
|
+
class: "top-ellipsis"
|
|
427
|
+
}, Fe = /* @__PURE__ */ g({
|
|
425
428
|
__name: "button",
|
|
426
429
|
props: {
|
|
427
430
|
color: { default: "blue" },
|
|
@@ -460,16 +463,16 @@ ${n.value}` : ""),
|
|
|
460
463
|
inProgress: o.isProgress
|
|
461
464
|
}, {
|
|
462
465
|
default: B(() => [
|
|
463
|
-
|
|
466
|
+
o.$slots.default ? (u(), m("span", Re, [
|
|
464
467
|
$(o.$slots, "default", {}, () => [
|
|
465
468
|
ee(_(o.icon ? "" : "Button"), 1)
|
|
466
469
|
])
|
|
467
|
-
])
|
|
470
|
+
])) : v("", !0)
|
|
468
471
|
]),
|
|
469
472
|
_: 3
|
|
470
473
|
}, 8, ["class", "name", "title", "href", "type", "data-top-icon", "data-top-icon2", "disabled", "inProgress"]));
|
|
471
474
|
}
|
|
472
|
-
}), Te = "
|
|
475
|
+
}), Te = "_progress_1f1nw_1", Ae = {
|
|
473
476
|
"top-button": "top-button",
|
|
474
477
|
"top-active": "top-active",
|
|
475
478
|
"top-button-progress": "top-button-progress",
|
|
@@ -482,11 +485,12 @@ ${n.value}` : ""),
|
|
|
482
485
|
"top-color_theme": "top-color_theme",
|
|
483
486
|
"top-style_outline": "top-style_outline",
|
|
484
487
|
"top-style_soft": "top-style_soft",
|
|
488
|
+
"top-style_transparent": "top-style_transparent",
|
|
485
489
|
"top-size_l": "top-size_l",
|
|
486
490
|
"top-size_xl": "top-size_xl"
|
|
487
491
|
}, Oe = {
|
|
488
492
|
$style: Ae
|
|
489
|
-
}, Wt = /* @__PURE__ */
|
|
493
|
+
}, Wt = /* @__PURE__ */ y(Fe, [["__cssModules", Oe]]), Pe = { class: "top-forms-optionLabel" }, We = /* @__PURE__ */ g({
|
|
490
494
|
__name: "controlLabel",
|
|
491
495
|
props: {
|
|
492
496
|
description: {},
|
|
@@ -505,7 +509,7 @@ ${n.value}` : ""),
|
|
|
505
509
|
e.description ? (u(), m("div", {
|
|
506
510
|
key: 0,
|
|
507
511
|
class: h(["top-forms-optionLabel_description", { "top-forms-optionLabel_description-disabled": e.disabled }])
|
|
508
|
-
}, _(e.description), 3)) :
|
|
512
|
+
}, _(e.description), 3)) : v("", !0)
|
|
509
513
|
]));
|
|
510
514
|
}
|
|
511
515
|
}), Ue = {
|
|
@@ -516,7 +520,7 @@ ${n.value}` : ""),
|
|
|
516
520
|
"top-forms-optionLabel_description-disabled": "top-forms-optionLabel_description-disabled"
|
|
517
521
|
}, He = {
|
|
518
522
|
$style: Ue
|
|
519
|
-
}, U = /* @__PURE__ */
|
|
523
|
+
}, U = /* @__PURE__ */ y(We, [["__cssModules", He]]), Ie = ["name", "value", "indeterminate", "disabled"], Ne = /* @__PURE__ */ g({
|
|
520
524
|
__name: "checkbox",
|
|
521
525
|
props: {
|
|
522
526
|
modelValue: { type: [Boolean, Array, Set] },
|
|
@@ -571,7 +575,7 @@ ${n.value}` : ""),
|
|
|
571
575
|
$(t.$slots, "default")
|
|
572
576
|
]),
|
|
573
577
|
_: 3
|
|
574
|
-
}, 8, ["description", "disabled"])) :
|
|
578
|
+
}, 8, ["description", "disabled"])) : v("", !0)
|
|
575
579
|
], 2));
|
|
576
580
|
}
|
|
577
581
|
}), je = {
|
|
@@ -580,7 +584,7 @@ ${n.value}` : ""),
|
|
|
580
584
|
"top-error": "top-error"
|
|
581
585
|
}, Ye = {
|
|
582
586
|
$style: je
|
|
583
|
-
}, Ut = /* @__PURE__ */
|
|
587
|
+
}, Ut = /* @__PURE__ */ y(Ne, [["__cssModules", Ye]]), qe = ["title"], Ge = /* @__PURE__ */ g({
|
|
584
588
|
__name: "hint",
|
|
585
589
|
props: {
|
|
586
590
|
hint: {}
|
|
@@ -596,10 +600,10 @@ ${n.value}` : ""),
|
|
|
596
600
|
"top-hint": "top-hint"
|
|
597
601
|
}, Qe = {
|
|
598
602
|
$style: Ke
|
|
599
|
-
}, Xe = /* @__PURE__ */
|
|
603
|
+
}, Xe = /* @__PURE__ */ y(Ge, [["__cssModules", Qe]]), Je = ["data-top-icon", "data-top-icon2"], Ze = ["name", "title", "placeholder", "disabled", "readonly"], xe = ["onClick"], et = {
|
|
600
604
|
key: 1,
|
|
601
605
|
class: "top-formsCaption"
|
|
602
|
-
}, tt = /* @__PURE__ */
|
|
606
|
+
}, tt = /* @__PURE__ */ g({
|
|
603
607
|
inheritAttrs: !1,
|
|
604
608
|
__name: "input",
|
|
605
609
|
props: {
|
|
@@ -665,8 +669,8 @@ ${n.value}` : ""),
|
|
|
665
669
|
class: "top-input_cleaner",
|
|
666
670
|
"data-top-icon": "",
|
|
667
671
|
onClick: I(r, ["prevent"])
|
|
668
|
-
}, null, 8, xe)) :
|
|
669
|
-
i.captionType !== "" ? (u(), m("span", et, _(i.title), 1)) :
|
|
672
|
+
}, null, 8, xe)) : v("", !0),
|
|
673
|
+
i.captionType !== "" ? (u(), m("span", et, _(i.title), 1)) : v("", !0),
|
|
670
674
|
$(i.$slots, "default")
|
|
671
675
|
], 10, Je));
|
|
672
676
|
}
|
|
@@ -677,10 +681,10 @@ ${n.value}` : ""),
|
|
|
677
681
|
"top-input_cleaner": "top-input_cleaner"
|
|
678
682
|
}, at = {
|
|
679
683
|
$style: ot
|
|
680
|
-
}, q = /* @__PURE__ */
|
|
684
|
+
}, q = /* @__PURE__ */ y(tt, [["__cssModules", at]]), st = ["modelValue"], nt = !!document.documentElement.ontouchstart && !!document.createElement("input").showPicker;
|
|
681
685
|
let G = (s) => {
|
|
682
686
|
};
|
|
683
|
-
const it = /* @__PURE__ */
|
|
687
|
+
const it = /* @__PURE__ */ g({
|
|
684
688
|
__name: "inputDate",
|
|
685
689
|
props: {
|
|
686
690
|
modelValue: {},
|
|
@@ -717,7 +721,7 @@ const it = /* @__PURE__ */ v({
|
|
|
717
721
|
t.value = d.target.value;
|
|
718
722
|
};
|
|
719
723
|
async function l(d) {
|
|
720
|
-
const f = await import("./datepicker-
|
|
724
|
+
const f = await import("./datepicker-92744062.es.js");
|
|
721
725
|
G = f.oninput;
|
|
722
726
|
const c = f.connectDatepicker(d.target, {
|
|
723
727
|
onSelect: () => i(d)
|
|
@@ -755,7 +759,7 @@ const it = /* @__PURE__ */ v({
|
|
|
755
759
|
"top-input_input-date": "top-input_input-date"
|
|
756
760
|
}, rt = {
|
|
757
761
|
$style: lt
|
|
758
|
-
}, Ht = /* @__PURE__ */
|
|
762
|
+
}, Ht = /* @__PURE__ */ y(it, [["__cssModules", rt]]), dt = { class: "top-inputRange" }, pt = /* @__PURE__ */ w("span", { class: "top-inputRange_dash" }, " — ", -1), ut = /* @__PURE__ */ g({
|
|
759
763
|
__name: "inputRange",
|
|
760
764
|
setup(s) {
|
|
761
765
|
return (e, a) => (u(), m("div", dt, [
|
|
@@ -770,7 +774,7 @@ const it = /* @__PURE__ */ v({
|
|
|
770
774
|
"top-input": "top-input"
|
|
771
775
|
}, mt = {
|
|
772
776
|
$style: ct
|
|
773
|
-
}, It = /* @__PURE__ */
|
|
777
|
+
}, It = /* @__PURE__ */ y(ut, [["__cssModules", mt]]), ft = ["name", "value", "disabled"], bt = /* @__PURE__ */ g({
|
|
774
778
|
__name: "radio",
|
|
775
779
|
props: {
|
|
776
780
|
modelValue: {},
|
|
@@ -823,7 +827,7 @@ const it = /* @__PURE__ */ v({
|
|
|
823
827
|
$(t.$slots, "default")
|
|
824
828
|
]),
|
|
825
829
|
_: 3
|
|
826
|
-
}, 8, ["description", "disabled"])) :
|
|
830
|
+
}, 8, ["description", "disabled"])) : v("", !0)
|
|
827
831
|
], 2));
|
|
828
832
|
}
|
|
829
833
|
}), ht = {
|
|
@@ -832,7 +836,7 @@ const it = /* @__PURE__ */ v({
|
|
|
832
836
|
"top-error": "top-error"
|
|
833
837
|
}, vt = {
|
|
834
838
|
$style: ht
|
|
835
|
-
}, Nt = /* @__PURE__ */
|
|
839
|
+
}, Nt = /* @__PURE__ */ y(bt, [["__cssModules", vt]]), gt = ["name", "value", "disabled"], yt = /* @__PURE__ */ g({
|
|
836
840
|
__name: "switcher",
|
|
837
841
|
props: {
|
|
838
842
|
modelValue: { type: [Boolean, Array, Set] },
|
|
@@ -884,7 +888,7 @@ const it = /* @__PURE__ */ v({
|
|
|
884
888
|
$(t.$slots, "default")
|
|
885
889
|
]),
|
|
886
890
|
_: 3
|
|
887
|
-
}, 8, ["description", "disabled"])) :
|
|
891
|
+
}, 8, ["description", "disabled"])) : v("", !0)
|
|
888
892
|
], 2));
|
|
889
893
|
}
|
|
890
894
|
}), wt = {
|
|
@@ -893,10 +897,10 @@ const it = /* @__PURE__ */ v({
|
|
|
893
897
|
"top-error": "top-error"
|
|
894
898
|
}, $t = {
|
|
895
899
|
$style: wt
|
|
896
|
-
}, jt = /* @__PURE__ */
|
|
900
|
+
}, jt = /* @__PURE__ */ y(yt, [["__cssModules", $t]]), _t = ["name", "placeholder", "disabled", "readonly", "rows"], kt = {
|
|
897
901
|
key: 0,
|
|
898
902
|
class: "top-textarea_pseudoContent"
|
|
899
|
-
}, Mt = /* @__PURE__ */
|
|
903
|
+
}, Mt = /* @__PURE__ */ g({
|
|
900
904
|
inheritAttrs: !1,
|
|
901
905
|
__name: "textarea",
|
|
902
906
|
props: {
|
|
@@ -914,7 +918,7 @@ const it = /* @__PURE__ */ v({
|
|
|
914
918
|
emits: ["update:modelValue"],
|
|
915
919
|
setup(s, { emit: e }) {
|
|
916
920
|
X((t) => ({
|
|
917
|
-
|
|
921
|
+
c838a038: t.minHeight + "px"
|
|
918
922
|
}));
|
|
919
923
|
const a = s, n = e, o = b({
|
|
920
924
|
get() {
|
|
@@ -952,14 +956,14 @@ const it = /* @__PURE__ */ v({
|
|
|
952
956
|
}), null, 16, _t), [
|
|
953
957
|
[Z, o.value]
|
|
954
958
|
]),
|
|
955
|
-
t.expandable ? (u(), m("div", kt, _(o.value + " "), 1)) :
|
|
959
|
+
t.expandable ? (u(), m("div", kt, _(o.value + " "), 1)) : v("", !0),
|
|
956
960
|
t.hint ? M((u(), k(Xe, {
|
|
957
961
|
key: 1,
|
|
958
962
|
class: "top-textarea_hint",
|
|
959
963
|
hint: t.hint
|
|
960
964
|
}, null, 8, ["hint"])), [
|
|
961
965
|
[i]
|
|
962
|
-
]) :
|
|
966
|
+
]) : v("", !0)
|
|
963
967
|
], 2);
|
|
964
968
|
};
|
|
965
969
|
}
|
|
@@ -971,10 +975,10 @@ const it = /* @__PURE__ */ v({
|
|
|
971
975
|
"top-textarea_hint": "top-textarea_hint"
|
|
972
976
|
}, Vt = {
|
|
973
977
|
$style: St
|
|
974
|
-
}, Yt = /* @__PURE__ */
|
|
978
|
+
}, Yt = /* @__PURE__ */ y(Mt, [["__cssModules", Vt]]), Bt = ["data-value", "data-top-icon", "data-top-icon2"], Et = ["name", "disabled"], Lt = ["label", "disabled"], zt = ["value", "selected", "disabled"], Dt = ["value", "selected", "disabled"], Ct = {
|
|
975
979
|
key: 1,
|
|
976
980
|
class: "top-formsCaption"
|
|
977
|
-
}, Rt = /* @__PURE__ */
|
|
981
|
+
}, Rt = /* @__PURE__ */ g({
|
|
978
982
|
__name: "select",
|
|
979
983
|
props: {
|
|
980
984
|
modelValue: {},
|
|
@@ -1058,8 +1062,8 @@ const it = /* @__PURE__ */ v({
|
|
|
1058
1062
|
value: E.value,
|
|
1059
1063
|
selected: E.value === o.value,
|
|
1060
1064
|
disabled: E.disabled
|
|
1061
|
-
}, _(E.title), 9,
|
|
1062
|
-
], 8,
|
|
1065
|
+
}, _(E.title), 9, zt))), 128))
|
|
1066
|
+
], 8, Lt)) : (u(), m("option", {
|
|
1063
1067
|
key: c.value,
|
|
1064
1068
|
value: c.value,
|
|
1065
1069
|
selected: c.value === o.value,
|
|
@@ -1073,8 +1077,8 @@ const it = /* @__PURE__ */ v({
|
|
|
1073
1077
|
key: 0,
|
|
1074
1078
|
class: "top-changer",
|
|
1075
1079
|
onClick: i
|
|
1076
|
-
})) :
|
|
1077
|
-
l.title ? (u(), m("span", Ct, _(l.title), 1)) :
|
|
1080
|
+
})) : v("", !0),
|
|
1081
|
+
l.title ? (u(), m("span", Ct, _(l.title), 1)) : v("", !0)
|
|
1078
1082
|
], 10, Bt));
|
|
1079
1083
|
}
|
|
1080
1084
|
}), Ft = {
|
|
@@ -1084,7 +1088,7 @@ const it = /* @__PURE__ */ v({
|
|
|
1084
1088
|
"top-changer": "top-changer"
|
|
1085
1089
|
}, Tt = {
|
|
1086
1090
|
$style: Ft
|
|
1087
|
-
}, qt = /* @__PURE__ */
|
|
1091
|
+
}, qt = /* @__PURE__ */ y(Rt, [["__cssModules", Tt]]);
|
|
1088
1092
|
export {
|
|
1089
1093
|
Wt as B,
|
|
1090
1094
|
p as C,
|
|
@@ -1094,7 +1098,7 @@ export {
|
|
|
1094
1098
|
q as I,
|
|
1095
1099
|
Yt as T,
|
|
1096
1100
|
V as U,
|
|
1097
|
-
|
|
1101
|
+
y as _,
|
|
1098
1102
|
T as a,
|
|
1099
1103
|
Pt as b,
|
|
1100
1104
|
Ut as c,
|
|
@@ -1105,4 +1109,4 @@ export {
|
|
|
1105
1109
|
Nt as r,
|
|
1106
1110
|
jt as s
|
|
1107
1111
|
};
|
|
1108
|
-
//# sourceMappingURL=forms-
|
|
1112
|
+
//# sourceMappingURL=forms-727cc6aa.es.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"forms-727cc6aa.es.js","sources":["../../src/core/utils/device.ts","../../src/core/utils/dom.ts","../../src/core/core/page.ts","../../src/core/core/events.ts","../../src/core/core/options.ts","../../src/core/core/state.ts","../../src/core/directives/tooltip.ts","../../src/core/core/core.ts","../../src/core/utils/date.ts","../../src/components/forms/avatar/avatar.vue","../../src/components/forms/button/button.vue","../../src/components/forms/checkbox/checkbox.vue","../../src/components/forms/input/input.vue","../../src/components/forms/inputDate/inputDate.vue","../../src/components/forms/radio/radio.vue","../../src/components/forms/switcher/switcher.vue","../../src/components/forms/textarea/textarea.vue","../../src/components/forms/select/select.vue"],"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","/**\r\n * Функции для работы с работы с Document Object Model (DOM)\r\n */\r\n\r\n/**\r\n * Создать элемент\r\n * @param {string} tagName\r\n * @param {any} attrs - атрибуты\r\n * @param {Element[]} elsChildrens\r\n * @returns {Element} - созданный элемент\r\n */\r\nfunction genEl (tagName: string, attrs: any, ...elsChildrens: Element[]): Element {\r\n\tconst el: any = document.createElement(tagName);\r\n\r\n\tfor (const name in attrs) {\r\n\t\tif (name.indexOf('on') === 0) {\r\n\t\t\t// events\r\n\t\t\tel[name] = attrs[name];\r\n\t\t} else {\r\n\t\t\tel.setAttribute(name, attrs[name]);\r\n\t\t}\r\n\t}\r\n\r\n\telsChildrens.forEach((elChildren) => {\r\n\t\tif (typeof (elChildren) === 'string') {\r\n\t\t\tel.insertAdjacentHTML('beforeend', elChildren);\r\n\t\t} else {\r\n\t\t\tel.append(elChildren);\r\n\t\t}\r\n\t});\r\n\r\n\treturn el;\r\n}\r\n\r\n/**\r\n * Проверить видимость элемента\r\n * @param {?Element} el\r\n * @returns boolean - вернет true, если элемент считается видимым\r\n */\r\nfunction isVisible (el?: Element) {\r\n\tif (!el) {\r\n\t\treturn false;\r\n\t}\r\n\r\n\tconst boundingClientRect = el.getBoundingClientRect();\r\n\treturn !!(boundingClientRect.width || boundingClientRect.height);\r\n}\r\n\r\n/**\r\n * Получить координаты элемента относительно документа\r\n * @param {Element} el\r\n * @returns {{top: number, left: number}} - координаты элемента относительно документа\r\n */\r\nfunction offset (el: Element): { top: number, left: number } {\r\n\tconst boundingClientRect = el.getBoundingClientRect();\r\n\r\n\treturn {\r\n\t\ttop: boundingClientRect.top + window.scrollY,\r\n\t\tleft: boundingClientRect.left + window.scrollX,\r\n\t};\r\n}\r\n\r\n/**\r\n * Получить значение css свойства элемента\r\n * @param {Element} el\r\n * @param {string} property - имя свойства\r\n * @return {string} - значение css стиля\r\n */\r\nfunction css (el: Element, property: string): string {\r\n\treturn window.getComputedStyle(el).getPropertyValue(property);\r\n}\r\n\r\n/**\r\n * Обернуть элемент и вернуть только что созданный элемент\r\n * @param {Element} el - элемент, который требуется обернуть\r\n * @param {string} tagName - имя тега элемента, в который треубется обернуть элемент\r\n * @returns {Element}\r\n */\r\nfunction wrap (el: Element, tagName: string): Element {\r\n\tconst elWrapper = document.createElement(tagName);\r\n\tel.after(elWrapper);\r\n\r\n\telWrapper.append(el);\r\n\r\n\treturn elWrapper;\r\n}\r\n\r\n/**\r\n * Найти и вернуть первый видимый элемент\r\n * @param {?Document|Element} el - корневой элемент поиска\r\n * @param selectors - см. параметр selectors в Document.querySelectorAll()\r\n * @returns {Element|null}\r\n */\r\nfunction querySelectorVisible (el: Element, selectors: string): Element | null {\r\n\treturn querySelectorAllArray(el, selectors).find(isVisible) || null;\r\n}\r\n\r\n/**\r\n * Найти и вернуть последний видимый элемент\r\n * @param {?Document|Element} el - корневой элемент поиска\r\n * @param selectors - см. параметр selectors в Document.querySelectorAll()\r\n * @returns {Element|null}\r\n */\r\nfunction querySelectorVisibleLast (el: Element, selectors: string): Element | null {\r\n\treturn querySelectorAllArray(el, selectors).findLast(isVisible) || null;\r\n}\r\n\r\n/**\r\n * Найти видимые элементы\r\n * @param {?Document|Element} el - корневой элемент поиска\r\n * @param selectors - см. параметр selectors в Document.querySelectorAll()\r\n * @returns {Element[]} - обратите внимание, возвращается не NodeList[], а Element[]\r\n */\r\nfunction querySelectorAllVisible (el: Element, selectors: string): Element[] {\r\n\treturn querySelectorAllArray(el, selectors).filter(isVisible);\r\n}\r\n\r\n/**\r\n * Найти элементы и вернуть в виде массива\r\n * @param {?Document|Element} el - корневой элемент поиска\r\n * @param selectors - см. параметр selectors в Document.querySelectorAll()\r\n * @returns {Element[]}\r\n */\r\nfunction querySelectorAllArray (el: Element, selectors: string): Element[] {\r\n\tif (!el) {\r\n\t\treturn [];\r\n\t}\r\n\r\n\treturn [...el.querySelectorAll(selectors)];\r\n}\r\n\r\n/**\r\n * Хранилище данных элемента\r\n * @param {Element} el\r\n * @param {string} contextName - контекст, обычно используется имя компонента\r\n * @param {?object | null} contextData - установить объект с данными, предыдущие данные будут заменены, установите null для удаления данных\r\n * @returns {?object} - вернет объект контекста или undefined, если данные контекста не найдены\r\n */\r\nfunction storage (\r\n\tel?: Element & { topData?: any },\r\n\tcontextName: string = 'common', contextData: object | null | undefined = undefined,\r\n): object | undefined {\r\n\tif (!el) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tif (!el.topData) {\r\n\t\tel.topData = {};\r\n\t}\r\n\r\n\tif (contextData) {\r\n\t\tel.topData[contextName] = contextData;\r\n\t}\r\n\r\n\tif (contextData === null) {\r\n\t\tdelete el.topData[contextName];\r\n\t}\r\n\r\n\treturn el.topData[contextName];\r\n}\r\n\r\n/**\r\n * Очистить хранилище элемента\r\n */\r\nfunction storageClear (el?: Element & { topData?: any }) {\r\n\tif (!el) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tdelete el.topData;\r\n}\r\n\r\nexport default {\r\n\tgenEl,\r\n\tisVisible,\r\n\toffset,\r\n\tcss,\r\n\twrap,\r\n\tquerySelectorVisible,\r\n\tquerySelectorVisibleLast,\r\n\tquerySelectorAllVisible,\r\n\tquerySelectorAllArray,\r\n\tstorage,\r\n\tstorageClear,\r\n};\r\n","import Dom from '@/core/utils/dom';\r\n\r\nclass Page {\r\n\r\n\t/**\r\n\t * Вставить css стили на страницу с автоматическим определением media\r\n\t * @param fileNames - список ссылок на css файлы\r\n\t * @param props - атрибуты <link>\r\n\t */\r\n\tstatic addCss(fileNames: Array<String>, props: any = {}) {\r\n\t\tconst cssFilesByOptions = new Map();\r\n\t\tcssFilesByOptions.set('::', []);\r\n\r\n\t\tfileNames.forEach(filename => {\r\n\t\t\tlet m = false;\r\n\t\t\tlet pc = false;\r\n\r\n\t\t\tif (filename.match(/\\.m\\./)) {\r\n\t\t\t\tm = true;\r\n\t\t\t}\r\n\t\t\tif (filename.match(/\\.pc\\./)) {\r\n\t\t\t\tpc = true;\r\n\t\t\t}\r\n\r\n\t\t\tconst key = `${m}:${pc}`;\r\n\t\t\tif (!cssFilesByOptions.has(key)) {\r\n\t\t\t\tcssFilesByOptions.set(`${m}:${pc}`, []);\r\n\t\t\t}\r\n\t\t\tcssFilesByOptions.get(`${m}:${pc}`).push(filename);\r\n\t\t});\r\n\r\n\t\tcssFilesByOptions.forEach((fileNames, options: string) => {\r\n\t\t\tif (!fileNames.length) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst [m, pc] = options.split(':').map(item => item === 'true');\r\n\r\n\t\t\tlet media = 'all';\r\n\t\t\tif (m) {\r\n\t\t\t\tmedia = '(max-width: 900px)';\r\n\t\t\t}\r\n\t\t\tif (pc) {\r\n\t\t\t\tmedia = '(min-width: 900px)';\r\n\t\t\t}\r\n\r\n\t\t\tprops.media = media;\r\n\r\n\t\t\tPage._addCss(fileNames, props);\r\n\t\t});\r\n\t}\r\n\r\n\tstatic _addCss(fileNames: Array<String>, props: any) {\r\n\t\tfileNames.forEach(fileName => {\r\n\t\t\tprops.id ??= 'topCSSLink-' + fileName.replace(/\\W/g, '-');\r\n\r\n\t\t\t// стиль уже загружен\r\n\t\t\tif(window[props.id]) return;\r\n\r\n\t\t\tprops.rel = 'stylesheet';\r\n\t\t\tprops.href = fileName;\r\n\r\n\t\t\tconst elLink = Dom.genEl('link', props);\r\n\t\t\tdocument.head.append(elLink);\r\n\t\t});\r\n\t}\r\n\r\n}\r\n\r\nexport default Page;","const onResizeDelay = 100;\r\n\r\nlet onResizeTimer: NodeJS.Timeout;\r\n\r\ntype TopEvent = Event & { topEvent: { widthDiff: number, hightDiff: number } }\r\n\r\n/**\r\n * Установленные обрабочики на событие изменения размеров окна\r\n */\r\nconst onResizeListeners: Map<(ev: TopEvent) => any, (ev: TopEvent) => any> = new Map();\r\n\r\n// зафиксированное состояние размеров окна\r\nconst windowSize = {\r\n\twidth: window.innerWidth,\r\n\theight: window.innerHeight,\r\n};\r\n\r\n/**\r\n * Добавить обработчик на событие изменения размеров экрана\r\n * вызов таких обработчиков будет опмизирован и объединен в одно событие\r\n */\r\nfunction addOnReize (listener: (this: Element, ev: TopEvent) => any) {\r\n\tonResizeListeners.set(listener, listener);\r\n}\r\n\r\n/**\r\n * Удаление обработчика на событие изменений размеров экрана\r\n */\r\nfunction removeOnResize (listener: (this: Element, ev: TopEvent) => any) {\r\n\tonResizeListeners.delete(listener);\r\n}\r\n\r\nfunction onResize (e: any) {\r\n\tclearTimeout(onResizeTimer);\r\n\r\n\tonResizeTimer = setTimeout(function () {\r\n\t\te.topEvent = {\r\n\t\t\twidthDiff: windowSize.width - window.innerWidth,\r\n\t\t\thightDiff: windowSize.height - window.innerHeight,\r\n\t\t};\r\n\r\n\t\twindowSize.width = window.innerWidth;\r\n\t\twindowSize.height = window.innerHeight;\r\n\r\n\t\tonResizeListeners.forEach((callback) => callback(e));\r\n\t}, onResizeDelay);\r\n}\r\n\r\nwindow.addEventListener('resize', onResize);\r\n\r\nexport default {\r\n\taddOnReize,\r\n\tremoveOnResize,\r\n};\r\n","/**\r\n * Конфигурация UI\r\n * Можно переопределить при подклчюении UI во Vue приложение через app.use(Core, options)\r\n */\r\nconst options = {\r\n\twidthForMobile: 900,\r\n\tdateFormat: 'Y-m-d',\r\n\r\n\t/**\r\n\t * Для Москвы: +0300\r\n\t */\r\n\tgmt: new Date().toString().match(/GMT(\\S+)/)?.[1],\r\n};\r\n\r\nexport default options;","/**\r\n * State UI для взаимодейсвтиями с приложениями Vue\r\n */\r\nconst state = {\r\n\t/**\r\n\t * Device by size\r\n\t * @see widthForMobile\r\n\t */\r\n\tisMobile: false,\r\n\r\n\t/**\r\n\t * Device by user agent\r\n\t */\r\n\tisMobileUA: false,\r\n\r\n\t/**\r\n\t * true, если плотность пикселей экрана больше 1\r\n\t */\r\n\tisRetina: false,\r\n\r\n\t/**\r\n\t * true, елси это приложение\r\n\t */\r\n\tisApp: false,\r\n\r\n\t/**\r\n\t * true при горизонтальном расположении устройства\r\n\t */\r\n\tisLandscape: true,\r\n\r\n\t/**\r\n\t * true при вертикальном расположении устройства\r\n\t */\r\n\tisPortrait: false,\r\n\tsize: 0,\r\n\r\n\t// См. core.options\r\n\tdateFormat: 'Y-m-d',\r\n\r\n\t// См. core.options\r\n\tgmt: new Date().toString().match(/GMT(\\S+)/)?.[1],\r\n};\r\n\r\nexport default state;","import type { DirectiveBinding, ObjectDirective, VNode } from 'vue';\r\n\r\nconst _window: any = window;\r\n\r\nconst $ = (el: VNode) => {\r\n\tif (!_window?.jQuery?.ui?.tooltip) {\r\n\t\tconsole.info('Для работы v-top-tooltip требуется глобальная загрузка jQuery UI Tooltip');\r\n\r\n\t\treturn;\r\n\t}\r\n\r\n\treturn _window.jQuery(el);\r\n};\r\n\r\nconst tvTooltipGenOptions = (binding: DirectiveBinding, vnode: VNode) => {\r\n\tconst options = binding.value ?? {};\r\n\r\n\toptions.content ??= vnode.props?.title;\r\n\toptions.content = String(options.content).replace(/\\r\\n|\\r|\\n/g, '<br>');\r\n\r\n\toptions.position ??= {\r\n\t\tmy: 'bottom-18px',\r\n\t\tat: 'top center',\r\n\t};\r\n\r\n\treturn options;\r\n};\r\n\r\nconst tooltip = {\r\n\tmounted(el: VNode, binding: DirectiveBinding, vnode: VNode) {\r\n\t\t$(el)?.tooltip(tvTooltipGenOptions(binding, vnode));\r\n\t},\r\n\r\n\tupdated(el: VNode, binding: DirectiveBinding, vnode: VNode, _prevVnode: VNode) {\r\n\t\t/**\r\n\t\t * В результате обновления может быть открыто несколько тултипов поэтому изменить опции, без перерисовки тултипа\r\n\t\t */\r\n\t\tconst options = tvTooltipGenOptions(binding, vnode);\r\n\t\tconst instance = $(el)?.tooltip('instance');\r\n\t\tif (!instance) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tinstance.options = {\r\n\t\t\t...instance.options,\r\n\t\t\t...options,\r\n\t\t};\r\n\t},\r\n\r\n\tunmounted(el: VNode, binding: DirectiveBinding, vnode: VNode) {\r\n\t\t$(el)?.tooltip('destroy');\r\n\t},\r\n} satisfies ObjectDirective;\r\n\r\nexport default tooltip;","import { reactive } from 'vue';\r\nimport Device from '@/core/utils/device';\r\nimport Page from '@/core/core/page';\r\nimport Events from '@/core/core/events';\r\nimport options from '@/core/core/options';\r\nimport state from '@/core/core/state';\r\nimport directiveTooltip from '@/core/directives/tooltip';\r\n\r\nconst _window: any = window;\r\n\r\nclass Core {\r\n\r\n\t/**\r\n\t * Настройки словаря\r\n\t */\r\n\tstatic L = reactive({\r\n\t\tNot_date: 'Not date',\r\n\t});\r\n\r\n\tstatic page = _window?.page || {};\r\n\r\n\tstatic Page = Page;\r\n\r\n\tstatic options = options;\r\n\r\n\tstatic state = reactive({ ...state });\r\n\r\n\tstatic matchMediaIsMobile?: MediaQueryList;\r\n\r\n\t/**\r\n\t * Добавить на страницу стили, используется для загрузки стилей из js\r\n\t *\r\n\t * Условная загрузка стилей m и pc отключена в пользу производительсности, стили грузятся всегда, но применяются по условию\r\n\t * @param style - css стили в строке\r\n\t * @param type - если указать 'm' или 'pc', то стили будут применяться по условию в зависимости от настройки this.options.widthForMobile\r\n\t */\r\n\tstatic appendStyle(style: string, type: '' | 'm' | 'pc' = ''): void {\r\n\t\tlet media = 'all';\r\n\r\n\t\tif (type === 'm') {\r\n\t\t\tmedia = '(max-width: ' + this.options.widthForMobile + 'px)';\r\n\t\t}\r\n\r\n\t\tif (type === 'pc') {\r\n\t\t\tmedia = '(min-width: ' + this.options.widthForMobile + 'px)';\r\n\t\t}\r\n\r\n\t\tconst elStyle = document.createElement('style');\r\n\t\telStyle.innerHTML = style;\r\n\t\telStyle.media = media;\r\n\r\n\t\tdocument.head.append(elStyle);\r\n\t}\r\n\r\n\t/**\r\n\t * Установить как плагин в прилоежнии Vue\r\n\t * Core.state является общим для всех приложений Vue на странице\r\n\t * Core.options является общим для всех приложений Vue на странице\r\n\t * @param app - Vue App\r\n\t * @param {typeof options} options - параметры UI\r\n\t */\r\n\tstatic install(app: any, options: typeof this.options) {\r\n\t\tCore.defineOptions(options);\r\n\r\n\t\tapp.provide('top-core', Core);\r\n\r\n\t\tthis.installDirectives(app);\r\n\t}\r\n\r\n\tstatic installDirectives(app: any) {\r\n\t\tapp.directive('top-tooltip', directiveTooltip);\r\n\t}\r\n\r\n\t/**\r\n\t * Установить конфигурацию UI\r\n\t * @param {typeof options} options\r\n\t */\r\n\tstatic defineOptions(options: typeof this.options) {\r\n\t\tif (options?.widthForMobile) {\r\n\t\t\tthis.options.widthForMobile = options.widthForMobile;\r\n\t\t}\r\n\r\n\t\tif (options?.dateFormat) {\r\n\t\t\tthis.options.dateFormat = options.dateFormat;\r\n\t\t}\r\n\r\n\t\tif (options?.gmt) {\r\n\t\t\tthis.options.gmt = options.gmt;\r\n\t\t}\r\n\r\n\t\tCore.setState();\r\n\t}\r\n\r\n\tstatic setState() {\r\n\t\tCore.matchMediaIsMobile = window.matchMedia(`(max-width: ${Core.options.widthForMobile}px)`);\r\n\r\n\t\tCore.state.isMobileUA = Device.isMobile();\r\n\t\tCore.state.isRetina = Device.isRetina();\r\n\t\tCore.state.isApp = Device.isApp();\r\n\t\tCore.state.dateFormat = this.options.dateFormat;\r\n\t\tCore.state.gmt = this.options.gmt;\r\n\r\n\t\tCore.setStateByWindowSize();\r\n\r\n\t\t// пересчет значений, зависящих от рамзеров окна\r\n\t\tEvents.addOnReize(Core.onResize);\r\n\r\n\t\tCore.onResize();\r\n\r\n\t\tCore.saveToCookie();\r\n\t}\r\n\r\n\tstatic onResize() {\r\n\t\tCore.setStateByWindowSize();\r\n\r\n\t\t// честный vh\r\n\t\tdocument.documentElement.style.setProperty('--100vh', window.innerHeight + 'px');\r\n\t}\r\n\r\n\tstatic setStateByWindowSize() {\r\n\t\tCore.state.isMobile = !!Core.matchMediaIsMobile?.matches;\r\n\t\tCore.state.isLandscape = (window.innerWidth > window.innerHeight);\r\n\t\tCore.state.isPortrait = !Core.state.isLandscape;\r\n\t\tCore.state.size = (window.innerWidth > window.innerHeight) ? window.innerWidth : window.innerHeight;\r\n\r\n\t\tCore.saveToCookie();\r\n\t}\r\n\r\n\t/**\r\n\t * Сохранить информацию об устройстве в cookie\r\n\t */\r\n\tstatic saveToCookie() {\r\n\t\tconst device = [\r\n\t\t\t1,\r\n\t\t\twindow.innerWidth,\r\n\t\t\twindow.innerHeight,\r\n\t\t\twindow.devicePixelRatio,\r\n\t\t\tNumber(Core.state.isMobile),\r\n\t\t\tNumber(Core.state.isRetina),\r\n\t\t];\r\n\r\n\t\tdocument.cookie = 'device=' + device.join(',') + '; path=/;';\r\n\t}\r\n\r\n}\r\n\r\nexport default Core;","import Core from '@/core/core/core';\r\n\r\nclass UtilsDate {\r\n\r\n\t/**\r\n\t * Получить объект Date из строки\r\n\t * @param date - строка с датой\r\n\t */\r\n\tstatic stringToDate(date: string) {\r\n\t\tif (date.indexOf('T') === -1) {\r\n\t\t\tif (date.length == 10) {\r\n\t\t\t\tdate += ' 00:00:00';\r\n\t\t\t}\r\n\r\n\t\t\tdate = date.replace(' ', 'T') + Core.state.gmt;\r\n\t\t}\r\n\r\n\t\treturn new Date(date);\r\n\t}\r\n\r\n\t// Перевод миллисекунд (UTC) в дату-строку (время локальное)\r\n\r\n\t/**\r\n\t * Перевод миллисекунд (UTC) в дату-строку (время локальное)\r\n\t * @param {?number} ms\r\n\t * @param {?boolean} useFormat\r\n\t */\r\n\tstatic ms2Date(ms: number, useFormat: boolean = true): string {\r\n\t\tlet date;\r\n\t\tif (ms != undefined) {\r\n\t\t\tdate = new Date(ms);\r\n\t\t} else {\r\n\t\t\tdate = new Date();\r\n\t\t}\r\n\r\n\t\tconst d = date.getDate().toString().padStart(2, '0');\r\n\t\tconst m = String(date.getMonth() + 1).padStart(2, '0');\r\n\t\tconst Y = date.getFullYear();\r\n\t\tconst H = date.getHours().toString().padStart(2, '0');\r\n\t\tconst i = date.getMinutes().toString().padStart(2, '0');\r\n\t\tconst s = date.getSeconds().toString().padStart(2, '0');\r\n\r\n\t\tdate = Y + '-' + m + '-' + d + ' ' + H + ':' + i + ':' + s;\r\n\r\n\t\tif (useFormat) {\r\n\t\t\tdate = this.dateFormat(date);\r\n\t\t}\r\n\r\n\t\treturn date;\r\n\t}\r\n\r\n\t/**\r\n\t * Перевод даты в формат пользователя\r\n\t * @param {string} date - строка в формате Y-m-d H:i:s\r\n\t * @param {0|1|2|3} time - 0: только дата, 1: дата и часы, 2: дата и часы с минутами, 3: дата и часы с минутами и секундами\r\n\t * @param {string} emptyValue - значение, которое надо вернуть, если дата не указана\r\n\t */\r\n\tstatic dateFormat(date: string, time: 0 | 1 | 2 | 3 = 2, emptyValue: string = Core.L.Not_date): string {\r\n\t\tif (!date || date.substring(0, 10) === '0000-00-00') {\r\n\t\t\tif (emptyValue && emptyValue !== '0000-00-00') {\r\n\t\t\t\treturn emptyValue;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst dateFormat = Core.state.dateFormat.toLowerCase();\r\n\r\n\t\tlet dateForObj = date.substring(0, 10);\r\n\r\n\t\tif (dateForObj.length === 7) {\r\n\t\t\tdateForObj += '-01';\r\n\t\t}\r\n\r\n\t\tdateForObj += ' 00:00';\r\n\r\n\t\t// safari fix\r\n\t\tdateForObj = dateForObj.replace(/-/g, '/');\r\n\r\n\t\tconst dateObject = new Date(dateForObj);\r\n\t\tif (isNaN(Number(dateObject))) {\r\n\t\t\treturn emptyValue;\r\n\t\t}\r\n\r\n\t\tlet result = dateFormat.\r\n\t\t\treplace('y', String(dateObject.getFullYear()).padStart(2, '0')).\r\n\t\t\treplace('m', String(dateObject.getMonth() + 1).padStart(2, '0')).\r\n\t\t\treplace('d', String(dateObject.getDate()).padStart(2, '0'));\r\n\r\n\t\tif (date.length > 10) {\r\n\t\t\tswitch (time) {\r\n\t\t\t\t// часы\r\n\t\t\t\tcase 1:\r\n\t\t\t\t\tresult += ' ' + date.substring(11, 13);\r\n\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t// часы и минуты\r\n\t\t\t\tcase 2:\r\n\t\t\t\t\tresult += ' ' + date.substring(11, 16);\r\n\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t// часы, минуты и секунды\r\n\t\t\t\tcase 3:\r\n\t\t\t\t\tresult += ' ' + date.substring(11, 19);\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\t/**\r\n\t * Перевод даты из формата пользователя в системный формат\r\n\t * @param {string} date - строка в формате Y-m-d H:i:s\r\n\t * @param {string} emptyValue - значение, которое надо вернуть, если дата не указана\r\n\t */\r\n\tstatic dateUnformat(date: string, emptyValue: string = Core.L.Not_date): string {\r\n\t\tif (!date) {\r\n\t\t\treturn emptyValue;\r\n\t\t}\r\n\r\n\t\tif (date.match(/\\d\\d\\d\\d-\\d\\d-\\d\\d/)) {\r\n\t\t\treturn date;\r\n\t\t}\r\n\r\n\t\tconst dateFormat = Core.state.dateFormat.toLowerCase();\r\n\r\n\t\tconst dateChunks = date.split(/\\W/);\r\n\t\tconst dateFormatChunks = dateFormat.split(/\\W/);\r\n\r\n\t\tlet d = '';\r\n\t\tlet m = '';\r\n\t\tlet y = '';\r\n\r\n\t\tdateFormatChunks.forEach((type, index) => {\r\n\t\t\tswitch (type) {\r\n\t\t\t\tcase 'd':\r\n\t\t\t\t\td = dateChunks[index];\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'm':\r\n\t\t\t\t\tm = dateChunks[index];\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'y':\r\n\t\t\t\t\ty = dateChunks[index];\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tlet result = y + '-' + m + '-' + d;\r\n\r\n\t\tif (!result.match(/\\d\\d\\d\\d-\\d\\d-\\d\\d/)) {\r\n\t\t\tconsole.info('Неверный формат даты, будет возращена текущая дата, ' + result);\r\n\r\n\t\t\tresult = this.ms2Date((new Date()).getTime(), false).substring(0, 10);\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n}\r\n\r\nexport default UtilsDate;","<script lang=\"ts\" setup>\r\nimport { computed } from 'vue';\r\nimport type { Props } from './avatar';\r\nimport Date from '@/core/utils/date';\r\n\r\nconst props = withDefaults(defineProps<Props>(), {\r\n\tsize: 64,\r\n});\r\n\r\n// TODO: сделать компонент i18n\r\nconst i18n = {\r\n\tuser: {\r\n\t\tOnline: 'Онлайн',\r\n\t\tLastSeen: 'Заходил(а)',\r\n\t},\r\n};\r\n\r\nconst titleStatus = computed(() => {\r\n\tif (props.isOnline) {\r\n\t\treturn i18n.user.Online;\r\n\t}\r\n\r\n\tif (props.lastActiveTime) {\r\n\t\treturn i18n.user.LastSeen + ': ' + Date.dateFormat(props.lastActiveTime, 2);\r\n\t}\r\n});\r\n</script>\r\n\r\n<template>\r\n\t<div class=\"top-avatar\">\r\n\t\t<img\r\n\t\t\tclass=\"top-avatar_image\"\r\n\t\t\t:src=\"image\"\r\n\t\t\t:title=\"props.nickname + (titleStatus ? `\\n${titleStatus}` : '')\"\r\n\t\t\talt=\"\"\r\n\t\t>\r\n\r\n\t\t<div\r\n\t\t\tv-if=\"isOnline\"\r\n\t\t\tclass=\"top-avatar_status\"\r\n\t\t\t:title=\"titleStatus\"\r\n\t\t>\r\n\t\t</div>\r\n\t</div>\r\n</template>\r\n\r\n<style module>\r\n.top-avatar {\r\n\tdisplay: flex;\r\n\theight: v-bind(size+ \"px\");\r\n\tleft: 0;\r\n\tposition: relative;\r\n\ttop: 0;\r\n\twidth: v-bind(size+ \"px\");\r\n}\r\n\r\n.top-avatar_image {\r\n\tborder-radius: 50%;\r\n\theight: 100%;\r\n\twidth: 100%;\r\n}\r\n\r\n.top-avatar_status {\r\n\tbackground-color: var(--color-green-500);\r\n\tborder: 2px solid var(--content-background-color);\r\n\tborder-radius: 50%;\r\n\tbottom: 0;\r\n\theight: 25%;\r\n\tposition: absolute;\r\n\tright: 0;\r\n\twidth: 25%;\r\n}\r\n</style>","<script setup lang=\"ts\">\r\nimport { computed } from 'vue';\r\nimport type { Props } from './button';\r\n\r\nconst props = withDefaults(defineProps<Props>(), {\r\n\tcolor: 'blue',\r\n\tstyling: '',\r\n\tsize: 's',\r\n});\r\n\r\nconst tagName = computed(() => props.href ? 'a' : 'button');\r\n\r\nconst type = computed(() => props.isSubmit ? 'submit' : undefined);\r\n</script>\r\n\r\n<template>\r\n\t<component\r\n\t\t:is=\"tagName\"\r\n\t\t:class=\"{\r\n\t\t\t['top-active']: isActive,\r\n\t\t\t['top-disabled']: disabled,\r\n\t\t\t['top-forms-focusable']: !disabled,\r\n\t\t\t['top-button']: true,\r\n\t\t\t['top-button-progress']: isProgress,\r\n\t\t\t[`top-size_${size}`]: !!size,\r\n\t\t\t[`top-color_${color}`]: true,\r\n\t\t\t[`top-style_${styling}`]: !!styling,\r\n\t\t}\"\r\n\t\t:name=\"name\"\r\n\t\t:title=\"title\"\r\n\t\t:href=\"href\"\r\n\t\t:type=\"type\"\r\n\t\t:data-top-icon=\"icon || undefined\"\r\n\t\t:data-top-icon2=\"icon2 || undefined\"\r\n\t\t:disabled=\"disabled || undefined\"\r\n\t\t:inProgress=\"isProgress\"\r\n\t>\r\n\t\t<span\r\n\t\t\tv-if=\"$slots.default\"\r\n\t\t\tclass=\"top-ellipsis\"\r\n\t\t>\r\n\t\t\t<!-- @slot Текст или HTML в кнопке -->\r\n\t\t\t<slot>\r\n\t\t\t\t{{ !icon ? 'Button' : '' }}\r\n\t\t\t</slot>\r\n\t\t</span>\r\n\t</component>\r\n</template>\r\n\r\n<style module>\r\n@import \"./style/button.css\";\r\n@import \"./style/style-outline.css\";\r\n@import \"./style/style-soft.css\";\r\n@import \"./style/style-transparent.css\";\r\n\r\n.top-button {\r\n\t--top-button-color: var(--color-white);\r\n\t--top-button-background-color: transparent;\r\n\t--top-button-background-color-hover: var(--top-button-background-color);\r\n\t--top-button-background-color-active: var(--top-button-background-color-hover);\r\n\t--top-button-background-color-selected: var(--top-button-background-color-hover);\r\n\t--top-button-box-shadow: none;\r\n\t--top-button-box-shadow-hover: var(--top-shadow-darken-2);\r\n\t--top-button-box-shadow-active: var(--top-shadow-darken-3);\r\n\t--top-button-box-shadow-selected: var(--top-shadow-darken-3);\r\n\t--top-forms-border-width: 0px;\r\n\t--top-icon-width: calc(var(--top-icon-size) + var(--top-forms-padding));\r\n\t--top-icon2-width: calc(var(--top-icon2-size) + var(--top-forms-padding));\r\n}\r\n\r\n.top-button.top-size_l {\r\n\t--top-forms-padding: var(--top-forms-padding_l);\r\n\t--top-forms-base-height: var(--top-forms-base-height_l);\r\n}\r\n\r\n.top-button.top-size_xl {\r\n\t--top-forms-padding: var(--top-forms-padding_xl);\r\n\t--top-forms-base-height: var(--top-forms-base-height_xl);\r\n}\r\n</style>","<script setup lang=\"ts\">\r\nimport { computed } from 'vue';\r\nimport type { Props, Emits } from './checkbox';\r\nimport ControlLabel from '../controlLabel/controlLabel.vue';\r\n\r\nconst props = defineProps<Props>();\r\nconst emit = defineEmits<Emits>();\r\n\r\nconst localValue = computed({\r\n\tget() {\r\n\t\treturn props.modelValue;\r\n\t},\r\n\tset(value) {\r\n\t\temit('update:modelValue', value);\r\n\t},\r\n});\r\n\r\n</script>\r\n\r\n<template>\r\n\t<label\r\n\t\t:class=\"{\r\n\t\t\t['top-forms-optionWrapper']: true,\r\n\t\t\t['top-checkbox']: true,\r\n\t\t\t['top-checkbox_' + name]: name !== '',\r\n\t\t\t['top-disabled']: disabled,\r\n\t\t\t['top-error']: isError && !disabled,\r\n\t\t}\"\r\n\t>\r\n\t\t<input\r\n\t\t\ttype=\"checkbox\"\r\n\t\t\t:class=\"{\r\n\t\t\t\t['top-forms-focusable']: !disabled,\r\n\t\t\t\t['top-forms-option']: true,\r\n\t\t\t\t['top-checkbox_input']: true,\r\n\t\t\t\t['top-error']: isError && !disabled,\r\n\t\t\t}\"\r\n\t\t\t:name=\"name\"\r\n\t\t\tv-model=\"localValue\"\r\n\t\t\t:value=\"value\"\r\n\t\t\t:indeterminate=\"indeterminate\"\r\n\t\t\t:disabled=\"disabled\"\r\n\t\t>\r\n\r\n\t\t<ControlLabel\r\n\t\t\tv-if=\"$slots.default\"\r\n\t\t\t:description=\"description\"\r\n\t\t\t:disabled=\"disabled\"\r\n\t\t>\r\n\t\t\t<!-- @slot Слот с заголовком -->\r\n\t\t\t<slot></slot>\r\n\t\t</ControlLabel>\r\n\t</label>\r\n</template>\r\n\r\n<style module>\r\n.top-checkbox {\r\n\tcursor: pointer;\r\n\tdisplay: inline-flex;\r\n}\r\n\r\n.top-checkbox_input {\r\n\tcursor: inherit;\r\n\tborder-radius: 4px;\r\n\tbackground: var(--content-background-color);\r\n\tborder: 1px solid var(--top-forms-border-color);\r\n\twidth: calc(var(--top-forms-option-height) - 3px * 2);\r\n\theight: calc(var(--top-forms-option-height) - 3px * 2);\r\n}\r\n\r\n.top-checkbox_input:before {\r\n\tcontent: ' ';\r\n\tcolor: #FFF;\r\n\tfont-family: 'Topvisor-2';\r\n\tfont-size: 16px;\r\n}\r\n\r\n.top-checkbox_input:hover {\r\n\tborder-color: var(--top-forms-option-color);\r\n\tbackground: var(--color-theme-50)\r\n}\r\n\r\n/* checked / indeterminate */\r\n.top-checkbox_input:checked,\r\n.top-checkbox_input:indeterminate {\r\n\tborder-color: var(--top-forms-option-color);\r\n\tbackground: var(--top-forms-option-color);\r\n}\r\n\r\n.top-checkbox_input:checked:before {\r\n\tcontent: '';\r\n}\r\n\r\n.top-checkbox_input:indeterminate:before {\r\n\tcontent: '';\r\n}\r\n\r\n.top-checkbox_input:checked:hover,\r\n.top-checkbox_input:indeterminate:hover {\r\n\tborder-color: var(--top-forms-option-color-hover);\r\n\tbackground: var(--top-forms-option-color-hover);\r\n}\r\n\r\n/* disabled selected */\r\n.top-checkbox_input:disabled {\r\n\tborder-color: var(--color-line-1-opacity);\r\n\tbackground: var(--color-theme-50);\r\n}\r\n\r\n.top-checkbox_input:checked:disabled,\r\n.top-checkbox_input:indeterminate:disabled {\r\n\tborder-color: transparent;\r\n\tbackground: var(--color-theme-400);\r\n}\r\n\r\n/* isError */\r\n.top-checkbox_input.top-error {\r\n\tborder-color: var(--color-negative);\r\n}\r\n\r\n.top-checkbox_input.top-error:hover {\r\n\tborder-color: var(--color-negative-2);\r\n}\r\n\r\n/* isError selected */\r\n.top-checkbox_input:checked.top-error,\r\n.top-checkbox_input:indeterminate.top-error {\r\n\tbackground: var(--color-negative);\r\n}\r\n\r\n.top-checkbox_input:checked.top-error:hover,\r\n.top-checkbox_input:indeterminate.top-error:hover {\r\n\tbackground: var(--color-negative-2);\r\n}\r\n</style>","<script setup lang=\"ts\">\r\nimport { computed } from 'vue';\r\nimport type { Props, Emits } from './input';\r\n\r\ndefineOptions({\r\n\tinheritAttrs: false,\r\n});\r\n\r\nconst props = withDefaults(defineProps<Props>(), {\r\n\tsize: 's',\r\n\tcaptionType: '',\r\n});\r\n\r\nconst emit = defineEmits<Emits>();\r\n\r\nconst localValue = computed({\r\n\tget() {\r\n\t\treturn props.modelValue;\r\n\t},\r\n\tset(value) {\r\n\t\temit('update:modelValue', value);\r\n\t},\r\n});\r\n\r\nconst placeholder = computed(() => {\r\n\tif (props.addCleaner && !props.title) {\r\n\t\treturn '';\r\n\t}\r\n\tif (props.captionType !== '') {\r\n\t\treturn '';\r\n\t}\r\n\r\n\treturn props.title;\r\n});\r\n\r\nconst clean = () => {\r\n\temit('update:modelValue', '');\r\n};\r\n</script>\r\n\r\n<template>\r\n\t<label\r\n\t\t:class=\"{\r\n\t\t\t['top-input']: true,\r\n\t\t\t['top-size_' + size]: true,\r\n\t\t\t['top-disabled']: disabled,\r\n\t\t\t['top-input-' + modificator]: !!modificator,\r\n\t\t\t['top-input-withCleaner']: addCleaner && localValue && localValue !== '0000-00-00',\r\n\t\t\t['top-formsCaptionWrapper']: captionType !== '',\r\n\t\t\t['top-formsCaptionWrapper-always']: captionType === 'top',\r\n\t\t}\"\r\n\t\t:data-top-icon=\"icon\"\r\n\t\t:data-top-icon2=\"icon2\"\r\n\t>\r\n\t\t<input\r\n\t\t\ttype=\"text\"\r\n\t\t\t:class=\"{\r\n\t\t\t\t['top-input_input']: true,\r\n\t\t\t\t['top-input_input-' + modificator]: !!modificator,\r\n\t\t\t\t['top-forms-focusable']: !disabled,\r\n\t\t\t\t['top-error']: isError,\r\n\t\t\t}\"\r\n\t\t\tautocomplete=\"off_always\"\r\n\t\t\t:name=\"name\"\r\n\t\t\tv-model=\"localValue\"\r\n\t\t\t:title=\"title\"\r\n\t\t\t:placeholder=\"placeholder\"\r\n\t\t\t:disabled=\"disabled\"\r\n\t\t\t:readonly=\"readonly\"\r\n\t\t\t@keydown.esc.stop=\"() => (addCleaner || !!$slots.btn) && clean()\"\r\n\t\t\t:=\"$attrs\"\r\n\t\t>\r\n\r\n\t\t<span\r\n\t\t\tv-if=\"addCleaner && localValue && localValue !== '0000-00-00'\"\r\n\t\t\tclass=\"top-input_cleaner\"\r\n\t\t\tdata-top-icon=\"\"\r\n\t\t\t@click.prevent=\"clean\"\r\n\t\t></span>\r\n\r\n\t\t<span\r\n\t\t\tv-if=\"captionType !== ''\"\r\n\t\t\tclass=\"top-formsCaption\"\r\n\t\t>\r\n\t\t\t{{ title }}\r\n\t\t</span>\r\n\r\n\t\t<!-- @slot Слот для вставки произвольного кода в label -->\r\n\t\t<slot></slot>\r\n\t</label>\r\n</template>\r\n\r\n<style module>\r\n.top-input {\r\n\t--top-forms_clear-width: 0px;\r\n\r\n\twidth: 180px;\r\n\tposition: relative;\r\n\tdisplay: inline-flex;\r\n\talign-items: center;\r\n\tgap: var(--top-gap-1);\r\n}\r\n\r\n.top-input_input {\r\n\tbackground: var(--top-forms-background-color);\r\n\theight: var(--top-forms-base-height);\r\n\tpadding: 0;\r\n\tpadding-right: calc(max(var(--top-forms-padding), calc(var(--top-icon2-width) + var(--top-forms_clear-width))));\r\n\tpadding-left: calc(max(var(--top-forms-padding), var(--top-icon-width)));\r\n}\r\n\r\n.top-input_input:hover {\r\n\tbackground: var(--top-forms-background-color-hover);\r\n}\r\n\r\n.top-input_input:focus {\r\n\toutline-color: var(--color-theme-75);\r\n\toutline-offset: 0;\r\n}\r\n\r\n/* значки */\r\n.top-input[data-top-icon]:before,\r\n.top-input[data-top-icon2]:after {\r\n\t--top-icon-color: var(--color-text-secondary);\r\n\t--top-icon2-color: var(--color-text-secondary);\r\n\r\n\tposition: absolute;\r\n\tz-index: 3;\r\n}\r\n\r\n.top-input[data-top-icon]:before {\r\n\tleft: 0;\r\n}\r\n\r\n.top-input[data-top-icon2]:after {\r\n\tright: 0;\r\n}\r\n\r\n/* cleaner */\r\n.top-input-withCleaner {\r\n\t--top-forms_clear-width: 24px;\r\n}\r\n\r\n.top-input_cleaner {\r\n\t--top-icon-size: 20px;\r\n\t--top-icon-width: 20px;\r\n\t--top-icon-color: var(--color-text-3);\r\n\r\n\tcursor: pointer;\r\n\tborder-radius: 50%;\r\n\twidth: 24px;\r\n\theight: 24px;\r\n\tposition: absolute;\r\n\tright: calc(var(--top-forms-border-width) + max(var(--top-icon2-width), var(--top-forms-padding) / 2));\r\n\tz-index: 1;\r\n\tdisplay: flex;\r\n\talign-items: center;\r\n\tjustify-content: center;\r\n}\r\n\r\n.top-input_cleaner:hover {\r\n\t--top-icon-color: var(--color-text-2);\r\n}\r\n\r\n/* TODO: перенести в inputsRange */\r\n.top-input_input {\r\n\twidth: 50%;\r\n\tflex-grow: 1;\r\n}\r\n</style>","<script lang=\"ts\">\r\nconst useNativeDatepicker = !!document.documentElement.ontouchstart && !!document.createElement('input').showPicker;\r\n\r\nlet onInputLazy = (_e: any) => { };\r\n</script>\r\n\r\n<script setup lang=\"ts\">\r\nimport { ref, computed, onUnmounted } from 'vue';\r\nimport UtilsDate from '@/core/utils/date';\r\nimport type { Props, Emits } from './inputDate';\r\nimport { Input } from '@/components/forms/forms';\r\nimport Core from '@/core/core/core';\r\n\r\nconst props = withDefaults(defineProps<Props>(), {\r\n\ticon2: '',\r\n});\r\n\r\nconst emit = defineEmits<Emits>();\r\n\r\nconst el = ref();\r\n\r\nconst localValue = computed({\r\n\tget() {\r\n\t\treturn UtilsDate.dateFormat(props.modelValue, 2, '0000-00-00');\r\n\t},\r\n\r\n\tset(value) {\r\n\t\tvalue = UtilsDate.dateUnformat(value, '0000-00-00');\r\n\r\n\t\temit('update:modelValue', value);\r\n\t},\r\n});\r\n\r\nlet oninput = (e: any) => {\r\n\tonInputLazy(e);\r\n};\r\n\r\nlet onchange = (e: any) => {\r\n\tconst dateUnformat = UtilsDate.dateUnformat(e.target.value);\r\n\tconst dateFormat = UtilsDate.dateFormat(dateUnformat);\r\n\r\n\tif (!dateFormat || dateFormat === Core.L.Not_date || e.target.value !== dateFormat) {\r\n\t\te.target.value = localValue.value;\r\n\r\n\t\treturn;\r\n\t}\r\n\r\n\tlocalValue.value = e.target.value;\r\n};\r\n\r\n/**\r\n * Инициализпация функций выбора дат\r\n *\r\n * Для не нативного datepicker\r\n */\r\nasync function init(e: any) {\r\n\tconst datepicker = await import('./datepicker');\r\n\r\n\t// формат ввода\r\n\tonInputLazy = datepicker.oninput;\r\n\r\n\t// datepicker\r\n\tconst $el = datepicker.connectDatepicker(e.target, {\r\n\t\tonSelect: () => onchange(e),\r\n\t});\r\n\r\n\tif ($el) {\r\n\t\t$el.datepicker('show');\r\n\r\n\t\tonUnmounted(() => $el.datepicker('destroy'));\r\n\t}\r\n}\r\n</script>\r\n\r\n<template>\r\n\t<Input\r\n\t\tv-if=\"useNativeDatepicker\"\r\n\t\t:=\"$props\"\r\n\t\t:modelValue=\"localValue\"\r\n\t\treadonly\r\n\t\t@click=\"el.showPicker()\"\r\n\t>\r\n\t\t<input\r\n\t\t\tref=\"el\"\r\n\t\t\ttype=\"date\"\r\n\t\t\tclass=\"top-input_input-date\"\r\n\t\t\t:modelValue=\"modelValue\"\r\n\t\t\t@change=\"(e: any) => localValue = e.target.value\"\r\n\t\t\ttabindex=\"-1\"\r\n\t\t/>\r\n\t</Input>\r\n\r\n\t<Input\r\n\t\tv-else\r\n\t\t:=\"$props\"\r\n\t\t:modelValue=\"localValue\"\r\n\t\t@update:modelValue=\"(newValue) => (newValue === '') ? localValue = '' : ''\"\r\n\t\t@input.date=\"oninput\"\r\n\t\t@focus.once.date=\"init\"\r\n\t\t@change.date=\"onchange\"\r\n\t\tmodificator=\"datepicker\"\r\n\t/>\r\n</template>\r\n\r\n<style module>\r\n.top-input-datepicker {\r\n\twidth: calc(105px + var(--top-icon-width) + var(--top-icon2-width));\r\n}\r\n\r\n.top-input_input-date {\r\n\topacity: 0;\r\n\tposition: absolute;\r\n\ttop: 0;\r\n\tright: 0;\r\n\tbottom: 0;\r\n\tleft: 0;\r\n\tz-index: -1;\r\n}\r\n\r\n.top-input_input-date::-webkit-inner-spin-button {\r\n\tdisplay: none;\r\n}\r\n\r\n.top-input_input-date::-webkit-calendar-picker-indicator {\r\n\topacity: 0;\r\n}\r\n</style>","<script setup lang=\"ts\">\r\nimport { computed } from 'vue';\r\nimport type { Props, Emits } from './radio';\r\nimport ControlLabel from '../controlLabel/controlLabel.vue';\r\n\r\nconst props = defineProps<Props>();\r\nconst emit = defineEmits<Emits>();\r\n\r\nconst localValue = computed({\r\n\tget() {\r\n\t\treturn props.modelValue;\r\n\t},\r\n\tset(value) {\r\n\t\temit('update:modelValue', value);\r\n\t},\r\n});\r\n\r\n</script>\r\n\r\n<template>\r\n\t<label\r\n\t\t:class=\"{\r\n\t\t\t['top-forms-optionWrapper']: true,\r\n\t\t\t['top-radio']: true,\r\n\t\t\t['top-radio_' + name]: name !== '',\r\n\t\t\t['top-disabled']: disabled,\r\n\t\t\t['top-error']: isError && !disabled,\r\n\t\t}\"\r\n\t>\r\n\t\t<input\r\n\t\t\ttype=\"radio\"\r\n\t\t\t:class=\"{\r\n\t\t\t\t['top-forms-focusable']: !disabled,\r\n\t\t\t\t['top-forms-option']: true,\r\n\t\t\t\t['top-radio_input']: true,\r\n\t\t\t\t['top-error']: isError && !disabled,\r\n\t\t\t}\"\r\n\t\t\tv-model=\"localValue\"\r\n\t\t\t:name=\"name\"\r\n\t\t\t:value=\"value\"\r\n\t\t\t:disabled=\"disabled\"\r\n\t\t>\r\n\r\n\t\t<ControlLabel\r\n\t\t\tv-if=\"$slots.default\"\r\n\t\t\t:description=\"description\"\r\n\t\t\t:disabled=\"disabled\"\r\n\t\t>\r\n\t\t\t<!-- @slot Слот с заголовком -->\r\n\t\t\t<slot></slot>\r\n\t\t</ControlLabel>\r\n\t</label>\r\n</template>\r\n\r\n<style module>\r\n:root {\r\n\t--top-radio-background-color: var(--content-background-color);\r\n\t--top-radio-background-color-hover: var(--top-radio-background-color);\r\n\t--top-radio-background-color-active: var(--top-radio-background-color);\r\n}\r\n\r\n.top-radio {\r\n\tcursor: pointer;\r\n}\r\n\r\n.top-radio_input {\r\n\tborder-radius: 50%;\r\n\tbackground: var(--content-background-color);\r\n\tborder: 1px solid var(--top-forms-border-color);\r\n\twidth: calc(var(--top-forms-option-height) - 3px * 2);\r\n\theight: calc(var(--top-forms-option-height) - 3px * 2);\r\n}\r\n\r\n.top-radio_input:hover {\r\n\tborder-color: var(--top-forms-option-color);\r\n\tbackground: var(--color-theme-50)\r\n}\r\n\r\n.top-radio_input:checked {\r\n\tborder-color: var(--top-forms-option-color);\r\n\tborder-width: 5px;\r\n}\r\n\r\n.top-radio_input:checked:hover {\r\n\tborder-color: var(--top-forms-option-color-hover);\r\n}\r\n\r\n/* disabled */\r\n.top-radio_input:disabled {\r\n\tborder-color: var(--color-line-1-opacity);\r\n\tbackground: var(--color-theme-50);\r\n}\r\n\r\n/* disabled selected */\r\n.top-radio_input:checked:disabled {\r\n\tborder-color: var(--color-theme-400);\r\n}\r\n\r\n/* isError */\r\n.top-radio_input.top-error {\r\n\tborder-color: var(--color-negative);\r\n}\r\n\r\n.top-radio_input.top-error:hover {\r\n\tborder-color: var(--color-negative-2);\r\n}\r\n</style>","<script setup lang=\"ts\">\r\nimport { computed } from 'vue';\r\nimport type { Props, Emits } from './switcher';\r\nimport ControlLabel from '../controlLabel/controlLabel.vue';\r\n\r\nconst props = defineProps<Props>();\r\nconst emit = defineEmits<Emits>();\r\n\r\nconst localValue = computed({\r\n\tget() {\r\n\t\treturn props.modelValue;\r\n\t},\r\n\tset(value) {\r\n\t\temit('update:modelValue', value);\r\n\t},\r\n});\r\n</script>\r\n\r\n<template>\r\n\t<label\r\n\t\t:class=\"{\r\n\t\t['top-forms-optionWrapper']: true,\r\n\t\t['top-checkboxSwitcher']: true,\r\n\t\t['top-disabled']: disabled,\r\n\t\t['top-error']: isError && !disabled,\r\n\t}\"\r\n\t>\r\n\t\t<input\r\n\t\t\ttype=\"checkbox\"\r\n\t\t\t:class=\"{\r\n\t\t\t\t['top-forms-focusable']: !disabled,\r\n\t\t\t\t['top-forms-option']: true,\r\n\t\t\t\t['top-checkboxSwitcher_input']: true,\r\n\t\t\t\t['top-error']: isError && !disabled,\r\n\t\t\t}\"\r\n\t\t\tv-model=\"localValue\"\r\n\t\t\t:name=\"name\"\r\n\t\t\t:value=\"value\"\r\n\t\t\t:disabled=\"disabled\"\r\n\t\t>\r\n\r\n\t\t<ControlLabel\r\n\t\t\tv-if=\"$slots.default\"\r\n\t\t\t:description=\"description\"\r\n\t\t\t:disabled=\"disabled\"\r\n\t\t>\r\n\t\t\t<!-- @slot Слот с заголовком -->\r\n\t\t\t<slot></slot>\r\n\t\t</ControlLabel>\r\n\t</label>\r\n</template>\r\n\r\n<style module>\r\n.top-checkboxSwitcher {\r\n\tcursor: pointer;\r\n\tdisplay: inline-flex;\r\n\tgap: 4px;\r\n}\r\n\r\n.top-checkboxSwitcher_input {\r\n\tborder-radius: 9px;\r\n\tborder: none;\r\n\tbackground: var(--color-theme-100);\r\n\twidth: 36px;\r\n\theight: 18px;\r\n\tposition: relative;\r\n}\r\n\r\n.top-checkboxSwitcher_input:before {\r\n\tcontent: '';\r\n\tborder-radius: 50%;\r\n\tbackground: var(--color-white);\r\n\twidth: 12px;\r\n\theight: 12px;\r\n\tmargin: 3px;\r\n\tposition: absolute;\r\n\ttop: 0;\r\n\tleft: 0;\r\n\r\n\ttransition: left 0.1s;\r\n}\r\n\r\n.top-checkboxSwitcher_input:hover {\r\n\tbackground: var(--color-theme-150);\r\n}\r\n\r\n/* checked */\r\n.top-checkboxSwitcher_input:checked {\r\n\tbackground: var(--top-forms-option-color);\r\n}\r\n\r\n.top-checkboxSwitcher_input:checked:hover {\r\n\tbackground: var(--top-forms-option-color-hover);\r\n}\r\n\r\n.top-checkboxSwitcher_input:checked:before {\r\n\tleft: 50%;\r\n}\r\n\r\n/* disabled */\r\n.top-checkboxSwitcher_input:disabled {\r\n\tbackground: var(--color-theme-400);\r\n}\r\n\r\n/* isError */\r\n.top-checkboxSwitcher_input.top-error {\r\n\tbackground: var(--color-negative);\r\n}\r\n\r\n.top-checkboxSwitcher_input.top-error:hover {\r\n\tbackground: var(--color-negative-2);\r\n}\r\n</style>","<script setup lang=\"ts\">\r\nimport { computed } from 'vue';\r\nimport Hint from '@/components/forms/hint/hint.vue';\r\nimport type { Props, Emits } from './textarea';\r\n\r\ndefineOptions({\r\n\tinheritAttrs: false,\r\n});\r\n\r\nconst props = withDefaults(defineProps<Props>(), {\r\n\trows: 5,\r\n\tminHeight: 120,\r\n});\r\n\r\nconst emit = defineEmits<Emits>();\r\n\r\nconst value = computed({\r\n\tget () {\r\n\t\treturn props.modelValue;\r\n\t},\r\n\tset (value) {\r\n\t\temit('update:modelValue', value);\r\n\t},\r\n});\r\n</script>\r\n\r\n<template>\r\n\t<label\r\n\t\t:class=\"{\r\n\t\t\t['top-textarea']: true,\r\n\t\t\t['top-textarea-' + name]: name,\r\n\t\t\t['top-disabled']: disabled,\r\n\t\t}\"\r\n\t>\r\n\t\t<textarea\r\n\t\t\ttype=\"text\"\r\n\t\t\t:class=\"{\r\n\t\t\t\t['top-forms-focusable']: !disabled,\r\n\t\t\t\t['top-textarea_textarea']: true,\r\n\t\t\t\t['top-textarea_textarea-expandable']: expandable,\r\n\t\t\t\t['top-error']: isError,\r\n\t\t\t}\"\r\n\t\t\tautocomplete=\"off_always\"\r\n\t\t\t:name=\"name\"\r\n\t\t\t:placeholder=\"placeholder\"\r\n\t\t\t:disabled=\"disabled\"\r\n\t\t\t:readonly=\"readonly\"\r\n\t\t\t:rows=\"!expandable ? rows : undefined\"\r\n\t\t\t:=\"$attrs\"\r\n\t\t\tv-model=\"value\"\r\n\t\t/>\r\n\r\n\t\t<div\r\n\t\t\tv-if=\"expandable\"\r\n\t\t\tclass=\"top-textarea_pseudoContent\"\r\n\t\t>\r\n\t\t\t{{ value + ' ' }}\r\n\t\t</div>\r\n\r\n\t\t<Hint\r\n\t\t\tv-if=\"hint\"\r\n\t\t\tclass=\"top-textarea_hint\"\r\n\t\t\t:hint=\"hint\"\r\n\t\t\tv-top-tooltip\r\n\t\t/>\r\n\t</label>\r\n</template>\r\n\r\n<style module>\r\n.top-textarea {\r\n\twidth: 180px;\r\n\tdisplay: inline-flex;\r\n\talign-items: center;\r\n\tposition: relative;\r\n}\r\n\r\n.top-textarea_textarea {\r\n\tbackground: var(--top-forms-background-color);\r\n\twidth: 100%;\r\n\tpadding: var(--top-forms-padding);\r\n\tresize: none;\r\n}\r\n\r\n.top-textarea_textarea:hover {\r\n\tbackground: var(--top-forms-background-color-hover);\r\n}\r\n\r\n.top-textarea_textarea:focus {\r\n\toutline-color: var(--color-theme-75);\r\n\toutline-offset: 0px;\r\n}\r\n\r\n.top-textarea_textarea.top-textarea_textarea-expandable {\r\n\twidth: 100%;\r\n\theight: 100%;\r\n\toverflow: hidden;\r\n\tposition: absolute;\r\n\ttop: 0;\r\n\tleft: 0;\r\n}\r\n\r\n.top-textarea_pseudoContent {\r\n\tbox-sizing: border-box;\r\n\tmin-height: v-bind(minHeight + 'px');\r\n\tpadding: var(--top-forms-padding);\r\n\tfont-size: 14px;\r\n\twhite-space: pre-wrap;\r\n\toverflow-wrap: anywhere;\r\n\tpointer-events: none;\r\n\topacity: 0;\r\n\tz-index: -1;\r\n}\r\n\r\n.top-textarea_hint {\r\n\tposition: absolute;\r\n\ttop: 2px;\r\n\tright: 2px;\r\n}\r\n</style>","<script setup lang=\"ts\">\r\nimport { toRef, computed, watch } from 'vue';\r\nimport type { Props, Emits } from './select';\r\n\r\nconst props = withDefaults(defineProps<Props>(), {\r\n\tsize: 's',\r\n});\r\n\r\nconst emit = defineEmits<Emits>();\r\n\r\nconst localValue = computed({\r\n\tget() {\r\n\t\treturn props.modelValue;\r\n\t},\r\n\r\n\tset(value) {\r\n\t\temit('update:modelValue', value);\r\n\t},\r\n});\r\n\r\n/**\r\n * Иконка выбранного option\r\n */\r\nconst optionIcon = computed(() => {\r\n\treturn optionByValue.value.get(localValue.value)?.icon;\r\n});\r\n\r\n/**\r\n * Словарь с доступными options\r\n */\r\nconst optionByValue = computed(() => {\r\n\tconst res = new Map();\r\n\r\n\tprops.options.forEach((option) => {\r\n\t\tif (option.disabled) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (option.children) {\r\n\t\t\toption.children.forEach(subOption => {\r\n\t\t\t\tif (subOption.disabled) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tres.set(subOption.value, subOption);\r\n\t\t\t});\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tres.set(option.value, option);\r\n\t});\r\n\r\n\treturn res;\r\n});\r\n\r\n/**\r\n * Логика для обртаной своместимости:\r\n * - null - заменить на первое доступное значение\r\n * - undefined - заменить на первое доступное значение\r\n */\r\nwatch([\r\n\ttoRef(props.modelValue),\r\n\toptionByValue,\r\n], () => {\r\n\tif ((localValue.value === null || localValue.value === undefined) && optionByValue.value.size) {\r\n\t\tconsole.warn('Пожалуйста, не передавайте в компонент Select значения null и undefined');\r\n\r\n\t\tlocalValue.value = optionByValue.value.keys().next().value;\r\n\t}\r\n}, { immediate: true });\r\n\r\n/**\r\n * Выбрать следующее доступное значение\r\n */\r\nconst selectNextValue = () => {\r\n\tconst listEnabledValues = [...optionByValue.value.keys()];\r\n\tconst currentIndex = listEnabledValues.indexOf(localValue.value);\r\n\tconst nextIndex = (currentIndex + 1) % listEnabledValues.length;\r\n\r\n\tlocalValue.value = listEnabledValues[nextIndex];\r\n};\r\n</script>\r\n\r\n<template>\r\n\t<label\r\n\t\t:class=\"{\r\n\t\t\t['top-select']:true,\r\n\t\t\t['top-select-' + name]:name,\r\n\t\t\t['top-size_' + size]: true,\r\n\t\t\t['top-formsCaptionWrapper']: !!title,\r\n\t\t\t['top-select-error']: isError,\r\n\t\t\t['top-disabled']: disabled,\r\n\t\t}\"\r\n\t\t:data-value=\"localValue\"\r\n\t\t:data-top-icon=\"icon\"\r\n\t\t:data-top-icon2=\"optionIcon\"\r\n\t>\r\n\t\t<select\r\n\t\t\t:class=\"{\r\n\t\t\t\t['top-forms-focusable']: !disabled,\r\n\t\t\t\t['top-select_select']: true,\r\n\t\t\t\t['top-select_arrow']: true,\r\n\t\t\t\t['top-error']: isError,\r\n\t\t\t}\"\r\n\t\t\t:name=\"name\"\r\n\t\t\t:disabled=\"disabled\"\r\n\t\t\tv-model=\"localValue\"\r\n\t\t>\r\n\t\t\t<template v-for=\"[_index, option] of options.entries()\">\r\n\t\t\t\t<optgroup\r\n\t\t\t\t\tv-if=\"option.children\"\r\n\t\t\t\t\t:key=\"'group_' + option.value\"\r\n\t\t\t\t\t:label=\"option.title\"\r\n\t\t\t\t\t:disabled=\"option.disabled\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<option\r\n\t\t\t\t\t\tv-for=\"[_index, subOption] of option.children.entries()\"\r\n\t\t\t\t\t\t:key=\"option.value\"\r\n\t\t\t\t\t\t:value=\"subOption.value\"\r\n\t\t\t\t\t\t:selected=\"subOption.value === localValue\"\r\n\t\t\t\t\t\t:disabled=\"subOption.disabled\"\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t{{ subOption.title }}\r\n\t\t\t\t\t</option>\r\n\t\t\t\t</optgroup>\r\n\r\n\t\t\t\t<option\r\n\t\t\t\t\tv-else\r\n\t\t\t\t\t:key=\"option.value\"\r\n\t\t\t\t\t:value=\"option.value\"\r\n\t\t\t\t\t:selected=\"option.value === localValue\"\r\n\t\t\t\t\t:disabled=\"option.disabled\"\r\n\t\t\t\t>\r\n\t\t\t\t\t{{ option.title }}\r\n\t\t\t\t</option>\r\n\t\t\t</template>\r\n\t\t</select>\r\n\r\n\t\t<span\r\n\t\t\tv-if=\"addChanger && optionByValue.size && !disabled\"\r\n\t\t\tclass=\"top-changer\"\r\n\t\t\t@click=\"selectNextValue\"\r\n\t\t></span>\r\n\r\n\t\t<span\r\n\t\t\tv-if=\"title\"\r\n\t\t\tclass=\"top-formsCaption\"\r\n\t\t>\r\n\t\t\t{{ title }}\r\n\t\t</span>\r\n\t</label>\r\n</template>\r\n\r\n<style module>\r\n.top-select {\r\n\t--top-icon-color: var(--color-text-3);\r\n\t--top-icon2-color: var(--color-text-2);\r\n\r\n\talign-items: center;\r\n\twidth: 180px;\r\n\tmax-width: 100%;\r\n\tdisplay: inline-flex;\r\n}\r\n\r\n.top-select-error {\r\n\t--top-icon-color: var(--color-negative);\r\n\t--top-icon2-color: var(--color-negative);\r\n}\r\n\r\n.top-select_select {\r\n\tbackground-color: var(--top-forms-background-color);\r\n\r\n\t/* для select вместо padding нужно использовать text-indent */\r\n\tpadding-left: var(--top-forms-padding);\r\n\r\n\t/* если есть значки, добавить отступ на их ширину с учетом уже добавленного padding */\r\n\ttext-indent: calc(clamp(0px, calc(var(--top-icon-both-width) - var(--top-forms-padding)), calc(var(--top-icon-both-width) - var(--top-forms-padding))));\r\n\r\n\twidth: 100%;\r\n\theight: var(--top-forms-base-height);\r\n\ttext-overflow: ellipsis;\r\n\twhite-space: nowrap;\r\n\tflex-grow: 1;\r\n\toverflow: hidden;\r\n}\r\n\r\n.top-select_select:focus {\r\n\toutline-color: var(--color-theme-75);\r\n\toutline-offset: 0;\r\n}\r\n\r\n.top-select_select:disabled {\r\n\tbackground: var(--color-theme-50);\r\n}\r\n\r\n.top-select optgroup {\r\n\tcolor: var(--color-text-1);\r\n\tfont-style: normal;\r\n}\r\n\r\n.top-select option {\r\n\tbackground: var(--content-background-color);\r\n\tcolor: var(--color-text-1);\r\n}\r\n\r\n/* хром не мерняет цвет для optgroup option, стили оставлены по умолчанию */\r\n/*\r\n.top-select optgroup:disabled,\r\n.top-select optgroup option,\r\n.top-select option:disabled {\r\n\r\n}\r\n*/\r\n\r\n/* https://bugzilla.mozilla.org/show_bug.cgi?id=1743066 */\r\n@-moz-document url-prefix() {\r\n\t.top-select_select {\r\n\t\ttext-indent: calc(clamp(0px, calc(var(--top-icon-both-width) - var(--top-forms-padding)), calc(var(--top-icon-both-width) - var(--top-forms-padding))) / 2);\r\n\t}\r\n}\r\n\r\n@media only screen and (min-width: 900px) {\r\n\t/* changer */\r\n\t.top-changer {\r\n\t\tcursor: pointer;\r\n\t\tborder-radius: 100%;\r\n\t\twidth: 0;\r\n\t\ttransform: translateX(-44px);\r\n\t\tcolor: var(--color-text-secondary-2);\r\n\t\tfont-size: 16px;\r\n\t\tline-height: 1;\r\n\t\tdisplay: none;\r\n\t\tz-index: 2;\r\n\t\torder: 4;\r\n\t}\r\n\r\n\t.top-changer:hover {\r\n\t\tcolor: var(--color-primary);\r\n\t}\r\n\r\n\t.top-changer:after {\r\n\t\tcontent: '';\r\n\t\tbackground-color: var(--top-forms-background-color);\r\n\t\tfont-family: 'Topvisor-2';\r\n\t}\r\n\r\n\t*:hover > .top-changer {\r\n\t\tdisplay: block;\r\n\t}\r\n}\r\n</style>"],"names":["Device","isChrome","isSafari","genEl","tagName","attrs","elsChildrens","el","name","elChildren","isVisible","boundingClientRect","offset","css","property","wrap","elWrapper","querySelectorVisible","selectors","querySelectorAllArray","querySelectorVisibleLast","querySelectorAllVisible","storage","contextName","contextData","storageClear","DOM","Page","fileNames","props","cssFilesByOptions","filename","m","pc","key","fileNames2","options","item","media","fileName","elLink","onResizeDelay","onResizeTimer","onResizeListeners","windowSize","addOnReize","listener","removeOnResize","onResize","e","callback","Events","_a","state","_window$1","$","_b","tvTooltipGenOptions","binding","vnode","tooltip","_prevVnode","instance","_window","Core","reactive","style","type","elStyle","app","options2","device","UtilsDate","date","ms","useFormat","d","Y","H","i","s","time","emptyValue","dateFormat","dateForObj","dateObject","result","dateChunks","dateFormatChunks","y","index","__props","i18n","titleStatus","computed","emit","__emit","localValue","value","placeholder","clean","useNativeDatepicker","onInputLazy","_e","ref","oninput","onchange","dateUnformat","init","datepicker","$el","onUnmounted","value2","optionIcon","optionByValue","res","option","subOption","watch","toRef","selectNextValue","listEnabledValues","nextIndex"],"mappings":"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"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
define(["require","exports","vue"],function(M,f,e){var A,P;"use strict";M(["../core/core.amd"],s=>{const t=["../assets/forms.css"].map(n=>M.toUrl(n));s.Page.addCss(t)});class g{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 n=/Safari/.test(navigator.userAgent);return t&&n&&(n=!1),n}static getCommandKeyLabel(){return this.isMacOS()?"⌘":"Ctrl"}}function W(s,t,...n){const i=document.createElement(s);for(const a in t)a.indexOf("on")===0?i[a]=t[a]:i.setAttribute(a,t[a]);return n.forEach(a=>{typeof a=="string"?i.insertAdjacentHTML("beforeend",a):i.append(a)}),i}function k(s){if(!s)return!1;const t=s.getBoundingClientRect();return!!(t.width||t.height)}function U(s){const t=s.getBoundingClientRect();return{top:t.top+window.scrollY,left:t.left+window.scrollX}}function H(s,t){return window.getComputedStyle(s).getPropertyValue(t)}function I(s,t){const n=document.createElement(t);return s.after(n),n.append(s),n}function j(s,t){return w(s,t).find(k)||null}function Y(s,t){return w(s,t).findLast(k)||null}function q(s,t){return w(s,t).filter(k)}function w(s,t){return s?[...s.querySelectorAll(t)]:[]}function G(s,t="common",n=void 0){if(s)return s.topData||(s.topData={}),n&&(s.topData[t]=n),n===null&&delete s.topData[t],s.topData[t]}function K(s){s&&delete s.topData}const D={genEl:W,isVisible:k,offset:U,css:H,wrap:I,querySelectorVisible:j,querySelectorVisibleLast:Y,querySelectorAllVisible:q,querySelectorAllArray:w,storage:G,storageClear:K};class V{static addCss(t,n={}){const i=new Map;i.set("::",[]),t.forEach(a=>{let o=!1,d=!1;a.match(/\.m\./)&&(o=!0),a.match(/\.pc\./)&&(d=!0);const l=`${o}:${d}`;i.has(l)||i.set(`${o}:${d}`,[]),i.get(`${o}:${d}`).push(a)}),i.forEach((a,o)=>{if(!a.length)return;const[d,l]=o.split(":").map(p=>p==="true");let r="all";d&&(r="(max-width: 900px)"),l&&(r="(min-width: 900px)"),n.media=r,V._addCss(a,n)})}static _addCss(t,n){t.forEach(i=>{if(n.id??="topCSSLink-"+i.replace(/\W/g,"-"),window[n.id])return;n.rel="stylesheet",n.href=i;const a=D.genEl("link",n);document.head.append(a)})}}const Q=100;let L;const S=new Map,$={width:window.innerWidth,height:window.innerHeight};function X(s){S.set(s,s)}function J(s){S.delete(s)}function Z(s){clearTimeout(L),L=setTimeout(function(){s.topEvent={widthDiff:$.width-window.innerWidth,hightDiff:$.height-window.innerHeight},$.width=window.innerWidth,$.height=window.innerHeight,S.forEach(t=>t(s))},Q)}window.addEventListener("resize",Z);const F={addOnReize:X,removeOnResize:J},v={widthForMobile:900,dateFormat:"Y-m-d",gmt:(A=new Date().toString().match(/GMT(\S+)/))==null?void 0:A[1]},x={isMobile:!1,isMobileUA:!1,isRetina:!1,isApp:!1,isLandscape:!0,isPortrait:!1,size:0,dateFormat:"Y-m-d",gmt:(P=new Date().toString().match(/GMT(\S+)/))==null?void 0:P[1]},_=window,C=s=>{var t,n;if(!((n=(t=_==null?void 0:_.jQuery)==null?void 0:t.ui)!=null&&n.tooltip)){console.info("Для работы v-top-tooltip требуется глобальная загрузка jQuery UI Tooltip");return}return _.jQuery(s)},N=(s,t)=>{var i;const n=s.value??{};return n.content??=(i=t.props)==null?void 0:i.title,n.content=String(n.content).replace(/\r\n|\r|\n/g,"<br>"),n.position??={my:"bottom-18px",at:"top center"},n},ee={mounted(s,t,n){var i;(i=C(s))==null||i.tooltip(N(t,n))},updated(s,t,n,i){var d;const a=N(t,n),o=(d=C(s))==null?void 0:d.tooltip("instance");o&&(o.options={...o.options,...a})},unmounted(s,t,n){var i;(i=C(s))==null||i.tooltip("destroy")}},E=window;class c{static L=e.reactive({Not_date:"Not date"});static page=(E==null?void 0:E.page)||{};static Page=V;static options=v;static state=e.reactive({...x});static matchMediaIsMobile;static appendStyle(t,n=""){let i="all";n==="m"&&(i="(max-width: "+this.options.widthForMobile+"px)"),n==="pc"&&(i="(min-width: "+this.options.widthForMobile+"px)");const a=document.createElement("style");a.innerHTML=t,a.media=i,document.head.append(a)}static install(t,n){c.defineOptions(n),t.provide("top-core",c),this.installDirectives(t)}static installDirectives(t){t.directive("top-tooltip",ee)}static defineOptions(t){t!=null&&t.widthForMobile&&(this.options.widthForMobile=t.widthForMobile),t!=null&&t.dateFormat&&(this.options.dateFormat=t.dateFormat),t!=null&&t.gmt&&(this.options.gmt=t.gmt),c.setState()}static setState(){c.matchMediaIsMobile=window.matchMedia(`(max-width: ${c.options.widthForMobile}px)`),c.state.isMobileUA=g.isMobile(),c.state.isRetina=g.isRetina(),c.state.isApp=g.isApp(),c.state.dateFormat=this.options.dateFormat,c.state.gmt=this.options.gmt,c.setStateByWindowSize(),F.addOnReize(c.onResize),c.onResize(),c.saveToCookie()}static onResize(){c.setStateByWindowSize(),document.documentElement.style.setProperty("--100vh",window.innerHeight+"px")}static setStateByWindowSize(){var t;c.state.isMobile=!!((t=c.matchMediaIsMobile)!=null&&t.matches),c.state.isLandscape=window.innerWidth>window.innerHeight,c.state.isPortrait=!c.state.isLandscape,c.state.size=window.innerWidth>window.innerHeight?window.innerWidth:window.innerHeight,c.saveToCookie()}static saveToCookie(){const t=[1,window.innerWidth,window.innerHeight,window.devicePixelRatio,Number(c.state.isMobile),Number(c.state.isRetina)];document.cookie="device="+t.join(",")+"; path=/;"}}class h{static stringToDate(t){return t.indexOf("T")===-1&&(t.length==10&&(t+=" 00:00:00"),t=t.replace(" ","T")+c.state.gmt),new Date(t)}static ms2Date(t,n=!0){let i;t!=null?i=new Date(t):i=new Date;const a=i.getDate().toString().padStart(2,"0"),o=String(i.getMonth()+1).padStart(2,"0"),d=i.getFullYear(),l=i.getHours().toString().padStart(2,"0"),r=i.getMinutes().toString().padStart(2,"0"),p=i.getSeconds().toString().padStart(2,"0");return i=d+"-"+o+"-"+a+" "+l+":"+r+":"+p,n&&(i=this.dateFormat(i)),i}static dateFormat(t,n=2,i=c.L.Not_date){if((!t||t.substring(0,10)==="0000-00-00")&&i&&i!=="0000-00-00")return i;const a=c.state.dateFormat.toLowerCase();let o=t.substring(0,10);o.length===7&&(o+="-01"),o+=" 00:00",o=o.replace(/-/g,"/");const d=new Date(o);if(isNaN(Number(d)))return i;let l=a.replace("y",String(d.getFullYear()).padStart(2,"0")).replace("m",String(d.getMonth()+1).padStart(2,"0")).replace("d",String(d.getDate()).padStart(2,"0"));if(t.length>10)switch(n){case 1:l+=" "+t.substring(11,13);break;case 2:l+=" "+t.substring(11,16);break;case 3:l+=" "+t.substring(11,19);break}return l}static dateUnformat(t,n=c.L.Not_date){if(!t)return n;if(t.match(/\d\d\d\d-\d\d-\d\d/))return t;const i=c.state.dateFormat.toLowerCase(),a=t.split(/\W/),o=i.split(/\W/);let d="",l="",r="";o.forEach((u,m)=>{switch(u){case"d":d=a[m];break;case"m":l=a[m];break;case"y":r=a[m];break}});let p=r+"-"+l+"-"+d;return p.match(/\d\d\d\d-\d\d-\d\d/)||(console.info("Неверный формат даты, будет возращена текущая дата, "+p),p=this.ms2Date(new Date().getTime(),!1).substring(0,10)),p}}const te={class:"top-avatar"},oe=["src","title"],ae=["title"],ne=e.defineComponent({__name:"avatar",props:{size:{default:64},image:{},nickname:{},isOnline:{type:Boolean},lastActiveTime:{}},setup(s){e.useCssVars(a=>({"4ca8e42a":a.size+"px"}));const t=s,n={user:{Online:"Онлайн",LastSeen:"Заходил(а)"}},i=e.computed(()=>{if(t.isOnline)return n.user.Online;if(t.lastActiveTime)return n.user.LastSeen+": "+h.dateFormat(t.lastActiveTime,2)});return(a,o)=>(e.openBlock(),e.createElementBlock("div",te,[e.createElementVNode("img",{class:"top-avatar_image",src:a.image,title:t.nickname+(i.value?`
|
|
2
|
+
${i.value}`:""),alt:""},null,8,oe),a.isOnline?(e.openBlock(),e.createElementBlock("div",{key:0,class:"top-avatar_status",title:i.value},null,8,ae)):e.createCommentVNode("",!0)]))}}),se={"top-avatar":"top-avatar","top-avatar_image":"top-avatar_image","top-avatar_status":"top-avatar_status"},b=(s,t)=>{const n=s.__vccOpts||s;for(const[i,a]of t)n[i]=a;return n},ie=b(ne,[["__cssModules",{$style:se}]]),le={key:0,class:"top-ellipsis"},re=b(e.defineComponent({__name:"button",props:{color:{default:"blue"},styling:{default:""},size:{default:"s"},name:{},title:{},icon:{},icon2:{},href:{},disabled:{type:Boolean},isSubmit:{type:Boolean},isActive:{type:Boolean},isProgress:{type:Boolean}},setup(s){const t=s,n=e.computed(()=>t.href?"a":"button"),i=e.computed(()=>t.isSubmit?"submit":void 0);return(a,o)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n.value),{class:e.normalizeClass({"top-active":a.isActive,"top-disabled":a.disabled,"top-forms-focusable":!a.disabled,"top-button":!0,"top-button-progress":a.isProgress,[`top-size_${a.size}`]:!!a.size,[`top-color_${a.color}`]:!0,[`top-style_${a.styling}`]:!!a.styling}),name:a.name,title:a.title,href:a.href,type:i.value,"data-top-icon":a.icon||void 0,"data-top-icon2":a.icon2||void 0,disabled:a.disabled||void 0,inProgress:a.isProgress},{default:e.withCtx(()=>[a.$slots.default?(e.openBlock(),e.createElementBlock("span",le,[e.renderSlot(a.$slots,"default",{},()=>[e.createTextVNode(e.toDisplayString(a.icon?"":"Button"),1)])])):e.createCommentVNode("",!0)]),_:3},8,["class","name","title","href","type","data-top-icon","data-top-icon2","disabled","inProgress"]))}}),[["__cssModules",{$style:{"top-button":"top-button","top-active":"top-active","top-button-progress":"top-button-progress",progress:"_progress_1f1nw_1","top-color_blue":"top-color_blue","top-color_green":"top-color_green","top-color_orange":"top-color_orange","top-color_red":"top-color_red","top-color_pink":"top-color_pink","top-color_theme":"top-color_theme","top-style_outline":"top-style_outline","top-style_soft":"top-style_soft","top-style_transparent":"top-style_transparent","top-size_l":"top-size_l","top-size_xl":"top-size_xl"}}]]),de={class:"top-forms-optionLabel"},B=b(e.defineComponent({__name:"controlLabel",props:{description:{},disabled:{type:Boolean}},setup(s){return(t,n)=>(e.openBlock(),e.createElementBlock("div",de,[e.createElementVNode("div",{class:e.normalizeClass({"top-forms-optionLabel_title":!0,"top-forms-optionLabel_title-disabled":t.disabled})},[e.renderSlot(t.$slots,"default")],2),t.description?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["top-forms-optionLabel_description",{"top-forms-optionLabel_description-disabled":t.disabled}])},e.toDisplayString(t.description),3)):e.createCommentVNode("",!0)]))}}),[["__cssModules",{$style:{"top-forms-optionLabel":"top-forms-optionLabel","top-forms-optionLabel_title":"top-forms-optionLabel_title","top-forms-optionLabel_title-disabled":"top-forms-optionLabel_title-disabled","top-forms-optionLabel_description":"top-forms-optionLabel_description","top-forms-optionLabel_description-disabled":"top-forms-optionLabel_description-disabled"}}]]),pe=["name","value","indeterminate","disabled"],ce=b(e.defineComponent({__name:"checkbox",props:{modelValue:{type:[Boolean,Array,Set]},name:{},value:{},description:{},disabled:{type:Boolean},indeterminate:{type:Boolean},isError:{type:Boolean}},emits:["update:modelValue"],setup(s,{emit:t}){const n=s,i=t,a=e.computed({get(){return n.modelValue},set(o){i("update:modelValue",o)}});return(o,d)=>(e.openBlock(),e.createElementBlock("label",{class:e.normalizeClass({"top-forms-optionWrapper":!0,"top-checkbox":!0,["top-checkbox_"+o.name]:o.name!=="","top-disabled":o.disabled,"top-error":o.isError&&!o.disabled})},[e.withDirectives(e.createElementVNode("input",{type:"checkbox",class:e.normalizeClass({"top-forms-focusable":!o.disabled,"top-forms-option":!0,"top-checkbox_input":!0,"top-error":o.isError&&!o.disabled}),name:o.name,"onUpdate:modelValue":d[0]||(d[0]=l=>a.value=l),value:o.value,indeterminate:o.indeterminate,disabled:o.disabled},null,10,pe),[[e.vModelCheckbox,a.value]]),o.$slots.default?(e.openBlock(),e.createBlock(B,{key:0,description:o.description,disabled:o.disabled},{default:e.withCtx(()=>[e.renderSlot(o.$slots,"default")]),_:3},8,["description","disabled"])):e.createCommentVNode("",!0)],2))}}),[["__cssModules",{$style:{"top-checkbox":"top-checkbox","top-checkbox_input":"top-checkbox_input","top-error":"top-error"}}]]),me=["title"],R=b(e.defineComponent({__name:"hint",props:{hint:{}},setup(s){return(t,n)=>(e.openBlock(),e.createElementBlock("span",{class:"top-hint","data-top-icon":"",title:t.hint},null,8,me))}}),[["__cssModules",{$style:{"top-hint":"top-hint"}}]]),ue=["data-top-icon","data-top-icon2"],fe=["name","title","placeholder","disabled","readonly"],be=["onClick"],he={key:1,class:"top-formsCaption"},z=b(e.defineComponent({inheritAttrs:!1,__name:"input",props:{modelValue:{},name:{},disabled:{type:Boolean},readonly:{type:Boolean},title:{},captionType:{default:""},size:{default:"s"},icon:{},icon2:{},addCleaner:{type:Boolean},isError:{type:Boolean},modificator:{}},emits:["update:modelValue"],setup(s,{emit:t}){const n=s,i=t,a=e.computed({get(){return n.modelValue},set(l){i("update:modelValue",l)}}),o=e.computed(()=>n.addCleaner&&!n.title||n.captionType!==""?"":n.title),d=()=>{i("update:modelValue","")};return(l,r)=>(e.openBlock(),e.createElementBlock("label",{class:e.normalizeClass({"top-input":!0,["top-size_"+l.size]:!0,"top-disabled":l.disabled,["top-input-"+l.modificator]:!!l.modificator,"top-input-withCleaner":l.addCleaner&&a.value&&a.value!=="0000-00-00","top-formsCaptionWrapper":l.captionType!=="","top-formsCaptionWrapper-always":l.captionType==="top"}),"data-top-icon":l.icon,"data-top-icon2":l.icon2},[e.withDirectives(e.createElementVNode("input",e.mergeProps({type:"text",class:{"top-input_input":!0,["top-input_input-"+l.modificator]:!!l.modificator,"top-forms-focusable":!l.disabled,"top-error":l.isError},autocomplete:"off_always",name:l.name,"onUpdate:modelValue":r[0]||(r[0]=p=>a.value=p),title:l.title,placeholder:o.value,disabled:l.disabled,readonly:l.readonly,onKeydown:r[1]||(r[1]=e.withKeys(e.withModifiers(()=>(l.addCleaner||!!l.$slots.btn)&&d(),["stop"]),["esc"]))},l.$attrs),null,16,fe),[[e.vModelText,a.value]]),l.addCleaner&&a.value&&a.value!=="0000-00-00"?(e.openBlock(),e.createElementBlock("span",{key:0,class:"top-input_cleaner","data-top-icon":"",onClick:e.withModifiers(d,["prevent"])},null,8,be)):e.createCommentVNode("",!0),l.captionType!==""?(e.openBlock(),e.createElementBlock("span",he,e.toDisplayString(l.title),1)):e.createCommentVNode("",!0),e.renderSlot(l.$slots,"default")],10,ue))}}),[["__cssModules",{$style:{"top-input":"top-input","top-input_input":"top-input_input","top-input-withCleaner":"top-input-withCleaner","top-input_cleaner":"top-input_cleaner"}}]]),ye=["modelValue"],ge=!!document.documentElement.ontouchstart&&!!document.createElement("input").showPicker;let T=s=>{};const ke=b(e.defineComponent({__name:"inputDate",props:{modelValue:{},name:{},disabled:{type:Boolean},readonly:{type:Boolean},title:{},captionType:{},size:{},icon:{},icon2:{default:""},addCleaner:{type:Boolean},isError:{type:Boolean},modificator:{}},emits:["update:modelValue"],setup(s,{emit:t}){const n=s,i=t,a=e.ref(),o=e.computed({get(){return h.dateFormat(n.modelValue,2,"0000-00-00")},set(p){p=h.dateUnformat(p,"0000-00-00"),i("update:modelValue",p)}});let d=p=>{T(p)},l=p=>{const u=h.dateUnformat(p.target.value),m=h.dateFormat(u);if(!m||m===c.L.Not_date||p.target.value!==m){p.target.value=o.value;return}o.value=p.target.value};async function r(p){const u=await new Promise((O,y)=>M(["./datepicker-a9226b0f.amd"],O,y));T=u.oninput;const m=u.connectDatepicker(p.target,{onSelect:()=>l(p)});m&&(m.datepicker("show"),e.onUnmounted(()=>m.datepicker("destroy")))}return(p,u)=>e.unref(ge)?(e.openBlock(),e.createBlock(e.unref(z),e.mergeProps({key:0},p.$props,{modelValue:o.value,readonly:"",onClick:u[1]||(u[1]=m=>a.value.showPicker())}),{default:e.withCtx(()=>[e.createElementVNode("input",{ref_key:"el",ref:a,type:"date",class:"top-input_input-date",modelValue:p.modelValue,onChange:u[0]||(u[0]=m=>o.value=m.target.value),tabindex:"-1"},null,40,ye)]),_:1},16,["modelValue"])):(e.openBlock(),e.createBlock(e.unref(z),e.mergeProps({key:1},p.$props,{modelValue:o.value,"onUpdate:modelValue":u[2]||(u[2]=m=>m===""?o.value="":""),onInput:e.unref(d),onFocusOnce:r,onChange:e.unref(l),modificator:"datepicker"}),null,16,["modelValue","onInput","onChange"]))}}),[["__cssModules",{$style:{"top-input-datepicker":"top-input-datepicker","top-input_input-date":"top-input_input-date"}}]]),we={class:"top-inputRange"},$e=e.createElementVNode("span",{class:"top-inputRange_dash"}," — ",-1),_e=b(e.defineComponent({__name:"inputRange",setup(s){return(t,n)=>(e.openBlock(),e.createElementBlock("div",we,[e.renderSlot(t.$slots,"from"),$e,e.renderSlot(t.$slots,"to")]))}}),[["__cssModules",{$style:{"top-inputRange":"top-inputRange","top-inputRange_dash":"top-inputRange_dash","top-input":"top-input"}}]]),Be=["name","value","disabled"],Me=b(e.defineComponent({__name:"radio",props:{modelValue:{},value:{},name:{},description:{},disabled:{type:Boolean},isError:{type:Boolean}},emits:["update:modelValue"],setup(s,{emit:t}){const n=s,i=t,a=e.computed({get(){return n.modelValue},set(o){i("update:modelValue",o)}});return(o,d)=>(e.openBlock(),e.createElementBlock("label",{class:e.normalizeClass({"top-forms-optionWrapper":!0,"top-radio":!0,["top-radio_"+o.name]:o.name!=="","top-disabled":o.disabled,"top-error":o.isError&&!o.disabled})},[e.withDirectives(e.createElementVNode("input",{type:"radio",class:e.normalizeClass({"top-forms-focusable":!o.disabled,"top-forms-option":!0,"top-radio_input":!0,"top-error":o.isError&&!o.disabled}),"onUpdate:modelValue":d[0]||(d[0]=l=>a.value=l),name:o.name,value:o.value,disabled:o.disabled},null,10,Be),[[e.vModelRadio,a.value]]),o.$slots.default?(e.openBlock(),e.createBlock(B,{key:0,description:o.description,disabled:o.disabled},{default:e.withCtx(()=>[e.renderSlot(o.$slots,"default")]),_:3},8,["description","disabled"])):e.createCommentVNode("",!0)],2))}}),[["__cssModules",{$style:{"top-radio":"top-radio","top-radio_input":"top-radio_input","top-error":"top-error"}}]]),Ve=["name","value","disabled"],Se=b(e.defineComponent({__name:"switcher",props:{modelValue:{type:[Boolean,Array,Set]},name:{},value:{},description:{},disabled:{type:Boolean},isError:{type:Boolean}},emits:["update:modelValue"],setup(s,{emit:t}){const n=s,i=t,a=e.computed({get(){return n.modelValue},set(o){i("update:modelValue",o)}});return(o,d)=>(e.openBlock(),e.createElementBlock("label",{class:e.normalizeClass({"top-forms-optionWrapper":!0,"top-checkboxSwitcher":!0,"top-disabled":o.disabled,"top-error":o.isError&&!o.disabled})},[e.withDirectives(e.createElementVNode("input",{type:"checkbox",class:e.normalizeClass({"top-forms-focusable":!o.disabled,"top-forms-option":!0,"top-checkboxSwitcher_input":!0,"top-error":o.isError&&!o.disabled}),"onUpdate:modelValue":d[0]||(d[0]=l=>a.value=l),name:o.name,value:o.value,disabled:o.disabled},null,10,Ve),[[e.vModelCheckbox,a.value]]),o.$slots.default?(e.openBlock(),e.createBlock(B,{key:0,description:o.description,disabled:o.disabled},{default:e.withCtx(()=>[e.renderSlot(o.$slots,"default")]),_:3},8,["description","disabled"])):e.createCommentVNode("",!0)],2))}}),[["__cssModules",{$style:{"top-checkboxSwitcher":"top-checkboxSwitcher","top-checkboxSwitcher_input":"top-checkboxSwitcher_input","top-error":"top-error"}}]]),Ce=["name","placeholder","disabled","readonly","rows"],Ee={key:0,class:"top-textarea_pseudoContent"},ze=b(e.defineComponent({inheritAttrs:!1,__name:"textarea",props:{modelValue:{},name:{},placeholder:{},rows:{default:5},minHeight:{default:120},expandable:{type:Boolean},disabled:{type:Boolean},readonly:{type:Boolean},isError:{type:Boolean},hint:{}},emits:["update:modelValue"],setup(s,{emit:t}){e.useCssVars(o=>({c838a038:o.minHeight+"px"}));const n=s,i=t,a=e.computed({get(){return n.modelValue},set(o){i("update:modelValue",o)}});return(o,d)=>{const l=e.resolveDirective("top-tooltip");return e.openBlock(),e.createElementBlock("label",{class:e.normalizeClass({"top-textarea":!0,["top-textarea-"+o.name]:o.name,"top-disabled":o.disabled})},[e.withDirectives(e.createElementVNode("textarea",e.mergeProps({type:"text",class:{"top-forms-focusable":!o.disabled,"top-textarea_textarea":!0,"top-textarea_textarea-expandable":o.expandable,"top-error":o.isError},autocomplete:"off_always",name:o.name,placeholder:o.placeholder,disabled:o.disabled,readonly:o.readonly,rows:o.expandable?void 0:o.rows},o.$attrs,{"onUpdate:modelValue":d[0]||(d[0]=r=>a.value=r)}),null,16,Ce),[[e.vModelText,a.value]]),o.expandable?(e.openBlock(),e.createElementBlock("div",Ee,e.toDisplayString(a.value+" "),1)):e.createCommentVNode("",!0),o.hint?e.withDirectives((e.openBlock(),e.createBlock(R,{key:1,class:"top-textarea_hint",hint:o.hint},null,8,["hint"])),[[l]]):e.createCommentVNode("",!0)],2)}}}),[["__cssModules",{$style:{"top-textarea":"top-textarea","top-textarea_textarea":"top-textarea_textarea","top-textarea_textarea-expandable":"top-textarea_textarea-expandable","top-textarea_pseudoContent":"top-textarea_pseudoContent","top-textarea_hint":"top-textarea_hint"}}]]),De=["data-value","data-top-icon","data-top-icon2"],Le=["name","disabled"],Fe=["label","disabled"],Ne=["value","selected","disabled"],Re=["value","selected","disabled"],Te={key:1,class:"top-formsCaption"},Ae=b(e.defineComponent({__name:"select",props:{modelValue:{},options:{},name:{},disabled:{type:Boolean},icon:{},size:{default:"s"},addChanger:{type:Boolean},title:{},isError:{type:Boolean}},emits:["update:modelValue"],setup(s,{emit:t}){const n=s,i=t,a=e.computed({get(){return n.modelValue},set(r){i("update:modelValue",r)}}),o=e.computed(()=>{var r;return(r=d.value.get(a.value))==null?void 0:r.icon}),d=e.computed(()=>{const r=new Map;return n.options.forEach(p=>{if(!p.disabled){if(p.children){p.children.forEach(u=>{u.disabled||r.set(u.value,u)});return}r.set(p.value,p)}}),r});e.watch([e.toRef(n.modelValue),d],()=>{(a.value===null||a.value===void 0)&&d.value.size&&(console.warn("Пожалуйста, не передавайте в компонент Select значения null и undefined"),a.value=d.value.keys().next().value)},{immediate:!0});const l=()=>{const r=[...d.value.keys()],u=(r.indexOf(a.value)+1)%r.length;a.value=r[u]};return(r,p)=>(e.openBlock(),e.createElementBlock("label",{class:e.normalizeClass({"top-select":!0,["top-select-"+r.name]:r.name,["top-size_"+r.size]:!0,"top-formsCaptionWrapper":!!r.title,"top-select-error":r.isError,"top-disabled":r.disabled}),"data-value":a.value,"data-top-icon":r.icon,"data-top-icon2":o.value},[e.withDirectives(e.createElementVNode("select",{class:e.normalizeClass({"top-forms-focusable":!r.disabled,"top-select_select":!0,"top-select_arrow":!0,"top-error":r.isError}),name:r.name,disabled:r.disabled,"onUpdate:modelValue":p[0]||(p[0]=u=>a.value=u)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.options.entries(),([u,m])=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[m.children?(e.openBlock(),e.createElementBlock("optgroup",{key:"group_"+m.value,label:m.title,disabled:m.disabled},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(m.children.entries(),([O,y])=>(e.openBlock(),e.createElementBlock("option",{key:m.value,value:y.value,selected:y.value===a.value,disabled:y.disabled},e.toDisplayString(y.title),9,Ne))),128))],8,Fe)):(e.openBlock(),e.createElementBlock("option",{key:m.value,value:m.value,selected:m.value===a.value,disabled:m.disabled},e.toDisplayString(m.title),9,Re))],64))),256))],10,Le),[[e.vModelSelect,a.value]]),r.addChanger&&d.value.size&&!r.disabled?(e.openBlock(),e.createElementBlock("span",{key:0,class:"top-changer",onClick:l})):e.createCommentVNode("",!0),r.title?(e.openBlock(),e.createElementBlock("span",Te,e.toDisplayString(r.title),1)):e.createCommentVNode("",!0)],10,De))}}),[["__cssModules",{$style:{"top-select":"top-select","top-select-error":"top-select-error","top-select_select":"top-select_select","top-changer":"top-changer"}}]]);f.Button=re,f.ControlLabel=B,f.Core=c,f.DOM=D,f.Device=g,f.Events=F,f.Hint=R,f.Input=z,f.Textarea=ze,f.UtilsDate=h,f._export_sfc=b,f.avatar=ie,f.checkbox=ce,f.inputDate=ke,f.inputRange=_e,f.radio=Me,f.select=Ae,f.switcher=Se});
|
|
3
|
+
//# sourceMappingURL=forms-771091d4.amd.js.map
|