wave-ui 2.34.0 → 2.36.1

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.
@@ -495,17 +495,17 @@ let WaveUI = _WaveUI;
495
495
  __publicField(WaveUI, "instance", null);
496
496
  __publicField(WaveUI, "vueInstance", null);
497
497
  WaveUI.version = "__VERSION__";
498
- const _hoisted_1$u = ["aria-expanded"];
499
- const _hoisted_2$e = ["onClick", "onFocus", "onKeypress", "tabindex"];
498
+ const _hoisted_1$r = ["aria-expanded"];
499
+ const _hoisted_2$d = ["onClick", "onFocus", "onKeypress", "tabindex"];
500
500
  const _hoisted_3$b = ["innerHTML"];
501
- const _hoisted_4$a = ["innerHTML"];
501
+ const _hoisted_4$9 = ["innerHTML"];
502
502
  function render$P(_ctx, _cache, $props, $setup, $data, $options) {
503
503
  const _component_w_button = resolveComponent("w-button");
504
504
  const _component_w_transition_expand = resolveComponent("w-transition-expand");
505
505
  return openBlock(), createElementBlock("div", {
506
506
  class: normalizeClass(["w-accordion", $options.accordionClasses])
507
507
  }, [
508
- (openBlock(true), createElementBlock(Fragment, null, renderList($options.accordionItems, (item, i) => {
508
+ (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.accordionItems, (item, i) => {
509
509
  return openBlock(), createElementBlock("div", {
510
510
  class: normalizeClass(["w-accordion__item", $options.itemClasses(item)]),
511
511
  key: i,
@@ -554,8 +554,12 @@ function render$P(_ctx, _cache, $props, $setup, $data, $options) {
554
554
  }, ["stop"])),
555
555
  onClick: withModifiers(($event) => !item._disabled && $options.toggleItem(item, $event), ["stop"])
556
556
  }, null, 8, ["icon", "onClick", "class"])) : createCommentVNode("", true)
557
- ], 42, _hoisted_2$e),
558
- createVNode(_component_w_transition_expand, { y: "" }, {
557
+ ], 42, _hoisted_2$d),
558
+ createVNode(_component_w_transition_expand, {
559
+ y: "",
560
+ onAfterLeave: ($event) => $options.onEndOfCollapse(item),
561
+ duration: $props.duration
562
+ }, {
559
563
  default: withCtx(() => [
560
564
  item._expanded ? (openBlock(), createElementBlock("div", {
561
565
  key: 0,
@@ -574,13 +578,13 @@ function render$P(_ctx, _cache, $props, $setup, $data, $options) {
574
578
  }, () => [
575
579
  createElementVNode("div", {
576
580
  innerHTML: item[$props.itemContentKey]
577
- }, null, 8, _hoisted_4$a)
581
+ }, null, 8, _hoisted_4$9)
578
582
  ])
579
583
  ], 2)) : createCommentVNode("", true)
580
584
  ]),
581
585
  _: 2
582
- }, 1024)
583
- ], 10, _hoisted_1$u);
586
+ }, 1032, ["onAfterLeave", "duration"])
587
+ ], 10, _hoisted_1$r);
584
588
  }), 128))
585
589
  ], 2);
586
590
  }
@@ -609,18 +613,14 @@ const _sfc_main$P = {
609
613
  expandIconRight: { type: Boolean },
610
614
  expandSingle: { type: Boolean },
611
615
  collapseIcon: { type: String },
612
- shadow: { type: Boolean }
616
+ shadow: { type: Boolean },
617
+ duration: { type: Number, default: 250 }
613
618
  },
614
- emits: ["input", "update:modelValue", "focus", "item-expand"],
619
+ emits: ["input", "update:modelValue", "focus", "item-expand", "item-collapsed"],
620
+ data: () => ({
621
+ accordionItems: []
622
+ }),
615
623
  computed: {
616
- accordionItems() {
617
- const items = typeof this.items === "number" ? Array(this.items).fill({}) : this.items || [];
618
- return items.map((item, _index) => reactive(__spreadProps(__spreadValues({}, item), {
619
- _index,
620
- _expanded: this.modelValue && this.modelValue[_index],
621
- _disabled: !!item.disabled
622
- })));
623
- },
624
624
  accordionClasses() {
625
625
  return {
626
626
  [this.color]: this.color,
@@ -644,6 +644,9 @@ const _sfc_main$P = {
644
644
  e.target.blur();
645
645
  setTimeout(() => e.target.focus(), 300);
646
646
  },
647
+ onEndOfCollapse(item) {
648
+ this.$emit("item-collapsed", { item, expanded: item._expanded });
649
+ },
647
650
  getOriginalItem(item) {
648
651
  return this.items[item._index];
649
652
  },
@@ -654,11 +657,33 @@ const _sfc_main$P = {
654
657
  "w-accordion__item--disabled": item._disabled,
655
658
  [item[this.itemColorKey]]: item[this.itemColorKey]
656
659
  };
660
+ },
661
+ updateItems() {
662
+ const items = typeof this.items === "number" ? Array(this.items).fill({}) : this.items || [];
663
+ this.accordionItems = items.map((item, _index) => __spreadProps(__spreadValues({}, item), {
664
+ _index,
665
+ _expanded: this.modelValue && this.modelValue[_index],
666
+ _disabled: !!item.disabled
667
+ }));
668
+ }
669
+ },
670
+ created() {
671
+ this.updateItems();
672
+ },
673
+ watch: {
674
+ modelValue() {
675
+ this.updateItems();
676
+ },
677
+ items: {
678
+ handler() {
679
+ this.updateItems();
680
+ },
681
+ deep: true
657
682
  }
658
683
  }
659
684
  };
660
685
  var wAccordion = /* @__PURE__ */ _export_sfc(_sfc_main$P, [["render", render$P]]);
661
- const _hoisted_1$t = { class: "w-alert__content" };
686
+ const _hoisted_1$q = { class: "w-alert__content" };
662
687
  function render$O(_ctx, _cache, $props, $setup, $data, $options) {
663
688
  const _component_w_icon = resolveComponent("w-icon");
664
689
  const _component_w_button = resolveComponent("w-button");
@@ -676,7 +701,7 @@ function render$O(_ctx, _cache, $props, $setup, $data, $options) {
676
701
  ]),
677
702
  _: 1
678
703
  })) : createCommentVNode("", true),
679
- createElementVNode("div", _hoisted_1$t, [
704
+ createElementVNode("div", _hoisted_1$q, [
680
705
  renderSlot(_ctx.$slots, "default")
681
706
  ]),
682
707
  $props.dismiss ? (openBlock(), createBlock(_component_w_button, {
@@ -773,7 +798,7 @@ const _sfc_main$O = {
773
798
  }
774
799
  };
775
800
  var wAlert = /* @__PURE__ */ _export_sfc(_sfc_main$O, [["render", render$O]]);
776
- const _hoisted_1$s = ["innerHTML"];
801
+ const _hoisted_1$p = ["innerHTML"];
777
802
  function render$N(_ctx, _cache, $props, $setup, $data, $options) {
778
803
  const _component_w_alert = resolveComponent("w-alert");
779
804
  return openBlock(), createBlock(TransitionGroup, {
@@ -796,7 +821,7 @@ function render$N(_ctx, _cache, $props, $setup, $data, $options) {
796
821
  default: withCtx(() => [
797
822
  createElementVNode("div", {
798
823
  innerHTML: notif.message
799
- }, null, 8, _hoisted_1$s)
824
+ }, null, 8, _hoisted_1$p)
800
825
  ]),
801
826
  _: 2
802
827
  }, 1040, ["modelValue", "onUpdate:modelValue", "onClose"])) : createCommentVNode("", true)
@@ -1133,7 +1158,7 @@ const _sfc_main$L = {
1133
1158
  }
1134
1159
  };
1135
1160
  var wBadge = /* @__PURE__ */ _export_sfc(_sfc_main$L, [["render", render$L]]);
1136
- const _hoisted_1$r = ["innerHTML"];
1161
+ const _hoisted_1$o = ["innerHTML"];
1137
1162
  function render$K(_ctx, _cache, $props, $setup, $data, $options) {
1138
1163
  const _component_w_icon = resolveComponent("w-icon");
1139
1164
  return openBlock(), createElementBlock("div", {
@@ -1185,7 +1210,7 @@ function render$K(_ctx, _cache, $props, $setup, $data, $options) {
1185
1210
  }) : (openBlock(), createElementBlock("span", {
1186
1211
  key: `${i}f`,
1187
1212
  innerHTML: item[$props.itemLabelKey]
1188
- }, null, 8, _hoisted_1$r))
1213
+ }, null, 8, _hoisted_1$o))
1189
1214
  ], 64);
1190
1215
  }), 256))
1191
1216
  ], 2);
@@ -1223,11 +1248,11 @@ const _sfc_main$K = {
1223
1248
  }
1224
1249
  };
1225
1250
  var wBreadcrumbs = /* @__PURE__ */ _export_sfc(_sfc_main$K, [["render", render$K]]);
1226
- const _hoisted_1$q = {
1251
+ const _hoisted_1$n = {
1227
1252
  key: 0,
1228
1253
  class: "w-button__loader"
1229
1254
  };
1230
- const _hoisted_2$d = /* @__PURE__ */ createElementVNode("svg", { viewBox: "0 0 40 40" }, [
1255
+ const _hoisted_2$c = /* @__PURE__ */ createElementVNode("svg", { viewBox: "0 0 40 40" }, [
1231
1256
  /* @__PURE__ */ createElementVNode("circle", {
1232
1257
  cx: "20",
1233
1258
  cy: "20",
@@ -1255,9 +1280,9 @@ function render$J(_ctx, _cache, $props, $setup, $data, $options) {
1255
1280
  })) : renderSlot(_ctx.$slots, "default", { key: 1 }),
1256
1281
  createVNode(Transition, { name: "scale-fade" }, {
1257
1282
  default: withCtx(() => [
1258
- $props.loading ? (openBlock(), createElementBlock("div", _hoisted_1$q, [
1283
+ $props.loading ? (openBlock(), createElementBlock("div", _hoisted_1$n, [
1259
1284
  renderSlot(_ctx.$slots, "loading", {}, () => [
1260
- _hoisted_2$d
1285
+ _hoisted_2$c
1261
1286
  ])
1262
1287
  ])) : createCommentVNode("", true)
1263
1288
  ]),
@@ -1368,24 +1393,21 @@ const objectifyClasses = (classes = {}) => {
1368
1393
  classes = { [classes.join(" ")]: true };
1369
1394
  return classes;
1370
1395
  };
1371
- const _hoisted_1$p = ["innerHTML"];
1372
1396
  function render$I(_ctx, _cache, $props, $setup, $data, $options) {
1373
1397
  const _component_w_image = resolveComponent("w-image");
1374
1398
  return openBlock(), createElementBlock("div", {
1375
1399
  class: normalizeClass(["w-card", $options.classes])
1376
1400
  }, [
1377
- _ctx.$slots.title ? (openBlock(), createElementBlock("div", {
1401
+ _ctx.$slots.title || $props.title ? (openBlock(), createElementBlock("div", {
1378
1402
  key: 0,
1379
- class: normalizeClass(["w-card__title", __spreadValues({ "w-card__title--has-toolbar": $options.titleHasToolbar }, $options.titleClasses)])
1403
+ class: normalizeClass(["w-card__title", __spreadValues({ "w-card__title--has-toolbar": _ctx.$slots.title && $options.titleHasToolbar }, $options.titleClasses)])
1380
1404
  }, [
1381
- renderSlot(_ctx.$slots, "title")
1382
- ], 2)) : $props.title ? (openBlock(), createElementBlock("div", {
1383
- key: 1,
1384
- class: normalizeClass(["w-card__title", $options.titleClasses]),
1385
- innerHTML: $props.title
1386
- }, null, 10, _hoisted_1$p)) : createCommentVNode("", true),
1405
+ renderSlot(_ctx.$slots, "title", {}, () => [
1406
+ createTextVNode(toDisplayString($props.title), 1)
1407
+ ])
1408
+ ], 2)) : createCommentVNode("", true),
1387
1409
  $props.image ? (openBlock(), createBlock(_component_w_image, mergeProps({
1388
- key: 2,
1410
+ key: 1,
1389
1411
  class: "w-card__image",
1390
1412
  src: $props.image
1391
1413
  }, $options.imgProps), {
@@ -1400,7 +1422,7 @@ function render$I(_ctx, _cache, $props, $setup, $data, $options) {
1400
1422
  renderSlot(_ctx.$slots, "default")
1401
1423
  ], 2),
1402
1424
  _ctx.$slots.actions ? (openBlock(), createElementBlock("div", {
1403
- key: 3,
1425
+ key: 2,
1404
1426
  class: normalizeClass(["w-card__actions", { "w-card__actions--has-toolbar": $options.actionsHasToolbar }])
1405
1427
  }, [
1406
1428
  renderSlot(_ctx.$slots, "actions")
@@ -1481,6 +1503,15 @@ var FormElementMixin = {
1481
1503
  },
1482
1504
  isReadonly() {
1483
1505
  return this.readonly || this.formProps.readonly;
1506
+ },
1507
+ validationColor() {
1508
+ return this.formProps.validationColor;
1509
+ },
1510
+ labelClasses() {
1511
+ return {
1512
+ [this.labelColor]: this.labelColor && this.valid !== false,
1513
+ [this.validationColor]: this.valid === false
1514
+ };
1484
1515
  }
1485
1516
  },
1486
1517
  methods: {
@@ -1489,21 +1520,19 @@ var FormElementMixin = {
1489
1520
  }
1490
1521
  }
1491
1522
  };
1492
- const _hoisted_1$o = ["id", "name", "checked", "disabled", "required", "tabindex", "aria-checked"];
1493
- const _hoisted_2$c = ["for"];
1494
- const _hoisted_3$a = ["for", "innerHTML"];
1495
- const _hoisted_4$9 = /* @__PURE__ */ createElementVNode("svg", {
1523
+ const _hoisted_1$m = ["id", "name", "checked", "disabled", "required", "tabindex", "aria-checked"];
1524
+ const _hoisted_2$b = ["for"];
1525
+ const _hoisted_3$a = /* @__PURE__ */ createElementVNode("svg", {
1496
1526
  width: "11px",
1497
1527
  height: "9px",
1498
1528
  viewbox: "0 0 12 9"
1499
1529
  }, [
1500
1530
  /* @__PURE__ */ createElementVNode("polyline", { points: "1 5 4 8 10 2" })
1501
1531
  ], -1);
1502
- const _hoisted_5$8 = [
1503
- _hoisted_4$9
1532
+ const _hoisted_4$8 = [
1533
+ _hoisted_3$a
1504
1534
  ];
1505
- const _hoisted_6$5 = ["for"];
1506
- const _hoisted_7$5 = ["for", "innerHTML"];
1535
+ const _hoisted_5$6 = ["for"];
1507
1536
  function render$H(_ctx, _cache, $props, $setup, $data, $options) {
1508
1537
  return openBlock(), createBlock(resolveDynamicComponent(_ctx.formRegister && !$options.wCheckboxes ? "w-form-element" : "div"), mergeProps({ ref: "formEl" }, _ctx.formRegister && { validators: _ctx.validators, inputValue: $data.isChecked, disabled: _ctx.isDisabled }, {
1509
1538
  valid: _ctx.valid,
@@ -1530,20 +1559,17 @@ function render$H(_ctx, _cache, $props, $setup, $data, $options) {
1530
1559
  onKeypress: _cache[3] || (_cache[3] = withKeys((...args) => $options.onInput && $options.onInput(...args), ["enter"])),
1531
1560
  "aria-checked": $data.isChecked || "false",
1532
1561
  role: "checkbox"
1533
- }, null, 40, _hoisted_1$o),
1562
+ }, null, 40, _hoisted_1$m),
1534
1563
  $options.hasLabel && $props.labelOnLeft ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
1535
- _ctx.$slots.default ? (openBlock(), createElementBlock("label", {
1564
+ _ctx.$slots.default || $props.label ? (openBlock(), createElementBlock("label", {
1536
1565
  key: 0,
1537
- class: "w-checkbox__label w-form-el-shakable pr2",
1566
+ class: normalizeClass(["w-checkbox__label w-form-el-shakable pr2", _ctx.labelClasses]),
1538
1567
  for: `w-checkbox--${_ctx._.uid}`
1539
1568
  }, [
1540
- renderSlot(_ctx.$slots, "default")
1541
- ], 8, _hoisted_2$c)) : $props.label ? (openBlock(), createElementBlock("label", {
1542
- key: 1,
1543
- class: "w-checkbox__label w-form-el-shakable pr2",
1544
- for: `w-checkbox--${_ctx._.uid}`,
1545
- innerHTML: $props.label
1546
- }, null, 8, _hoisted_3$a)) : createCommentVNode("", true)
1569
+ renderSlot(_ctx.$slots, "default", {}, () => [
1570
+ createTextVNode(toDisplayString($props.label), 1)
1571
+ ])
1572
+ ], 10, _hoisted_2$b)) : createCommentVNode("", true)
1547
1573
  ], 64)) : createCommentVNode("", true),
1548
1574
  createElementVNode("div", {
1549
1575
  class: normalizeClass(["w-checkbox__input", this.color]),
@@ -1551,20 +1577,17 @@ function render$H(_ctx, _cache, $props, $setup, $data, $options) {
1551
1577
  _ctx.$refs.input.focus();
1552
1578
  _ctx.$refs.input.click();
1553
1579
  })
1554
- }, _hoisted_5$8, 2),
1580
+ }, _hoisted_4$8, 2),
1555
1581
  $options.hasLabel && !$props.labelOnLeft ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [
1556
- _ctx.$slots.default ? (openBlock(), createElementBlock("label", {
1582
+ _ctx.$slots.default || $props.label ? (openBlock(), createElementBlock("label", {
1557
1583
  key: 0,
1558
- class: "w-checkbox__label w-form-el-shakable pl2",
1584
+ class: normalizeClass(["w-checkbox__label w-form-el-shakable pl2", _ctx.labelClasses]),
1559
1585
  for: `w-checkbox--${_ctx._.uid}`
1560
1586
  }, [
1561
- renderSlot(_ctx.$slots, "default")
1562
- ], 8, _hoisted_6$5)) : $props.label ? (openBlock(), createElementBlock("label", {
1563
- key: 1,
1564
- class: "w-checkbox__label w-form-el-shakable pl2",
1565
- for: `w-checkbox--${_ctx._.uid}`,
1566
- innerHTML: $props.label
1567
- }, null, 8, _hoisted_7$5)) : createCommentVNode("", true)
1587
+ renderSlot(_ctx.$slots, "default", {}, () => [
1588
+ createTextVNode(toDisplayString($props.label), 1)
1589
+ ])
1590
+ ], 10, _hoisted_5$6)) : createCommentVNode("", true)
1568
1591
  ], 64)) : createCommentVNode("", true)
1569
1592
  ]),
1570
1593
  _: 3
@@ -1583,6 +1606,7 @@ const _sfc_main$H = {
1583
1606
  label: { type: String },
1584
1607
  labelOnLeft: { type: Boolean },
1585
1608
  color: { type: String, default: "primary" },
1609
+ labelColor: { type: String, default: "primary" },
1586
1610
  noRipple: { type: Boolean },
1587
1611
  indeterminate: { type: Boolean },
1588
1612
  round: { type: Boolean }
@@ -1640,7 +1664,7 @@ const _sfc_main$H = {
1640
1664
  }
1641
1665
  };
1642
1666
  var wCheckbox = /* @__PURE__ */ _export_sfc(_sfc_main$H, [["render", render$H]]);
1643
- const _hoisted_1$n = ["innerHTML"];
1667
+ const _hoisted_1$l = ["innerHTML"];
1644
1668
  function render$G(_ctx, _cache, $props, $setup, $data, $options) {
1645
1669
  const _component_w_checkbox = resolveComponent("w-checkbox");
1646
1670
  return openBlock(), createBlock(resolveDynamicComponent(_ctx.formRegister ? "w-form-element" : "div"), mergeProps({ ref: "formEl" }, _ctx.formRegister && { validators: _ctx.validators, inputValue: $options.checkboxItems.some((item) => item._isChecked), disabled: _ctx.isDisabled }, {
@@ -1653,40 +1677,31 @@ function render$G(_ctx, _cache, $props, $setup, $data, $options) {
1653
1677
  }), {
1654
1678
  default: withCtx(() => [
1655
1679
  (openBlock(true), createElementBlock(Fragment, null, renderList($options.checkboxItems, (item, i) => {
1656
- return openBlock(), createBlock(_component_w_checkbox, {
1680
+ return openBlock(), createBlock(_component_w_checkbox, mergeProps({
1657
1681
  key: i,
1658
1682
  "model-value": item._isChecked,
1659
- name: `${_ctx.name || `w-checkboxes--${_ctx._.uid}`}[]`,
1660
- label: item.label,
1661
- "label-on-left": $props.labelOnLeft,
1662
- color: item.color,
1663
- round: $props.round,
1664
1683
  "onUpdate:modelValue": ($event) => $options.toggleCheck(item, $event),
1684
+ onFocus: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("focus", $event)),
1685
+ name: `${_ctx.inputName}[]`
1686
+ }, { label: item.label, color: item.color, labelOnLeft: $props.labelOnLeft, labelColor: $props.labelColor, round: $props.round }, {
1665
1687
  disabled: _ctx.isDisabled || null,
1666
1688
  readonly: _ctx.isReadonly || null,
1667
- onFocus: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("focus", $event)),
1668
- class: normalizeClass({ mt1: !$props.inline && i })
1669
- }, {
1689
+ class: { mt1: !$props.inline && i }
1690
+ }), {
1670
1691
  default: withCtx(() => [
1671
- _ctx.$slots[`item.${i + 1}`] ? renderSlot(_ctx.$slots, `item.${i + 1}`, {
1692
+ _ctx.$slots[`item.${i + 1}`] || _ctx.$slots.item ? renderSlot(_ctx.$slots, _ctx.$slots[`item.${i + 1}`] ? `item.${i + 1}` : "item", {
1672
1693
  key: 0,
1673
1694
  item: $options.getOriginalItem(item),
1674
1695
  checked: !!item._isChecked,
1675
1696
  index: i + 1,
1676
1697
  innerHTML: item.label
1677
- }) : _ctx.$slots.item ? renderSlot(_ctx.$slots, "item", {
1678
- key: 1,
1679
- item: $options.getOriginalItem(item),
1680
- checked: !!item._isChecked,
1681
- index: i + 1,
1682
- innerHTML: item.label
1683
1698
  }) : item.label ? (openBlock(), createElementBlock("div", {
1684
- key: 2,
1699
+ key: 1,
1685
1700
  innerHTML: item.label
1686
- }, null, 8, _hoisted_1$n)) : createCommentVNode("", true)
1701
+ }, null, 8, _hoisted_1$l)) : createCommentVNode("", true)
1687
1702
  ]),
1688
1703
  _: 2
1689
- }, 1032, ["model-value", "name", "label", "label-on-left", "color", "round", "onUpdate:modelValue", "disabled", "readonly", "class"]);
1704
+ }, 1040, ["model-value", "onUpdate:modelValue", "name", "disabled", "readonly", "class"]);
1690
1705
  }), 128))
1691
1706
  ]),
1692
1707
  _: 3
@@ -1705,7 +1720,8 @@ const _sfc_main$G = {
1705
1720
  itemColorKey: { type: String, default: "color" },
1706
1721
  inline: { type: Boolean },
1707
1722
  round: { type: Boolean },
1708
- color: { type: String, default: "primary" }
1723
+ color: { type: String, default: "primary" },
1724
+ labelColor: { type: String, default: "primary" }
1709
1725
  },
1710
1726
  emits: ["input", "update:modelValue", "focus"],
1711
1727
  provide() {
@@ -1749,12 +1765,12 @@ const _sfc_main$G = {
1749
1765
  }
1750
1766
  };
1751
1767
  var wCheckboxes = /* @__PURE__ */ _export_sfc(_sfc_main$G, [["render", render$G]]);
1752
- const _hoisted_1$m = { class: "w-confirm" };
1768
+ const _hoisted_1$k = { class: "w-confirm" };
1753
1769
  function render$F(_ctx, _cache, $props, $setup, $data, $options) {
1754
1770
  const _component_w_button = resolveComponent("w-button");
1755
1771
  const _component_w_flex = resolveComponent("w-flex");
1756
1772
  const _component_w_menu = resolveComponent("w-menu");
1757
- return openBlock(), createElementBlock("div", _hoisted_1$m, [
1773
+ return openBlock(), createElementBlock("div", _hoisted_1$k, [
1758
1774
  createVNode(_component_w_menu, mergeProps({
1759
1775
  modelValue: _ctx.showPopup,
1760
1776
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => _ctx.showPopup = $event)
@@ -1932,7 +1948,7 @@ function render$D(_ctx, _cache, $props, $setup, $data, $options) {
1932
1948
  persistent: $props.persistent,
1933
1949
  "persistent-no-animation": $props.persistentNoAnimation,
1934
1950
  onClick: $options.onOutsideClick,
1935
- onClosed: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("closed")),
1951
+ onClose: $options.onClose,
1936
1952
  "bg-color": $props.overlayColor,
1937
1953
  opacity: $props.overlayOpacity
1938
1954
  }, {
@@ -1940,11 +1956,12 @@ function render$D(_ctx, _cache, $props, $setup, $data, $options) {
1940
1956
  createVNode(Transition, {
1941
1957
  name: $props.transition,
1942
1958
  appear: "",
1943
- onAfterLeave: $options.onClose
1959
+ onAfterLeave: $options.onBeforeClose
1944
1960
  }, {
1945
1961
  default: withCtx(() => [
1946
1962
  withDirectives(createVNode(_component_w_card, {
1947
1963
  class: normalizeClass(["w-dialog__content", $props.dialogClass]),
1964
+ ref: "dialog",
1948
1965
  "no-border": "",
1949
1966
  color: $props.color,
1950
1967
  "bg-color": $props.bgColor,
@@ -1978,7 +1995,7 @@ function render$D(_ctx, _cache, $props, $setup, $data, $options) {
1978
1995
  }, 8, ["name", "onAfterLeave"])
1979
1996
  ]),
1980
1997
  _: 3
1981
- }, 8, ["model-value", "persistent", "persistent-no-animation", "onClick", "bg-color", "opacity", "class"]);
1998
+ }, 8, ["model-value", "persistent", "persistent-no-animation", "onClick", "onClose", "bg-color", "opacity", "class"]);
1982
1999
  }
1983
2000
  var wDialog_vue_vue_type_style_index_0_lang = "";
1984
2001
  const _sfc_main$D = {
@@ -2000,7 +2017,12 @@ const _sfc_main$D = {
2000
2017
  bgColor: { type: String },
2001
2018
  overlayOpacity: { type: [Number, String, Boolean] }
2002
2019
  },
2003
- emits: ["input", "update:modelValue", "close", "closed"],
2020
+ provide() {
2021
+ return {
2022
+ detachableDefaultRoot: () => this.$refs.dialog.$el || null
2023
+ };
2024
+ },
2025
+ emits: ["input", "update:modelValue", "before-close", "close"],
2004
2026
  data() {
2005
2027
  return {
2006
2028
  showWrapper: this.modelValue,
@@ -2030,11 +2052,14 @@ const _sfc_main$D = {
2030
2052
  if (!this.persistent) {
2031
2053
  this.showContent = false;
2032
2054
  if (this.transition === "fade")
2033
- this.onClose();
2055
+ this.onBeforeClose();
2034
2056
  }
2035
2057
  },
2036
- onClose() {
2058
+ onBeforeClose() {
2037
2059
  this.showWrapper = false;
2060
+ this.$emit("before-close");
2061
+ },
2062
+ onClose() {
2038
2063
  this.$emit("update:modelValue", false);
2039
2064
  this.$emit("input", false);
2040
2065
  this.$emit("close");
@@ -2042,19 +2067,21 @@ const _sfc_main$D = {
2042
2067
  },
2043
2068
  watch: {
2044
2069
  modelValue(value) {
2045
- if (value)
2046
- this.showWrapper = value;
2070
+ this.showWrapper = value;
2047
2071
  this.showContent = value;
2048
2072
  }
2049
2073
  }
2050
2074
  };
2051
2075
  var wDialog = /* @__PURE__ */ _export_sfc(_sfc_main$D, [["render", render$D]]);
2076
+ const _hoisted_1$j = ["aria-orientation"];
2052
2077
  function render$C(_ctx, _cache, $props, $setup, $data, $options) {
2053
2078
  return openBlock(), createElementBlock("div", {
2054
- class: normalizeClass(["w-divider", $options.classes])
2079
+ class: normalizeClass(["w-divider", $options.classes]),
2080
+ role: "presentation",
2081
+ "aria-orientation": $props.vertical ? "vertical" : "horizontal"
2055
2082
  }, [
2056
2083
  renderSlot(_ctx.$slots, "default")
2057
- ], 2);
2084
+ ], 10, _hoisted_1$j);
2058
2085
  }
2059
2086
  var wDivider_vue_vue_type_style_index_0_lang = "";
2060
2087
  const _sfc_main$C = {
@@ -2075,7 +2102,7 @@ const _sfc_main$C = {
2075
2102
  }
2076
2103
  };
2077
2104
  var wDivider = /* @__PURE__ */ _export_sfc(_sfc_main$C, [["render", render$C]]);
2078
- const _hoisted_1$l = { class: "w-drawer-wrap__pushable" };
2105
+ const _hoisted_1$i = { class: "w-drawer-wrap__pushable" };
2079
2106
  function render$B(_ctx, _cache, $props, $setup, $data, $options) {
2080
2107
  const _component_w_overlay = resolveComponent("w-overlay");
2081
2108
  return $data.showWrapper || $props.pushContent ? (openBlock(), createElementBlock("div", {
@@ -2087,7 +2114,7 @@ function render$B(_ctx, _cache, $props, $setup, $data, $options) {
2087
2114
  class: "w-drawer-wrap__track",
2088
2115
  style: normalizeStyle($options.trackStyles)
2089
2116
  }, [
2090
- createElementVNode("div", _hoisted_1$l, [
2117
+ createElementVNode("div", _hoisted_1$i, [
2091
2118
  !$props.noOverlay ? (openBlock(), createBlock(_component_w_overlay, {
2092
2119
  key: 0,
2093
2120
  modelValue: $data.showDrawer,
@@ -2095,23 +2122,31 @@ function render$B(_ctx, _cache, $props, $setup, $data, $options) {
2095
2122
  onClick: $options.onOutsideClick,
2096
2123
  persistent: $props.persistent,
2097
2124
  "persistent-no-animation": "",
2098
- "bg-color": $props.overlayColor,
2125
+ "bg-color": $props.overlayColor || "transparent",
2099
2126
  opacity: $props.overlayOpacity
2100
2127
  }, null, 8, ["modelValue", "onClick", "persistent", "bg-color", "opacity"])) : createCommentVNode("", true),
2101
2128
  renderSlot(_ctx.$slots, "pushable")
2102
2129
  ]),
2103
- createVNode(Transition, { name: "fade" }, {
2130
+ createVNode(Transition, {
2131
+ name: "fade",
2132
+ onBeforeLeave: $options.onBeforeClose,
2133
+ onAfterLeave: $options.onClose
2134
+ }, {
2104
2135
  default: withCtx(() => [
2105
- !$options.unmountDrawer ? (openBlock(), createElementBlock("div", {
2136
+ $data.showDrawer ? (openBlock(), createBlock(resolveDynamicComponent($props.tag || "aside"), {
2106
2137
  key: 0,
2107
2138
  class: normalizeClass(["w-drawer", $options.drawerClasses]),
2139
+ ref: "drawer",
2108
2140
  style: normalizeStyle($options.styles)
2109
- }, [
2110
- renderSlot(_ctx.$slots, "default")
2111
- ], 6)) : createCommentVNode("", true)
2141
+ }, {
2142
+ default: withCtx(() => [
2143
+ renderSlot(_ctx.$slots, "default")
2144
+ ]),
2145
+ _: 3
2146
+ }, 8, ["class", "style"])) : createCommentVNode("", true)
2112
2147
  ]),
2113
2148
  _: 3
2114
- })
2149
+ }, 8, ["onBeforeLeave", "onAfterLeave"])
2115
2150
  ], 4)) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
2116
2151
  !$props.noOverlay ? (openBlock(), createBlock(_component_w_overlay, {
2117
2152
  key: 0,
@@ -2126,12 +2161,14 @@ function render$B(_ctx, _cache, $props, $setup, $data, $options) {
2126
2161
  createVNode(Transition, {
2127
2162
  name: $options.transitionName,
2128
2163
  appear: "",
2129
- onAfterLeave: $options.close
2164
+ onBeforeLeave: $options.onBeforeClose,
2165
+ onAfterLeave: $options.onClose
2130
2166
  }, {
2131
2167
  default: withCtx(() => [
2132
2168
  $data.showDrawer ? (openBlock(), createBlock(resolveDynamicComponent($props.tag || "aside"), {
2133
2169
  key: 0,
2134
2170
  class: normalizeClass(["w-drawer", $options.drawerClasses]),
2171
+ ref: "drawer",
2135
2172
  style: normalizeStyle($options.styles)
2136
2173
  }, {
2137
2174
  default: withCtx(() => [
@@ -2141,7 +2178,7 @@ function render$B(_ctx, _cache, $props, $setup, $data, $options) {
2141
2178
  }, 8, ["class", "style"])) : createCommentVNode("", true)
2142
2179
  ]),
2143
2180
  _: 3
2144
- }, 8, ["name", "onAfterLeave"])
2181
+ }, 8, ["name", "onBeforeLeave", "onAfterLeave"])
2145
2182
  ], 64))
2146
2183
  ], 2)) : createCommentVNode("", true);
2147
2184
  }
@@ -2170,7 +2207,12 @@ const _sfc_main$B = {
2170
2207
  overlayOpacity: { type: [Number, String, Boolean] },
2171
2208
  tag: { type: String, default: "aside" }
2172
2209
  },
2173
- emits: ["input", "update:modelValue", "close"],
2210
+ provide() {
2211
+ return {
2212
+ detachableDefaultRoot: () => this.$refs.drawer || null
2213
+ };
2214
+ },
2215
+ emits: ["input", "update:modelValue", "before-close", "close"],
2174
2216
  data() {
2175
2217
  return {
2176
2218
  showWrapper: this.modelValue,
@@ -2211,7 +2253,7 @@ const _sfc_main$B = {
2211
2253
  },
2212
2254
  trackStyles() {
2213
2255
  return this.pushContent && this.showDrawer && {
2214
- transform: `translateX(${this.position === "left" ? "" : "-"}${this.size})`
2256
+ transform: `translateX(${this.position === "left" ? "" : "-"}${this.size || "200px"})`
2215
2257
  };
2216
2258
  },
2217
2259
  styles() {
@@ -2228,17 +2270,18 @@ const _sfc_main$B = {
2228
2270
  }
2229
2271
  },
2230
2272
  methods: {
2231
- close() {
2273
+ onBeforeClose() {
2274
+ this.$emit("before-close");
2275
+ },
2276
+ onClose() {
2232
2277
  this.showWrapper = false;
2233
2278
  this.$emit("update:modelValue", false);
2234
2279
  this.$emit("input", false);
2235
- this.$emit("close", false);
2280
+ this.$emit("close");
2236
2281
  },
2237
2282
  onOutsideClick() {
2238
2283
  if (!this.persistent) {
2239
2284
  this.showDrawer = false;
2240
- if (this.pushContent)
2241
- this.close();
2242
2285
  } else if (!this.persistentNoAnimation) {
2243
2286
  this.persistentAnimate = true;
2244
2287
  setTimeout(() => this.persistentAnimate = false, 200);
@@ -2333,23 +2376,24 @@ const asyncSome = async (array, predicate) => {
2333
2376
  };
2334
2377
  const _sfc_main$z = {
2335
2378
  name: "w-form",
2336
- provide() {
2337
- return {
2338
- formRegister: this.register,
2339
- formUnregister: this.unregister,
2340
- validateElement: this.validateElement,
2341
- formProps: this.$props
2342
- };
2343
- },
2344
2379
  props: {
2345
2380
  modelValue: {},
2346
2381
  allowSubmit: { type: Boolean },
2347
2382
  noKeyupValidation: { type: Boolean },
2348
2383
  noBlurValidation: { type: Boolean },
2349
2384
  errorPlaceholders: { type: Boolean },
2385
+ validationColor: { type: String, default: "error" },
2350
2386
  disabled: { type: Boolean },
2351
2387
  readonly: { type: Boolean }
2352
2388
  },
2389
+ provide() {
2390
+ return {
2391
+ formRegister: this.register,
2392
+ formUnregister: this.unregister,
2393
+ validateElement: this.validateElement,
2394
+ formProps: this.$props
2395
+ };
2396
+ },
2353
2397
  emits: [
2354
2398
  "submit",
2355
2399
  "before-validate",
@@ -2454,11 +2498,6 @@ const _sfc_main$z = {
2454
2498
  }
2455
2499
  };
2456
2500
  var wForm = /* @__PURE__ */ _export_sfc(_sfc_main$z, [["render", render$z]]);
2457
- const _hoisted_1$k = {
2458
- key: 0,
2459
- class: "w-form-el__error error w-form-el__error w-form-el__error"
2460
- };
2461
- const _hoisted_2$b = ["innerHTML"];
2462
2501
  function render$y(_ctx, _cache, $props, $setup, $data, $options) {
2463
2502
  const _component_w_transition_expand = resolveComponent("w-transition-expand");
2464
2503
  return openBlock(), createElementBlock("div", {
@@ -2471,17 +2510,16 @@ function render$y(_ctx, _cache, $props, $setup, $data, $options) {
2471
2510
  ], 2),
2472
2511
  createVNode(_component_w_transition_expand, { y: "" }, {
2473
2512
  default: withCtx(() => [
2474
- _ctx.Validation.message ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
2475
- _ctx.$slots["error-message"] ? (openBlock(), createElementBlock("div", _hoisted_1$k, [
2476
- renderSlot(_ctx.$slots, "error-message", {
2477
- message: _ctx.Validation.message
2478
- })
2479
- ])) : (openBlock(), createElementBlock("div", {
2480
- key: 1,
2481
- class: "w-form-el__error error w-form-el__error w-form-el__error",
2482
- innerHTML: _ctx.Validation.message
2483
- }, null, 8, _hoisted_2$b))
2484
- ], 64)) : createCommentVNode("", true)
2513
+ _ctx.Validation.message ? (openBlock(), createElementBlock("div", {
2514
+ key: 0,
2515
+ class: normalizeClass(["w-form-el__error", $options.formProps.validationColor])
2516
+ }, [
2517
+ renderSlot(_ctx.$slots, "error-message", {
2518
+ message: _ctx.Validation.message
2519
+ }, () => [
2520
+ createTextVNode(toDisplayString(_ctx.Validation.message), 1)
2521
+ ])
2522
+ ], 2)) : createCommentVNode("", true)
2485
2523
  ]),
2486
2524
  _: 3
2487
2525
  })
@@ -2490,6 +2528,16 @@ function render$y(_ctx, _cache, $props, $setup, $data, $options) {
2490
2528
  var wFormElement_vue_vue_type_style_index_0_lang = "";
2491
2529
  const _sfc_main$y = {
2492
2530
  name: "w-form-element",
2531
+ props: {
2532
+ valid: { required: true },
2533
+ disabled: { type: Boolean },
2534
+ readonly: { type: Boolean },
2535
+ inputValue: { required: true },
2536
+ validators: { type: Array },
2537
+ isFocused: { default: false },
2538
+ column: { default: false },
2539
+ wrap: { default: false }
2540
+ },
2493
2541
  inject: {
2494
2542
  formRegister: { default: null },
2495
2543
  formUnregister: { default: null },
@@ -2498,21 +2546,12 @@ const _sfc_main$y = {
2498
2546
  default: () => ({
2499
2547
  noKeyupValidation: false,
2500
2548
  noBlurValidation: false,
2549
+ validationColor: "error",
2501
2550
  disabled: false,
2502
2551
  readonly: false
2503
2552
  })
2504
2553
  }
2505
2554
  },
2506
- props: {
2507
- valid: { required: true },
2508
- disabled: { type: Boolean },
2509
- readonly: { type: Boolean },
2510
- inputValue: { required: true },
2511
- validators: { type: Array },
2512
- isFocused: { default: false },
2513
- column: { default: false },
2514
- wrap: { default: false }
2515
- },
2516
2555
  emits: ["reset", "update:valid"],
2517
2556
  data: () => ({
2518
2557
  Validation: {
@@ -2634,16 +2673,15 @@ const _sfc_main$x = {
2634
2673
  };
2635
2674
  var wGrid = /* @__PURE__ */ _export_sfc(_sfc_main$x, [["render", render$x]]);
2636
2675
  function render$w(_ctx, _cache, $props, $setup, $data, $options) {
2637
- return openBlock(), createBlock(resolveDynamicComponent($props.tag || "i"), mergeProps({
2638
- class: ["w-icon", $options.classes]
2639
- }, toHandlers(_ctx.$attrs), {
2676
+ return openBlock(), createBlock(resolveDynamicComponent($props.tag || "i"), mergeProps({ class: "w-icon" }, toHandlers(_ctx.$attrs), {
2677
+ class: $options.classes,
2640
2678
  role: "icon",
2641
2679
  "aria-hidden": "true",
2642
- style: $options.styles
2680
+ style: $options.readIcon() && $options.styles
2643
2681
  }), {
2644
2682
  default: withCtx(() => [
2645
- $options.ligature ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
2646
- createTextVNode(toDisplayString($options.ligature.icon), 1)
2683
+ $options.hasLigature ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
2684
+ createTextVNode(toDisplayString(_ctx.icon), 1)
2647
2685
  ], 64)) : createCommentVNode("", true)
2648
2686
  ]),
2649
2687
  _: 1
@@ -2676,14 +2714,12 @@ const _sfc_main$w = {
2676
2714
  },
2677
2715
  emits: [],
2678
2716
  data: () => ({
2679
- icon: ""
2717
+ icon: "",
2718
+ fontName: ""
2680
2719
  }),
2681
2720
  computed: {
2682
- ligature() {
2683
- if (!config.iconsLigature)
2684
- return false;
2685
- const [fontName, icon] = this.icon.split(" ");
2686
- return fontName === config.iconsLigature && { fontName, icon };
2721
+ hasLigature() {
2722
+ return config.iconsLigature === this.fontName;
2687
2723
  },
2688
2724
  forcedSize() {
2689
2725
  return this.size && (!isNaN(this.size) ? `${this.size}px` : this.size);
@@ -2693,7 +2729,8 @@ const _sfc_main$w = {
2693
2729
  },
2694
2730
  classes() {
2695
2731
  return {
2696
- [this.icon]: true,
2732
+ [this.fontName]: true,
2733
+ [!this.hasLigature && this.icon]: !this.hasLigature && this.icon,
2697
2734
  [this.color]: this.color,
2698
2735
  [`${this.bgColor}--bg`]: this.bgColor,
2699
2736
  [`size--${this.presetSize}`]: this.presetSize && !this.forcedSize,
@@ -2707,25 +2744,27 @@ const _sfc_main$w = {
2707
2744
  "w-icon--rotate-90": this.rotate90a,
2708
2745
  "w-icon--rotate-135": this.rotate135a,
2709
2746
  "w-icon--flip-x": this.flipX,
2710
- "w-icon--flip-y": this.flipY,
2711
- [this.ligature && this.ligature.fontName]: this.ligature
2747
+ "w-icon--flip-y": this.flipY
2712
2748
  };
2713
2749
  },
2714
2750
  styles() {
2715
2751
  return this.forcedSize && `font-size: ${this.forcedSize}`;
2716
2752
  }
2717
2753
  },
2718
- created() {
2719
- this.icon = this.$slots.default && this.$slots.default()[0].children;
2720
- },
2721
- updated() {
2722
- this.icon = this.$slots.default && this.$slots.default()[0].children;
2754
+ methods: {
2755
+ readIcon() {
2756
+ const { default: slot } = this.$slots;
2757
+ const [fontName = "", icon = ""] = typeof slot === "function" && slot()[0].children.trim().split(" ") || [];
2758
+ this.fontName = fontName;
2759
+ this.icon = icon;
2760
+ return true;
2761
+ }
2723
2762
  }
2724
2763
  };
2725
2764
  var wIcon = /* @__PURE__ */ _export_sfc(_sfc_main$w, [["render", render$w]]);
2726
2765
  const consoleWarn = (message) => console.warn(`Wave UI: ${message}`);
2727
2766
  const consoleError = (message) => console.error(`Wave UI: ${message}`);
2728
- const _hoisted_1$j = {
2767
+ const _hoisted_1$h = {
2729
2768
  key: 0,
2730
2769
  class: "w-image__loader"
2731
2770
  };
@@ -2750,7 +2789,7 @@ function render$v(_ctx, _cache, $props, $setup, $data, $options) {
2750
2789
  ]),
2751
2790
  _: 1
2752
2791
  }, 8, ["name"]),
2753
- !$props.noSpinner && $data.loading ? (openBlock(), createElementBlock("div", _hoisted_1$j, [
2792
+ !$props.noSpinner && $data.loading ? (openBlock(), createElementBlock("div", _hoisted_1$h, [
2754
2793
  _ctx.$slots.loading ? renderSlot(_ctx.$slots, "loading", { key: 0 }) : (openBlock(), createBlock(_component_w_progress, {
2755
2794
  key: 1,
2756
2795
  circle: "",
@@ -2895,22 +2934,19 @@ const _sfc_main$v = {
2895
2934
  }
2896
2935
  };
2897
2936
  var wImage = /* @__PURE__ */ _export_sfc(_sfc_main$v, [["render", render$v]]);
2898
- const _hoisted_1$i = ["name"];
2937
+ const _hoisted_1$g = ["name"];
2899
2938
  const _hoisted_2$a = ["for"];
2900
- const _hoisted_3$9 = ["for", "innerHTML"];
2901
- const _hoisted_4$8 = ["id", "type", "name", "placeholder", "step", "min", "max", "minlength", "maxlength", "readonly", "aria-readonly", "disabled", "required", "tabindex"];
2902
- const _hoisted_5$7 = ["id", "name", "multiple", "data-progress"];
2903
- const _hoisted_6$4 = {
2939
+ const _hoisted_3$9 = ["id", "type", "name", "placeholder", "step", "min", "max", "minlength", "maxlength", "readonly", "aria-readonly", "disabled", "required", "tabindex"];
2940
+ const _hoisted_4$7 = ["id", "name", "multiple", "data-progress"];
2941
+ const _hoisted_5$5 = {
2904
2942
  class: "w-input__no-file",
2905
2943
  key: "no-file"
2906
2944
  };
2907
- const _hoisted_7$4 = /* @__PURE__ */ createTextVNode("No file");
2908
- const _hoisted_8$3 = ["for"];
2909
- const _hoisted_9$3 = ["for", "innerHTML"];
2910
- const _hoisted_10$3 = ["for"];
2911
- const _hoisted_11$2 = ["src"];
2912
- const _hoisted_12$1 = ["for"];
2913
- const _hoisted_13$1 = ["for", "innerHTML"];
2945
+ const _hoisted_6$3 = /* @__PURE__ */ createTextVNode("No file");
2946
+ const _hoisted_7$3 = ["for"];
2947
+ const _hoisted_8$2 = ["for"];
2948
+ const _hoisted_9$2 = ["src"];
2949
+ const _hoisted_10$2 = ["for"];
2914
2950
  function render$u(_ctx, _cache, $props, $setup, $data, $options) {
2915
2951
  const _component_w_icon = resolveComponent("w-icon");
2916
2952
  const _component_w_progress = resolveComponent("w-progress");
@@ -2930,22 +2966,19 @@ function render$u(_ctx, _cache, $props, $setup, $data, $options) {
2930
2966
  type: "hidden",
2931
2967
  name: _ctx.name || null,
2932
2968
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => $data.inputValue = $event)
2933
- }, null, 8, _hoisted_1$i)), [
2969
+ }, null, 8, _hoisted_1$g)), [
2934
2970
  [vModelText, $data.inputValue]
2935
2971
  ]) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
2936
2972
  $props.labelPosition === "left" ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
2937
- _ctx.$slots.default ? (openBlock(), createElementBlock("label", {
2973
+ _ctx.$slots.default || $props.label ? (openBlock(), createElementBlock("label", {
2938
2974
  key: 0,
2939
- class: normalizeClass(["w-input__label w-input__label--left w-form-el-shakable", $options.validationClasses]),
2975
+ class: normalizeClass(["w-input__label w-input__label--left w-form-el-shakable", _ctx.labelClasses]),
2940
2976
  for: `w-input--${_ctx._.uid}`
2941
2977
  }, [
2942
- renderSlot(_ctx.$slots, "default")
2943
- ], 10, _hoisted_2$a)) : $props.label ? (openBlock(), createElementBlock("label", {
2944
- key: 1,
2945
- class: normalizeClass(["w-input__label w-input__label--left w-form-el-shakable", $options.validationClasses]),
2946
- for: `w-input--${_ctx._.uid}`,
2947
- innerHTML: $props.label
2948
- }, null, 10, _hoisted_3$9)) : createCommentVNode("", true)
2978
+ renderSlot(_ctx.$slots, "default", {}, () => [
2979
+ createTextVNode(toDisplayString($props.label), 1)
2980
+ ])
2981
+ ], 10, _hoisted_2$a)) : createCommentVNode("", true)
2949
2982
  ], 64)) : createCommentVNode("", true),
2950
2983
  createElementVNode("div", {
2951
2984
  class: normalizeClass(["w-input__input-wrap", $options.inputWrapClasses])
@@ -2985,7 +3018,7 @@ function render$u(_ctx, _cache, $props, $setup, $data, $options) {
2985
3018
  disabled: _ctx.isDisabled || null,
2986
3019
  required: _ctx.required || null,
2987
3020
  tabindex: _ctx.tabindex || null
2988
- }, $options.attrs), null, 16, _hoisted_4$8)), [
3021
+ }, $options.attrs), null, 16, _hoisted_3$9)), [
2989
3022
  [vModelDynamic, $data.inputValue]
2990
3023
  ]) : (openBlock(), createElementBlock(Fragment, { key: 2 }, [
2991
3024
  createElementVNode("input", mergeProps({
@@ -2999,7 +3032,7 @@ function render$u(_ctx, _cache, $props, $setup, $data, $options) {
2999
3032
  multiple: $props.multiple || null
3000
3033
  }, $options.attrs, {
3001
3034
  "data-progress": $options.overallFilesProgress
3002
- }), null, 16, _hoisted_5$7),
3035
+ }), null, 16, _hoisted_4$7),
3003
3036
  createVNode(TransitionGroup, {
3004
3037
  class: "w-input__input w-input__input--file",
3005
3038
  tag: "label",
@@ -3007,10 +3040,10 @@ function render$u(_ctx, _cache, $props, $setup, $data, $options) {
3007
3040
  for: `w-input--${_ctx._.uid}`
3008
3041
  }, {
3009
3042
  default: withCtx(() => [
3010
- !$data.inputFiles.length && $data.isFocused ? (openBlock(), createElementBlock("span", _hoisted_6$4, [
3043
+ !$data.inputFiles.length && $data.isFocused ? (openBlock(), createElementBlock("span", _hoisted_5$5, [
3011
3044
  renderSlot(_ctx.$slots, "no-file", {}, () => [
3012
3045
  _ctx.$slots["no-file"] === void 0 ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
3013
- _hoisted_7$4
3046
+ _hoisted_6$3
3014
3047
  ], 64)) : createCommentVNode("", true)
3015
3048
  ])
3016
3049
  ])) : createCommentVNode("", true),
@@ -3031,18 +3064,15 @@ function render$u(_ctx, _cache, $props, $setup, $data, $options) {
3031
3064
  }, 8, ["for"])
3032
3065
  ], 64)),
3033
3066
  $props.labelPosition === "inside" && $options.showLabelInside ? (openBlock(), createElementBlock(Fragment, { key: 3 }, [
3034
- _ctx.$slots.default ? (openBlock(), createElementBlock("label", {
3067
+ _ctx.$slots.default || $props.label ? (openBlock(), createElementBlock("label", {
3035
3068
  key: 0,
3036
- class: normalizeClass(["w-input__label w-input__label--inside w-form-el-shakable", $options.validationClasses]),
3069
+ class: normalizeClass(["w-input__label w-input__label--inside w-form-el-shakable", _ctx.labelClasses]),
3037
3070
  for: `w-input--${_ctx._.uid}`
3038
3071
  }, [
3039
- renderSlot(_ctx.$slots, "default")
3040
- ], 10, _hoisted_8$3)) : $props.label ? (openBlock(), createElementBlock("label", {
3041
- key: 1,
3042
- class: normalizeClass(["w-input__label w-input__label--inside w-form-el-shakable", $options.validationClasses]),
3043
- for: `w-input--${_ctx._.uid}`,
3044
- innerHTML: $props.label
3045
- }, null, 10, _hoisted_9$3)) : createCommentVNode("", true)
3072
+ renderSlot(_ctx.$slots, "default", {}, () => [
3073
+ createTextVNode(toDisplayString($props.label), 1)
3074
+ ])
3075
+ ], 10, _hoisted_7$3)) : createCommentVNode("", true)
3046
3076
  ], 64)) : createCommentVNode("", true),
3047
3077
  $props.innerIconRight ? (openBlock(), createBlock(_component_w_icon, {
3048
3078
  key: 4,
@@ -3079,26 +3109,23 @@ function render$u(_ctx, _cache, $props, $setup, $data, $options) {
3079
3109
  key: `${i}b`,
3080
3110
  src: file.preview,
3081
3111
  alt: ""
3082
- }, null, 8, _hoisted_11$2)) : (openBlock(), createElementBlock("i", {
3112
+ }, null, 8, _hoisted_9$2)) : (openBlock(), createElementBlock("i", {
3083
3113
  class: normalizeClass(["w-icon w-input__file-preview primary size--md", $props.preview && typeof $props.preview === "string" ? $props.preview : "wi-file"]),
3084
3114
  key: `${i}c`
3085
3115
  }, null, 2))
3086
3116
  ], 64);
3087
3117
  }), 256))
3088
- ], 8, _hoisted_10$3)) : createCommentVNode("", true),
3118
+ ], 8, _hoisted_8$2)) : createCommentVNode("", true),
3089
3119
  $props.labelPosition === "right" ? (openBlock(), createElementBlock(Fragment, { key: 2 }, [
3090
- _ctx.$slots.default ? (openBlock(), createElementBlock("label", {
3120
+ _ctx.$slots.default || $props.label ? (openBlock(), createElementBlock("label", {
3091
3121
  key: 0,
3092
- class: normalizeClass(["w-input__label w-input__label--right w-form-el-shakable", $options.validationClasses]),
3122
+ class: normalizeClass(["w-input__label w-input__label--right w-form-el-shakable", _ctx.labelClasses]),
3093
3123
  for: `w-input--${_ctx._.uid}`
3094
3124
  }, [
3095
- renderSlot(_ctx.$slots, "default")
3096
- ], 10, _hoisted_12$1)) : $props.label ? (openBlock(), createElementBlock("label", {
3097
- key: 1,
3098
- class: normalizeClass(["w-input__label w-input__label--right w-form-el-shakable", $options.validationClasses]),
3099
- for: `w-input--${_ctx._.uid}`,
3100
- innerHTML: $props.label
3101
- }, null, 10, _hoisted_13$1)) : createCommentVNode("", true)
3125
+ renderSlot(_ctx.$slots, "default", {}, () => [
3126
+ createTextVNode(toDisplayString($props.label), 1)
3127
+ ])
3128
+ ], 10, _hoisted_10$2)) : createCommentVNode("", true)
3102
3129
  ], 64)) : createCommentVNode("", true)
3103
3130
  ], 64))
3104
3131
  ]),
@@ -3119,8 +3146,9 @@ const _sfc_main$u = {
3119
3146
  staticLabel: { type: Boolean },
3120
3147
  placeholder: { type: String },
3121
3148
  color: { type: String, default: "primary" },
3122
- progressColor: { type: String },
3123
3149
  bgColor: { type: String },
3150
+ labelColor: { type: String, default: "primary" },
3151
+ progressColor: { type: String },
3124
3152
  minlength: { type: [Number, String] },
3125
3153
  maxlength: { type: [Number, String] },
3126
3154
  step: { type: [Number, String] },
@@ -3193,7 +3221,7 @@ const _sfc_main$u = {
3193
3221
  return !this.staticLabel || !this.hasValue && !this.placeholder;
3194
3222
  },
3195
3223
  overallFilesProgress() {
3196
- const progress = this.inputFiles.reduce((total2, file) => total2 + file.progress, 0);
3224
+ const progress = +this.inputFiles.reduce((total2, file) => total2 + file.progress, 0);
3197
3225
  const total = progress / this.inputFiles.length;
3198
3226
  this.$emit("update:overallProgress", this.inputFiles.length ? total : void 0);
3199
3227
  return total;
@@ -3220,14 +3248,9 @@ const _sfc_main$u = {
3220
3248
  "w-input--inner-icon-right": this.innerIconRight
3221
3249
  };
3222
3250
  },
3223
- validationClasses() {
3224
- return this.isFocused && {
3225
- [this.valid === false ? "error" : this.color]: this.color || this.valid === false
3226
- };
3227
- },
3228
3251
  inputWrapClasses() {
3229
3252
  return {
3230
- [this.valid === false ? "error" : this.color]: this.color || this.valid === false,
3253
+ [this.valid === false ? this.validationColor : this.color]: this.color || this.valid === false,
3231
3254
  [`${this.bgColor}--bg`]: this.bgColor,
3232
3255
  "w-input__input-wrap--file": this.type === "file",
3233
3256
  "w-input__input-wrap--round": this.round,
@@ -3641,7 +3664,6 @@ const _sfc_main$t = {
3641
3664
  var wList = /* @__PURE__ */ _export_sfc(_sfc_main$t, [["render", render$t]]);
3642
3665
  var DetachableMixin = {
3643
3666
  props: {
3644
- detachTo: { type: [String, Boolean, Object], deprecated: true },
3645
3667
  appendTo: { type: [String, Boolean, Object] },
3646
3668
  fixed: { type: Boolean },
3647
3669
  top: { type: Boolean },
@@ -3656,16 +3678,19 @@ var DetachableMixin = {
3656
3678
  zIndex: { type: [Number, String, Boolean] },
3657
3679
  activator: { type: [String, Object, HTMLElement] }
3658
3680
  },
3681
+ inject: {
3682
+ detachableDefaultRoot: { default: null }
3683
+ },
3659
3684
  data: () => ({
3660
3685
  docEventListenersHandlers: []
3661
3686
  }),
3662
3687
  computed: {
3663
3688
  appendToTarget() {
3664
- const defaultTarget = ".w-app";
3665
- if (this.detachTo && !this.appendTo) {
3666
- consoleWarn(`The ${this.$options.name} prop \`detach-to\` is deprecated. You can replace it with \`append-to\`.`);
3689
+ let defaultTarget = ".w-app";
3690
+ if (typeof this.detachableDefaultRoot === "function") {
3691
+ defaultTarget = this.detachableDefaultRoot() || defaultTarget;
3667
3692
  }
3668
- let target = this.appendTo || this.detachTo || defaultTarget;
3693
+ let target = this.appendTo || defaultTarget;
3669
3694
  if (target === true)
3670
3695
  target = defaultTarget;
3671
3696
  else if (this.appendTo === "activator")
@@ -3704,7 +3729,7 @@ var DetachableMixin = {
3704
3729
  return activator;
3705
3730
  return document.querySelector(this.activator);
3706
3731
  }
3707
- return this.$el.firstElementChild;
3732
+ return this.$el.nextElementSibling;
3708
3733
  },
3709
3734
  set() {
3710
3735
  }
@@ -3753,6 +3778,8 @@ var DetachableMixin = {
3753
3778
  },
3754
3779
  computeDetachableCoords() {
3755
3780
  let { top, left, width, height } = this.getActivatorCoordinates();
3781
+ if (!this.detachableEl)
3782
+ return;
3756
3783
  this.detachableEl.style.visibility = "hidden";
3757
3784
  this.detachableEl.style.display = "flex";
3758
3785
  const computedStyles2 = window.getComputedStyle(this.detachableEl, null);
@@ -3848,27 +3875,22 @@ var DetachableMixin = {
3848
3875
  },
3849
3876
  mounted() {
3850
3877
  var _a;
3851
- const wrapper = this.$el;
3852
- if (this.$slots.activator)
3853
- wrapper.parentNode.insertBefore(this.activatorEl, wrapper);
3854
- else if (this.activator)
3878
+ if (this.activator)
3855
3879
  this.bindActivatorEvents();
3856
3880
  else {
3857
3881
  this.$nextTick(() => {
3858
- this.activator && this.bindActivatorEvents();
3882
+ if (this.activator)
3883
+ this.bindActivatorEvents();
3859
3884
  if (this.modelValue)
3860
3885
  this.toggle({ type: "click", target: this.activatorEl });
3861
3886
  });
3862
3887
  }
3863
- if (this.overlay) {
3888
+ if (this.overlay)
3864
3889
  this.overlayEl = (_a = this.$refs.overlay) == null ? void 0 : _a.$el;
3865
- wrapper.parentNode.insertBefore(this.overlayEl, wrapper);
3866
- }
3867
3890
  if (this.modelValue && this.activator)
3868
3891
  this.toggle({ type: "click", target: this.activatorEl });
3869
3892
  },
3870
- beforeUnmount() {
3871
- var _a;
3893
+ unmounted() {
3872
3894
  this.close();
3873
3895
  this.removeFromDOM();
3874
3896
  if (this.docEventListenersHandlers.length) {
@@ -3876,31 +3898,22 @@ var DetachableMixin = {
3876
3898
  document.removeEventListener(eventName, handler);
3877
3899
  });
3878
3900
  }
3879
- if (this.overlay && this.overlayEl.parentNode)
3880
- this.overlayEl.remove();
3881
- if (((_a = this.activatorEl) == null ? void 0 : _a.parentNode) && this.$slots.activator)
3882
- this.activatorEl.remove();
3883
3901
  },
3884
3902
  watch: {
3885
3903
  modelValue(bool) {
3886
3904
  if (!!bool !== this.detachableVisible)
3887
3905
  this.toggle({ type: "click", target: this.activatorEl });
3888
3906
  },
3889
- detachTo() {
3890
- this.removeFromDOM();
3891
- this.insertInDOM();
3892
- },
3893
3907
  appendTo() {
3894
3908
  this.removeFromDOM();
3895
3909
  this.insertInDOM();
3896
3910
  }
3897
3911
  }
3898
3912
  };
3899
- const _hoisted_1$h = { class: "w-menu-wrap" };
3900
3913
  function render$s(_ctx, _cache, $props, $setup, $data, $options) {
3901
3914
  const _component_w_card = resolveComponent("w-card");
3902
3915
  const _component_w_overlay = resolveComponent("w-overlay");
3903
- return openBlock(), createElementBlock("div", _hoisted_1$h, [
3916
+ return openBlock(), createElementBlock(Fragment, null, [
3904
3917
  renderSlot(_ctx.$slots, "activator", { on: $options.activatorEventHandlers }),
3905
3918
  createVNode(Transition, {
3906
3919
  name: $options.transitionName,
@@ -3966,7 +3979,7 @@ function render$s(_ctx, _cache, $props, $setup, $data, $options) {
3966
3979
  "z-index": (_ctx.zIndex || 200) - 1,
3967
3980
  "onUpdate:modelValue": _cache[6] || (_cache[6] = ($event) => _ctx.detachableVisible = false)
3968
3981
  }), null, 16, ["model-value", "persistent", "class", "z-index"])) : createCommentVNode("", true)
3969
- ]);
3982
+ ], 64);
3970
3983
  }
3971
3984
  var wMenu_vue_vue_type_style_index_0_lang = "";
3972
3985
  const _sfc_main$s = {
@@ -3995,6 +4008,14 @@ const _sfc_main$s = {
3995
4008
  persistent: { type: Boolean },
3996
4009
  delay: { type: Number }
3997
4010
  },
4011
+ provide() {
4012
+ return {
4013
+ detachableDefaultRoot: () => {
4014
+ var _a;
4015
+ return ((_a = this.$refs.detachable) == null ? void 0 : _a.$el) || this.$refs.detachable || null;
4016
+ }
4017
+ };
4018
+ },
3998
4019
  emits: ["input", "update:modelValue", "open", "close"],
3999
4020
  data: () => ({
4000
4021
  detachableVisible: false,
@@ -4285,12 +4306,13 @@ function render$q(_ctx, _cache, $props, $setup, $data, $options) {
4285
4306
  return openBlock(), createBlock(Transition, {
4286
4307
  name: "fade",
4287
4308
  appear: "",
4288
- onAfterLeave: $options.onClosed
4309
+ onAfterLeave: $options.onClose
4289
4310
  }, {
4290
4311
  default: withCtx(() => [
4291
- _ctx.showOverlay ? withDirectives((openBlock(), createElementBlock("div", {
4312
+ $props.modelValue ? withDirectives((openBlock(), createElementBlock("div", {
4292
4313
  key: 0,
4293
4314
  class: normalizeClass(["w-overlay", $options.classes]),
4315
+ ref: "overlay",
4294
4316
  style: normalizeStyle($props.modelValue && $options.styles || null),
4295
4317
  onKeydown: _cache[0] || (_cache[0] = withKeys(withModifiers((...args) => $options.onClick && $options.onClick(...args), ["stop"]), ["escape"])),
4296
4318
  onClick: _cache[1] || (_cache[1] = (...args) => $options.onClick && $options.onClick(...args)),
@@ -4298,7 +4320,7 @@ function render$q(_ctx, _cache, $props, $setup, $data, $options) {
4298
4320
  }, [
4299
4321
  renderSlot(_ctx.$slots, "default")
4300
4322
  ], 38)), [
4301
- [vShow, $props.modelValue],
4323
+ [vShow, _ctx.showOverlay],
4302
4324
  [_directive_focus]
4303
4325
  ]) : createCommentVNode("", true)
4304
4326
  ]),
@@ -4316,7 +4338,12 @@ const _sfc_main$q = {
4316
4338
  persistent: { type: Boolean },
4317
4339
  persistentNoAnimation: { type: Boolean }
4318
4340
  },
4319
- emits: ["input", "update:modelValue", "click", "close", "closed"],
4341
+ provide() {
4342
+ return {
4343
+ detachableDefaultRoot: () => this.$refs.overlay || null
4344
+ };
4345
+ },
4346
+ emits: ["input", "update:modelValue", "click", "before-close", "close"],
4320
4347
  data: () => ({
4321
4348
  persistentAnimate: false,
4322
4349
  showOverlay: false
@@ -4345,15 +4372,16 @@ const _sfc_main$q = {
4345
4372
  this.persistentAnimate = true;
4346
4373
  setTimeout(() => this.persistentAnimate = false, 150);
4347
4374
  } else if (!this.persistent) {
4348
- this.$emit("update:modelValue", false);
4349
- this.$emit("input", false);
4350
- this.$emit("close");
4375
+ this.showOverlay = false;
4376
+ this.$emit("before-close");
4351
4377
  }
4352
4378
  this.$emit("click", e);
4353
4379
  },
4354
- onClosed() {
4355
- this.showOverlay = false;
4356
- this.$emit("closed");
4380
+ onClose() {
4381
+ this.$emit("update:modelValue", false);
4382
+ this.$emit("input", false);
4383
+ if (!this.modelValue)
4384
+ this.$emit("close");
4357
4385
  }
4358
4386
  },
4359
4387
  created() {
@@ -4367,9 +4395,9 @@ const _sfc_main$q = {
4367
4395
  }
4368
4396
  };
4369
4397
  var wOverlay = /* @__PURE__ */ _export_sfc(_sfc_main$q, [["render", render$q]]);
4370
- const _hoisted_1$g = { class: "w-parallax" };
4398
+ const _hoisted_1$f = { class: "w-parallax" };
4371
4399
  function render$p(_ctx, _cache, $props, $setup, $data, $options) {
4372
- return openBlock(), createElementBlock("div", _hoisted_1$g);
4400
+ return openBlock(), createElementBlock("div", _hoisted_1$f);
4373
4401
  }
4374
4402
  var wParallax_vue_vue_type_style_index_0_lang = "";
4375
4403
  const _sfc_main$p = {
@@ -4379,10 +4407,10 @@ const _sfc_main$p = {
4379
4407
  data: () => ({})
4380
4408
  };
4381
4409
  var wParallax = /* @__PURE__ */ _export_sfc(_sfc_main$p, [["render", render$p]]);
4382
- const _hoisted_1$f = ["viewBox"];
4410
+ const _hoisted_1$e = ["viewBox"];
4383
4411
  const _hoisted_2$9 = ["cx", "cy", "r", "stroke-dasharray", "stroke-width"];
4384
4412
  const _hoisted_3$8 = ["viewBox"];
4385
- const _hoisted_4$7 = ["cx", "cy", "r", "stroke-width", "stroke-linecap", "stroke-dasharray"];
4413
+ const _hoisted_4$6 = ["cx", "cy", "r", "stroke-width", "stroke-linecap", "stroke-dasharray"];
4386
4414
  function render$o(_ctx, _cache, $props, $setup, $data, $options) {
4387
4415
  return openBlock(), createElementBlock("div", {
4388
4416
  class: normalizeClass(["w-progress", $options.classes]),
@@ -4406,7 +4434,7 @@ function render$o(_ctx, _cache, $props, $setup, $data, $options) {
4406
4434
  "stroke-dasharray": _ctx.circleCircumference,
4407
4435
  "stroke-width": $props.stroke
4408
4436
  }, null, 10, _hoisted_2$9)) : createCommentVNode("", true)
4409
- ], 8, _hoisted_1$f)),
4437
+ ], 8, _hoisted_1$e)),
4410
4438
  (openBlock(), createElementBlock("svg", {
4411
4439
  class: "w-progress__progress",
4412
4440
  viewBox: `${$options.circleCenter / 2} ${$options.circleCenter / 2} ${$options.circleCenter} ${$options.circleCenter}`,
@@ -4420,7 +4448,7 @@ function render$o(_ctx, _cache, $props, $setup, $data, $options) {
4420
4448
  "stroke-width": $props.stroke,
4421
4449
  "stroke-linecap": $props.roundCap && "round",
4422
4450
  "stroke-dasharray": _ctx.circleCircumference
4423
- }, null, 8, _hoisted_4$7)
4451
+ }, null, 8, _hoisted_4$6)
4424
4452
  ], 12, _hoisted_3$8))
4425
4453
  ], 64)),
4426
4454
  $props.label || _ctx.$slots.default ? (openBlock(), createElementBlock("div", {
@@ -4505,11 +4533,9 @@ const _sfc_main$o = {
4505
4533
  }
4506
4534
  };
4507
4535
  var wProgress = /* @__PURE__ */ _export_sfc(_sfc_main$o, [["render", render$o]]);
4508
- const _hoisted_1$e = ["id", "name", "checked", "disabled", "required", "tabindex", "aria-checked"];
4536
+ const _hoisted_1$d = ["id", "name", "checked", "disabled", "required", "tabindex", "aria-checked"];
4509
4537
  const _hoisted_2$8 = ["for"];
4510
- const _hoisted_3$7 = ["for", "innerHTML"];
4511
- const _hoisted_4$6 = ["for"];
4512
- const _hoisted_5$6 = ["for", "innerHTML"];
4538
+ const _hoisted_3$7 = ["for"];
4513
4539
  function render$n(_ctx, _cache, $props, $setup, $data, $options) {
4514
4540
  return openBlock(), createBlock(resolveDynamicComponent(_ctx.formRegister && !$options.wRadios ? "w-form-element" : "div"), mergeProps({ ref: "formEl" }, _ctx.formRegister && { validators: _ctx.validators, inputValue: _ctx.inputValue, disabled: _ctx.isDisabled }, {
4515
4541
  valid: _ctx.valid,
@@ -4534,20 +4560,17 @@ function render$n(_ctx, _cache, $props, $setup, $data, $options) {
4534
4560
  onChange: _cache[1] || (_cache[1] = ($event) => $options.onInput($event)),
4535
4561
  "aria-checked": _ctx.inputValue || "false",
4536
4562
  role: "radio"
4537
- }, null, 40, _hoisted_1$e),
4563
+ }, null, 40, _hoisted_1$d),
4538
4564
  $options.hasLabel && $props.labelOnLeft ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
4539
- _ctx.$slots.default ? (openBlock(), createElementBlock("label", {
4565
+ _ctx.$slots.default || $props.label ? (openBlock(), createElementBlock("label", {
4540
4566
  key: 0,
4541
- class: "w-radio__label w-form-el-shakable pr2",
4567
+ class: normalizeClass(["w-radio__label w-form-el-shakable pr2", _ctx.labelClasses]),
4542
4568
  for: `w-radio--${_ctx._.uid}`
4543
4569
  }, [
4544
- renderSlot(_ctx.$slots, "default")
4545
- ], 8, _hoisted_2$8)) : $props.label ? (openBlock(), createElementBlock("label", {
4546
- key: 1,
4547
- class: "w-radio__label w-form-el-shakable pr2",
4548
- for: `w-radio--${_ctx._.uid}`,
4549
- innerHTML: $props.label
4550
- }, null, 8, _hoisted_3$7)) : createCommentVNode("", true)
4570
+ renderSlot(_ctx.$slots, "default", {}, () => [
4571
+ createTextVNode(toDisplayString($props.label), 1)
4572
+ ])
4573
+ ], 10, _hoisted_2$8)) : createCommentVNode("", true)
4551
4574
  ], 64)) : createCommentVNode("", true),
4552
4575
  createElementVNode("div", {
4553
4576
  class: normalizeClass(["w-radio__input", this.color]),
@@ -4557,18 +4580,15 @@ function render$n(_ctx, _cache, $props, $setup, $data, $options) {
4557
4580
  })
4558
4581
  }, null, 2),
4559
4582
  $options.hasLabel && !$props.labelOnLeft ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [
4560
- _ctx.$slots.default ? (openBlock(), createElementBlock("label", {
4583
+ _ctx.$slots.default || $props.label ? (openBlock(), createElementBlock("label", {
4561
4584
  key: 0,
4562
- class: "w-radio__label w-form-el-shakable pl2",
4585
+ class: normalizeClass(["w-radio__label w-form-el-shakable pl2", _ctx.labelClasses]),
4563
4586
  for: `w-radio--${_ctx._.uid}`
4564
4587
  }, [
4565
- renderSlot(_ctx.$slots, "default")
4566
- ], 8, _hoisted_4$6)) : $props.label ? (openBlock(), createElementBlock("label", {
4567
- key: 1,
4568
- class: "w-radio__label w-form-el-shakable pl2",
4569
- for: `w-radio--${_ctx._.uid}`,
4570
- innerHTML: $props.label
4571
- }, null, 8, _hoisted_5$6)) : createCommentVNode("", true)
4588
+ renderSlot(_ctx.$slots, "default", {}, () => [
4589
+ createTextVNode(toDisplayString($props.label), 1)
4590
+ ])
4591
+ ], 10, _hoisted_3$7)) : createCommentVNode("", true)
4572
4592
  ], 64)) : createCommentVNode("", true)
4573
4593
  ]),
4574
4594
  _: 3
@@ -4585,6 +4605,7 @@ const _sfc_main$n = {
4585
4605
  label: { type: String },
4586
4606
  labelOnLeft: { type: Boolean },
4587
4607
  color: { type: String, default: "primary" },
4608
+ labelColor: { type: String, default: "primary" },
4588
4609
  noRipple: { type: Boolean }
4589
4610
  },
4590
4611
  emits: ["input", "update:modelValue", "focus"],
@@ -4644,7 +4665,7 @@ const _sfc_main$n = {
4644
4665
  }
4645
4666
  };
4646
4667
  var wRadio = /* @__PURE__ */ _export_sfc(_sfc_main$n, [["render", render$n]]);
4647
- const _hoisted_1$d = ["innerHTML"];
4668
+ const _hoisted_1$c = ["innerHTML"];
4648
4669
  function render$m(_ctx, _cache, $props, $setup, $data, $options) {
4649
4670
  const _component_w_radio = resolveComponent("w-radio");
4650
4671
  return openBlock(), createBlock(resolveDynamicComponent(_ctx.formRegister ? "w-form-element" : "div"), mergeProps({ ref: "formEl" }, _ctx.formRegister && { validators: _ctx.validators, inputValue: _ctx.inputValue, disabled: _ctx.isDisabled }, {
@@ -4660,39 +4681,31 @@ function render$m(_ctx, _cache, $props, $setup, $data, $options) {
4660
4681
  }), {
4661
4682
  default: withCtx(() => [
4662
4683
  (openBlock(true), createElementBlock(Fragment, null, renderList($options.radioItems, (item, i) => {
4663
- return openBlock(), createBlock(_component_w_radio, {
4684
+ return openBlock(), createBlock(_component_w_radio, mergeProps({
4664
4685
  key: i,
4665
4686
  "model-value": item.value === $props.modelValue,
4666
4687
  "onUpdate:modelValue": ($event) => $options.onInput(item),
4667
4688
  onFocus: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("focus", $event)),
4668
- name: _ctx.inputName,
4669
- label: item.label,
4670
- "label-on-left": $props.labelOnLeft,
4671
- color: item.color,
4689
+ name: _ctx.inputName
4690
+ }, { label: item.label, color: item.color, labelOnLeft: $props.labelOnLeft, labelColor: $props.labelColor }, {
4672
4691
  disabled: _ctx.isDisabled || null,
4673
4692
  readonly: _ctx.isReadonly || null,
4674
- class: normalizeClass({ mt1: !$props.inline && i })
4675
- }, {
4693
+ class: { mt1: !$props.inline && i }
4694
+ }), {
4676
4695
  default: withCtx(() => [
4677
- _ctx.$slots[`item.${i + 1}`] ? renderSlot(_ctx.$slots, `item.${i + 1}`, {
4696
+ _ctx.$slots[`item.${i + 1}`] || _ctx.$slots.item ? renderSlot(_ctx.$slots, _ctx.$slots[`item.${i + 1}`] ? `item.${i + 1}` : "item", {
4678
4697
  key: 0,
4679
4698
  item: $options.getOriginalItem(item),
4680
4699
  index: i + 1,
4681
4700
  checked: item.value === $props.modelValue,
4682
4701
  innerHTML: item.label
4683
- }) : _ctx.$slots.item ? renderSlot(_ctx.$slots, "item", {
4684
- key: 1,
4685
- item: $options.getOriginalItem(item),
4686
- index: i + 1,
4687
- checked: item.value === $props.modelValue,
4688
- innerHTML: item.label
4689
4702
  }) : item.label ? (openBlock(), createElementBlock("div", {
4690
- key: 2,
4703
+ key: 1,
4691
4704
  innerHTML: item.label
4692
- }, null, 8, _hoisted_1$d)) : createCommentVNode("", true)
4705
+ }, null, 8, _hoisted_1$c)) : createCommentVNode("", true)
4693
4706
  ]),
4694
4707
  _: 2
4695
- }, 1032, ["model-value", "onUpdate:modelValue", "name", "label", "label-on-left", "color", "disabled", "readonly", "class"]);
4708
+ }, 1040, ["model-value", "onUpdate:modelValue", "name", "disabled", "readonly", "class"]);
4696
4709
  }), 128))
4697
4710
  ]),
4698
4711
  _: 3
@@ -4710,7 +4723,8 @@ const _sfc_main$m = {
4710
4723
  itemValueKey: { type: String, default: "value" },
4711
4724
  itemColorKey: { type: String, default: "color" },
4712
4725
  inline: { type: Boolean },
4713
- color: { type: String, default: "primary" }
4726
+ color: { type: String, default: "primary" },
4727
+ labelColor: { type: String, default: "primary" }
4714
4728
  },
4715
4729
  emits: ["input", "update:modelValue", "focus"],
4716
4730
  provide() {
@@ -4747,7 +4761,7 @@ const _sfc_main$m = {
4747
4761
  }
4748
4762
  };
4749
4763
  var wRadios = /* @__PURE__ */ _export_sfc(_sfc_main$m, [["render", render$m]]);
4750
- const _hoisted_1$c = ["id", "name", "value"];
4764
+ const _hoisted_1$b = ["id", "name", "value"];
4751
4765
  const _hoisted_2$7 = ["disabled", "onMouseenter", "onClick", "tabindex"];
4752
4766
  function render$l(_ctx, _cache, $props, $setup, $data, $options) {
4753
4767
  return openBlock(), createBlock(resolveDynamicComponent(_ctx.formRegister ? "w-form-element" : "div"), mergeProps({ ref: "formEl" }, _ctx.formRegister && { validators: _ctx.validators, inputValue: $data.rating, disabled: _ctx.isDisabled, readonly: _ctx.isReadonly }, {
@@ -4765,7 +4779,7 @@ function render$l(_ctx, _cache, $props, $setup, $data, $options) {
4765
4779
  name: _ctx.inputName,
4766
4780
  type: "hidden",
4767
4781
  value: $data.rating
4768
- }, null, 8, _hoisted_1$c),
4782
+ }, null, 8, _hoisted_1$b),
4769
4783
  (openBlock(true), createElementBlock(Fragment, null, renderList($props.max, (i) => {
4770
4784
  return openBlock(), createElementBlock(Fragment, { key: i }, [
4771
4785
  _ctx.$slots.item ? renderSlot(_ctx.$slots, "item", {
@@ -4904,56 +4918,48 @@ const _sfc_main$l = {
4904
4918
  }
4905
4919
  };
4906
4920
  var wRating = /* @__PURE__ */ _export_sfc(_sfc_main$l, [["render", render$l]]);
4907
- const _hoisted_1$b = ["for"];
4908
- const _hoisted_2$6 = ["for", "innerHTML"];
4909
- const _hoisted_3$6 = ["aria-expanded", "aria-owns", "aria-activedescendant"];
4910
- const _hoisted_4$5 = {
4921
+ const _hoisted_1$a = ["for"];
4922
+ const _hoisted_2$6 = ["aria-expanded", "aria-owns", "aria-activedescendant"];
4923
+ const _hoisted_3$6 = {
4911
4924
  key: 1,
4912
4925
  class: "w-select__selection-slot"
4913
4926
  };
4914
- const _hoisted_5$5 = ["value", "id", "placeholder", "disabled", "required", "tabindex"];
4915
- const _hoisted_6$3 = ["value", "name"];
4916
- const _hoisted_7$3 = ["for"];
4917
- const _hoisted_8$2 = ["for", "innerHTML"];
4918
- const _hoisted_9$2 = ["for"];
4919
- const _hoisted_10$2 = ["for", "innerHTML"];
4927
+ const _hoisted_4$5 = ["value", "id", "placeholder", "disabled", "required", "tabindex"];
4928
+ const _hoisted_5$4 = ["value", "name"];
4929
+ const _hoisted_6$2 = ["for"];
4930
+ const _hoisted_7$2 = ["for"];
4920
4931
  function render$k(_ctx, _cache, $props, $setup, $data, $options) {
4921
4932
  const _component_w_icon = resolveComponent("w-icon");
4922
4933
  const _component_w_list = resolveComponent("w-list");
4923
4934
  const _component_w_menu = resolveComponent("w-menu");
4924
4935
  return openBlock(), createBlock(resolveDynamicComponent(_ctx.formRegister ? "w-form-element" : "div"), mergeProps({ ref: "formEl" }, _ctx.formRegister && { validators: _ctx.validators, inputValue: $options.selectionString, disabled: _ctx.isDisabled, readonly: _ctx.isReadonly }, {
4925
4936
  valid: _ctx.valid,
4926
- "onUpdate:valid": _cache[11] || (_cache[11] = ($event) => _ctx.valid = $event),
4937
+ "onUpdate:valid": _cache[9] || (_cache[9] = ($event) => _ctx.valid = $event),
4927
4938
  onReset: $options.onReset,
4928
4939
  wrap: $options.hasLabel && $props.labelPosition !== "inside",
4929
4940
  class: $options.classes
4930
4941
  }), {
4931
4942
  default: withCtx(() => [
4932
4943
  $props.labelPosition === "left" ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
4933
- _ctx.$slots.default ? (openBlock(), createElementBlock("label", {
4944
+ _ctx.$slots.default || $props.label ? (openBlock(), createElementBlock("label", {
4934
4945
  key: 0,
4935
- class: "w-select__label w-select__label--left w-form-el-shakable",
4946
+ class: normalizeClass(["w-select__label w-select__label--left w-form-el-shakable", _ctx.labelClasses]),
4936
4947
  for: `w-select--${_ctx._.uid}`
4937
4948
  }, [
4938
- renderSlot(_ctx.$slots, "default")
4939
- ], 8, _hoisted_1$b)) : $props.label ? (openBlock(), createElementBlock("label", {
4940
- key: 1,
4941
- class: "w-select__label w-select__label--left w-form-el-shakable",
4942
- for: `w-select--${_ctx._.uid}`,
4943
- innerHTML: $props.label
4944
- }, null, 8, _hoisted_2$6)) : createCommentVNode("", true)
4949
+ renderSlot(_ctx.$slots, "default", {}, () => [
4950
+ createTextVNode(toDisplayString($props.label), 1)
4951
+ ])
4952
+ ], 10, _hoisted_1$a)) : createCommentVNode("", true)
4945
4953
  ], 64)) : createCommentVNode("", true),
4946
4954
  createVNode(_component_w_menu, mergeProps({
4947
4955
  modelValue: _ctx.showMenu,
4948
4956
  "onUpdate:modelValue": _cache[8] || (_cache[8] = ($event) => _ctx.showMenu = $event),
4949
4957
  "menu-class": `w-select__menu ${$props.menuClass || ""}`,
4950
4958
  transition: "slide-fade-down",
4951
- "append-to": ($props.menuProps || {}).appendTo !== void 0 ? ($props.menuProps || {}).appendTo : ".w-app",
4959
+ "append-to": ($props.menuProps || {}).appendTo !== void 0 ? ($props.menuProps || {}).appendTo : void 0,
4952
4960
  "align-left": "",
4953
4961
  custom: "",
4954
- "min-width": "activator",
4955
- onMousedown: _cache[9] || (_cache[9] = ($event) => (_ctx.isFocused = true, _ctx.selectingItem = true)),
4956
- onMouseup: _cache[10] || (_cache[10] = ($event) => (_ctx.isFocused = true, _ctx.selectingItem = false))
4962
+ "min-width": "activator"
4957
4963
  }, $props.menuProps || {}), {
4958
4964
  activator: withCtx(({ on }) => [
4959
4965
  createElementVNode("div", {
@@ -4976,7 +4982,7 @@ function render$k(_ctx, _cache, $props, $setup, $data, $options) {
4976
4982
  ]),
4977
4983
  _: 1
4978
4984
  })) : createCommentVNode("", true),
4979
- _ctx.$slots.selection ? (openBlock(), createElementBlock("div", _hoisted_4$5, [
4985
+ _ctx.$slots.selection ? (openBlock(), createElementBlock("div", _hoisted_3$6, [
4980
4986
  renderSlot(_ctx.$slots, "selection", {
4981
4987
  item: $props.multiple ? _ctx.inputValue : _ctx.inputValue[0]
4982
4988
  })
@@ -4997,28 +5003,25 @@ function render$k(_ctx, _cache, $props, $setup, $data, $options) {
4997
5003
  required: _ctx.required || null,
4998
5004
  tabindex: _ctx.tabindex || null,
4999
5005
  autocomplete: "off"
5000
- }, null, 40, _hoisted_5$5),
5006
+ }, null, 40, _hoisted_4$5),
5001
5007
  (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.inputValue.length ? _ctx.inputValue : [{}], (val, i) => {
5002
5008
  return openBlock(), createElementBlock("input", {
5003
5009
  key: i,
5004
5010
  type: "hidden",
5005
5011
  value: val.value || "",
5006
5012
  name: _ctx.inputName + ($props.multiple ? "[]" : "")
5007
- }, null, 8, _hoisted_6$3);
5013
+ }, null, 8, _hoisted_5$4);
5008
5014
  }), 128)),
5009
5015
  $props.labelPosition === "inside" && $options.showLabelInside ? (openBlock(), createElementBlock(Fragment, { key: 2 }, [
5010
- _ctx.$slots.default ? (openBlock(), createElementBlock("label", {
5016
+ _ctx.$slots.default || $props.label ? (openBlock(), createElementBlock("label", {
5011
5017
  key: 0,
5012
- class: normalizeClass(["w-select__label w-select__label--inside w-form-el-shakable", _ctx.isFocused && { [_ctx.valid === false ? "error" : $props.color]: $props.color || _ctx.valid === false }]),
5018
+ class: normalizeClass(["w-select__label w-select__label--inside w-form-el-shakable", _ctx.labelClasses]),
5013
5019
  for: `w-select--${_ctx._.uid}`
5014
5020
  }, [
5015
- renderSlot(_ctx.$slots, "default")
5016
- ], 10, _hoisted_7$3)) : $props.label ? (openBlock(), createElementBlock("label", {
5017
- key: 1,
5018
- class: normalizeClass(["w-select__label w-select__label--inside w-form-el-shakable", _ctx.isFocused && { [_ctx.valid === false ? "error" : $props.color]: $props.color || _ctx.valid === false }]),
5019
- for: `w-select--${_ctx._.uid}`,
5020
- innerHTML: $props.label
5021
- }, null, 10, _hoisted_8$2)) : createCommentVNode("", true)
5021
+ renderSlot(_ctx.$slots, "default", {}, () => [
5022
+ createTextVNode(toDisplayString($props.label), 1)
5023
+ ])
5024
+ ], 10, _hoisted_6$2)) : createCommentVNode("", true)
5022
5025
  ], 64)) : createCommentVNode("", true),
5023
5026
  $props.innerIconRight ? (openBlock(), createBlock(_component_w_icon, {
5024
5027
  key: 3,
@@ -5031,7 +5034,7 @@ function render$k(_ctx, _cache, $props, $setup, $data, $options) {
5031
5034
  ]),
5032
5035
  _: 1
5033
5036
  })) : createCommentVNode("", true)
5034
- ], 10, _hoisted_3$6)
5037
+ ], 10, _hoisted_2$6)
5035
5038
  ]),
5036
5039
  default: withCtx(() => [
5037
5040
  createVNode(_component_w_list, {
@@ -5080,18 +5083,15 @@ function render$k(_ctx, _cache, $props, $setup, $data, $options) {
5080
5083
  _: 3
5081
5084
  }, 16, ["modelValue", "menu-class", "append-to"]),
5082
5085
  $props.labelPosition === "right" ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [
5083
- _ctx.$slots.default ? (openBlock(), createElementBlock("label", {
5086
+ _ctx.$slots.default || $props.label ? (openBlock(), createElementBlock("label", {
5084
5087
  key: 0,
5085
- class: "w-select__label w-select__label--right w-form-el-shakable",
5088
+ class: normalizeClass(["w-select__label w-select__label--right w-form-el-shakable", _ctx.labelClasses]),
5086
5089
  for: `w-select--${_ctx._.uid}`
5087
5090
  }, [
5088
- renderSlot(_ctx.$slots, "default")
5089
- ], 8, _hoisted_9$2)) : $props.label ? (openBlock(), createElementBlock("label", {
5090
- key: 1,
5091
- class: "w-select__label w-select__label--right w-form-el-shakable",
5092
- for: `w-select--${_ctx._.uid}`,
5093
- innerHTML: $props.label
5094
- }, null, 8, _hoisted_10$2)) : createCommentVNode("", true)
5091
+ renderSlot(_ctx.$slots, "default", {}, () => [
5092
+ createTextVNode(toDisplayString($props.label), 1)
5093
+ ])
5094
+ ], 10, _hoisted_7$2)) : createCommentVNode("", true)
5095
5095
  ], 64)) : createCommentVNode("", true)
5096
5096
  ]),
5097
5097
  _: 3
@@ -5117,8 +5117,9 @@ const _sfc_main$k = {
5117
5117
  itemClass: { type: String },
5118
5118
  menuClass: { type: String },
5119
5119
  color: { type: String, default: "primary" },
5120
- selectionColor: { type: String, default: "primary" },
5121
5120
  bgColor: { type: String },
5121
+ labelColor: { type: String, default: "primary" },
5122
+ selectionColor: { type: String, default: "primary" },
5122
5123
  outline: { type: Boolean },
5123
5124
  round: { type: Boolean },
5124
5125
  shadow: { type: Boolean },
@@ -5134,7 +5135,6 @@ const _sfc_main$k = {
5134
5135
  showMenu: false,
5135
5136
  menuMinWidth: 0,
5136
5137
  isFocused: false,
5137
- selectingItem: false,
5138
5138
  selectionWrapRef: void 0
5139
5139
  }),
5140
5140
  computed: {
@@ -5164,7 +5164,7 @@ const _sfc_main$k = {
5164
5164
  "w-select--disabled": this.isDisabled,
5165
5165
  "w-select--readonly": this.isReadonly,
5166
5166
  [`w-select--${this.hasValue ? "filled" : "empty"}`]: true,
5167
- "w-select--focused": (this.isFocused || this.selectingItem) && !this.isReadonly,
5167
+ "w-select--focused": (this.isFocused || this.showMenu) && !this.isReadonly,
5168
5168
  "w-select--dark": this.dark,
5169
5169
  "w-select--floating-label": this.hasLabel && this.labelPosition === "inside" && !this.staticLabel,
5170
5170
  "w-select--no-padding": !this.outline && !this.bgColor && !this.shadow && !this.round,
@@ -5277,13 +5277,13 @@ const _sfc_main$k = {
5277
5277
  }
5278
5278
  };
5279
5279
  var wSelect = /* @__PURE__ */ _export_sfc(_sfc_main$k, [["render", render$k]]);
5280
- const _hoisted_1$a = ["for"];
5280
+ const _hoisted_1$9 = ["for"];
5281
5281
  const _hoisted_2$5 = ["for", "innerHTML"];
5282
5282
  const _hoisted_3$5 = { class: "w-slider__track-wrap" };
5283
5283
  const _hoisted_4$4 = ["aria-valuemin", "aria-valuemax", "aria-valuenow", "aria-readonly"];
5284
- const _hoisted_5$4 = ["id", "name", "model-value", "disabled", "readonly", "aria-readonly"];
5285
- const _hoisted_6$2 = ["for"];
5286
- const _hoisted_7$2 = { key: 0 };
5284
+ const _hoisted_5$3 = ["id", "name", "model-value", "disabled", "readonly", "aria-readonly", "tabindex"];
5285
+ const _hoisted_6$1 = ["for"];
5286
+ const _hoisted_7$1 = { key: 0 };
5287
5287
  const _hoisted_8$1 = {
5288
5288
  key: 0,
5289
5289
  class: "w-slider__step-labels"
@@ -5299,22 +5299,22 @@ function render$j(_ctx, _cache, $props, $setup, $data, $options) {
5299
5299
  _ctx.rangeValuePercent = 0;
5300
5300
  $options.updateRangeValueScaled();
5301
5301
  }),
5302
- wrap: "",
5302
+ wrap: _ctx.formRegister || null,
5303
5303
  class: $options.wrapperClasses
5304
5304
  }), {
5305
5305
  default: withCtx(() => [
5306
5306
  _ctx.$slots["label-left"] ? (openBlock(), createElementBlock("label", {
5307
5307
  key: 0,
5308
- class: "w-slider__label w-slider__label--left w-form-el-shakable",
5308
+ class: normalizeClass(["w-slider__label w-slider__label--left w-form-el-shakable", _ctx.labelClasses]),
5309
5309
  for: `button--${_ctx._.uid}`
5310
5310
  }, [
5311
5311
  renderSlot(_ctx.$slots, "label-left")
5312
- ], 8, _hoisted_1$a)) : $props.labelLeft ? (openBlock(), createElementBlock("label", {
5312
+ ], 10, _hoisted_1$9)) : $props.labelLeft ? (openBlock(), createElementBlock("label", {
5313
5313
  key: 1,
5314
- class: "w-slider__label w-slider__label--left w-form-el-shakable",
5314
+ class: normalizeClass(["w-slider__label w-slider__label--left w-form-el-shakable", _ctx.labelClasses]),
5315
5315
  for: `button--${_ctx._.uid}`,
5316
5316
  innerHTML: $props.labelLeft
5317
- }, null, 8, _hoisted_2$5)) : createCommentVNode("", true),
5317
+ }, null, 10, _hoisted_2$5)) : createCommentVNode("", true),
5318
5318
  createElementVNode("div", _hoisted_3$5, [
5319
5319
  createElementVNode("div", {
5320
5320
  class: normalizeClass(["w-slider__track", $options.trackClasses]),
@@ -5346,6 +5346,7 @@ function render$j(_ctx, _cache, $props, $setup, $data, $options) {
5346
5346
  disabled: _ctx.isDisabled || null,
5347
5347
  readonly: _ctx.isReadonly || null,
5348
5348
  "aria-readonly": _ctx.isReadonly ? "true" : "false",
5349
+ tabindex: _ctx.isDisabled || _ctx.isReadonly ? -1 : null,
5349
5350
  onKeydown: [
5350
5351
  _cache[0] || (_cache[0] = withKeys(($event) => $options.onKeyDown($event, -1), ["left"])),
5351
5352
  _cache[1] || (_cache[1] = withKeys(($event) => $options.onKeyDown($event, 1), ["right"]))
@@ -5353,13 +5354,13 @@ function render$j(_ctx, _cache, $props, $setup, $data, $options) {
5353
5354
  onFocus: _cache[2] || (_cache[2] = ($event) => _ctx.$emit("focus", $event)),
5354
5355
  onClick: _cache[3] || (_cache[3] = withModifiers(() => {
5355
5356
  }, ["prevent"]))
5356
- }, null, 42, _hoisted_5$4),
5357
+ }, null, 42, _hoisted_5$3),
5357
5358
  $props.thumbLabel ? (openBlock(), createElementBlock("label", {
5358
5359
  key: 0,
5359
5360
  class: normalizeClass(["w-slider__thumb-label", $options.thumbClasses]),
5360
5361
  for: `button--${_ctx._.uid}`
5361
5362
  }, [
5362
- $props.thumbLabel === "droplet" ? (openBlock(), createElementBlock("div", _hoisted_7$2, [
5363
+ $props.thumbLabel === "droplet" ? (openBlock(), createElementBlock("div", _hoisted_7$1, [
5363
5364
  renderSlot(_ctx.$slots, "label", { value: _ctx.rangeValueScaled }, () => [
5364
5365
  createTextVNode(toDisplayString(~~_ctx.rangeValueScaled), 1)
5365
5366
  ])
@@ -5369,7 +5370,7 @@ function render$j(_ctx, _cache, $props, $setup, $data, $options) {
5369
5370
  }, () => [
5370
5371
  createTextVNode(toDisplayString(~~_ctx.rangeValueScaled), 1)
5371
5372
  ])
5372
- ], 10, _hoisted_6$2)) : createCommentVNode("", true)
5373
+ ], 10, _hoisted_6$1)) : createCommentVNode("", true)
5373
5374
  ], 4)
5374
5375
  ], 42, _hoisted_4$4),
5375
5376
  $props.stepLabels && $props.step ? (openBlock(), createElementBlock("div", _hoisted_8$1, [
@@ -5395,19 +5396,19 @@ function render$j(_ctx, _cache, $props, $setup, $data, $options) {
5395
5396
  ]),
5396
5397
  _ctx.$slots["label-right"] ? (openBlock(), createElementBlock("label", {
5397
5398
  key: 2,
5398
- class: "w-slider__label w-slider__label--right w-form-el-shakable",
5399
+ class: normalizeClass(["w-slider__label w-slider__label--right w-form-el-shakable", _ctx.labelClasses]),
5399
5400
  for: `button--${_ctx._.uid}`
5400
5401
  }, [
5401
5402
  renderSlot(_ctx.$slots, "label-right")
5402
- ], 8, _hoisted_10$1)) : $props.labelRight ? (openBlock(), createElementBlock("label", {
5403
+ ], 10, _hoisted_10$1)) : $props.labelRight ? (openBlock(), createElementBlock("label", {
5403
5404
  key: 3,
5404
- class: "w-slider__label w-slider__label--right w-form-el-shakable",
5405
+ class: normalizeClass(["w-slider__label w-slider__label--right w-form-el-shakable", _ctx.labelClasses]),
5405
5406
  for: `button--${_ctx._.uid}`,
5406
5407
  innerHTML: $props.labelRight
5407
- }, null, 8, _hoisted_11$1)) : createCommentVNode("", true)
5408
+ }, null, 10, _hoisted_11$1)) : createCommentVNode("", true)
5408
5409
  ]),
5409
5410
  _: 3
5410
- }, 16, ["valid", "class"]);
5411
+ }, 16, ["valid", "wrap", "class"]);
5411
5412
  }
5412
5413
  var wSlider_vue_vue_type_style_index_0_lang = "";
5413
5414
  const _sfc_main$j = {
@@ -5417,6 +5418,7 @@ const _sfc_main$j = {
5417
5418
  modelValue: { type: Number, default: 0 },
5418
5419
  color: { type: String, default: "primary" },
5419
5420
  bgColor: { type: String },
5421
+ labelColor: { type: String, default: "primary" },
5420
5422
  stepLabels: { type: [Boolean, Array] },
5421
5423
  thumbLabel: { type: [Boolean, String] },
5422
5424
  thumbLabelClass: { type: String },
@@ -5564,14 +5566,14 @@ const _sfc_main$j = {
5564
5566
  }
5565
5567
  };
5566
5568
  var wSlider = /* @__PURE__ */ _export_sfc(_sfc_main$j, [["render", render$j]]);
5567
- const _hoisted_1$9 = { key: 0 };
5569
+ const _hoisted_1$8 = { key: 0 };
5568
5570
  function render$i(_ctx, _cache, $props, $setup, $data, $options) {
5569
5571
  return $props.modelValue || $props.modelValue === void 0 ? (openBlock(), createElementBlock("div", {
5570
5572
  key: 0,
5571
5573
  class: normalizeClass(["w-spinner", $options.classes]),
5572
5574
  style: normalizeStyle($options.styles)
5573
5575
  }, [
5574
- $options.isThreeDots ? (openBlock(), createElementBlock("span", _hoisted_1$9)) : createCommentVNode("", true)
5576
+ $options.isThreeDots ? (openBlock(), createElementBlock("span", _hoisted_1$8)) : createCommentVNode("", true)
5575
5577
  ], 6)) : createCommentVNode("", true);
5576
5578
  }
5577
5579
  var wSpinner_vue_vue_type_style_index_0_lang = "";
@@ -5615,9 +5617,9 @@ const _sfc_main$i = {
5615
5617
  }
5616
5618
  };
5617
5619
  var wSpinner = /* @__PURE__ */ _export_sfc(_sfc_main$i, [["render", render$i]]);
5618
- const _hoisted_1$8 = { class: "w-steps" };
5620
+ const _hoisted_1$7 = { class: "w-steps" };
5619
5621
  function render$h(_ctx, _cache, $props, $setup, $data, $options) {
5620
- return openBlock(), createElementBlock("div", _hoisted_1$8);
5622
+ return openBlock(), createElementBlock("div", _hoisted_1$7);
5621
5623
  }
5622
5624
  var wSteps_vue_vue_type_style_index_0_lang = "";
5623
5625
  const _sfc_main$h = {
@@ -5627,11 +5629,17 @@ const _sfc_main$h = {
5627
5629
  data: () => ({})
5628
5630
  };
5629
5631
  var wSteps = /* @__PURE__ */ _export_sfc(_sfc_main$h, [["render", render$h]]);
5630
- const _hoisted_1$7 = ["id", "name", "checked", "disabled", "readonly", "aria-readonly", "required", "tabindex", "aria-checked"];
5632
+ const _hoisted_1$6 = ["id", "name", "checked", "disabled", "readonly", "aria-readonly", "required", "tabindex", "aria-checked"];
5631
5633
  const _hoisted_2$4 = ["for"];
5632
- const _hoisted_3$4 = ["for", "innerHTML"];
5633
- const _hoisted_4$3 = ["for"];
5634
- const _hoisted_5$3 = ["for", "innerHTML"];
5634
+ const _hoisted_3$4 = {
5635
+ key: 0,
5636
+ class: "w-switch__track"
5637
+ };
5638
+ const _hoisted_4$3 = {
5639
+ key: 1,
5640
+ class: "w-switch__thumb"
5641
+ };
5642
+ const _hoisted_5$2 = ["for"];
5635
5643
  function render$g(_ctx, _cache, $props, $setup, $data, $options) {
5636
5644
  return openBlock(), createBlock(resolveDynamicComponent(_ctx.formRegister ? "w-form-element" : "div"), mergeProps({ ref: "formEl" }, _ctx.formRegister && { validators: _ctx.validators, inputValue: $data.isOn, disabled: _ctx.isDisabled, readonly: _ctx.isReadonly }, {
5637
5645
  valid: _ctx.valid,
@@ -5658,20 +5666,17 @@ function render$g(_ctx, _cache, $props, $setup, $data, $options) {
5658
5666
  onFocus: _cache[1] || (_cache[1] = ($event) => _ctx.$emit("focus", $event)),
5659
5667
  "aria-checked": $data.isOn || "false",
5660
5668
  role: "switch"
5661
- }, null, 40, _hoisted_1$7),
5669
+ }, null, 40, _hoisted_1$6),
5662
5670
  $options.hasLabel && $props.labelOnLeft ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
5663
- _ctx.$slots.default ? (openBlock(), createElementBlock("label", {
5671
+ _ctx.$slots.default || $props.label ? (openBlock(), createElementBlock("label", {
5664
5672
  key: 0,
5665
- class: "w-switch__label w-form-el-shakable",
5673
+ class: normalizeClass(["w-switch__label w-switch__label--left w-form-el-shakable", _ctx.labelClasses]),
5666
5674
  for: `w-switch--${_ctx._.uid}`
5667
5675
  }, [
5668
- renderSlot(_ctx.$slots, "default")
5669
- ], 8, _hoisted_2$4)) : $props.label ? (openBlock(), createElementBlock("label", {
5670
- key: 1,
5671
- class: "w-switch__label w-form-el-shakable",
5672
- for: `w-switch--${_ctx._.uid}`,
5673
- innerHTML: $props.label
5674
- }, null, 8, _hoisted_3$4)) : createCommentVNode("", true)
5676
+ renderSlot(_ctx.$slots, "default", {}, () => [
5677
+ createTextVNode(toDisplayString($props.label), 1)
5678
+ ])
5679
+ ], 10, _hoisted_2$4)) : createCommentVNode("", true)
5675
5680
  ], 64)) : createCommentVNode("", true),
5676
5681
  createElementVNode("div", mergeProps({
5677
5682
  class: "w-switch__input",
@@ -5679,20 +5684,24 @@ function render$g(_ctx, _cache, $props, $setup, $data, $options) {
5679
5684
  _ctx.$refs.input.focus();
5680
5685
  _ctx.$refs.input.click();
5681
5686
  })
5682
- }, toHandlers(_ctx.$attrs), { class: $options.inputClasses }), null, 16),
5687
+ }, toHandlers(_ctx.$attrs), { class: $options.inputClasses }), [
5688
+ _ctx.$slots.track ? (openBlock(), createElementBlock("div", _hoisted_3$4, [
5689
+ renderSlot(_ctx.$slots, "track")
5690
+ ])) : createCommentVNode("", true),
5691
+ _ctx.$slots.thumb ? (openBlock(), createElementBlock("div", _hoisted_4$3, [
5692
+ renderSlot(_ctx.$slots, "thumb")
5693
+ ])) : createCommentVNode("", true)
5694
+ ], 16),
5683
5695
  $options.hasLabel && !$props.labelOnLeft ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [
5684
- _ctx.$slots.default ? (openBlock(), createElementBlock("label", {
5696
+ _ctx.$slots.default || $props.label ? (openBlock(), createElementBlock("label", {
5685
5697
  key: 0,
5686
- class: "w-switch__label w-form-el-shakable",
5698
+ class: normalizeClass(["w-switch__label w-switch__label--right w-form-el-shakable", _ctx.labelClasses]),
5687
5699
  for: `w-switch--${_ctx._.uid}`
5688
5700
  }, [
5689
- renderSlot(_ctx.$slots, "default")
5690
- ], 8, _hoisted_4$3)) : $props.label ? (openBlock(), createElementBlock("label", {
5691
- key: 1,
5692
- class: "w-switch__label w-form-el-shakable",
5693
- for: `w-switch--${_ctx._.uid}`,
5694
- innerHTML: $props.label
5695
- }, null, 8, _hoisted_5$3)) : createCommentVNode("", true)
5701
+ renderSlot(_ctx.$slots, "default", {}, () => [
5702
+ createTextVNode(toDisplayString($props.label), 1)
5703
+ ])
5704
+ ], 10, _hoisted_5$2)) : createCommentVNode("", true)
5696
5705
  ], 64)) : createCommentVNode("", true)
5697
5706
  ]),
5698
5707
  _: 3
@@ -5707,6 +5716,7 @@ const _sfc_main$g = {
5707
5716
  label: { type: String, default: "" },
5708
5717
  labelOnLeft: { type: Boolean },
5709
5718
  color: { type: String, default: "primary" },
5719
+ labelColor: { type: String, default: "primary" },
5710
5720
  thin: { type: Boolean },
5711
5721
  noRipple: { type: Boolean }
5712
5722
  },
@@ -5732,6 +5742,8 @@ const _sfc_main$g = {
5732
5742
  "w-switch--disabled": this.isDisabled,
5733
5743
  "w-switch--readonly": this.isReadonly,
5734
5744
  "w-switch--ripple": this.ripple.start,
5745
+ "w-switch--custom-thumb": this.$slots.thumb,
5746
+ "w-switch--custom-track": this.$slots.track,
5735
5747
  "w-switch--rippled": this.ripple.end
5736
5748
  };
5737
5749
  },
@@ -5770,9 +5782,9 @@ const _sfc_main$g = {
5770
5782
  }
5771
5783
  };
5772
5784
  var wSwitch = /* @__PURE__ */ _export_sfc(_sfc_main$g, [["render", render$g]]);
5773
- const _hoisted_1$6 = { class: "w-tabs__content" };
5785
+ const _hoisted_1$5 = { class: "w-tabs__content" };
5774
5786
  function render$f(_ctx, _cache, $props, $setup, $data, $options) {
5775
- return openBlock(), createElementBlock("div", _hoisted_1$6, [
5787
+ return openBlock(), createElementBlock("div", _hoisted_1$5, [
5776
5788
  renderSlot(_ctx.$slots, "default", { item: $props.item })
5777
5789
  ]);
5778
5790
  }
@@ -5780,7 +5792,7 @@ const _sfc_main$f = {
5780
5792
  props: { item: Object }
5781
5793
  };
5782
5794
  var TabContent = /* @__PURE__ */ _export_sfc(_sfc_main$f, [["render", render$f]]);
5783
- const _hoisted_1$5 = ["onClick", "onFocus", "tabindex", "onKeypress", "aria-selected"];
5795
+ const _hoisted_1$4 = ["onClick", "onFocus", "tabindex", "onKeypress", "aria-selected"];
5784
5796
  const _hoisted_2$3 = ["innerHTML"];
5785
5797
  const _hoisted_3$3 = {
5786
5798
  key: 0,
@@ -5790,7 +5802,7 @@ const _hoisted_4$2 = {
5790
5802
  key: 0,
5791
5803
  class: "w-tabs__content-wrap"
5792
5804
  };
5793
- const _hoisted_5$2 = ["innerHTML"];
5805
+ const _hoisted_5$1 = ["innerHTML"];
5794
5806
  function render$e(_ctx, _cache, $props, $setup, $data, $options) {
5795
5807
  const _component_tab_content = resolveComponent("tab-content");
5796
5808
  return openBlock(), createElementBlock("div", {
@@ -5826,7 +5838,7 @@ function render$e(_ctx, _cache, $props, $setup, $data, $options) {
5826
5838
  innerHTML: item[$props.itemTitleKey]
5827
5839
  }, null, 8, _hoisted_2$3)
5828
5840
  ])
5829
- ], 42, _hoisted_1$5);
5841
+ ], 42, _hoisted_1$4);
5830
5842
  }), 128)),
5831
5843
  _ctx.$slots["tabs-bar-extra"] ? (openBlock(), createElementBlock("div", _hoisted_3$3, [
5832
5844
  renderSlot(_ctx.$slots, "tabs-bar-extra")
@@ -5864,7 +5876,7 @@ function render$e(_ctx, _cache, $props, $setup, $data, $options) {
5864
5876
  item[$props.itemContentKey] ? (openBlock(), createElementBlock("div", {
5865
5877
  key: 0,
5866
5878
  innerHTML: item[$props.itemContentKey]
5867
- }, null, 8, _hoisted_5$2)) : createCommentVNode("", true)
5879
+ }, null, 8, _hoisted_5$1)) : createCommentVNode("", true)
5868
5880
  ])
5869
5881
  ]),
5870
5882
  _: 3
@@ -6038,13 +6050,13 @@ const _sfc_main$e = {
6038
6050
  }
6039
6051
  };
6040
6052
  var index = /* @__PURE__ */ _export_sfc(_sfc_main$e, [["render", render$e]]);
6041
- const _hoisted_1$4 = { ref: "colgroup" };
6053
+ const _hoisted_1$3 = { ref: "colgroup" };
6042
6054
  const _hoisted_2$2 = ["width"];
6043
6055
  const _hoisted_3$2 = { key: 0 };
6044
6056
  const _hoisted_4$1 = ["onClick"];
6045
- const _hoisted_5$1 = /* @__PURE__ */ createTextVNode("wi-arrow-down");
6046
- const _hoisted_6$1 = ["innerHTML"];
6047
- const _hoisted_7$1 = /* @__PURE__ */ createTextVNode("wi-arrow-down");
6057
+ const _hoisted_5 = /* @__PURE__ */ createTextVNode("wi-arrow-down");
6058
+ const _hoisted_6 = ["innerHTML"];
6059
+ const _hoisted_7 = /* @__PURE__ */ createTextVNode("wi-arrow-down");
6048
6060
  const _hoisted_8 = {
6049
6061
  key: 0,
6050
6062
  class: "w-table__progress-bar"
@@ -6081,7 +6093,7 @@ function render$d(_ctx, _cache, $props, $setup, $data, $options) {
6081
6093
  onMouseover: _cache[2] || (_cache[2] = (...args) => $options.onMouseOver && $options.onMouseOver(...args)),
6082
6094
  onMouseout: _cache[3] || (_cache[3] = (...args) => $options.onMouseOut && $options.onMouseOut(...args))
6083
6095
  }, [
6084
- createElementVNode("colgroup", _hoisted_1$4, [
6096
+ createElementVNode("colgroup", _hoisted_1$3, [
6085
6097
  (openBlock(true), createElementBlock(Fragment, null, renderList($props.headers, (header, i) => {
6086
6098
  return openBlock(), createElementBlock("col", {
6087
6099
  class: "w-table__col",
@@ -6103,7 +6115,7 @@ function render$d(_ctx, _cache, $props, $setup, $data, $options) {
6103
6115
  class: normalizeClass(["w-table__header-sort", $options.headerSortClasses(header)])
6104
6116
  }, {
6105
6117
  default: withCtx(() => [
6106
- _hoisted_5$1
6118
+ _hoisted_5
6107
6119
  ]),
6108
6120
  _: 2
6109
6121
  }, 1032, ["class"])) : createCommentVNode("", true),
@@ -6118,14 +6130,14 @@ function render$d(_ctx, _cache, $props, $setup, $data, $options) {
6118
6130
  ]) : (openBlock(), createElementBlock("span", {
6119
6131
  key: 1,
6120
6132
  innerHTML: header.label || ""
6121
- }, null, 8, _hoisted_6$1))
6133
+ }, null, 8, _hoisted_6))
6122
6134
  ], 64)) : createCommentVNode("", true),
6123
6135
  header.sortable !== false && header.align !== "right" ? (openBlock(), createBlock(_component_w_icon, {
6124
6136
  key: 2,
6125
6137
  class: normalizeClass(["w-table__header-sort", $options.headerSortClasses(header)])
6126
6138
  }, {
6127
6139
  default: withCtx(() => [
6128
- _hoisted_7$1
6140
+ _hoisted_7
6129
6141
  ]),
6130
6142
  _: 2
6131
6143
  }, 1032, ["class"])) : createCommentVNode("", true),
@@ -6519,7 +6531,7 @@ const _sfc_main$d = {
6519
6531
  }
6520
6532
  };
6521
6533
  var wTable = /* @__PURE__ */ _export_sfc(_sfc_main$d, [["render", render$d]]);
6522
- const _hoisted_1$3 = ["role", "aria-pressed", "tabindex"];
6534
+ const _hoisted_1$2 = ["role", "aria-pressed", "tabindex"];
6523
6535
  function render$c(_ctx, _cache, $props, $setup, $data, $options) {
6524
6536
  return openBlock(), createElementBlock("span", mergeProps({ class: "w-tag" }, toHandlers(_ctx.$attrs), {
6525
6537
  onClick: _cache[1] || (_cache[1] = ($event) => {
@@ -6547,7 +6559,7 @@ function render$c(_ctx, _cache, $props, $setup, $data, $options) {
6547
6559
  role: "icon",
6548
6560
  "aria-hidden": "true"
6549
6561
  })) : createCommentVNode("", true)
6550
- ], 16, _hoisted_1$3);
6562
+ ], 16, _hoisted_1$2);
6551
6563
  }
6552
6564
  var wTag_vue_vue_type_style_index_0_lang = "";
6553
6565
  const _sfc_main$c = {
@@ -6599,13 +6611,10 @@ const _sfc_main$c = {
6599
6611
  }
6600
6612
  };
6601
6613
  var wTag = /* @__PURE__ */ _export_sfc(_sfc_main$c, [["render", render$c]]);
6602
- const _hoisted_1$2 = ["for"];
6603
- const _hoisted_2$1 = ["for", "innerHTML"];
6604
- const _hoisted_3$1 = ["id", "name", "placeholder", "rows", "cols", "readonly", "aria-readonly", "disabled", "required", "tabindex"];
6614
+ const _hoisted_1$1 = ["for"];
6615
+ const _hoisted_2$1 = ["id", "name", "placeholder", "rows", "cols", "readonly", "aria-readonly", "disabled", "required", "tabindex"];
6616
+ const _hoisted_3$1 = ["for"];
6605
6617
  const _hoisted_4 = ["for"];
6606
- const _hoisted_5 = ["for", "innerHTML"];
6607
- const _hoisted_6 = ["for"];
6608
- const _hoisted_7 = ["for", "innerHTML"];
6609
6618
  function render$b(_ctx, _cache, $props, $setup, $data, $options) {
6610
6619
  const _component_w_icon = resolveComponent("w-icon");
6611
6620
  return openBlock(), createBlock(resolveDynamicComponent(_ctx.formRegister ? "w-form-element" : "div"), mergeProps({ ref: "formEl" }, _ctx.formRegister && { validators: _ctx.validators, inputValue: $data.inputValue, disabled: _ctx.isDisabled, readonly: _ctx.isReadonly, isFocused: $data.isFocused }, {
@@ -6620,18 +6629,15 @@ function render$b(_ctx, _cache, $props, $setup, $data, $options) {
6620
6629
  }), {
6621
6630
  default: withCtx(() => [
6622
6631
  $props.labelPosition === "left" ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
6623
- _ctx.$slots.default ? (openBlock(), createElementBlock("label", {
6632
+ _ctx.$slots.default || $props.label ? (openBlock(), createElementBlock("label", {
6624
6633
  key: 0,
6625
- class: "w-textarea__label w-textarea__label--left w-form-el-shakable",
6634
+ class: normalizeClass(["w-textarea__label w-textarea__label--left w-form-el-shakable", _ctx.labelClasses]),
6626
6635
  for: `w-textarea--${_ctx._.uid}`
6627
6636
  }, [
6628
- renderSlot(_ctx.$slots, "default")
6629
- ], 8, _hoisted_1$2)) : $props.label ? (openBlock(), createElementBlock("label", {
6630
- key: 1,
6631
- class: "w-textarea__label w-textarea__label--left w-form-el-shakable",
6632
- for: `w-textarea--${_ctx._.uid}`,
6633
- innerHTML: $props.label
6634
- }, null, 8, _hoisted_2$1)) : createCommentVNode("", true)
6637
+ renderSlot(_ctx.$slots, "default", {}, () => [
6638
+ createTextVNode(toDisplayString($props.label), 1)
6639
+ ])
6640
+ ], 10, _hoisted_1$1)) : createCommentVNode("", true)
6635
6641
  ], 64)) : createCommentVNode("", true),
6636
6642
  createElementVNode("div", {
6637
6643
  class: normalizeClass(["w-textarea__textarea-wrap", $options.inputWrapClasses])
@@ -6666,22 +6672,19 @@ function render$b(_ctx, _cache, $props, $setup, $data, $options) {
6666
6672
  disabled: _ctx.isDisabled || null,
6667
6673
  required: _ctx.required || null,
6668
6674
  tabindex: _ctx.tabindex || null
6669
- }), null, 16, _hoisted_3$1), [
6675
+ }), null, 16, _hoisted_2$1), [
6670
6676
  [vModelText, $data.inputValue]
6671
6677
  ]),
6672
6678
  $props.labelPosition === "inside" && $options.showLabelInside ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [
6673
- _ctx.$slots.default ? (openBlock(), createElementBlock("label", {
6679
+ _ctx.$slots.default || $props.label ? (openBlock(), createElementBlock("label", {
6674
6680
  key: 0,
6675
- class: normalizeClass(["w-textarea__label w-textarea__label--inside w-form-el-shakable", $data.isFocused && { [_ctx.valid === false ? "error" : this.color]: this.color || _ctx.valid === false }]),
6681
+ class: normalizeClass(["w-textarea__label w-textarea__label--inside w-form-el-shakable", _ctx.labelClasses]),
6676
6682
  for: `w-textarea--${_ctx._.uid}`
6677
6683
  }, [
6678
- renderSlot(_ctx.$slots, "default")
6679
- ], 10, _hoisted_4)) : $props.label ? (openBlock(), createElementBlock("label", {
6680
- key: 1,
6681
- class: normalizeClass(["w-textarea__label w-textarea__label--inside w-form-el-shakable", $data.isFocused && { [_ctx.valid === false ? "error" : $props.color]: $props.color || _ctx.valid === false }]),
6682
- for: `w-textarea--${_ctx._.uid}`,
6683
- innerHTML: $props.label
6684
- }, null, 10, _hoisted_5)) : createCommentVNode("", true)
6684
+ renderSlot(_ctx.$slots, "default", {}, () => [
6685
+ createTextVNode(toDisplayString($props.label), 1)
6686
+ ])
6687
+ ], 10, _hoisted_3$1)) : createCommentVNode("", true)
6685
6688
  ], 64)) : createCommentVNode("", true),
6686
6689
  $props.innerIconRight ? (openBlock(), createBlock(_component_w_icon, {
6687
6690
  key: 2,
@@ -6697,18 +6700,15 @@ function render$b(_ctx, _cache, $props, $setup, $data, $options) {
6697
6700
  }, 8, ["for"])) : createCommentVNode("", true)
6698
6701
  ], 2),
6699
6702
  $props.labelPosition === "right" ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [
6700
- _ctx.$slots.default ? (openBlock(), createElementBlock("label", {
6703
+ _ctx.$slots.default || $props.label ? (openBlock(), createElementBlock("label", {
6701
6704
  key: 0,
6702
- class: "w-textarea__label w-textarea__label--right w-form-el-shakable",
6705
+ class: normalizeClass(["w-textarea__label w-textarea__label--right w-form-el-shakable", _ctx.labelClasses]),
6703
6706
  for: `w-textarea--${_ctx._.uid}`
6704
6707
  }, [
6705
- renderSlot(_ctx.$slots, "default")
6706
- ], 8, _hoisted_6)) : $props.label ? (openBlock(), createElementBlock("label", {
6707
- key: 1,
6708
- class: "w-textarea__label w-textarea__label--right w-form-el-shakable",
6709
- for: `w-textarea--${_ctx._.uid}`,
6710
- innerHTML: $props.label
6711
- }, null, 8, _hoisted_7)) : createCommentVNode("", true)
6708
+ renderSlot(_ctx.$slots, "default", {}, () => [
6709
+ createTextVNode(toDisplayString($props.label), 1)
6710
+ ])
6711
+ ], 10, _hoisted_4)) : createCommentVNode("", true)
6712
6712
  ], 64)) : createCommentVNode("", true)
6713
6713
  ]),
6714
6714
  _: 3
@@ -6728,6 +6728,7 @@ const _sfc_main$b = {
6728
6728
  placeholder: { type: String },
6729
6729
  color: { type: String, default: "primary" },
6730
6730
  bgColor: { type: String },
6731
+ labelColor: { type: String, default: "primary" },
6731
6732
  dark: { type: Boolean },
6732
6733
  outline: { type: Boolean },
6733
6734
  shadow: { type: Boolean },
@@ -6779,7 +6780,7 @@ const _sfc_main$b = {
6779
6780
  },
6780
6781
  inputWrapClasses() {
6781
6782
  return {
6782
- [this.valid === false ? "error" : this.color]: this.color || this.valid === false,
6783
+ [this.valid === false ? this.validationColor : this.color]: this.color || this.valid === false,
6783
6784
  [`${this.bgColor}--bg`]: this.bgColor,
6784
6785
  "w-textarea__textarea-wrap--tile": this.tile,
6785
6786
  "w-textarea__textarea-wrap--box": this.outline || this.bgColor || this.shadow,
@@ -6850,11 +6851,11 @@ const _sfc_main$b = {
6850
6851
  }
6851
6852
  };
6852
6853
  var wTextarea = /* @__PURE__ */ _export_sfc(_sfc_main$b, [["render", render$b]]);
6853
- const _hoisted_1$1 = { class: "w-timeline" };
6854
+ const _hoisted_1 = { class: "w-timeline" };
6854
6855
  const _hoisted_2 = ["innerHTML"];
6855
6856
  const _hoisted_3 = ["innerHTML"];
6856
6857
  function render$a(_ctx, _cache, $props, $setup, $data, $options) {
6857
- return openBlock(), createElementBlock("ul", _hoisted_1$1, [
6858
+ return openBlock(), createElementBlock("ul", _hoisted_1, [
6858
6859
  (openBlock(true), createElementBlock(Fragment, null, renderList($props.items, (item, i) => {
6859
6860
  return openBlock(), createElementBlock("li", {
6860
6861
  class: "w-timeline-item",
@@ -6961,9 +6962,8 @@ const _sfc_main$9 = {
6961
6962
  }
6962
6963
  };
6963
6964
  var wToolbar = /* @__PURE__ */ _export_sfc(_sfc_main$9, [["render", render$9]]);
6964
- const _hoisted_1 = { class: "w-tooltip-wrap" };
6965
6965
  function render$8(_ctx, _cache, $props, $setup, $data, $options) {
6966
- return openBlock(), createElementBlock("div", _hoisted_1, [
6966
+ return openBlock(), createElementBlock(Fragment, null, [
6967
6967
  renderSlot(_ctx.$slots, "activator", { on: $options.activatorEventHandlers }),
6968
6968
  createVNode(Transition, {
6969
6969
  name: $options.transitionName,
@@ -6981,7 +6981,7 @@ function render$8(_ctx, _cache, $props, $setup, $data, $options) {
6981
6981
  ]),
6982
6982
  _: 3
6983
6983
  }, 8, ["name"])
6984
- ]);
6984
+ ], 64);
6985
6985
  }
6986
6986
  var wTooltip_vue_vue_type_style_index_0_lang = "";
6987
6987
  const _sfc_main$8 = {
@@ -7118,10 +7118,9 @@ const _sfc_main$7 = {
7118
7118
  };
7119
7119
  var wTransitionBounce = /* @__PURE__ */ _export_sfc(_sfc_main$7, [["render", render$7]]);
7120
7120
  function render$6(_ctx, _cache, $props, $setup, $data, $options) {
7121
- return openBlock(), createBlock(Transition, mergeProps({
7121
+ return openBlock(), createBlock(Transition, {
7122
7122
  name: "expand",
7123
- mode: "out-in"
7124
- }, _ctx.$props, {
7123
+ mode: "out-in",
7125
7124
  css: false,
7126
7125
  onBeforeAppear: $options.beforeAppear,
7127
7126
  onAppear: $options.appear,
@@ -7132,19 +7131,19 @@ function render$6(_ctx, _cache, $props, $setup, $data, $options) {
7132
7131
  onBeforeLeave: $options.beforeLeave,
7133
7132
  onLeave: $options.leave,
7134
7133
  onAfterLeave: $options.afterLeave
7135
- }), {
7134
+ }, {
7136
7135
  default: withCtx(() => [
7137
7136
  renderSlot(_ctx.$slots, "default")
7138
7137
  ]),
7139
7138
  _: 3
7140
- }, 16, ["onBeforeAppear", "onAppear", "onAfterAppear", "onBeforeEnter", "onEnter", "onAfterEnter", "onBeforeLeave", "onLeave", "onAfterLeave"]);
7139
+ }, 8, ["onBeforeAppear", "onAppear", "onAfterAppear", "onBeforeEnter", "onEnter", "onAfterEnter", "onBeforeLeave", "onLeave", "onAfterLeave"]);
7141
7140
  }
7142
7141
  const _sfc_main$6 = {
7143
7142
  name: "w-transition-expand",
7144
7143
  props: {
7145
7144
  x: { type: Boolean },
7146
7145
  y: { type: Boolean },
7147
- duration: { type: Number, default: 200 }
7146
+ duration: { type: Number, default: 250 }
7148
7147
  },
7149
7148
  data: () => ({
7150
7149
  el: {
@@ -7179,53 +7178,44 @@ const _sfc_main$6 = {
7179
7178
  if (this.cleanTransitionCycle)
7180
7179
  this.saveOriginalStyles(el);
7181
7180
  this.cleanTransitionCycle = false;
7182
- this.$emit("before-appear");
7183
7181
  },
7184
7182
  appear(el, done) {
7185
7183
  this.show(el);
7186
7184
  setTimeout(done, this.duration);
7187
7185
  this.cleanTransitionCycle = false;
7188
- this.$emit("appear");
7189
7186
  },
7190
7187
  afterAppear(el) {
7191
7188
  this.applyOriginalStyles(el);
7192
7189
  el.style.cssText = el.style.cssText.replace("display: none;", "");
7193
7190
  this.cleanTransitionCycle = false;
7194
- this.$emit("after-appear");
7195
7191
  },
7196
7192
  beforeEnter(el) {
7197
7193
  if (this.cleanTransitionCycle)
7198
7194
  this.saveOriginalStyles(el);
7199
7195
  this.cleanTransitionCycle = false;
7200
- this.$emit("before-enter");
7201
7196
  },
7202
7197
  enter(el, done) {
7203
7198
  this.show(el);
7204
7199
  setTimeout(done, this.duration);
7205
7200
  this.cleanTransitionCycle = false;
7206
- this.$emit("enter");
7207
7201
  },
7208
7202
  afterEnter(el) {
7209
7203
  this.applyOriginalStyles(el);
7210
7204
  el.style.cssText = el.style.cssText.replace("display: none;", "");
7211
7205
  this.cleanTransitionCycle = false;
7212
- this.$emit("after-enter");
7213
7206
  },
7214
7207
  beforeLeave(el) {
7215
7208
  this.beforeHide(el);
7216
7209
  this.cleanTransitionCycle = false;
7217
- this.$emit("before-leave");
7218
7210
  },
7219
7211
  leave(el, done) {
7220
7212
  this.hide(el);
7221
7213
  setTimeout(done, this.duration);
7222
7214
  this.cleanTransitionCycle = false;
7223
- this.$emit("leave");
7224
7215
  },
7225
7216
  afterLeave(el) {
7226
7217
  this.applyOriginalStyles(el);
7227
7218
  this.cleanTransitionCycle = true;
7228
- this.$emit("after-leave");
7229
7219
  },
7230
7220
  applyHideStyles(el) {
7231
7221
  if (this.animX) {
@@ -7429,9 +7419,8 @@ const _sfc_main = {
7429
7419
  }
7430
7420
  };
7431
7421
  var wTransitionTwist = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", render]]);
7432
- var components = /* @__PURE__ */ Object.freeze({
7422
+ var components = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
7433
7423
  __proto__: null,
7434
- [Symbol.toStringTag]: "Module",
7435
7424
  WAccordion: wAccordion,
7436
7425
  WAlert: wAlert,
7437
7426
  WApp: wApp,
@@ -7482,7 +7471,7 @@ var components = /* @__PURE__ */ Object.freeze({
7482
7471
  WTransitionSlide: wTransitionSlide,
7483
7472
  WTransitionSlideFade: wTransitionSlideFade,
7484
7473
  WTransitionTwist: wTransitionTwist
7485
- });
7474
+ }, Symbol.toStringTag, { value: "Module" }));
7486
7475
  const install = WaveUI.install;
7487
7476
  WaveUI.install = (app, options = {}) => install.call(WaveUI, app, __spreadValues({ components }, options));
7488
7477
  export { WaveUI as default };