@1337exp/taoui 1.1.1 → 1.2.2

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/dist/index.cjs CHANGED
@@ -2,17 +2,17 @@
2
2
  typeof exports === "object" && typeof module !== "undefined" ? factory(exports, require("vue")) : typeof define === "function" && define.amd ? define(["exports", "vue"], factory) : (global = typeof globalThis !== "undefined" ? globalThis : global || self, factory(global.TaoUI = {}, global.Vue));
3
3
  })(this, function(exports2, vue) {
4
4
  "use strict";
5
- const _hoisted_1$E = ["type", "disabled"];
6
- const _hoisted_2$z = {
5
+ const _hoisted_1$F = ["type", "disabled"];
6
+ const _hoisted_2$A = {
7
7
  key: 0,
8
8
  class: "tao-button__loader"
9
9
  };
10
- const _hoisted_3$t = {
10
+ const _hoisted_3$u = {
11
11
  key: 1,
12
12
  class: "tao-button__icon"
13
13
  };
14
14
  const _hoisted_4$o = { class: "tao-button__content" };
15
- const _sfc_main$N = /* @__PURE__ */ vue.defineComponent({
15
+ const _sfc_main$O = /* @__PURE__ */ vue.defineComponent({
16
16
  ...{ name: "TaoButton" },
17
17
  __name: "TaoButton",
18
18
  props: {
@@ -49,12 +49,12 @@
49
49
  disabled: __props.disabled || __props.loading,
50
50
  onClick: handleClick
51
51
  }, [
52
- __props.loading ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_2$z)) : vue.createCommentVNode("", true),
53
- __props.icon ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$t, vue.toDisplayString(__props.icon), 1)) : vue.createCommentVNode("", true),
52
+ __props.loading ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_2$A)) : vue.createCommentVNode("", true),
53
+ __props.icon ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$u, vue.toDisplayString(__props.icon), 1)) : vue.createCommentVNode("", true),
54
54
  vue.createElementVNode("span", _hoisted_4$o, [
55
55
  vue.renderSlot(_ctx.$slots, "default", {}, void 0, true)
56
56
  ])
57
- ], 10, _hoisted_1$E);
57
+ ], 10, _hoisted_1$F);
58
58
  };
59
59
  }
60
60
  });
@@ -65,8 +65,8 @@
65
65
  }
66
66
  return target;
67
67
  };
68
- const TaoButton = /* @__PURE__ */ _export_sfc(_sfc_main$N, [["__scopeId", "data-v-5a0fd489"]]);
69
- const _sfc_main$M = /* @__PURE__ */ vue.defineComponent({
68
+ const TaoButton = /* @__PURE__ */ _export_sfc(_sfc_main$O, [["__scopeId", "data-v-5a0fd489"]]);
69
+ const _sfc_main$N = /* @__PURE__ */ vue.defineComponent({
70
70
  ...{ name: "TaoBlock" },
71
71
  __name: "TaoBlock",
72
72
  props: {
@@ -98,11 +98,11 @@
98
98
  };
99
99
  }
100
100
  });
101
- const TaoBlock = /* @__PURE__ */ _export_sfc(_sfc_main$M, [["__scopeId", "data-v-feb87e36"]]);
101
+ const TaoBlock = /* @__PURE__ */ _export_sfc(_sfc_main$N, [["__scopeId", "data-v-feb87e36"]]);
102
102
  const formFieldKey = Symbol("taoFormField");
103
- const _hoisted_1$D = { class: "tao-input-wrapper" };
104
- const _hoisted_2$y = ["for"];
105
- const _hoisted_3$s = {
103
+ const _hoisted_1$E = { class: "tao-input-wrapper" };
104
+ const _hoisted_2$z = ["for"];
105
+ const _hoisted_3$t = {
106
106
  key: 0,
107
107
  class: "tao-input__affix tao-input__affix--prefix"
108
108
  };
@@ -115,7 +115,7 @@
115
115
  key: 1,
116
116
  class: "tao-input__error"
117
117
  };
118
- const _sfc_main$L = /* @__PURE__ */ vue.defineComponent({
118
+ const _sfc_main$M = /* @__PURE__ */ vue.defineComponent({
119
119
  ...{ name: "TaoInput" },
120
120
  __name: "TaoInput",
121
121
  props: {
@@ -151,12 +151,12 @@
151
151
  emit("focus", event);
152
152
  }
153
153
  return (_ctx, _cache) => {
154
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$D, [
154
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$E, [
155
155
  __props.label && !vue.unref(field) ? (vue.openBlock(), vue.createElementBlock("label", {
156
156
  key: 0,
157
157
  class: "tao-input__label",
158
158
  for: controlId.value
159
- }, vue.toDisplayString(__props.label), 9, _hoisted_2$y)) : vue.createCommentVNode("", true),
159
+ }, vue.toDisplayString(__props.label), 9, _hoisted_2$z)) : vue.createCommentVNode("", true),
160
160
  vue.createElementVNode("div", {
161
161
  class: vue.normalizeClass(["tao-input-shell", {
162
162
  "tao-input-shell--focused": focused.value,
@@ -166,7 +166,7 @@
166
166
  "tao-input-shell--suffix": _ctx.$slots.suffix
167
167
  }])
168
168
  }, [
169
- _ctx.$slots.prefix ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$s, [
169
+ _ctx.$slots.prefix ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$t, [
170
170
  vue.renderSlot(_ctx.$slots, "prefix", {}, void 0, true)
171
171
  ])) : vue.createCommentVNode("", true),
172
172
  vue.createElementVNode("input", {
@@ -191,17 +191,17 @@
191
191
  };
192
192
  }
193
193
  });
194
- const TaoInput = /* @__PURE__ */ _export_sfc(_sfc_main$L, [["__scopeId", "data-v-b522e041"]]);
195
- const _hoisted_1$C = {
194
+ const TaoInput = /* @__PURE__ */ _export_sfc(_sfc_main$M, [["__scopeId", "data-v-b522e041"]]);
195
+ const _hoisted_1$D = {
196
196
  key: 0,
197
197
  class: "tao-input-group__addon tao-input-group__addon--before"
198
198
  };
199
- const _hoisted_2$x = { class: "tao-input-group__field" };
200
- const _hoisted_3$r = {
199
+ const _hoisted_2$y = { class: "tao-input-group__field" };
200
+ const _hoisted_3$s = {
201
201
  key: 1,
202
202
  class: "tao-input-group__addon tao-input-group__addon--after"
203
203
  };
204
- const _sfc_main$K = /* @__PURE__ */ vue.defineComponent({
204
+ const _sfc_main$L = /* @__PURE__ */ vue.defineComponent({
205
205
  ...{ name: "TaoInputGroup" },
206
206
  __name: "TaoInputGroup",
207
207
  setup(__props) {
@@ -223,28 +223,28 @@
223
223
  onFocusin: onFocusIn,
224
224
  onFocusout: onFocusOut
225
225
  }, [
226
- _ctx.$slots.before ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$C, [
226
+ _ctx.$slots.before ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$D, [
227
227
  vue.renderSlot(_ctx.$slots, "before", {}, void 0, true)
228
228
  ])) : vue.createCommentVNode("", true),
229
- vue.createElementVNode("div", _hoisted_2$x, [
229
+ vue.createElementVNode("div", _hoisted_2$y, [
230
230
  vue.renderSlot(_ctx.$slots, "default", {}, void 0, true)
231
231
  ]),
232
- _ctx.$slots.after ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$r, [
232
+ _ctx.$slots.after ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$s, [
233
233
  vue.renderSlot(_ctx.$slots, "after", {}, void 0, true)
234
234
  ])) : vue.createCommentVNode("", true)
235
235
  ], 34);
236
236
  };
237
237
  }
238
238
  });
239
- const TaoInputGroup = /* @__PURE__ */ _export_sfc(_sfc_main$K, [["__scopeId", "data-v-f06bb3b1"]]);
240
- const _hoisted_1$B = ["id", "value", "placeholder", "disabled", "aria-invalid", "aria-describedby", "aria-valuenow", "aria-valuemin", "aria-valuemax"];
241
- const _hoisted_2$w = {
239
+ const TaoInputGroup = /* @__PURE__ */ _export_sfc(_sfc_main$L, [["__scopeId", "data-v-f06bb3b1"]]);
240
+ const _hoisted_1$C = ["id", "value", "placeholder", "disabled", "aria-invalid", "aria-describedby", "aria-valuenow", "aria-valuemin", "aria-valuemax"];
241
+ const _hoisted_2$x = {
242
242
  key: 0,
243
243
  class: "tao-input-number__steppers"
244
244
  };
245
- const _hoisted_3$q = ["disabled"];
245
+ const _hoisted_3$r = ["disabled"];
246
246
  const _hoisted_4$m = ["disabled"];
247
- const _sfc_main$J = /* @__PURE__ */ vue.defineComponent({
247
+ const _sfc_main$K = /* @__PURE__ */ vue.defineComponent({
248
248
  ...{ name: "TaoInputNumber" },
249
249
  __name: "TaoInputNumber",
250
250
  props: {
@@ -393,8 +393,8 @@
393
393
  onFocus,
394
394
  onBlur,
395
395
  onKeydown
396
- }, null, 40, _hoisted_1$B),
397
- __props.controls ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$w, [
396
+ }, null, 40, _hoisted_1$C),
397
+ __props.controls ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$x, [
398
398
  vue.createElementVNode("button", {
399
399
  type: "button",
400
400
  class: "tao-input-number__step",
@@ -402,7 +402,7 @@
402
402
  tabindex: "-1",
403
403
  disabled: __props.disabled || atMax.value,
404
404
  onClick: _cache[0] || (_cache[0] = ($event) => bump(1))
405
- }, " + ", 8, _hoisted_3$q),
405
+ }, " + ", 8, _hoisted_3$r),
406
406
  vue.createElementVNode("button", {
407
407
  type: "button",
408
408
  class: "tao-input-number__step",
@@ -416,11 +416,11 @@
416
416
  };
417
417
  }
418
418
  });
419
- const TaoInputNumber = /* @__PURE__ */ _export_sfc(_sfc_main$J, [["__scopeId", "data-v-55b65a4d"]]);
420
- const _hoisted_1$A = ["aria-label", "disabled"];
421
- const _hoisted_2$v = ["id", "value", "disabled", "aria-invalid", "aria-describedby", "aria-valuenow", "aria-valuemin", "aria-valuemax"];
422
- const _hoisted_3$p = ["disabled"];
423
- const _sfc_main$I = /* @__PURE__ */ vue.defineComponent({
419
+ const TaoInputNumber = /* @__PURE__ */ _export_sfc(_sfc_main$K, [["__scopeId", "data-v-55b65a4d"]]);
420
+ const _hoisted_1$B = ["aria-label", "disabled"];
421
+ const _hoisted_2$w = ["id", "value", "disabled", "aria-invalid", "aria-describedby", "aria-valuenow", "aria-valuemin", "aria-valuemax"];
422
+ const _hoisted_3$q = ["disabled"];
423
+ const _sfc_main$J = /* @__PURE__ */ vue.defineComponent({
424
424
  ...{ name: "TaoQuantity" },
425
425
  __name: "TaoQuantity",
426
426
  props: {
@@ -553,7 +553,7 @@
553
553
  "aria-label": minusLabel.value,
554
554
  disabled: minusDisabled.value,
555
555
  onClick: onDec
556
- }, " − ", 8, _hoisted_1$A),
556
+ }, " − ", 8, _hoisted_1$B),
557
557
  vue.createElementVNode("input", {
558
558
  id: controlId.value,
559
559
  class: "tao-quantity__input",
@@ -573,28 +573,28 @@
573
573
  onFocus,
574
574
  onBlur,
575
575
  onKeydown
576
- }, null, 40, _hoisted_2$v),
576
+ }, null, 40, _hoisted_2$w),
577
577
  vue.createElementVNode("button", {
578
578
  type: "button",
579
579
  class: "tao-quantity__btn tao-quantity__btn--inc",
580
580
  "aria-label": "Увеличить",
581
581
  disabled: plusDisabled.value,
582
582
  onClick: onInc
583
- }, " + ", 8, _hoisted_3$p)
583
+ }, " + ", 8, _hoisted_3$q)
584
584
  ], 2);
585
585
  };
586
586
  }
587
587
  });
588
- const TaoQuantity = /* @__PURE__ */ _export_sfc(_sfc_main$I, [["__scopeId", "data-v-df6baf04"]]);
589
- const _hoisted_1$z = {
588
+ const TaoQuantity = /* @__PURE__ */ _export_sfc(_sfc_main$J, [["__scopeId", "data-v-df6baf04"]]);
589
+ const _hoisted_1$A = {
590
590
  key: 0,
591
591
  class: "tao-card__cover"
592
592
  };
593
- const _hoisted_2$u = {
593
+ const _hoisted_2$v = {
594
594
  key: 0,
595
595
  class: "tao-card__header-title"
596
596
  };
597
- const _hoisted_3$o = { key: 0 };
597
+ const _hoisted_3$p = { key: 0 };
598
598
  const _hoisted_4$l = {
599
599
  key: 2,
600
600
  class: "tao-card__title-block"
@@ -615,7 +615,7 @@
615
615
  key: 4,
616
616
  class: "tao-card__footer"
617
617
  };
618
- const _sfc_main$H = /* @__PURE__ */ vue.defineComponent({
618
+ const _sfc_main$I = /* @__PURE__ */ vue.defineComponent({
619
619
  ...{ name: "TaoCard" },
620
620
  __name: "TaoCard",
621
621
  props: {
@@ -647,14 +647,14 @@
647
647
  }]),
648
648
  style: vue.normalizeStyle(radiusStyle.value)
649
649
  }, [
650
- _ctx.$slots.cover ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$z, [
650
+ _ctx.$slots.cover ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$A, [
651
651
  vue.renderSlot(_ctx.$slots, "cover", {}, void 0, true)
652
652
  ])) : vue.createCommentVNode("", true),
653
653
  vue.createElementVNode("div", {
654
654
  class: "tao-card__content",
655
655
  style: vue.normalizeStyle(paddingStyle.value)
656
656
  }, [
657
- _ctx.$slots.headerTitle ? (vue.openBlock(), vue.createElementBlock("h2", _hoisted_2$u, [
657
+ _ctx.$slots.headerTitle ? (vue.openBlock(), vue.createElementBlock("h2", _hoisted_2$v, [
658
658
  vue.renderSlot(_ctx.$slots, "headerTitle", {}, void 0, true)
659
659
  ])) : vue.createCommentVNode("", true),
660
660
  _ctx.$slots.header || _ctx.$slots.headerSecondary ? (vue.openBlock(), vue.createElementBlock("div", {
@@ -664,7 +664,7 @@
664
664
  vue.createElementVNode("span", null, [
665
665
  vue.renderSlot(_ctx.$slots, "header", {}, void 0, true)
666
666
  ]),
667
- _ctx.$slots.headerSecondary ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$o, [
667
+ _ctx.$slots.headerSecondary ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$p, [
668
668
  vue.renderSlot(_ctx.$slots, "headerSecondary", {}, void 0, true)
669
669
  ])) : vue.createCommentVNode("", true)
670
670
  ], 2)) : vue.createCommentVNode("", true),
@@ -687,7 +687,7 @@
687
687
  };
688
688
  }
689
689
  });
690
- const TaoCard = /* @__PURE__ */ _export_sfc(_sfc_main$H, [["__scopeId", "data-v-2ff3d055"]]);
690
+ const TaoCard = /* @__PURE__ */ _export_sfc(_sfc_main$I, [["__scopeId", "data-v-2ff3d055"]]);
691
691
  const FOCUSABLE = 'a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])';
692
692
  function getFocusable(root) {
693
693
  return [...root.querySelectorAll(FOCUSABLE)].filter(
@@ -716,19 +716,19 @@
716
716
  first.focus();
717
717
  }
718
718
  }
719
- const _hoisted_1$y = ["aria-labelledby"];
720
- const _hoisted_2$t = {
719
+ const _hoisted_1$z = ["aria-labelledby"];
720
+ const _hoisted_2$u = {
721
721
  key: 0,
722
722
  class: "tao-modal__header"
723
723
  };
724
- const _hoisted_3$n = ["id"];
724
+ const _hoisted_3$o = ["id"];
725
725
  const _hoisted_4$k = { key: 1 };
726
726
  const _hoisted_5$d = { class: "tao-modal__content" };
727
727
  const _hoisted_6$9 = {
728
728
  key: 1,
729
729
  class: "tao-modal__footer"
730
730
  };
731
- const _sfc_main$G = /* @__PURE__ */ vue.defineComponent({
731
+ const _sfc_main$H = /* @__PURE__ */ vue.defineComponent({
732
732
  ...{ name: "TaoModal" },
733
733
  __name: "TaoModal",
734
734
  props: {
@@ -828,13 +828,13 @@
828
828
  "aria-labelledby": __props.title ? vue.unref(titleId) : void 0,
829
829
  tabindex: "-1"
830
830
  }, [
831
- __props.title || _ctx.$slots.header || __props.closable ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$t, [
831
+ __props.title || _ctx.$slots.header || __props.closable ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$u, [
832
832
  vue.renderSlot(_ctx.$slots, "header", {}, () => [
833
833
  __props.title ? (vue.openBlock(), vue.createElementBlock("h2", {
834
834
  key: 0,
835
835
  id: vue.unref(titleId),
836
836
  class: "tao-modal__title"
837
- }, vue.toDisplayString(__props.title), 9, _hoisted_3$n)) : (vue.openBlock(), vue.createElementBlock("span", _hoisted_4$k))
837
+ }, vue.toDisplayString(__props.title), 9, _hoisted_3$o)) : (vue.openBlock(), vue.createElementBlock("span", _hoisted_4$k))
838
838
  ], true),
839
839
  __props.closable ? (vue.openBlock(), vue.createElementBlock("button", {
840
840
  key: 0,
@@ -850,7 +850,7 @@
850
850
  _ctx.$slots.footer ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_6$9, [
851
851
  vue.renderSlot(_ctx.$slots, "footer", {}, void 0, true)
852
852
  ])) : vue.createCommentVNode("", true)
853
- ], 8, _hoisted_1$y)
853
+ ], 8, _hoisted_1$z)
854
854
  ], 32)) : vue.createCommentVNode("", true)
855
855
  ]),
856
856
  _: 3
@@ -859,11 +859,11 @@
859
859
  };
860
860
  }
861
861
  });
862
- const TaoModal = /* @__PURE__ */ _export_sfc(_sfc_main$G, [["__scopeId", "data-v-0cffe849"]]);
863
- const _hoisted_1$x = { class: "tao-tabs" };
864
- const _hoisted_2$s = ["id", "aria-selected", "aria-controls", "tabindex", "disabled", "onClick"];
865
- const _hoisted_3$m = ["id", "aria-labelledby"];
866
- const _sfc_main$F = /* @__PURE__ */ vue.defineComponent({
862
+ const TaoModal = /* @__PURE__ */ _export_sfc(_sfc_main$H, [["__scopeId", "data-v-0cffe849"]]);
863
+ const _hoisted_1$y = { class: "tao-tabs" };
864
+ const _hoisted_2$t = ["id", "aria-selected", "aria-controls", "tabindex", "disabled", "onClick"];
865
+ const _hoisted_3$n = ["id", "aria-labelledby"];
866
+ const _sfc_main$G = /* @__PURE__ */ vue.defineComponent({
867
867
  ...{ name: "TaoTabs" },
868
868
  __name: "TaoTabs",
869
869
  props: {
@@ -927,7 +927,7 @@
927
927
  }
928
928
  }
929
929
  return (_ctx, _cache) => {
930
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$x, [
930
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$y, [
931
931
  vue.createElementVNode("div", {
932
932
  class: "tao-tabs__list",
933
933
  role: "tablist",
@@ -952,7 +952,7 @@
952
952
  }, void 0, true, 0) : (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 1 }, [
953
953
  vue.createTextVNode(vue.toDisplayString(tab.label), 1)
954
954
  ], 64))
955
- ], 8, _hoisted_2$s);
955
+ ], 8, _hoisted_2$t);
956
956
  }), 128))
957
957
  ], 32),
958
958
  vue.createElementVNode("div", {
@@ -962,13 +962,13 @@
962
962
  "aria-labelledby": tabId(__props.modelValue)
963
963
  }, [
964
964
  vue.renderSlot(_ctx.$slots, "default", { activeTab: __props.modelValue }, void 0, true)
965
- ], 8, _hoisted_3$m)
965
+ ], 8, _hoisted_3$n)
966
966
  ]);
967
967
  };
968
968
  }
969
969
  });
970
- const TaoTabs = /* @__PURE__ */ _export_sfc(_sfc_main$F, [["__scopeId", "data-v-bf16735e"]]);
971
- const _sfc_main$E = /* @__PURE__ */ vue.defineComponent({
970
+ const TaoTabs = /* @__PURE__ */ _export_sfc(_sfc_main$G, [["__scopeId", "data-v-bf16735e"]]);
971
+ const _sfc_main$F = /* @__PURE__ */ vue.defineComponent({
972
972
  ...{ name: "TaoTooltip" },
973
973
  __name: "TaoTooltip",
974
974
  props: {
@@ -1000,16 +1000,16 @@
1000
1000
  };
1001
1001
  }
1002
1002
  });
1003
- const TaoTooltip = /* @__PURE__ */ _export_sfc(_sfc_main$E, [["__scopeId", "data-v-6f3b3c11"]]);
1004
- const _hoisted_1$w = { class: "tao-spoiler" };
1005
- const _hoisted_2$r = ["aria-expanded", "aria-controls"];
1006
- const _hoisted_3$l = {
1003
+ const TaoTooltip = /* @__PURE__ */ _export_sfc(_sfc_main$F, [["__scopeId", "data-v-6f3b3c11"]]);
1004
+ const _hoisted_1$x = { class: "tao-spoiler" };
1005
+ const _hoisted_2$s = ["aria-expanded", "aria-controls"];
1006
+ const _hoisted_3$m = {
1007
1007
  key: 0,
1008
1008
  class: "tao-spoiler__title"
1009
1009
  };
1010
1010
  const _hoisted_4$j = ["id"];
1011
1011
  const _hoisted_5$c = { class: "tao-spoiler__content-inner" };
1012
- const _sfc_main$D = /* @__PURE__ */ vue.defineComponent({
1012
+ const _sfc_main$E = /* @__PURE__ */ vue.defineComponent({
1013
1013
  ...{ name: "TaoSpoiler" },
1014
1014
  __name: "TaoSpoiler",
1015
1015
  props: {
@@ -1052,7 +1052,7 @@
1052
1052
  });
1053
1053
  }
1054
1054
  return (_ctx, _cache) => {
1055
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$w, [
1055
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$x, [
1056
1056
  vue.createElementVNode("button", {
1057
1057
  type: "button",
1058
1058
  class: "tao-spoiler__header",
@@ -1063,12 +1063,12 @@
1063
1063
  vue.createElementVNode("span", {
1064
1064
  class: vue.normalizeClass(["tao-spoiler__icon", { "tao-spoiler__icon--open": isOpen.value }])
1065
1065
  }, "▶", 2),
1066
- __props.title || _ctx.$slots.title ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$l, [
1066
+ __props.title || _ctx.$slots.title ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$m, [
1067
1067
  vue.renderSlot(_ctx.$slots, "title", {}, () => [
1068
1068
  vue.createTextVNode(vue.toDisplayString(__props.title), 1)
1069
1069
  ], true)
1070
1070
  ])) : vue.createCommentVNode("", true)
1071
- ], 8, _hoisted_2$r),
1071
+ ], 8, _hoisted_2$s),
1072
1072
  vue.createVNode(vue.Transition, {
1073
1073
  name: "tao-spoiler-slide",
1074
1074
  onBeforeEnter,
@@ -1093,9 +1093,9 @@
1093
1093
  };
1094
1094
  }
1095
1095
  });
1096
- const TaoSpoiler = /* @__PURE__ */ _export_sfc(_sfc_main$D, [["__scopeId", "data-v-c9f4d962"]]);
1097
- const _hoisted_1$v = { class: "tao-copy" };
1098
- const _sfc_main$C = /* @__PURE__ */ vue.defineComponent({
1096
+ const TaoSpoiler = /* @__PURE__ */ _export_sfc(_sfc_main$E, [["__scopeId", "data-v-c9f4d962"]]);
1097
+ const _hoisted_1$w = { class: "tao-copy" };
1098
+ const _sfc_main$D = /* @__PURE__ */ vue.defineComponent({
1099
1099
  ...{ name: "TaoCopy" },
1100
1100
  __name: "TaoCopy",
1101
1101
  props: {
@@ -1119,7 +1119,7 @@
1119
1119
  }
1120
1120
  }
1121
1121
  return (_ctx, _cache) => {
1122
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$v, [
1122
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$w, [
1123
1123
  vue.renderSlot(_ctx.$slots, "default", {
1124
1124
  copy,
1125
1125
  copied: copied.value
@@ -1134,8 +1134,8 @@
1134
1134
  };
1135
1135
  }
1136
1136
  });
1137
- const TaoCopy = /* @__PURE__ */ _export_sfc(_sfc_main$C, [["__scopeId", "data-v-73a42ad9"]]);
1138
- const _sfc_main$B = /* @__PURE__ */ vue.defineComponent({
1137
+ const TaoCopy = /* @__PURE__ */ _export_sfc(_sfc_main$D, [["__scopeId", "data-v-73a42ad9"]]);
1138
+ const _sfc_main$C = /* @__PURE__ */ vue.defineComponent({
1139
1139
  ...{ name: "TaoContainer" },
1140
1140
  __name: "TaoContainer",
1141
1141
  props: {
@@ -1152,8 +1152,8 @@
1152
1152
  };
1153
1153
  }
1154
1154
  });
1155
- const TaoContainer = /* @__PURE__ */ _export_sfc(_sfc_main$B, [["__scopeId", "data-v-4c0deb90"]]);
1156
- const _sfc_main$A = /* @__PURE__ */ vue.defineComponent({
1155
+ const TaoContainer = /* @__PURE__ */ _export_sfc(_sfc_main$C, [["__scopeId", "data-v-4c0deb90"]]);
1156
+ const _sfc_main$B = /* @__PURE__ */ vue.defineComponent({
1157
1157
  ...{ name: "TaoFlex" },
1158
1158
  __name: "TaoFlex",
1159
1159
  props: {
@@ -1184,7 +1184,7 @@
1184
1184
  };
1185
1185
  }
1186
1186
  });
1187
- const _sfc_main$z = /* @__PURE__ */ vue.defineComponent({
1187
+ const _sfc_main$A = /* @__PURE__ */ vue.defineComponent({
1188
1188
  ...{ name: "TaoSpace" },
1189
1189
  __name: "TaoSpace",
1190
1190
  props: {
@@ -1204,9 +1204,9 @@
1204
1204
  };
1205
1205
  }
1206
1206
  });
1207
- const TaoSpace = /* @__PURE__ */ _export_sfc(_sfc_main$z, [["__scopeId", "data-v-698ca712"]]);
1208
- const _hoisted_1$u = { class: "tao-icon" };
1209
- const _sfc_main$y = /* @__PURE__ */ vue.defineComponent({
1207
+ const TaoSpace = /* @__PURE__ */ _export_sfc(_sfc_main$A, [["__scopeId", "data-v-698ca712"]]);
1208
+ const _hoisted_1$v = { class: "tao-icon" };
1209
+ const _sfc_main$z = /* @__PURE__ */ vue.defineComponent({
1210
1210
  ...{ name: "TaoIcon" },
1211
1211
  __name: "TaoIcon",
1212
1212
  props: {
@@ -1221,7 +1221,7 @@
1221
1221
  }));
1222
1222
  const props = __props;
1223
1223
  return (_ctx, _cache) => {
1224
- return vue.openBlock(), vue.createElementBlock("span", _hoisted_1$u, [
1224
+ return vue.openBlock(), vue.createElementBlock("span", _hoisted_1$v, [
1225
1225
  vue.renderSlot(_ctx.$slots, "prefix", {}, void 0, true),
1226
1226
  vue.createElementVNode("i", {
1227
1227
  class: vue.normalizeClass(["tao-icon__value", [`icon-${props.name}`, { "tao-icon__value--invert": props.invert }]]),
@@ -1232,8 +1232,8 @@
1232
1232
  };
1233
1233
  }
1234
1234
  });
1235
- const TaoIcon = /* @__PURE__ */ _export_sfc(_sfc_main$y, [["__scopeId", "data-v-145b2cfc"]]);
1236
- const _sfc_main$x = /* @__PURE__ */ vue.defineComponent({
1235
+ const TaoIcon = /* @__PURE__ */ _export_sfc(_sfc_main$z, [["__scopeId", "data-v-145b2cfc"]]);
1236
+ const _sfc_main$y = /* @__PURE__ */ vue.defineComponent({
1237
1237
  ...{ name: "TaoLoader" },
1238
1238
  __name: "TaoLoader",
1239
1239
  props: {
@@ -1294,10 +1294,10 @@
1294
1294
  };
1295
1295
  }
1296
1296
  });
1297
- const TaoLoader = /* @__PURE__ */ _export_sfc(_sfc_main$x, [["__scopeId", "data-v-75a40018"]]);
1298
- const _hoisted_1$t = { class: "tao-image" };
1299
- const _hoisted_2$q = ["src", "alt"];
1300
- const _sfc_main$w = /* @__PURE__ */ vue.defineComponent({
1297
+ const TaoLoader = /* @__PURE__ */ _export_sfc(_sfc_main$y, [["__scopeId", "data-v-75a40018"]]);
1298
+ const _hoisted_1$u = { class: "tao-image" };
1299
+ const _hoisted_2$r = ["src", "alt"];
1300
+ const _sfc_main$x = /* @__PURE__ */ vue.defineComponent({
1301
1301
  ...{ name: "TaoImage" },
1302
1302
  __name: "TaoImage",
1303
1303
  props: {
@@ -1322,7 +1322,7 @@
1322
1322
  isLoaded.value = false;
1323
1323
  });
1324
1324
  return (_ctx, _cache) => {
1325
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$t, [
1325
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$u, [
1326
1326
  __props.src ? (vue.openBlock(), vue.createElementBlock("img", {
1327
1327
  key: 0,
1328
1328
  class: vue.normalizeClass({ "tao-image__img--hidden": !isLoaded.value, "tao-image__img--pixelated": props.pixelated }),
@@ -1331,17 +1331,17 @@
1331
1331
  draggable: "false",
1332
1332
  onLoad: handleLoad,
1333
1333
  onError: handleError
1334
- }, null, 42, _hoisted_2$q)) : vue.renderSlot(_ctx.$slots, "default", {}, () => [
1334
+ }, null, 42, _hoisted_2$r)) : vue.renderSlot(_ctx.$slots, "default", {}, () => [
1335
1335
  _cache[0] || (_cache[0] = vue.createElementVNode("div", { class: "tao-image__placeholder" }, "No image available", -1))
1336
1336
  ], true, 1)
1337
1337
  ]);
1338
1338
  };
1339
1339
  }
1340
1340
  });
1341
- const TaoImage = /* @__PURE__ */ _export_sfc(_sfc_main$w, [["__scopeId", "data-v-9da4bb7d"]]);
1342
- const _hoisted_1$s = ["for"];
1343
- const _hoisted_2$p = ["id", "checked", "disabled", "aria-checked", "aria-invalid", "aria-describedby"];
1344
- const _hoisted_3$k = {
1341
+ const TaoImage = /* @__PURE__ */ _export_sfc(_sfc_main$x, [["__scopeId", "data-v-9da4bb7d"]]);
1342
+ const _hoisted_1$t = ["for"];
1343
+ const _hoisted_2$q = ["id", "checked", "disabled", "aria-checked", "aria-invalid", "aria-describedby"];
1344
+ const _hoisted_3$l = {
1345
1345
  key: 0,
1346
1346
  class: "tao-checkbox__label"
1347
1347
  };
@@ -1349,7 +1349,7 @@
1349
1349
  key: 1,
1350
1350
  class: "tao-checkbox__label"
1351
1351
  };
1352
- const _sfc_main$v = /* @__PURE__ */ vue.defineComponent({
1352
+ const _sfc_main$w = /* @__PURE__ */ vue.defineComponent({
1353
1353
  ...{ name: "TaoCheckbox" },
1354
1354
  __name: "TaoCheckbox",
1355
1355
  props: {
@@ -1419,18 +1419,18 @@
1419
1419
  "aria-invalid": invalid.value || void 0,
1420
1420
  "aria-describedby": describedBy.value,
1421
1421
  onChange: onInputChange
1422
- }, null, 40, _hoisted_2$p),
1422
+ }, null, 40, _hoisted_2$q),
1423
1423
  _cache[0] || (_cache[0] = vue.createElementVNode("span", { class: "tao-checkbox__box" }, null, -1)),
1424
- __props.label ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$k, vue.toDisplayString(__props.label), 1)) : (vue.openBlock(), vue.createElementBlock("span", _hoisted_4$i, [
1424
+ __props.label ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$l, vue.toDisplayString(__props.label), 1)) : (vue.openBlock(), vue.createElementBlock("span", _hoisted_4$i, [
1425
1425
  vue.renderSlot(_ctx.$slots, "default", {}, void 0, true)
1426
1426
  ])),
1427
1427
  vue.renderSlot(_ctx.$slots, "post", { text: __props.label }, void 0, true)
1428
- ], 10, _hoisted_1$s);
1428
+ ], 10, _hoisted_1$t);
1429
1429
  };
1430
1430
  }
1431
1431
  });
1432
- const TaoCheckbox = /* @__PURE__ */ _export_sfc(_sfc_main$v, [["__scopeId", "data-v-f6b0e565"]]);
1433
- const _sfc_main$u = /* @__PURE__ */ vue.defineComponent({
1432
+ const TaoCheckbox = /* @__PURE__ */ _export_sfc(_sfc_main$w, [["__scopeId", "data-v-f6b0e565"]]);
1433
+ const _sfc_main$v = /* @__PURE__ */ vue.defineComponent({
1434
1434
  ...{ name: "TaoTag" },
1435
1435
  __name: "TaoTag",
1436
1436
  props: {
@@ -1458,17 +1458,17 @@
1458
1458
  };
1459
1459
  }
1460
1460
  });
1461
- const TaoTag = /* @__PURE__ */ _export_sfc(_sfc_main$u, [["__scopeId", "data-v-290c0f6a"]]);
1462
- const _hoisted_1$r = {
1461
+ const TaoTag = /* @__PURE__ */ _export_sfc(_sfc_main$v, [["__scopeId", "data-v-290c0f6a"]]);
1462
+ const _hoisted_1$s = {
1463
1463
  key: 1,
1464
1464
  class: "tao-divider-text"
1465
1465
  };
1466
- const _hoisted_2$o = { class: "tao-divider-text__value" };
1467
- const _hoisted_3$j = {
1466
+ const _hoisted_2$p = { class: "tao-divider-text__value" };
1467
+ const _hoisted_3$k = {
1468
1468
  key: 2,
1469
1469
  class: "tao-divider-line"
1470
1470
  };
1471
- const _sfc_main$t = /* @__PURE__ */ vue.defineComponent({
1471
+ const _sfc_main$u = /* @__PURE__ */ vue.defineComponent({
1472
1472
  ...{ name: "TaoDivider" },
1473
1473
  __name: "TaoDivider",
1474
1474
  props: {
@@ -1482,18 +1482,18 @@
1482
1482
  return __props.variant === "gap" ? (vue.openBlock(), vue.createElementBlock("div", {
1483
1483
  key: 0,
1484
1484
  class: vue.normalizeClass(["tao-divider-gap", `tao-divider-gap--${gapSize.value}`])
1485
- }, null, 2)) : __props.variant === "text" ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$r, [
1485
+ }, null, 2)) : __props.variant === "text" ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$s, [
1486
1486
  _cache[0] || (_cache[0] = vue.createElementVNode("span", { class: "tao-divider-text__line tao-divider-text__line--left" }, null, -1)),
1487
- vue.createElementVNode("span", _hoisted_2$o, [
1487
+ vue.createElementVNode("span", _hoisted_2$p, [
1488
1488
  vue.renderSlot(_ctx.$slots, "default", {}, void 0, true)
1489
1489
  ]),
1490
1490
  _cache[1] || (_cache[1] = vue.createElementVNode("span", { class: "tao-divider-text__line tao-divider-text__line--right" }, null, -1))
1491
- ])) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$j));
1491
+ ])) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$k));
1492
1492
  };
1493
1493
  }
1494
1494
  });
1495
- const TaoDivider = /* @__PURE__ */ _export_sfc(_sfc_main$t, [["__scopeId", "data-v-8187a15d"]]);
1496
- const _sfc_main$s = /* @__PURE__ */ vue.defineComponent({
1495
+ const TaoDivider = /* @__PURE__ */ _export_sfc(_sfc_main$u, [["__scopeId", "data-v-8187a15d"]]);
1496
+ const _sfc_main$t = /* @__PURE__ */ vue.defineComponent({
1497
1497
  ...{ name: "TaoAnimatedBorder" },
1498
1498
  __name: "TaoAnimatedBorder",
1499
1499
  props: {
@@ -1517,18 +1517,18 @@
1517
1517
  };
1518
1518
  }
1519
1519
  });
1520
- const TaoAnimatedBorder = /* @__PURE__ */ _export_sfc(_sfc_main$s, [["__scopeId", "data-v-f1534571"]]);
1521
- const _hoisted_1$q = {
1520
+ const TaoAnimatedBorder = /* @__PURE__ */ _export_sfc(_sfc_main$t, [["__scopeId", "data-v-f1534571"]]);
1521
+ const _hoisted_1$r = {
1522
1522
  key: 0,
1523
1523
  class: "tao-textarea tao-textarea--dummy"
1524
1524
  };
1525
- const _hoisted_2$n = {
1525
+ const _hoisted_2$o = {
1526
1526
  key: 1,
1527
1527
  class: "tao-textarea-wrap"
1528
1528
  };
1529
- const _hoisted_3$i = ["id", "placeholder", "spellcheck", "autocomplete", "minlength", "maxlength", "disabled", "rows", "value", "aria-invalid", "aria-describedby"];
1529
+ const _hoisted_3$j = ["id", "placeholder", "spellcheck", "autocomplete", "minlength", "maxlength", "disabled", "rows", "value", "aria-invalid", "aria-describedby"];
1530
1530
  const _hoisted_4$h = ["id"];
1531
- const _sfc_main$r = /* @__PURE__ */ vue.defineComponent({
1531
+ const _sfc_main$s = /* @__PURE__ */ vue.defineComponent({
1532
1532
  ...{ name: "TaoTextarea" },
1533
1533
  __name: "TaoTextarea",
1534
1534
  props: {
@@ -1625,7 +1625,7 @@
1625
1625
  vue.nextTick(autoResize);
1626
1626
  });
1627
1627
  return (_ctx, _cache) => {
1628
- return __props.dummy ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_1$q, vue.toDisplayString(__props.modelValue), 1)) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$n, [
1628
+ return __props.dummy ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_1$r, vue.toDisplayString(__props.modelValue), 1)) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$o, [
1629
1629
  vue.createElementVNode("textarea", {
1630
1630
  id: controlId.value,
1631
1631
  ref_key: "textareaRef",
@@ -1654,7 +1654,7 @@
1654
1654
  onFocus,
1655
1655
  onBlur,
1656
1656
  onKeydown
1657
- }, null, 42, _hoisted_3$i),
1657
+ }, null, 42, _hoisted_3$j),
1658
1658
  __props.count ? (vue.openBlock(), vue.createElementBlock("span", {
1659
1659
  key: 0,
1660
1660
  id: counterId.value,
@@ -1664,11 +1664,11 @@
1664
1664
  };
1665
1665
  }
1666
1666
  });
1667
- const TaoTextarea = /* @__PURE__ */ _export_sfc(_sfc_main$r, [["__scopeId", "data-v-2534c0c4"]]);
1668
- const _hoisted_1$p = ["tabindex"];
1669
- const _hoisted_2$m = { class: "tao-scroll-top__content" };
1667
+ const TaoTextarea = /* @__PURE__ */ _export_sfc(_sfc_main$s, [["__scopeId", "data-v-2534c0c4"]]);
1668
+ const _hoisted_1$q = ["tabindex"];
1669
+ const _hoisted_2$n = { class: "tao-scroll-top__content" };
1670
1670
  const RIPPLE_DURATION = 750;
1671
- const _sfc_main$q = /* @__PURE__ */ vue.defineComponent({
1671
+ const _sfc_main$r = /* @__PURE__ */ vue.defineComponent({
1672
1672
  ...{ name: "TaoScrollTop" },
1673
1673
  __name: "TaoScrollTop",
1674
1674
  props: {
@@ -1768,7 +1768,7 @@
1768
1768
  "aria-label": "Наверх",
1769
1769
  onClick: vue.withModifiers(onClick, ["prevent"])
1770
1770
  }, [
1771
- vue.createElementVNode("div", _hoisted_2$m, [
1771
+ vue.createElementVNode("div", _hoisted_2$n, [
1772
1772
  vue.createElementVNode("div", {
1773
1773
  class: vue.normalizeClass([{ "tao-scroll-top__ripple--active": isRippleActive.value }, "tao-scroll-top__ripple"]),
1774
1774
  style: vue.normalizeStyle(rippleStyle)
@@ -1785,20 +1785,20 @@
1785
1785
  ], -1))
1786
1786
  ], true)
1787
1787
  ])
1788
- ], 14, _hoisted_1$p)) : vue.createCommentVNode("", true)
1788
+ ], 14, _hoisted_1$q)) : vue.createCommentVNode("", true)
1789
1789
  ]),
1790
1790
  _: 3
1791
1791
  });
1792
1792
  };
1793
1793
  }
1794
1794
  });
1795
- const TaoScrollTop = /* @__PURE__ */ _export_sfc(_sfc_main$q, [["__scopeId", "data-v-ce902f42"]]);
1796
- const _hoisted_1$o = { class: "tao-progress" };
1797
- const _hoisted_2$l = {
1795
+ const TaoScrollTop = /* @__PURE__ */ _export_sfc(_sfc_main$r, [["__scopeId", "data-v-ce902f42"]]);
1796
+ const _hoisted_1$p = { class: "tao-progress" };
1797
+ const _hoisted_2$m = {
1798
1798
  key: 0,
1799
1799
  class: "tao-progress__side"
1800
1800
  };
1801
- const _hoisted_3$h = { class: "tao-progress__main" };
1801
+ const _hoisted_3$i = { class: "tao-progress__main" };
1802
1802
  const _hoisted_4$g = {
1803
1803
  key: 0,
1804
1804
  class: "tao-progress__percentage"
@@ -1811,7 +1811,7 @@
1811
1811
  key: 0,
1812
1812
  class: "tao-progress__percentage"
1813
1813
  };
1814
- const _sfc_main$p = /* @__PURE__ */ vue.defineComponent({
1814
+ const _sfc_main$q = /* @__PURE__ */ vue.defineComponent({
1815
1815
  ...{ name: "TaoProgress" },
1816
1816
  __name: "TaoProgress",
1817
1817
  props: {
@@ -1842,15 +1842,15 @@
1842
1842
  () => hasRight.value ? `(${props.progress}%)` : `${props.progress}%`
1843
1843
  );
1844
1844
  return (_ctx, _cache) => {
1845
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$o, [
1845
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$p, [
1846
1846
  vue.createElementVNode("div", {
1847
1847
  class: vue.normalizeClass(["tao-progress__container", { "tao-progress__container--over": showOverPercent.value }]),
1848
1848
  style: vue.normalizeStyle({ minWidth: `${minW.value}px`, maxWidth: `${maxW.value}px` })
1849
1849
  }, [
1850
- _ctx.$slots.left ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$l, [
1850
+ _ctx.$slots.left ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$m, [
1851
1851
  vue.renderSlot(_ctx.$slots, "left", {}, void 0, true)
1852
1852
  ])) : vue.createCommentVNode("", true),
1853
- vue.createElementVNode("div", _hoisted_3$h, [
1853
+ vue.createElementVNode("div", _hoisted_3$i, [
1854
1854
  showOverPercent.value ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_4$g, vue.toDisplayString(__props.progress) + "%", 1)) : vue.createCommentVNode("", true),
1855
1855
  vue.createElementVNode("div", {
1856
1856
  class: "tao-progress__track",
@@ -1871,14 +1871,14 @@
1871
1871
  };
1872
1872
  }
1873
1873
  });
1874
- const TaoProgress = /* @__PURE__ */ _export_sfc(_sfc_main$p, [["__scopeId", "data-v-54c13718"]]);
1875
- const _hoisted_1$n = ["id", "tabindex", "aria-valuemin", "aria-valuemax", "aria-valuenow", "aria-disabled", "aria-describedby"];
1876
- const _hoisted_2$k = ["placeholder"];
1877
- const _hoisted_3$g = {
1874
+ const TaoProgress = /* @__PURE__ */ _export_sfc(_sfc_main$q, [["__scopeId", "data-v-54c13718"]]);
1875
+ const _hoisted_1$o = ["id", "tabindex", "aria-valuemin", "aria-valuemax", "aria-valuenow", "aria-disabled", "aria-describedby"];
1876
+ const _hoisted_2$l = ["placeholder"];
1877
+ const _hoisted_3$h = {
1878
1878
  key: 1,
1879
1879
  class: "tao-slider__value"
1880
1880
  };
1881
- const _sfc_main$o = /* @__PURE__ */ vue.defineComponent({
1881
+ const _sfc_main$p = /* @__PURE__ */ vue.defineComponent({
1882
1882
  ...{ name: "TaoSlider" },
1883
1883
  __name: "TaoSlider",
1884
1884
  props: {
@@ -2072,21 +2072,21 @@
2072
2072
  onKeydown: onShadowKeydown,
2073
2073
  onMousedown: _cache[1] || (_cache[1] = vue.withModifiers(() => {
2074
2074
  }, ["stop"]))
2075
- }, null, 40, _hoisted_2$k)), [
2075
+ }, null, 40, _hoisted_2$l)), [
2076
2076
  [vue.vModelText, shadowModel.value]
2077
- ]) : __props.showValue ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$g, [
2077
+ ]) : __props.showValue ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$h, [
2078
2078
  vue.renderSlot(_ctx.$slots, "pre-value", {}, void 0, true),
2079
2079
  vue.createTextVNode(vue.toDisplayString(__props.modelValue), 1),
2080
2080
  vue.renderSlot(_ctx.$slots, "post-value", {}, void 0, true)
2081
2081
  ])) : vue.createCommentVNode("", true)
2082
- ], 42, _hoisted_1$n);
2082
+ ], 42, _hoisted_1$o);
2083
2083
  };
2084
2084
  }
2085
2085
  });
2086
- const TaoSlider = /* @__PURE__ */ _export_sfc(_sfc_main$o, [["__scopeId", "data-v-241d1042"]]);
2087
- const _hoisted_1$m = { class: "tao-file-drop" };
2088
- const _hoisted_2$j = ["accept", "multiple"];
2089
- const _sfc_main$n = /* @__PURE__ */ vue.defineComponent({
2086
+ const TaoSlider = /* @__PURE__ */ _export_sfc(_sfc_main$p, [["__scopeId", "data-v-241d1042"]]);
2087
+ const _hoisted_1$n = { class: "tao-file-drop" };
2088
+ const _hoisted_2$k = ["accept", "multiple"];
2089
+ const _sfc_main$o = /* @__PURE__ */ vue.defineComponent({
2090
2090
  ...{ name: "TaoFileDrop" },
2091
2091
  __name: "TaoFileDrop",
2092
2092
  props: {
@@ -2139,7 +2139,7 @@
2139
2139
  }
2140
2140
  }
2141
2141
  return (_ctx, _cache) => {
2142
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$m, [
2142
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$n, [
2143
2143
  __props.showClear && __props.modelValue.length ? (vue.openBlock(), vue.createElementBlock("button", {
2144
2144
  key: 0,
2145
2145
  type: "button",
@@ -2166,21 +2166,21 @@
2166
2166
  onChange: handleFileSelect,
2167
2167
  onClick: _cache[0] || (_cache[0] = vue.withModifiers(() => {
2168
2168
  }, ["stop"]))
2169
- }, null, 40, _hoisted_2$j)
2169
+ }, null, 40, _hoisted_2$k)
2170
2170
  ], 34)
2171
2171
  ]);
2172
2172
  };
2173
2173
  }
2174
2174
  });
2175
- const TaoFileDrop = /* @__PURE__ */ _export_sfc(_sfc_main$n, [["__scopeId", "data-v-3543419a"]]);
2176
- const _hoisted_1$l = ["aria-expanded"];
2177
- const _hoisted_2$i = {
2175
+ const TaoFileDrop = /* @__PURE__ */ _export_sfc(_sfc_main$o, [["__scopeId", "data-v-3543419a"]]);
2176
+ const _hoisted_1$m = ["aria-expanded"];
2177
+ const _hoisted_2$j = {
2178
2178
  key: 1,
2179
2179
  "aria-label": "Меню"
2180
2180
  };
2181
- const _hoisted_3$f = ["onClick", "onMouseenter"];
2181
+ const _hoisted_3$g = ["onClick", "onMouseenter"];
2182
2182
  const _hoisted_4$f = { key: 1 };
2183
- const _sfc_main$m = /* @__PURE__ */ vue.defineComponent({
2183
+ const _sfc_main$n = /* @__PURE__ */ vue.defineComponent({
2184
2184
  ...{ name: "TaoDropdownMenu" },
2185
2185
  __name: "TaoDropdownMenu",
2186
2186
  props: {
@@ -2315,8 +2315,8 @@
2315
2315
  "aria-expanded": isOpen.value,
2316
2316
  onClick: toggleMenu
2317
2317
  }, [
2318
- _ctx.$slots.button ? vue.renderSlot(_ctx.$slots, "button", {}, void 0, true, 0) : (vue.openBlock(), vue.createElementBlock("span", _hoisted_2$i, "⋮"))
2319
- ], 8, _hoisted_1$l),
2318
+ _ctx.$slots.button ? vue.renderSlot(_ctx.$slots, "button", {}, void 0, true, 0) : (vue.openBlock(), vue.createElementBlock("span", _hoisted_2$j, "⋮"))
2319
+ ], 8, _hoisted_1$m),
2320
2320
  (vue.openBlock(), vue.createBlock(vue.Teleport, { to: "body" }, [
2321
2321
  isOpen.value ? (vue.openBlock(), vue.createElementBlock("div", {
2322
2322
  key: 0,
@@ -2342,7 +2342,7 @@
2342
2342
  ico: action.ico,
2343
2343
  text: action.name
2344
2344
  }, void 0, true, 0) : (vue.openBlock(), vue.createElementBlock("span", _hoisted_4$f, vue.toDisplayString(action.name), 1))
2345
- ], 42, _hoisted_3$f);
2345
+ ], 42, _hoisted_3$g);
2346
2346
  }), 128))
2347
2347
  ], 36)) : vue.createCommentVNode("", true)
2348
2348
  ]))
@@ -2350,10 +2350,10 @@
2350
2350
  };
2351
2351
  }
2352
2352
  });
2353
- const TaoDropdownMenu = /* @__PURE__ */ _export_sfc(_sfc_main$m, [["__scopeId", "data-v-420a7e63"]]);
2354
- const _hoisted_1$k = ["aria-invalid", "aria-describedby"];
2355
- const _hoisted_2$h = ["id", "value", "placeholder", "type", "inputmode", "pattern", "onInput", "onKeydown", "onFocus"];
2356
- const _sfc_main$l = /* @__PURE__ */ vue.defineComponent({
2353
+ const TaoDropdownMenu = /* @__PURE__ */ _export_sfc(_sfc_main$n, [["__scopeId", "data-v-420a7e63"]]);
2354
+ const _hoisted_1$l = ["aria-invalid", "aria-describedby"];
2355
+ const _hoisted_2$i = ["id", "value", "placeholder", "type", "inputmode", "pattern", "onInput", "onKeydown", "onFocus"];
2356
+ const _sfc_main$m = /* @__PURE__ */ vue.defineComponent({
2357
2357
  ...{ name: "TaoPinCode" },
2358
2358
  __name: "TaoPinCode",
2359
2359
  props: {
@@ -2520,14 +2520,14 @@
2520
2520
  onKeydown: ($event) => onKeydown($event, index),
2521
2521
  onFocus: ($event) => onFocus(index),
2522
2522
  onBlur
2523
- }, null, 42, _hoisted_2$h);
2523
+ }, null, 42, _hoisted_2$i);
2524
2524
  }), 128))
2525
- ], 8, _hoisted_1$k);
2525
+ ], 8, _hoisted_1$l);
2526
2526
  };
2527
2527
  }
2528
2528
  });
2529
- const TaoPinCode = /* @__PURE__ */ _export_sfc(_sfc_main$l, [["__scopeId", "data-v-c3182673"]]);
2530
- const _sfc_main$k = /* @__PURE__ */ vue.defineComponent({
2529
+ const TaoPinCode = /* @__PURE__ */ _export_sfc(_sfc_main$m, [["__scopeId", "data-v-c3182673"]]);
2530
+ const _sfc_main$l = /* @__PURE__ */ vue.defineComponent({
2531
2531
  ...{ name: "TaoLink" },
2532
2532
  __name: "TaoLink",
2533
2533
  props: {
@@ -2569,8 +2569,8 @@
2569
2569
  };
2570
2570
  }
2571
2571
  });
2572
- const _hoisted_1$j = ["for"];
2573
- const _sfc_main$j = /* @__PURE__ */ vue.defineComponent({
2572
+ const _hoisted_1$k = ["for"];
2573
+ const _sfc_main$k = /* @__PURE__ */ vue.defineComponent({
2574
2574
  ...{ name: "TaoFormField" },
2575
2575
  __name: "TaoFormField",
2576
2576
  props: {
@@ -2606,7 +2606,7 @@
2606
2606
  key: 0,
2607
2607
  class: "tao-form-field__label",
2608
2608
  for: vue.unref(id)
2609
- }, vue.toDisplayString(__props.label), 9, _hoisted_1$j)) : vue.createCommentVNode("", true),
2609
+ }, vue.toDisplayString(__props.label), 9, _hoisted_1$k)) : vue.createCommentVNode("", true),
2610
2610
  vue.renderSlot(_ctx.$slots, "default", {}, void 0, true),
2611
2611
  __props.error ? (vue.openBlock(), vue.createElementBlock("p", {
2612
2612
  key: 1,
@@ -2621,12 +2621,12 @@
2621
2621
  };
2622
2622
  }
2623
2623
  });
2624
- const TaoFormField = /* @__PURE__ */ _export_sfc(_sfc_main$j, [["__scopeId", "data-v-11324f0c"]]);
2625
- const _hoisted_1$i = ["id", "aria-expanded", "aria-invalid", "aria-describedby", "disabled"];
2626
- const _hoisted_2$g = { class: "tao-select__value" };
2627
- const _hoisted_3$e = ["aria-activedescendant"];
2624
+ const TaoFormField = /* @__PURE__ */ _export_sfc(_sfc_main$k, [["__scopeId", "data-v-11324f0c"]]);
2625
+ const _hoisted_1$j = ["id", "aria-expanded", "aria-invalid", "aria-describedby", "disabled"];
2626
+ const _hoisted_2$h = { class: "tao-select__value" };
2627
+ const _hoisted_3$f = ["aria-activedescendant"];
2628
2628
  const _hoisted_4$e = ["id", "aria-selected", "aria-disabled", "data-tao-select-index", "onClick", "onMouseenter"];
2629
- const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
2629
+ const _sfc_main$j = /* @__PURE__ */ vue.defineComponent({
2630
2630
  ...{ name: "TaoSelect" },
2631
2631
  __name: "TaoSelect",
2632
2632
  props: {
@@ -2839,12 +2839,12 @@
2839
2839
  onClick: toggle,
2840
2840
  onKeydown: onTriggerKeydown
2841
2841
  }, [
2842
- vue.createElementVNode("span", _hoisted_2$g, vue.toDisplayString(((_a = selected.value) == null ? void 0 : _a.label) ?? __props.placeholder), 1),
2842
+ vue.createElementVNode("span", _hoisted_2$h, vue.toDisplayString(((_a = selected.value) == null ? void 0 : _a.label) ?? __props.placeholder), 1),
2843
2843
  _cache[2] || (_cache[2] = vue.createElementVNode("span", {
2844
2844
  class: "tao-select__chevron",
2845
2845
  "aria-hidden": "true"
2846
2846
  }, null, -1))
2847
- ], 42, _hoisted_1$i),
2847
+ ], 42, _hoisted_1$j),
2848
2848
  (vue.openBlock(), vue.createBlock(vue.Teleport, { to: "body" }, [
2849
2849
  open.value ? (vue.openBlock(), vue.createElementBlock("div", {
2850
2850
  key: 0,
@@ -2882,7 +2882,7 @@
2882
2882
  onMouseenter: ($event) => !option.disabled && (activeIndex.value = index)
2883
2883
  }, vue.toDisplayString(option.label), 43, _hoisted_4$e);
2884
2884
  }), 128))
2885
- ], 40, _hoisted_3$e),
2885
+ ], 40, _hoisted_3$f),
2886
2886
  selected.value ? (vue.openBlock(), vue.createElementBlock("button", {
2887
2887
  key: 0,
2888
2888
  type: "button",
@@ -2897,7 +2897,475 @@
2897
2897
  };
2898
2898
  }
2899
2899
  });
2900
- const TaoSelect = /* @__PURE__ */ _export_sfc(_sfc_main$i, [["__scopeId", "data-v-42551757"]]);
2900
+ const TaoSelect = /* @__PURE__ */ _export_sfc(_sfc_main$j, [["__scopeId", "data-v-42551757"]]);
2901
+ const _hoisted_1$i = ["id", "aria-expanded", "aria-activedescendant", "aria-invalid", "aria-describedby", "disabled", "placeholder", "value"];
2902
+ const _hoisted_2$g = {
2903
+ key: 0,
2904
+ class: "tao-combobox__empty"
2905
+ };
2906
+ const _hoisted_3$e = ["id", "aria-selected", "aria-disabled", "data-tao-combobox-index", "onClick", "onMouseenter"];
2907
+ const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
2908
+ ...{ name: "TaoCombobox" },
2909
+ __name: "TaoCombobox",
2910
+ props: {
2911
+ modelValue: { default: null },
2912
+ options: { default: () => [] },
2913
+ placeholder: { default: "Начните вводить" },
2914
+ disabled: { type: Boolean, default: false },
2915
+ error: { type: Boolean, default: false },
2916
+ allowCreate: { type: Boolean, default: false }
2917
+ },
2918
+ emits: ["update:modelValue", "change", "create"],
2919
+ setup(__props, { emit: __emit }) {
2920
+ const props = __props;
2921
+ const emit = __emit;
2922
+ const field = vue.inject(formFieldKey, null);
2923
+ const localId = vue.useId();
2924
+ const listId = `${localId}-list`;
2925
+ const controlId = vue.computed(() => (field == null ? void 0 : field.id) ?? localId);
2926
+ const invalid = vue.computed(() => props.error || Boolean(field == null ? void 0 : field.invalid.value));
2927
+ const describedBy = vue.computed(() => field == null ? void 0 : field.describedBy.value);
2928
+ const open = vue.ref(false);
2929
+ const focused = vue.ref(false);
2930
+ const picking = vue.ref(false);
2931
+ const skipFocusOpen = vue.ref(false);
2932
+ const query = vue.ref("");
2933
+ const activeIndex = vue.ref(-1);
2934
+ const fieldRef = vue.ref(null);
2935
+ const inputRef = vue.ref(null);
2936
+ const panelRef = vue.ref(null);
2937
+ const listRef = vue.ref(null);
2938
+ const listStyle = vue.ref({ top: "0px", left: "0px", width: "0px" });
2939
+ const selected = vue.computed(() => {
2940
+ const found = props.options.find((option) => option.value === props.modelValue);
2941
+ if (found) {
2942
+ return found;
2943
+ }
2944
+ if (props.modelValue === null || props.modelValue === void 0 || props.modelValue === "") {
2945
+ return null;
2946
+ }
2947
+ return { value: props.modelValue, label: String(props.modelValue) };
2948
+ });
2949
+ const needle = vue.computed(() => query.value.trim().toLowerCase());
2950
+ const filtered = vue.computed(() => {
2951
+ if (!needle.value) {
2952
+ return props.options;
2953
+ }
2954
+ return props.options.filter((option) => option.label.toLowerCase().includes(needle.value));
2955
+ });
2956
+ const canCreate = vue.computed(() => {
2957
+ const text = query.value.trim();
2958
+ if (!props.allowCreate || !text) {
2959
+ return false;
2960
+ }
2961
+ return !props.options.some((option) => option.label.toLowerCase() === text.toLowerCase());
2962
+ });
2963
+ const rows = vue.computed(() => {
2964
+ const next = filtered.value.map((option) => ({ kind: "option", option }));
2965
+ if (canCreate.value) {
2966
+ next.push({ kind: "create", text: query.value.trim() });
2967
+ }
2968
+ return next;
2969
+ });
2970
+ const enabledIndexes = vue.computed(
2971
+ () => rows.value.map((row, index) => row.kind === "option" && row.option.disabled ? -1 : index).filter((index) => index >= 0)
2972
+ );
2973
+ const activeId = vue.computed(() => activeIndex.value >= 0 ? `${listId}-row-${activeIndex.value}` : void 0);
2974
+ function syncQueryFromModel() {
2975
+ var _a;
2976
+ query.value = ((_a = selected.value) == null ? void 0 : _a.label) ?? "";
2977
+ }
2978
+ function updatePosition() {
2979
+ const trigger = fieldRef.value;
2980
+ const panel = panelRef.value;
2981
+ if (!trigger || !panel) {
2982
+ return;
2983
+ }
2984
+ const rect = trigger.getBoundingClientRect();
2985
+ const panelHeight = panel.offsetHeight;
2986
+ const gap = 4;
2987
+ const spaceBelow = window.innerHeight - rect.bottom - gap;
2988
+ const openUp = spaceBelow < panelHeight && rect.top > spaceBelow;
2989
+ listStyle.value = {
2990
+ top: `${openUp ? rect.top - panelHeight - gap : rect.bottom + gap}px`,
2991
+ left: `${rect.left}px`,
2992
+ width: `${rect.width}px`
2993
+ };
2994
+ }
2995
+ function resetActive() {
2996
+ const selectedIndex = rows.value.findIndex(
2997
+ (row) => row.kind === "option" && row.option.value === props.modelValue
2998
+ );
2999
+ if (selectedIndex >= 0 && enabledIndexes.value.includes(selectedIndex)) {
3000
+ activeIndex.value = selectedIndex;
3001
+ return;
3002
+ }
3003
+ activeIndex.value = enabledIndexes.value[0] ?? -1;
3004
+ }
3005
+ async function setOpen(next) {
3006
+ if (props.disabled) {
3007
+ return;
3008
+ }
3009
+ open.value = next;
3010
+ resetActive();
3011
+ await vue.nextTick();
3012
+ updatePosition();
3013
+ scrollActiveIntoView();
3014
+ }
3015
+ function emitValue(value) {
3016
+ emit("update:modelValue", value);
3017
+ emit("change", value);
3018
+ }
3019
+ function keepFocusQuiet() {
3020
+ var _a;
3021
+ skipFocusOpen.value = true;
3022
+ picking.value = false;
3023
+ (_a = inputRef.value) == null ? void 0 : _a.focus();
3024
+ }
3025
+ function commitCreated(value) {
3026
+ emitValue(value);
3027
+ emit("create", value);
3028
+ query.value = value;
3029
+ open.value = false;
3030
+ keepFocusQuiet();
3031
+ }
3032
+ function selectOption(option) {
3033
+ if (option.disabled) {
3034
+ return;
3035
+ }
3036
+ emitValue(option.value);
3037
+ query.value = option.label;
3038
+ open.value = false;
3039
+ keepFocusQuiet();
3040
+ }
3041
+ function createFromQuery(text) {
3042
+ const value = text.trim();
3043
+ if (!value) {
3044
+ return;
3045
+ }
3046
+ const exact = props.options.find(
3047
+ (option) => !option.disabled && option.label.toLowerCase() === value.toLowerCase()
3048
+ );
3049
+ if (exact) {
3050
+ selectOption(exact);
3051
+ return;
3052
+ }
3053
+ if (!props.allowCreate) {
3054
+ return;
3055
+ }
3056
+ commitCreated(value);
3057
+ }
3058
+ function revertQuery() {
3059
+ syncQueryFromModel();
3060
+ }
3061
+ function closeAndRevert() {
3062
+ open.value = false;
3063
+ revertQuery();
3064
+ }
3065
+ function closeAndCommit() {
3066
+ open.value = false;
3067
+ const text = query.value.trim();
3068
+ if (!text) {
3069
+ revertQuery();
3070
+ return;
3071
+ }
3072
+ const exact = props.options.find(
3073
+ (option) => !option.disabled && option.label.toLowerCase() === text.toLowerCase()
3074
+ );
3075
+ if (exact) {
3076
+ emitValue(exact.value);
3077
+ query.value = exact.label;
3078
+ return;
3079
+ }
3080
+ if (props.allowCreate) {
3081
+ emitValue(text);
3082
+ emit("create", text);
3083
+ query.value = text;
3084
+ return;
3085
+ }
3086
+ revertQuery();
3087
+ }
3088
+ function moveActive(delta) {
3089
+ const enabled = enabledIndexes.value;
3090
+ if (!enabled.length) {
3091
+ return;
3092
+ }
3093
+ const currentPos = enabled.indexOf(activeIndex.value);
3094
+ const nextPos = currentPos < 0 ? 0 : (currentPos + delta + enabled.length) % enabled.length;
3095
+ activeIndex.value = enabled[nextPos];
3096
+ scrollActiveIntoView();
3097
+ }
3098
+ function scrollActiveIntoView() {
3099
+ const list = listRef.value;
3100
+ if (!list || activeIndex.value < 0) {
3101
+ return;
3102
+ }
3103
+ const option = list.querySelector(`[data-tao-combobox-index="${activeIndex.value}"]`);
3104
+ option == null ? void 0 : option.scrollIntoView({ block: "nearest" });
3105
+ }
3106
+ function onFieldMouseDown(event) {
3107
+ var _a;
3108
+ if (props.disabled || event.button !== 0) {
3109
+ return;
3110
+ }
3111
+ const onInput2 = event.target === inputRef.value;
3112
+ if (onInput2) {
3113
+ if (focused.value && !open.value) {
3114
+ void setOpen(true);
3115
+ }
3116
+ return;
3117
+ }
3118
+ event.preventDefault();
3119
+ if (open.value) {
3120
+ open.value = false;
3121
+ return;
3122
+ }
3123
+ (_a = inputRef.value) == null ? void 0 : _a.focus();
3124
+ void setOpen(true);
3125
+ }
3126
+ function onInput() {
3127
+ if (props.disabled) {
3128
+ return;
3129
+ }
3130
+ void setOpen(true);
3131
+ resetActive();
3132
+ }
3133
+ function onFocus() {
3134
+ if (props.disabled) {
3135
+ return;
3136
+ }
3137
+ focused.value = true;
3138
+ if (skipFocusOpen.value) {
3139
+ skipFocusOpen.value = false;
3140
+ return;
3141
+ }
3142
+ void setOpen(true);
3143
+ vue.nextTick(() => {
3144
+ var _a;
3145
+ return (_a = inputRef.value) == null ? void 0 : _a.select();
3146
+ });
3147
+ }
3148
+ function markPicking() {
3149
+ picking.value = true;
3150
+ }
3151
+ function onBlur() {
3152
+ focused.value = false;
3153
+ window.setTimeout(() => {
3154
+ var _a, _b;
3155
+ if (picking.value) {
3156
+ picking.value = false;
3157
+ return;
3158
+ }
3159
+ if (((_a = fieldRef.value) == null ? void 0 : _a.contains(document.activeElement)) || ((_b = panelRef.value) == null ? void 0 : _b.contains(document.activeElement))) {
3160
+ return;
3161
+ }
3162
+ if (props.allowCreate) {
3163
+ closeAndCommit();
3164
+ return;
3165
+ }
3166
+ closeAndRevert();
3167
+ }, 0);
3168
+ }
3169
+ function activateRow(row) {
3170
+ if (row.kind === "create") {
3171
+ createFromQuery(row.text);
3172
+ return;
3173
+ }
3174
+ selectOption(row.option);
3175
+ }
3176
+ function onInputKeydown(event) {
3177
+ if (props.disabled) {
3178
+ return;
3179
+ }
3180
+ if (event.key === "Escape") {
3181
+ event.preventDefault();
3182
+ closeAndRevert();
3183
+ return;
3184
+ }
3185
+ if (event.key === "ArrowDown") {
3186
+ event.preventDefault();
3187
+ if (!open.value) {
3188
+ void setOpen(true);
3189
+ return;
3190
+ }
3191
+ moveActive(1);
3192
+ return;
3193
+ }
3194
+ if (event.key === "ArrowUp") {
3195
+ event.preventDefault();
3196
+ if (!open.value) {
3197
+ void setOpen(true);
3198
+ return;
3199
+ }
3200
+ moveActive(-1);
3201
+ return;
3202
+ }
3203
+ if (event.key === "Enter") {
3204
+ event.preventDefault();
3205
+ if (!open.value) {
3206
+ void setOpen(true);
3207
+ return;
3208
+ }
3209
+ const row = rows.value[activeIndex.value];
3210
+ if (row) {
3211
+ activateRow(row);
3212
+ return;
3213
+ }
3214
+ if (props.allowCreate) {
3215
+ createFromQuery(query.value);
3216
+ }
3217
+ }
3218
+ }
3219
+ function onDocumentPointer(event) {
3220
+ var _a, _b;
3221
+ const target = event.target;
3222
+ if (((_a = fieldRef.value) == null ? void 0 : _a.contains(target)) || ((_b = panelRef.value) == null ? void 0 : _b.contains(target))) {
3223
+ return;
3224
+ }
3225
+ if (props.allowCreate) {
3226
+ closeAndCommit();
3227
+ return;
3228
+ }
3229
+ closeAndRevert();
3230
+ }
3231
+ function onViewportChange() {
3232
+ if (open.value) {
3233
+ updatePosition();
3234
+ }
3235
+ }
3236
+ vue.watch(
3237
+ () => props.modelValue,
3238
+ () => {
3239
+ if (!focused.value) {
3240
+ syncQueryFromModel();
3241
+ }
3242
+ },
3243
+ { immediate: true }
3244
+ );
3245
+ vue.watch(rows, () => {
3246
+ if (!open.value) {
3247
+ return;
3248
+ }
3249
+ if (!enabledIndexes.value.includes(activeIndex.value)) {
3250
+ activeIndex.value = enabledIndexes.value[0] ?? -1;
3251
+ }
3252
+ });
3253
+ vue.watch(open, (isOpen) => {
3254
+ if (isOpen) {
3255
+ document.addEventListener("pointerdown", onDocumentPointer);
3256
+ window.addEventListener("resize", onViewportChange);
3257
+ window.addEventListener("scroll", onViewportChange, true);
3258
+ return;
3259
+ }
3260
+ document.removeEventListener("pointerdown", onDocumentPointer);
3261
+ window.removeEventListener("resize", onViewportChange);
3262
+ window.removeEventListener("scroll", onViewportChange, true);
3263
+ });
3264
+ vue.onBeforeUnmount(() => {
3265
+ document.removeEventListener("pointerdown", onDocumentPointer);
3266
+ window.removeEventListener("resize", onViewportChange);
3267
+ window.removeEventListener("scroll", onViewportChange, true);
3268
+ });
3269
+ return (_ctx, _cache) => {
3270
+ return vue.openBlock(), vue.createElementBlock("div", {
3271
+ class: vue.normalizeClass(["tao-combobox", {
3272
+ "tao-combobox--open": open.value,
3273
+ "tao-combobox--invalid": invalid.value,
3274
+ "tao-combobox--disabled": __props.disabled
3275
+ }])
3276
+ }, [
3277
+ vue.createElementVNode("div", {
3278
+ ref_key: "fieldRef",
3279
+ ref: fieldRef,
3280
+ class: "tao-combobox__field",
3281
+ onMousedown: onFieldMouseDown
3282
+ }, [
3283
+ vue.createElementVNode("input", {
3284
+ id: controlId.value,
3285
+ ref_key: "inputRef",
3286
+ ref: inputRef,
3287
+ class: "tao-combobox__input",
3288
+ type: "text",
3289
+ role: "combobox",
3290
+ autocomplete: "off",
3291
+ "aria-autocomplete": "list",
3292
+ "aria-haspopup": "listbox",
3293
+ "aria-expanded": open.value,
3294
+ "aria-controls": listId,
3295
+ "aria-activedescendant": open.value ? activeId.value : void 0,
3296
+ "aria-invalid": invalid.value || void 0,
3297
+ "aria-describedby": describedBy.value,
3298
+ disabled: __props.disabled,
3299
+ placeholder: __props.placeholder,
3300
+ value: query.value,
3301
+ onInput: _cache[0] || (_cache[0] = ($event) => {
3302
+ query.value = $event.target.value;
3303
+ onInput();
3304
+ }),
3305
+ onFocus,
3306
+ onBlur,
3307
+ onKeydown: onInputKeydown
3308
+ }, null, 40, _hoisted_1$i),
3309
+ _cache[1] || (_cache[1] = vue.createElementVNode("span", {
3310
+ class: "tao-combobox__chevron",
3311
+ "aria-hidden": "true"
3312
+ }, null, -1))
3313
+ ], 544),
3314
+ (vue.openBlock(), vue.createBlock(vue.Teleport, { to: "body" }, [
3315
+ open.value ? (vue.openBlock(), vue.createElementBlock("div", {
3316
+ key: 0,
3317
+ ref_key: "panelRef",
3318
+ ref: panelRef,
3319
+ class: "tao-combobox__panel",
3320
+ style: vue.normalizeStyle(listStyle.value)
3321
+ }, [
3322
+ vue.createElementVNode("ul", {
3323
+ id: listId,
3324
+ ref_key: "listRef",
3325
+ ref: listRef,
3326
+ class: "tao-combobox__list",
3327
+ role: "listbox"
3328
+ }, [
3329
+ !rows.value.length ? (vue.openBlock(), vue.createElementBlock("li", _hoisted_2$g, "Ничего не найдено")) : vue.createCommentVNode("", true),
3330
+ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(rows.value, (row, index) => {
3331
+ return vue.openBlock(), vue.createElementBlock("li", {
3332
+ id: `${listId}-row-${index}`,
3333
+ key: row.kind === "create" ? "create" : String(row.option.value),
3334
+ class: vue.normalizeClass(["tao-combobox__option", {
3335
+ "tao-combobox__option--active": index === activeIndex.value,
3336
+ "tao-combobox__option--selected": row.kind === "option" && row.option.value === __props.modelValue,
3337
+ "tao-combobox__option--disabled": row.kind === "option" && row.option.disabled,
3338
+ "tao-combobox__option--create": row.kind === "create"
3339
+ }]),
3340
+ role: "option",
3341
+ "aria-selected": row.kind === "option" && row.option.value === __props.modelValue,
3342
+ "aria-disabled": row.kind === "option" && row.option.disabled ? true : void 0,
3343
+ "data-tao-combobox-index": index,
3344
+ onMousedown: vue.withModifiers(markPicking, ["prevent"]),
3345
+ onClick: ($event) => activateRow(row),
3346
+ onMouseenter: ($event) => !(row.kind === "option" && row.option.disabled) && (activeIndex.value = index)
3347
+ }, [
3348
+ row.kind === "create" ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 0 }, [
3349
+ vue.createTextVNode("Добавить «" + vue.toDisplayString(row.text) + "»", 1)
3350
+ ], 64)) : (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 1 }, [
3351
+ vue.createTextVNode(vue.toDisplayString(row.option.label), 1)
3352
+ ], 64))
3353
+ ], 42, _hoisted_3$e);
3354
+ }), 128))
3355
+ ], 512),
3356
+ selected.value ? (vue.openBlock(), vue.createElementBlock("button", {
3357
+ key: 0,
3358
+ type: "button",
3359
+ class: "tao-combobox__clear",
3360
+ onMousedown: vue.withModifiers(markPicking, ["prevent"])
3361
+ }, " Очистить ", 32)) : vue.createCommentVNode("", true)
3362
+ ], 4)) : vue.createCommentVNode("", true)
3363
+ ]))
3364
+ ], 2);
3365
+ };
3366
+ }
3367
+ });
3368
+ const TaoCombobox = /* @__PURE__ */ _export_sfc(_sfc_main$i, [["__scopeId", "data-v-adeb76a4"]]);
2901
3369
  const ISO_DATE = /^(\d{4})-(\d{2})-(\d{2})$/;
2902
3370
  function formatTaoDateIso(parts) {
2903
3371
  return `${String(parts.y).padStart(4, "0")}-${String(parts.m).padStart(2, "0")}-${String(parts.d).padStart(2, "0")}`;
@@ -4274,7 +4742,7 @@
4274
4742
  class: "tao-breadcrumb__item"
4275
4743
  }, [
4276
4744
  index > 0 ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$4, "/")) : vue.createCommentVNode("", true),
4277
- index === __props.items.length - 1 ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_4$4, vue.toDisplayString(item.label), 1)) : item.to ? (vue.openBlock(), vue.createBlock(_sfc_main$k, {
4745
+ index === __props.items.length - 1 ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_4$4, vue.toDisplayString(item.label), 1)) : item.to ? (vue.openBlock(), vue.createBlock(_sfc_main$l, {
4278
4746
  key: 2,
4279
4747
  class: "tao-breadcrumb__link",
4280
4748
  to: item.to
@@ -4465,7 +4933,7 @@
4465
4933
  function goNext() {
4466
4934
  goTo(index.value + step.value);
4467
4935
  }
4468
- function goTo(next) {
4936
+ function goTo(next, instant = false) {
4469
4937
  const el = track.value;
4470
4938
  const { width, gap, total } = metrics();
4471
4939
  if (!el || width <= 0 || total <= 0) {
@@ -4487,7 +4955,7 @@
4487
4955
  }
4488
4956
  el.scrollTo({
4489
4957
  left: page * (width + gap),
4490
- behavior: prefersReducedMotion() || dragging.value || wrapping ? "auto" : "smooth"
4958
+ behavior: prefersReducedMotion() || dragging.value || wrapping || instant ? "auto" : "smooth"
4491
4959
  });
4492
4960
  setIndex(page);
4493
4961
  }
@@ -4545,6 +5013,35 @@
4545
5013
  setIndex(nearestIndex());
4546
5014
  });
4547
5015
  }
5016
+ function releaseDragCapture() {
5017
+ const el = track.value;
5018
+ const id = dragPointer;
5019
+ if (!el || id === -1) {
5020
+ return;
5021
+ }
5022
+ if (typeof el.hasPointerCapture === "function" && !el.hasPointerCapture(id)) {
5023
+ return;
5024
+ }
5025
+ try {
5026
+ el.releasePointerCapture(id);
5027
+ } catch {
5028
+ }
5029
+ }
5030
+ function endDrag(keepClickGuard = false) {
5031
+ if (!dragging.value) {
5032
+ return;
5033
+ }
5034
+ dragging.value = false;
5035
+ releaseDragCapture();
5036
+ dragPointer = -1;
5037
+ if (!keepClickGuard) {
5038
+ dragMoved = 0;
5039
+ }
5040
+ if (track.value) {
5041
+ goTo(nearestIndex(), true);
5042
+ }
5043
+ syncAutoplay();
5044
+ }
4548
5045
  function onPointerDown(event) {
4549
5046
  if (event.pointerType !== "mouse" || event.button !== 0 || !track.value) {
4550
5047
  return;
@@ -4554,7 +5051,10 @@
4554
5051
  dragStartScroll = track.value.scrollLeft;
4555
5052
  dragMoved = 0;
4556
5053
  dragging.value = true;
4557
- track.value.setPointerCapture(event.pointerId);
5054
+ try {
5055
+ track.value.setPointerCapture(event.pointerId);
5056
+ } catch {
5057
+ }
4558
5058
  }
4559
5059
  function onPointerMove(event) {
4560
5060
  if (!dragging.value || event.pointerId !== dragPointer || !track.value) {
@@ -4564,13 +5064,25 @@
4564
5064
  dragMoved = Math.abs(dx);
4565
5065
  track.value.scrollLeft = dragStartScroll - dx;
4566
5066
  }
4567
- function onPointerUp(event) {
4568
- if (!dragging.value || event.pointerId !== dragPointer) {
5067
+ function onPointerEnd(event) {
5068
+ if (!dragging.value) {
4569
5069
  return;
4570
5070
  }
4571
- dragging.value = false;
4572
- dragPointer = -1;
4573
- goTo(nearestIndex());
5071
+ if (dragPointer !== -1 && event.pointerId !== dragPointer) {
5072
+ return;
5073
+ }
5074
+ endDrag(true);
5075
+ }
5076
+ function onLostPointerCapture() {
5077
+ endDrag();
5078
+ }
5079
+ function onWindowBlur() {
5080
+ endDrag();
5081
+ }
5082
+ function onVisibilityChange() {
5083
+ if (document.hidden) {
5084
+ endDrag();
5085
+ }
4574
5086
  syncAutoplay();
4575
5087
  }
4576
5088
  function onClickCapture(event) {
@@ -4609,13 +5121,18 @@
4609
5121
  goTo(props.modelValue);
4610
5122
  syncAutoplay();
4611
5123
  });
4612
- document.addEventListener("visibilitychange", syncAutoplay);
5124
+ document.addEventListener("visibilitychange", onVisibilityChange);
5125
+ window.addEventListener("blur", onWindowBlur);
5126
+ window.addEventListener("pagehide", onWindowBlur);
4613
5127
  });
4614
5128
  vue.onUpdated(refreshCount);
4615
5129
  vue.onBeforeUnmount(() => {
5130
+ endDrag();
4616
5131
  cancelAnimationFrame(scrollFrame);
4617
5132
  stopAutoplay();
4618
- document.removeEventListener("visibilitychange", syncAutoplay);
5133
+ document.removeEventListener("visibilitychange", onVisibilityChange);
5134
+ window.removeEventListener("blur", onWindowBlur);
5135
+ window.removeEventListener("pagehide", onWindowBlur);
4619
5136
  });
4620
5137
  return (_ctx, _cache) => {
4621
5138
  return vue.openBlock(), vue.createElementBlock("div", {
@@ -4668,8 +5185,9 @@
4668
5185
  onKeydown,
4669
5186
  onPointerdown: onPointerDown,
4670
5187
  onPointermove: onPointerMove,
4671
- onPointerup: onPointerUp,
4672
- onPointercancel: onPointerUp,
5188
+ onPointerup: onPointerEnd,
5189
+ onPointercancel: onPointerEnd,
5190
+ onLostpointercapture: onLostPointerCapture,
4673
5191
  onClickCapture
4674
5192
  }, [
4675
5193
  vue.renderSlot(_ctx.$slots, "default", {}, void 0, true)
@@ -4735,7 +5253,7 @@
4735
5253
  };
4736
5254
  }
4737
5255
  });
4738
- const TaoCarousel = /* @__PURE__ */ _export_sfc(_sfc_main$4, [["__scopeId", "data-v-173f4ce0"]]);
5256
+ const TaoCarousel = /* @__PURE__ */ _export_sfc(_sfc_main$4, [["__scopeId", "data-v-81afb8b0"]]);
4739
5257
  const _hoisted_1$3 = ["aria-label"];
4740
5258
  const _hoisted_2$2 = ["aria-label"];
4741
5259
  const _hoisted_3$2 = {
@@ -5875,7 +6393,7 @@
5875
6393
  TaoSpoiler,
5876
6394
  TaoCopy,
5877
6395
  TaoContainer,
5878
- _sfc_main$A,
6396
+ _sfc_main$B,
5879
6397
  TaoSpace,
5880
6398
  TaoIcon,
5881
6399
  TaoLoader,
@@ -5891,9 +6409,10 @@
5891
6409
  TaoFileDrop,
5892
6410
  TaoDropdownMenu,
5893
6411
  TaoPinCode,
5894
- _sfc_main$k,
6412
+ _sfc_main$l,
5895
6413
  TaoFormField,
5896
6414
  TaoSelect,
6415
+ TaoCombobox,
5897
6416
  TaoDate,
5898
6417
  TaoSwitch,
5899
6418
  TaoRadio,
@@ -5928,6 +6447,7 @@
5928
6447
  exports2.TaoCard = TaoCard;
5929
6448
  exports2.TaoCarousel = TaoCarousel;
5930
6449
  exports2.TaoCheckbox = TaoCheckbox;
6450
+ exports2.TaoCombobox = TaoCombobox;
5931
6451
  exports2.TaoConfirmHost = TaoConfirmHost;
5932
6452
  exports2.TaoContainer = TaoContainer;
5933
6453
  exports2.TaoCopy = TaoCopy;
@@ -5938,14 +6458,14 @@
5938
6458
  exports2.TaoDropdownMenu = TaoDropdownMenu;
5939
6459
  exports2.TaoEmpty = TaoEmpty;
5940
6460
  exports2.TaoFileDrop = TaoFileDrop;
5941
- exports2.TaoFlex = _sfc_main$A;
6461
+ exports2.TaoFlex = _sfc_main$B;
5942
6462
  exports2.TaoFormField = TaoFormField;
5943
6463
  exports2.TaoIcon = TaoIcon;
5944
6464
  exports2.TaoImage = TaoImage;
5945
6465
  exports2.TaoInput = TaoInput;
5946
6466
  exports2.TaoInputGroup = TaoInputGroup;
5947
6467
  exports2.TaoInputNumber = TaoInputNumber;
5948
- exports2.TaoLink = _sfc_main$k;
6468
+ exports2.TaoLink = _sfc_main$l;
5949
6469
  exports2.TaoLoader = TaoLoader;
5950
6470
  exports2.TaoModal = TaoModal;
5951
6471
  exports2.TaoPagination = TaoPagination;