@topvisor/ui 0.0.38 → 0.0.42
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-126a4e1b.amd.js +234 -0
- package/.chunks/datepicker-126a4e1b.amd.js.map +1 -0
- package/.chunks/datepicker-47a90829.es.js +275 -0
- package/.chunks/datepicker-47a90829.es.js.map +1 -0
- package/.chunks/{forms-779fee37.es.js → forms-15b83561.es.js} +94 -92
- package/.chunks/forms-15b83561.es.js.map +1 -0
- package/.chunks/forms-41d0318c.amd.js +3 -0
- package/.chunks/forms-41d0318c.amd.js.map +1 -0
- package/.chunks/popup-431fc5d5.amd.js +377 -0
- package/.chunks/popup-431fc5d5.amd.js.map +1 -0
- package/.chunks/{popup-672d6531.es.js → popup-e1bbd684.es.js} +429 -427
- package/.chunks/popup-e1bbd684.es.js.map +1 -0
- package/README.md +80 -62
- 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-778ddcc5.es.js +0 -275
- package/.chunks/datepicker-778ddcc5.es.js.map +0 -1
- package/.chunks/datepicker-80599025.amd.js +0 -234
- package/.chunks/datepicker-80599025.amd.js.map +0 -1
- package/.chunks/forms-58420e52.amd.js +0 -3
- package/.chunks/forms-58420e52.amd.js.map +0 -1
- package/.chunks/forms-779fee37.es.js.map +0 -1
- package/.chunks/popup-672d6531.es.js.map +0 -1
- package/.chunks/popup-d53450b6.amd.js +0 -377
- package/.chunks/popup-d53450b6.amd.js.map +0 -1
|
@@ -197,7 +197,7 @@ const Se = {
|
|
|
197
197
|
return;
|
|
198
198
|
}
|
|
199
199
|
return z.jQuery(s);
|
|
200
|
-
},
|
|
200
|
+
}, Y = (s, e) => {
|
|
201
201
|
var n;
|
|
202
202
|
const a = s.value ?? {};
|
|
203
203
|
return a.content ??= (n = e.props) == null ? void 0 : n.title, a.content = String(a.content).replace(/\r\n|\r|\n/g, "<br>"), a.position ??= {
|
|
@@ -207,11 +207,11 @@ const Se = {
|
|
|
207
207
|
}, Ve = {
|
|
208
208
|
mounted(s, e, a) {
|
|
209
209
|
var n;
|
|
210
|
-
(n = A(s)) == null || n.tooltip(
|
|
210
|
+
(n = A(s)) == null || n.tooltip(Y(e, a));
|
|
211
211
|
},
|
|
212
212
|
updated(s, e, a, n) {
|
|
213
213
|
var r;
|
|
214
|
-
const o =
|
|
214
|
+
const o = Y(e, a), t = (r = A(s)) == null ? void 0 : r.tooltip("instance");
|
|
215
215
|
t && (t.options = {
|
|
216
216
|
...t.options,
|
|
217
217
|
...o
|
|
@@ -382,7 +382,7 @@ const Be = { class: "top-avatar" }, Ee = ["src", "title"], Le = ["title"], ze =
|
|
|
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: {
|
|
@@ -421,7 +421,7 @@ ${n.value}` : ""),
|
|
|
421
421
|
return a;
|
|
422
422
|
}, Ce = {
|
|
423
423
|
$style: De
|
|
424
|
-
},
|
|
424
|
+
}, Pt = /* @__PURE__ */ g(ze, [["__cssModules", Ce]]), Re = { class: "top-ellipsis" }, Fe = /* @__PURE__ */ v({
|
|
425
425
|
__name: "button",
|
|
426
426
|
props: {
|
|
427
427
|
color: { default: "blue" },
|
|
@@ -460,18 +460,20 @@ ${n.value}` : ""),
|
|
|
460
460
|
inProgress: o.isProgress
|
|
461
461
|
}, {
|
|
462
462
|
default: B(() => [
|
|
463
|
-
|
|
464
|
-
|
|
463
|
+
w("span", Re, [
|
|
464
|
+
$(o.$slots, "default", {}, () => [
|
|
465
|
+
ee(_(o.icon ? "" : "Button"), 1)
|
|
466
|
+
])
|
|
465
467
|
])
|
|
466
468
|
]),
|
|
467
469
|
_: 3
|
|
468
470
|
}, 8, ["class", "name", "title", "href", "type", "data-top-icon", "data-top-icon2", "disabled", "inProgress"]));
|
|
469
471
|
}
|
|
470
|
-
}),
|
|
472
|
+
}), Te = "_progress_1f1nw_1", Ae = {
|
|
471
473
|
"top-button": "top-button",
|
|
472
474
|
"top-active": "top-active",
|
|
473
475
|
"top-button-progress": "top-button-progress",
|
|
474
|
-
progress:
|
|
476
|
+
progress: Te,
|
|
475
477
|
"top-color_blue": "top-color_blue",
|
|
476
478
|
"top-color_green": "top-color_green",
|
|
477
479
|
"top-color_orange": "top-color_orange",
|
|
@@ -483,16 +485,16 @@ ${n.value}` : ""),
|
|
|
483
485
|
"top-style_transparent": "top-style_transparent",
|
|
484
486
|
"top-size_l": "top-size_l",
|
|
485
487
|
"top-size_xl": "top-size_xl"
|
|
486
|
-
},
|
|
487
|
-
$style:
|
|
488
|
-
},
|
|
488
|
+
}, Oe = {
|
|
489
|
+
$style: Ae
|
|
490
|
+
}, Wt = /* @__PURE__ */ g(Fe, [["__cssModules", Oe]]), Pe = { class: "top-forms-optionLabel" }, We = /* @__PURE__ */ v({
|
|
489
491
|
__name: "controlLabel",
|
|
490
492
|
props: {
|
|
491
493
|
description: {},
|
|
492
494
|
disabled: { type: Boolean }
|
|
493
495
|
},
|
|
494
496
|
setup(s) {
|
|
495
|
-
return (e, a) => (u(), m("div",
|
|
497
|
+
return (e, a) => (u(), m("div", Pe, [
|
|
496
498
|
w("div", {
|
|
497
499
|
class: h({
|
|
498
500
|
"top-forms-optionLabel_title": !0,
|
|
@@ -507,15 +509,15 @@ ${n.value}` : ""),
|
|
|
507
509
|
}, _(e.description), 3)) : y("", !0)
|
|
508
510
|
]));
|
|
509
511
|
}
|
|
510
|
-
}),
|
|
512
|
+
}), Ue = {
|
|
511
513
|
"top-forms-optionLabel": "top-forms-optionLabel",
|
|
512
514
|
"top-forms-optionLabel_title": "top-forms-optionLabel_title",
|
|
513
515
|
"top-forms-optionLabel_title-disabled": "top-forms-optionLabel_title-disabled",
|
|
514
516
|
"top-forms-optionLabel_description": "top-forms-optionLabel_description",
|
|
515
517
|
"top-forms-optionLabel_description-disabled": "top-forms-optionLabel_description-disabled"
|
|
516
|
-
},
|
|
517
|
-
$style:
|
|
518
|
-
}, U = /* @__PURE__ */ g(
|
|
518
|
+
}, He = {
|
|
519
|
+
$style: Ue
|
|
520
|
+
}, U = /* @__PURE__ */ g(We, [["__cssModules", He]]), Ie = ["name", "value", "indeterminate", "disabled"], Ne = /* @__PURE__ */ v({
|
|
519
521
|
__name: "checkbox",
|
|
520
522
|
props: {
|
|
521
523
|
modelValue: { type: [Boolean, Array, Set] },
|
|
@@ -558,7 +560,7 @@ ${n.value}` : ""),
|
|
|
558
560
|
value: t.value,
|
|
559
561
|
indeterminate: t.indeterminate,
|
|
560
562
|
disabled: t.disabled
|
|
561
|
-
}, null, 10,
|
|
563
|
+
}, null, 10, Ie), [
|
|
562
564
|
[J, o.value]
|
|
563
565
|
]),
|
|
564
566
|
t.$slots.default ? (u(), k(U, {
|
|
@@ -573,13 +575,13 @@ ${n.value}` : ""),
|
|
|
573
575
|
}, 8, ["description", "disabled"])) : y("", !0)
|
|
574
576
|
], 2));
|
|
575
577
|
}
|
|
576
|
-
}),
|
|
578
|
+
}), je = {
|
|
577
579
|
"top-checkbox": "top-checkbox",
|
|
578
580
|
"top-checkbox_input": "top-checkbox_input",
|
|
579
581
|
"top-error": "top-error"
|
|
580
|
-
},
|
|
581
|
-
$style:
|
|
582
|
-
},
|
|
582
|
+
}, Ye = {
|
|
583
|
+
$style: je
|
|
584
|
+
}, Ut = /* @__PURE__ */ g(Ne, [["__cssModules", Ye]]), qe = ["title"], Ge = /* @__PURE__ */ v({
|
|
583
585
|
__name: "hint",
|
|
584
586
|
props: {
|
|
585
587
|
hint: {}
|
|
@@ -591,14 +593,14 @@ ${n.value}` : ""),
|
|
|
591
593
|
title: e.hint
|
|
592
594
|
}, null, 8, qe));
|
|
593
595
|
}
|
|
594
|
-
}),
|
|
596
|
+
}), Ke = {
|
|
595
597
|
"top-hint": "top-hint"
|
|
596
|
-
},
|
|
597
|
-
$style:
|
|
598
|
-
},
|
|
598
|
+
}, Qe = {
|
|
599
|
+
$style: Ke
|
|
600
|
+
}, Xe = /* @__PURE__ */ g(Ge, [["__cssModules", Qe]]), Je = ["data-top-icon", "data-top-icon2"], Ze = ["name", "title", "placeholder", "disabled", "readonly"], xe = ["onClick"], et = {
|
|
599
601
|
key: 1,
|
|
600
602
|
class: "top-formsCaption"
|
|
601
|
-
},
|
|
603
|
+
}, tt = /* @__PURE__ */ v({
|
|
602
604
|
inheritAttrs: !1,
|
|
603
605
|
__name: "input",
|
|
604
606
|
props: {
|
|
@@ -656,7 +658,7 @@ ${n.value}` : ""),
|
|
|
656
658
|
disabled: i.disabled,
|
|
657
659
|
readonly: i.readonly,
|
|
658
660
|
onKeydown: l[1] || (l[1] = te(I(() => (i.addCleaner || !!i.$slots.btn) && r(), ["stop"]), ["esc"]))
|
|
659
|
-
}, i.$attrs), null, 16,
|
|
661
|
+
}, i.$attrs), null, 16, Ze), [
|
|
660
662
|
[Z, o.value]
|
|
661
663
|
]),
|
|
662
664
|
i.addCleaner && o.value && o.value !== "0000-00-00" ? (u(), m("span", {
|
|
@@ -664,22 +666,22 @@ ${n.value}` : ""),
|
|
|
664
666
|
class: "top-input_cleaner",
|
|
665
667
|
"data-top-icon": "",
|
|
666
668
|
onClick: I(r, ["prevent"])
|
|
667
|
-
}, null, 8,
|
|
668
|
-
i.captionType !== "" ? (u(), m("span",
|
|
669
|
+
}, null, 8, xe)) : y("", !0),
|
|
670
|
+
i.captionType !== "" ? (u(), m("span", et, _(i.title), 1)) : y("", !0),
|
|
669
671
|
$(i.$slots, "default")
|
|
670
|
-
], 10,
|
|
672
|
+
], 10, Je));
|
|
671
673
|
}
|
|
672
|
-
}),
|
|
674
|
+
}), ot = {
|
|
673
675
|
"top-input": "top-input",
|
|
674
676
|
"top-input_input": "top-input_input",
|
|
675
677
|
"top-input-withCleaner": "top-input-withCleaner",
|
|
676
678
|
"top-input_cleaner": "top-input_cleaner"
|
|
677
|
-
},
|
|
678
|
-
$style:
|
|
679
|
-
},
|
|
679
|
+
}, at = {
|
|
680
|
+
$style: ot
|
|
681
|
+
}, q = /* @__PURE__ */ g(tt, [["__cssModules", at]]), st = ["modelValue"], nt = !!document.documentElement.ontouchstart && !!document.createElement("input").showPicker;
|
|
680
682
|
let G = (s) => {
|
|
681
683
|
};
|
|
682
|
-
const
|
|
684
|
+
const it = /* @__PURE__ */ v({
|
|
683
685
|
__name: "inputDate",
|
|
684
686
|
props: {
|
|
685
687
|
modelValue: {},
|
|
@@ -716,14 +718,14 @@ const nt = /* @__PURE__ */ v({
|
|
|
716
718
|
t.value = d.target.value;
|
|
717
719
|
};
|
|
718
720
|
async function l(d) {
|
|
719
|
-
const f = await import("./datepicker-
|
|
721
|
+
const f = await import("./datepicker-47a90829.es.js");
|
|
720
722
|
G = f.oninput;
|
|
721
723
|
const c = f.connectDatepicker(d.target, {
|
|
722
724
|
onSelect: () => i(d)
|
|
723
725
|
});
|
|
724
726
|
c && (c.datepicker("show"), ae(() => c.datepicker("destroy")));
|
|
725
727
|
}
|
|
726
|
-
return (d, f) => S(
|
|
728
|
+
return (d, f) => S(nt) ? (u(), k(S(q), D({ key: 0 }, d.$props, {
|
|
727
729
|
modelValue: t.value,
|
|
728
730
|
readonly: "",
|
|
729
731
|
onClick: f[1] || (f[1] = (c) => o.value.showPicker())
|
|
@@ -737,10 +739,10 @@ const nt = /* @__PURE__ */ v({
|
|
|
737
739
|
modelValue: d.modelValue,
|
|
738
740
|
onChange: f[0] || (f[0] = (c) => t.value = c.target.value),
|
|
739
741
|
tabindex: "-1"
|
|
740
|
-
}, null, 40,
|
|
742
|
+
}, null, 40, st)
|
|
741
743
|
]),
|
|
742
744
|
_: 1
|
|
743
|
-
}, 16, ["modelValue"])) : (u(), k(S(
|
|
745
|
+
}, 16, ["modelValue"])) : (u(), k(S(q), D({ key: 1 }, d.$props, {
|
|
744
746
|
modelValue: t.value,
|
|
745
747
|
"onUpdate:modelValue": f[2] || (f[2] = (c) => c === "" ? t.value = "" : ""),
|
|
746
748
|
onInput: S(r),
|
|
@@ -749,27 +751,27 @@ const nt = /* @__PURE__ */ v({
|
|
|
749
751
|
modificator: "datepicker"
|
|
750
752
|
}), null, 16, ["modelValue", "onInput", "onChange"]));
|
|
751
753
|
}
|
|
752
|
-
}),
|
|
754
|
+
}), lt = {
|
|
753
755
|
"top-input-datepicker": "top-input-datepicker",
|
|
754
756
|
"top-input_input-date": "top-input_input-date"
|
|
755
|
-
},
|
|
756
|
-
$style:
|
|
757
|
-
},
|
|
757
|
+
}, rt = {
|
|
758
|
+
$style: lt
|
|
759
|
+
}, Ht = /* @__PURE__ */ g(it, [["__cssModules", rt]]), dt = { class: "top-inputRange" }, pt = /* @__PURE__ */ w("span", { class: "top-inputRange_dash" }, " — ", -1), ut = /* @__PURE__ */ v({
|
|
758
760
|
__name: "inputRange",
|
|
759
761
|
setup(s) {
|
|
760
|
-
return (e, a) => (u(), m("div",
|
|
762
|
+
return (e, a) => (u(), m("div", dt, [
|
|
761
763
|
$(e.$slots, "from"),
|
|
762
|
-
|
|
764
|
+
pt,
|
|
763
765
|
$(e.$slots, "to")
|
|
764
766
|
]));
|
|
765
767
|
}
|
|
766
|
-
}),
|
|
768
|
+
}), ct = {
|
|
767
769
|
"top-inputRange": "top-inputRange",
|
|
768
770
|
"top-inputRange_dash": "top-inputRange_dash",
|
|
769
771
|
"top-input": "top-input"
|
|
770
|
-
},
|
|
771
|
-
$style:
|
|
772
|
-
},
|
|
772
|
+
}, mt = {
|
|
773
|
+
$style: ct
|
|
774
|
+
}, It = /* @__PURE__ */ g(ut, [["__cssModules", mt]]), ft = ["name", "value", "disabled"], bt = /* @__PURE__ */ v({
|
|
773
775
|
__name: "radio",
|
|
774
776
|
props: {
|
|
775
777
|
modelValue: {},
|
|
@@ -810,7 +812,7 @@ const nt = /* @__PURE__ */ v({
|
|
|
810
812
|
name: t.name,
|
|
811
813
|
value: t.value,
|
|
812
814
|
disabled: t.disabled
|
|
813
|
-
}, null, 10,
|
|
815
|
+
}, null, 10, ft), [
|
|
814
816
|
[se, o.value]
|
|
815
817
|
]),
|
|
816
818
|
t.$slots.default ? (u(), k(U, {
|
|
@@ -825,13 +827,13 @@ const nt = /* @__PURE__ */ v({
|
|
|
825
827
|
}, 8, ["description", "disabled"])) : y("", !0)
|
|
826
828
|
], 2));
|
|
827
829
|
}
|
|
828
|
-
}),
|
|
830
|
+
}), ht = {
|
|
829
831
|
"top-radio": "top-radio",
|
|
830
832
|
"top-radio_input": "top-radio_input",
|
|
831
833
|
"top-error": "top-error"
|
|
832
|
-
},
|
|
833
|
-
$style:
|
|
834
|
-
},
|
|
834
|
+
}, vt = {
|
|
835
|
+
$style: ht
|
|
836
|
+
}, Nt = /* @__PURE__ */ g(bt, [["__cssModules", vt]]), gt = ["name", "value", "disabled"], yt = /* @__PURE__ */ v({
|
|
835
837
|
__name: "switcher",
|
|
836
838
|
props: {
|
|
837
839
|
modelValue: { type: [Boolean, Array, Set] },
|
|
@@ -871,7 +873,7 @@ const nt = /* @__PURE__ */ v({
|
|
|
871
873
|
name: t.name,
|
|
872
874
|
value: t.value,
|
|
873
875
|
disabled: t.disabled
|
|
874
|
-
}, null, 10,
|
|
876
|
+
}, null, 10, gt), [
|
|
875
877
|
[J, o.value]
|
|
876
878
|
]),
|
|
877
879
|
t.$slots.default ? (u(), k(U, {
|
|
@@ -886,16 +888,16 @@ const nt = /* @__PURE__ */ v({
|
|
|
886
888
|
}, 8, ["description", "disabled"])) : y("", !0)
|
|
887
889
|
], 2));
|
|
888
890
|
}
|
|
889
|
-
}),
|
|
891
|
+
}), wt = {
|
|
890
892
|
"top-checkboxSwitcher": "top-checkboxSwitcher",
|
|
891
893
|
"top-checkboxSwitcher_input": "top-checkboxSwitcher_input",
|
|
892
894
|
"top-error": "top-error"
|
|
893
|
-
},
|
|
894
|
-
$style:
|
|
895
|
-
},
|
|
895
|
+
}, $t = {
|
|
896
|
+
$style: wt
|
|
897
|
+
}, jt = /* @__PURE__ */ g(yt, [["__cssModules", $t]]), _t = ["name", "placeholder", "disabled", "readonly", "rows"], kt = {
|
|
896
898
|
key: 0,
|
|
897
899
|
class: "top-textarea_pseudoContent"
|
|
898
|
-
},
|
|
900
|
+
}, Mt = /* @__PURE__ */ v({
|
|
899
901
|
inheritAttrs: !1,
|
|
900
902
|
__name: "textarea",
|
|
901
903
|
props: {
|
|
@@ -913,7 +915,7 @@ const nt = /* @__PURE__ */ v({
|
|
|
913
915
|
emits: ["update:modelValue"],
|
|
914
916
|
setup(s, { emit: e }) {
|
|
915
917
|
X((t) => ({
|
|
916
|
-
|
|
918
|
+
c838a038: t.minHeight + "px"
|
|
917
919
|
}));
|
|
918
920
|
const a = s, n = e, o = b({
|
|
919
921
|
get() {
|
|
@@ -948,11 +950,11 @@ const nt = /* @__PURE__ */ v({
|
|
|
948
950
|
rows: t.expandable ? void 0 : t.rows
|
|
949
951
|
}, t.$attrs, {
|
|
950
952
|
"onUpdate:modelValue": r[0] || (r[0] = (l) => o.value = l)
|
|
951
|
-
}), null, 16,
|
|
953
|
+
}), null, 16, _t), [
|
|
952
954
|
[Z, o.value]
|
|
953
955
|
]),
|
|
954
|
-
t.expandable ? (u(), m("div",
|
|
955
|
-
t.hint ? M((u(), k(
|
|
956
|
+
t.expandable ? (u(), m("div", kt, _(o.value + " "), 1)) : y("", !0),
|
|
957
|
+
t.hint ? M((u(), k(Xe, {
|
|
956
958
|
key: 1,
|
|
957
959
|
class: "top-textarea_hint",
|
|
958
960
|
hint: t.hint
|
|
@@ -962,18 +964,18 @@ const nt = /* @__PURE__ */ v({
|
|
|
962
964
|
], 2);
|
|
963
965
|
};
|
|
964
966
|
}
|
|
965
|
-
}),
|
|
967
|
+
}), St = {
|
|
966
968
|
"top-textarea": "top-textarea",
|
|
967
969
|
"top-textarea_textarea": "top-textarea_textarea",
|
|
968
970
|
"top-textarea_textarea-expandable": "top-textarea_textarea-expandable",
|
|
969
971
|
"top-textarea_pseudoContent": "top-textarea_pseudoContent",
|
|
970
972
|
"top-textarea_hint": "top-textarea_hint"
|
|
971
|
-
},
|
|
972
|
-
$style:
|
|
973
|
-
},
|
|
973
|
+
}, Vt = {
|
|
974
|
+
$style: St
|
|
975
|
+
}, Yt = /* @__PURE__ */ g(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 = {
|
|
974
976
|
key: 1,
|
|
975
977
|
class: "top-formsCaption"
|
|
976
|
-
},
|
|
978
|
+
}, Rt = /* @__PURE__ */ v({
|
|
977
979
|
__name: "select",
|
|
978
980
|
props: {
|
|
979
981
|
modelValue: {},
|
|
@@ -1052,20 +1054,20 @@ const nt = /* @__PURE__ */ v({
|
|
|
1052
1054
|
label: c.title,
|
|
1053
1055
|
disabled: c.disabled
|
|
1054
1056
|
}, [
|
|
1055
|
-
(u(!0), m(F, null, N(c.children.entries(), ([
|
|
1057
|
+
(u(!0), m(F, null, N(c.children.entries(), ([At, E]) => (u(), m("option", {
|
|
1056
1058
|
key: c.value,
|
|
1057
1059
|
value: E.value,
|
|
1058
1060
|
selected: E.value === o.value,
|
|
1059
1061
|
disabled: E.disabled
|
|
1060
|
-
}, _(E.title), 9,
|
|
1061
|
-
], 8,
|
|
1062
|
+
}, _(E.title), 9, zt))), 128))
|
|
1063
|
+
], 8, Lt)) : (u(), m("option", {
|
|
1062
1064
|
key: c.value,
|
|
1063
1065
|
value: c.value,
|
|
1064
1066
|
selected: c.value === o.value,
|
|
1065
1067
|
disabled: c.disabled
|
|
1066
|
-
}, _(c.title), 9,
|
|
1068
|
+
}, _(c.title), 9, Dt))
|
|
1067
1069
|
], 64))), 256))
|
|
1068
|
-
], 10,
|
|
1070
|
+
], 10, Et), [
|
|
1069
1071
|
[re, o.value]
|
|
1070
1072
|
]),
|
|
1071
1073
|
l.addChanger && r.value.size && !l.disabled ? (u(), m("span", {
|
|
@@ -1073,35 +1075,35 @@ const nt = /* @__PURE__ */ v({
|
|
|
1073
1075
|
class: "top-changer",
|
|
1074
1076
|
onClick: i
|
|
1075
1077
|
})) : y("", !0),
|
|
1076
|
-
l.title ? (u(), m("span",
|
|
1077
|
-
], 10,
|
|
1078
|
+
l.title ? (u(), m("span", Ct, _(l.title), 1)) : y("", !0)
|
|
1079
|
+
], 10, Bt));
|
|
1078
1080
|
}
|
|
1079
|
-
}),
|
|
1081
|
+
}), Ft = {
|
|
1080
1082
|
"top-select": "top-select",
|
|
1081
1083
|
"top-select-error": "top-select-error",
|
|
1082
1084
|
"top-select_select": "top-select_select",
|
|
1083
1085
|
"top-changer": "top-changer"
|
|
1084
|
-
},
|
|
1085
|
-
$style:
|
|
1086
|
-
}, qt = /* @__PURE__ */ g(
|
|
1086
|
+
}, Tt = {
|
|
1087
|
+
$style: Ft
|
|
1088
|
+
}, qt = /* @__PURE__ */ g(Rt, [["__cssModules", Tt]]);
|
|
1087
1089
|
export {
|
|
1088
|
-
|
|
1090
|
+
Wt as B,
|
|
1089
1091
|
p as C,
|
|
1090
1092
|
ge as D,
|
|
1091
1093
|
ke as E,
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
|
|
1094
|
+
Xe as H,
|
|
1095
|
+
q as I,
|
|
1096
|
+
Yt as T,
|
|
1095
1097
|
V as U,
|
|
1096
1098
|
g as _,
|
|
1097
1099
|
T as a,
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
+
Pt as b,
|
|
1101
|
+
Ut as c,
|
|
1100
1102
|
U as d,
|
|
1101
|
-
|
|
1103
|
+
It as e,
|
|
1102
1104
|
qt as f,
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
|
|
1105
|
+
Ht as i,
|
|
1106
|
+
Nt as r,
|
|
1107
|
+
jt as s
|
|
1106
1108
|
};
|
|
1107
|
-
//# sourceMappingURL=forms-
|
|
1109
|
+
//# sourceMappingURL=forms-15b83561.es.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"forms-15b83561.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 class=\"top-ellipsis\">\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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"}
|