@boobooking/dashboard-ui-components 0.17.0 → 0.17.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.
Files changed (3) hide show
  1. package/README.md +12 -9
  2. package/dist/index.js +209 -147
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -396,8 +396,8 @@ exportOrders() {
396
396
  | `lang` | `String` | язык плагина | `"ru"` или `"en"` |
397
397
 
398
398
  События: `actionConfirmed` — по кнопке действия, `actionCanceled` — по кнопке
399
- отмены. Ни одна из кнопок модалку не закрывает — см. раздел «Почему у
400
- ConfirmationModal нет v-model».
399
+ отмены и по Escape. Ни одна из кнопок модалку не закрывает — см. раздел
400
+ «Почему у ConfirmationModal нет v-model».
401
401
 
402
402
  Панель модалки — белая, со скруглением `rounded-lg`, стоит по центру и
403
403
  занимает `max-w-lg`. `class` и другие атрибуты на `<confirmation-modal>`
@@ -405,6 +405,13 @@ ConfirmationModal нет v-model».
405
405
  содержимое, поэтому блоки текста и кнопок со своим фоном скругляют внешние
406
406
  углы сами — верхний `rounded-t-lg`, нижний `rounded-b-lg`.
407
407
 
408
+ Открытая модалка держит фокус: в первом кадре после открытия он встаёт на
409
+ кнопку отмены, Tab и Shift+Tab ходят по её кнопкам по кругу, Escape —
410
+ `actionCanceled`, как кнопка отмены. После закрытия фокус возвращается туда,
411
+ где был до открытия, если страница не поставила его в другое место и тот
412
+ элемент ещё на странице. Кадр нужен модалкам, которые открывает пункт меню:
413
+ меню закрывается позже в том же клике и возвращает фокус на свою кнопку.
414
+
408
415
  ### DropdownButtonWithAction
409
416
 
410
417
  Кнопка из списка действий `actions`. Первое действие — основная кнопка,
@@ -978,9 +985,9 @@ Inertia SSR), а серверная разметка гидратируется
978
985
  Правило пакета — значение через `v-model` — относится к состоянию, которое
979
986
  компонент меняет сам: меню `DropdownButtonWithAction` закрывается по клику
980
987
  вне, `SelectSingle` меняет выбор. `ConfirmationModal` свою видимость не меняет
981
- никогда. Обе кнопки только сообщают родителю решение пользователя, а закрыть
982
- модалку, оставить её открытой на время запроса или открыть следующую — решает
983
- родитель.
988
+ никогда. Обе кнопки и Escape только сообщают родителю решение пользователя,
989
+ а закрыть модалку, оставить её открытой на время запроса или открыть
990
+ следующую — решает родитель.
984
991
 
985
992
  `v-model` обещал бы двустороннюю связь, которой нет, поэтому видимость
986
993
  передаётся пропом `isOpen`.
@@ -1300,7 +1307,3 @@ exportOrders() {
1300
1307
  Например, чекбоксу: `border border-gray-300 bg-white text-indigo-600
1301
1308
  checked:bg-current checked:border-transparent focus:ring-2
1302
1309
  focus:ring-offset-2`.
1303
-
1304
- `ConfirmationModal` не переносит фокус внутрь при открытии, не удерживает его
1305
- внутри, не возвращает на прежнее место после закрытия и не закрывается по
1306
- Escape.
package/dist/index.js CHANGED
@@ -1572,18 +1572,77 @@ function Dn(e, t, o, s, c, l) {
1572
1572
  textContent: g(l.label)
1573
1573
  }, null, 8, En)], 10, Tn);
1574
1574
  }
1575
- var On = /*#__PURE__*/ A(wn, [["render", Dn]]), kn = { props: {
1576
- isOpen: {
1577
- type: Boolean,
1578
- default: !1
1575
+ var On = /*#__PURE__*/ A(wn, [["render", Dn]]), J = "a[href], button:not(:disabled)";
1576
+ function kn(e, t) {
1577
+ let n = document.activeElement;
1578
+ (e.querySelector("[data-dialog-focus]") ?? e.querySelector(J))?.focus();
1579
+ let r = (n) => {
1580
+ if (n.key === "Escape") {
1581
+ t();
1582
+ return;
1583
+ }
1584
+ if (n.key !== "Tab") return;
1585
+ let r = [...e.querySelectorAll(J)];
1586
+ if (r.length === 0) return;
1587
+ n.preventDefault();
1588
+ let i = n.shiftKey ? -1 : 1, a = r.indexOf(document.activeElement);
1589
+ r[a === -1 ? i === 1 ? 0 : r.length - 1 : (a + i + r.length) % r.length].focus();
1590
+ };
1591
+ document.addEventListener("keydown", r, !0);
1592
+ let i = !1;
1593
+ return () => {
1594
+ if (i) return;
1595
+ i = !0, document.removeEventListener("keydown", r, !0);
1596
+ let t = document.activeElement, a = t === null || t === document.body || e.contains(t), o = n !== null && n !== document.body && n.isConnected;
1597
+ a && o ? n.focus({ preventScroll: !0 }) : e.contains(t) && t.blur();
1598
+ };
1599
+ }
1600
+ //#endregion
1601
+ //#region src/components/Modal.vue
1602
+ var An = {
1603
+ emits: ["escape"],
1604
+ props: {
1605
+ isOpen: {
1606
+ type: Boolean,
1607
+ default: !1
1608
+ },
1609
+ headingId: {
1610
+ type: String,
1611
+ required: !0
1612
+ }
1579
1613
  },
1580
- headingId: {
1581
- type: String,
1582
- required: !0
1614
+ watch: { isOpen: {
1615
+ flush: "post",
1616
+ handler(e) {
1617
+ if (e) {
1618
+ this.holdFocus();
1619
+ return;
1620
+ }
1621
+ this.releaseFocus();
1622
+ }
1623
+ } },
1624
+ created() {
1625
+ this.focusFrame = null, this.releaseHeldFocus = null;
1626
+ },
1627
+ mounted() {
1628
+ this.isOpen && this.holdFocus();
1629
+ },
1630
+ beforeUnmount() {
1631
+ this.releaseFocus();
1632
+ },
1633
+ methods: {
1634
+ holdFocus() {
1635
+ this.focusFrame === null && this.releaseHeldFocus === null && (this.focusFrame = requestAnimationFrame(() => {
1636
+ this.focusFrame = null, this.releaseHeldFocus = kn(this.$refs.panel, () => this.$emit("escape"));
1637
+ }));
1638
+ },
1639
+ releaseFocus() {
1640
+ this.focusFrame !== null && (cancelAnimationFrame(this.focusFrame), this.focusFrame = null), this.releaseHeldFocus !== null && (this.releaseHeldFocus(), this.releaseHeldFocus = null);
1641
+ }
1583
1642
  }
1584
- } }, An = { class: "bb:min-h-screen bb:text-center" }, jn = { class: "bb:fixed bb:inset-0 bb:transition-opacity" }, Mn = ["aria-labelledby"];
1585
- function Nn(e, n, r, o, c, l) {
1586
- return d(), i("div", { class: u(["bb-dashboard-ui bb:fixed bb:inset-0 bb:overflow-y-auto bb:z-20", { "bb:pointer-events-none": !r.isOpen }]) }, [a("div", An, [
1643
+ }, jn = { class: "bb:min-h-screen bb:text-center" }, Mn = { class: "bb:fixed bb:inset-0 bb:transition-opacity" }, Nn = ["aria-labelledby"];
1644
+ function Pn(e, n, r, o, c, l) {
1645
+ return d(), i("div", { class: u(["bb-dashboard-ui bb:fixed bb:inset-0 bb:overflow-y-auto bb:z-20", { "bb:pointer-events-none": !r.isOpen }]) }, [a("div", jn, [
1587
1646
  s(t, {
1588
1647
  "enter-active-class": "bb:ease-out bb:duration-300",
1589
1648
  "enter-from-class": "bb:opacity-0",
@@ -1592,7 +1651,7 @@ function Nn(e, n, r, o, c, l) {
1592
1651
  "leave-from-class": "bb:opacity-100",
1593
1652
  "leave-to-class": "bb:opacity-0"
1594
1653
  }, {
1595
- default: b(() => [x(a("div", jn, [...n[0] ||= [a("div", { class: "bb:absolute bb:inset-0 bb:bg-gray-500 bb:opacity-75" }, null, -1)]], 512), [[y, r.isOpen]])]),
1654
+ default: b(() => [x(a("div", Mn, [...n[0] ||= [a("div", { class: "bb:absolute bb:inset-0 bb:bg-gray-500 bb:opacity-75" }, null, -1)]], 512), [[y, r.isOpen]])]),
1596
1655
  _: 1
1597
1656
  }),
1598
1657
  n[1] ||= a("span", { class: "bb:inline-block bb:align-middle bb:h-screen" }, null, -1),
@@ -1605,16 +1664,17 @@ function Nn(e, n, r, o, c, l) {
1605
1664
  "leave-to-class": "bb:opacity-0 bb:scale-95"
1606
1665
  }, {
1607
1666
  default: b(() => [x(a("div", {
1667
+ ref: "panel",
1608
1668
  class: "bb:relative bb:inline-block bb:align-middle bb:my-8 bb:max-w-lg bb:w-full bb:bg-white bb:rounded-lg bb:text-left bb:overflow-visible bb:shadow-xl bb:transition-all",
1609
1669
  role: "dialog",
1610
1670
  "aria-modal": "true",
1611
1671
  "aria-labelledby": r.headingId
1612
- }, [p(e.$slots, "default")], 8, Mn), [[y, r.isOpen]])]),
1672
+ }, [p(e.$slots, "default")], 8, Nn), [[y, r.isOpen]])]),
1613
1673
  _: 3
1614
1674
  })
1615
1675
  ])], 2);
1616
1676
  }
1617
- var Pn = /*#__PURE__*/ A(kn, [["render", Nn]]), Fn = {}, In = {
1677
+ var Fn = /*#__PURE__*/ A(An, [["render", Pn]]), In = {}, Ln = {
1618
1678
  class: "bb:h-7 bb:w-7 bb:text-red-600",
1619
1679
  xmlns: "http://www.w3.org/2000/svg",
1620
1680
  fill: "none",
@@ -1622,33 +1682,33 @@ var Pn = /*#__PURE__*/ A(kn, [["render", Nn]]), Fn = {}, In = {
1622
1682
  stroke: "currentColor",
1623
1683
  "aria-hidden": "true"
1624
1684
  };
1625
- function Ln(e, t, n, r, o, s) {
1626
- return d(), i("svg", In, [...t[0] ||= [a("path", {
1685
+ function Rn(e, t, n, r, o, s) {
1686
+ return d(), i("svg", Ln, [...t[0] ||= [a("path", {
1627
1687
  "stroke-linecap": "round",
1628
1688
  "stroke-linejoin": "round",
1629
1689
  "stroke-width": "2",
1630
1690
  d: "M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"
1631
1691
  }, null, -1)]]);
1632
1692
  }
1633
- var J = /*#__PURE__*/ A(Fn, [["render", Ln]]), Rn = {}, zn = {
1693
+ var Y = /*#__PURE__*/ A(In, [["render", Rn]]), zn = {}, Bn = {
1634
1694
  class: "bb:h-7 bb:w-7 bb:text-yellow-400",
1635
1695
  xmlns: "http://www.w3.org/2000/svg",
1636
1696
  viewBox: "0 0 20 20",
1637
1697
  fill: "currentColor",
1638
1698
  "aria-hidden": "true"
1639
1699
  };
1640
- function Bn(e, t, n, r, o, s) {
1641
- return d(), i("svg", zn, [...t[0] ||= [a("path", {
1700
+ function Vn(e, t, n, r, o, s) {
1701
+ return d(), i("svg", Bn, [...t[0] ||= [a("path", {
1642
1702
  "fill-rule": "evenodd",
1643
1703
  d: "M8.257 3.099c.765-1.36 2.722-1.36 3.486 0l5.58 9.92c.75 1.334-.213 2.98-1.742 2.98H4.42c-1.53 0-2.493-1.646-1.743-2.98l5.58-9.92zM11 13a1 1 0 11-2 0 1 1 0 012 0zm-1-8a1 1 0 00-1 1v3a1 1 0 002 0V6a1 1 0 00-1-1z",
1644
1704
  "clip-rule": "evenodd"
1645
1705
  }, null, -1)]]);
1646
1706
  }
1647
- var Y = /*#__PURE__*/ A(Rn, [["render", Bn]]), Vn = {
1707
+ var Hn = /*#__PURE__*/ A(zn, [["render", Vn]]), Un = {
1648
1708
  components: {
1649
- Modal: Pn,
1650
- Dangerous: J,
1651
- Warning: Y
1709
+ Modal: Fn,
1710
+ Dangerous: Y,
1711
+ Warning: Hn
1652
1712
  },
1653
1713
  mixins: [M],
1654
1714
  emits: ["actionConfirmed", "actionCanceled"],
@@ -1690,20 +1750,21 @@ var Y = /*#__PURE__*/ A(Rn, [["render", Bn]]), Vn = {
1690
1750
  return this.type === "warning";
1691
1751
  }
1692
1752
  }
1693
- }, Hn = { class: "bb:flex bb:bg-white bb:rounded-t-lg bb:p-6 bb:pb-4" }, Un = { class: "bb:flex bb:items-start" }, Wn = { class: "bb:ml-4 bb:text-left" }, Gn = ["id"], Kn = { class: "bb:mt-2" }, qn = { class: "bb:text-sm bb:text-gray-500" }, Jn = { class: "bb:bg-gray-50 bb:rounded-b-lg bb:px-6 bb:py-3 bb:flex bb:flex-row-reverse" };
1694
- function Yn(e, t, i, o, s, c) {
1753
+ }, Wn = { class: "bb:flex bb:bg-white bb:rounded-t-lg bb:p-6 bb:pb-4" }, Gn = { class: "bb:flex bb:items-start" }, Kn = { class: "bb:ml-4 bb:text-left" }, qn = ["id"], Jn = { class: "bb:mt-2" }, Yn = { class: "bb:text-sm bb:text-gray-500" }, Xn = { class: "bb:bg-gray-50 bb:rounded-b-lg bb:px-6 bb:py-3 bb:flex bb:flex-row-reverse" };
1754
+ function Zn(e, t, i, o, s, c) {
1695
1755
  let l = m("warning"), f = m("dangerous"), p = m("modal");
1696
1756
  return d(), n(p, {
1697
1757
  "is-open": i.isOpen,
1698
- "heading-id": o.headingId
1758
+ "heading-id": o.headingId,
1759
+ onEscape: t[2] ||= (t) => e.$emit("actionCanceled")
1699
1760
  }, {
1700
- default: b(() => [a("div", Hn, [a("div", Un, [a("div", { class: u(["bb:shrink-0 bb:flex bb:items-center bb:justify-center bb:h-10 bb:w-10 bb:rounded-full", {
1761
+ default: b(() => [a("div", Wn, [a("div", Gn, [a("div", { class: u(["bb:shrink-0 bb:flex bb:items-center bb:justify-center bb:h-10 bb:w-10 bb:rounded-full", {
1701
1762
  "bb:bg-red-100": c.isDangerous,
1702
1763
  "bb:bg-yellow-100": c.isWarning
1703
- }]) }, [c.isWarning ? (d(), n(l, { key: 0 })) : r("", !0), c.isDangerous ? (d(), n(f, { key: 1 })) : r("", !0)], 2), a("div", Wn, [a("h3", {
1764
+ }]) }, [c.isWarning ? (d(), n(l, { key: 0 })) : r("", !0), c.isDangerous ? (d(), n(f, { key: 1 })) : r("", !0)], 2), a("div", Kn, [a("h3", {
1704
1765
  class: "bb:text-lg bb:leading-6 bb:font-medium bb:text-gray-900",
1705
1766
  id: o.headingId
1706
- }, g(i.confirmationHeading), 9, Gn), a("div", Kn, [a("p", qn, g(i.confirmationText), 1)])])])]), a("div", Jn, [a("button", {
1767
+ }, g(i.confirmationHeading), 9, qn), a("div", Jn, [a("p", Yn, g(i.confirmationText), 1)])])])]), a("div", Xn, [a("button", {
1707
1768
  type: "button",
1708
1769
  class: u(["bb:inline-flex bb:justify-center bb:rounded-md bb:border bb:border-transparent bb:shadow-xs bb:px-4 bb:py-2 bb:text-sm bb:font-medium bb:text-white bb:focus:outline-hidden bb:focus:ring-2 bb:focus:ring-offset-2 bb:ml-3", {
1709
1770
  "bb:bg-red-600 bb:hover:bg-red-700 bb:focus:ring-red-500": c.isDangerous,
@@ -1713,31 +1774,32 @@ function Yn(e, t, i, o, s, c) {
1713
1774
  }, g(i.actionButtonText), 3), a("button", {
1714
1775
  type: "button",
1715
1776
  class: "bb:inline-flex bb:justify-center bb:rounded-md bb:border bb:border-gray-300 bb:shadow-xs bb:px-4 bb:py-2 bb:bg-white bb:text-sm bb:font-medium bb:text-gray-700 bb:hover:bg-gray-50 bb:focus:outline-hidden bb:focus:ring-2 bb:focus:ring-offset-2 bb:focus:ring-indigo-500 bb:ml-3",
1777
+ "data-dialog-focus": "",
1716
1778
  onClick: t[1] ||= S((t) => e.$emit("actionCanceled"), ["prevent"])
1717
1779
  }, g(i.cancelButtonText ?? e.texts.cancel), 1)])]),
1718
1780
  _: 1
1719
1781
  }, 8, ["is-open", "heading-id"]);
1720
1782
  }
1721
- var Xn = /*#__PURE__*/ A(Vn, [["render", Yn]]);
1783
+ var Qn = /*#__PURE__*/ A(Un, [["render", Zn]]);
1722
1784
  //#endregion
1723
1785
  //#region src/menuItems.js
1724
- function Zn(e) {
1786
+ function $n(e) {
1725
1787
  if (typeof e != "object" || !e || typeof e.label != "string" || e.label === "" || e.color !== void 0 && !O(e.color)) return !1;
1726
1788
  let t = typeof e.href == "string" && e.href !== "" && e.onSelect === void 0, n = typeof e.onSelect == "function" && e.href === void 0;
1727
1789
  return t || n;
1728
1790
  }
1729
- function Qn(e) {
1791
+ function er(e) {
1730
1792
  return Array.isArray(e) ? e.filter((e) => typeof e == "object" && !!e) : [];
1731
1793
  }
1732
- function $n(e) {
1794
+ function tr(e) {
1733
1795
  return typeof e.href == "string" && e.href !== "";
1734
1796
  }
1735
- function er(e) {
1797
+ function nr(e) {
1736
1798
  return O(e.color) ? e.color : null;
1737
1799
  }
1738
1800
  //#endregion
1739
1801
  //#region src/navigation.js
1740
- function tr(e) {
1802
+ function rr(e) {
1741
1803
  let t = e.currentTarget?.target ?? "";
1742
1804
  return !(e.defaultPrevented || e.target?.isContentEditable === !0 || e.altKey || e.ctrlKey || e.metaKey || e.shiftKey || t !== "" && t !== "_self" || e.button !== 0);
1743
1805
  }
@@ -1745,9 +1807,9 @@ var X = {
1745
1807
  inject: ge,
1746
1808
  methods: { followLink(e, t) {
1747
1809
  let n = this.uiSettings.navigate;
1748
- n !== null && tr(e) && (e.preventDefault(), n(t));
1810
+ n !== null && rr(e) && (e.preventDefault(), n(t));
1749
1811
  } }
1750
- }, nr = {
1812
+ }, ir = {
1751
1813
  components: { PopoverPanel: H },
1752
1814
  mixins: [X, k],
1753
1815
  emits: ["update:modelValue"],
@@ -1760,7 +1822,7 @@ var X = {
1760
1822
  },
1761
1823
  computed: {
1762
1824
  actionItems() {
1763
- return Qn(this.actions);
1825
+ return er(this.actions);
1764
1826
  },
1765
1827
  hasActions() {
1766
1828
  return this.actionItems.length > 0;
@@ -1768,21 +1830,21 @@ var X = {
1768
1830
  },
1769
1831
  methods: {
1770
1832
  color(e) {
1771
- return er(e);
1833
+ return nr(e);
1772
1834
  },
1773
1835
  isLink(e) {
1774
- return $n(e);
1836
+ return tr(e);
1775
1837
  },
1776
1838
  select(e) {
1777
1839
  if (typeof e.onSelect == "function") return e.onSelect();
1778
1840
  }
1779
1841
  }
1780
- }, rr = [
1842
+ }, ar = [
1781
1843
  "href",
1782
1844
  "onClick",
1783
1845
  "textContent"
1784
- ], ir = ["onClick", "textContent"];
1785
- function ar(t, r, a, o, s, c) {
1846
+ ], or = ["onClick", "textContent"];
1847
+ function sr(t, r, a, o, s, c) {
1786
1848
  let l = m("popover-panel");
1787
1849
  return d(), n(l, {
1788
1850
  "model-value": a.modelValue,
@@ -1806,19 +1868,19 @@ function ar(t, r, a, o, s, c) {
1806
1868
  class: u(["bb:block bb:w-full bb:px-4 bb:py-2 bb:text-sm bb:text-left bb:cursor-pointer bb:focus:outline-hidden", c.color(n) === null ? "bb:text-gray-700 bb:focus:bg-gray-100 bb:focus:text-gray-900" : t.colorClass(c.color(n), "menuItem")]),
1807
1869
  onClick: (e) => t.followLink(e, n.href),
1808
1870
  textContent: g(n.label)
1809
- }, null, 10, rr)) : (d(), i("button", {
1871
+ }, null, 10, ar)) : (d(), i("button", {
1810
1872
  key: 1,
1811
1873
  type: "button",
1812
1874
  role: "menuitem",
1813
1875
  class: u(["bb:block bb:w-full bb:px-4 bb:py-2 bb:text-sm bb:text-left bb:cursor-pointer bb:focus:outline-hidden", c.color(n) === null ? "bb:text-gray-700 bb:focus:bg-gray-100 bb:focus:text-gray-900" : t.colorClass(c.color(n), "menuItem")]),
1814
1876
  onClick: (e) => c.select(n),
1815
1877
  textContent: g(n.label)
1816
- }, null, 10, ir))], 64))), 128))]),
1878
+ }, null, 10, or))], 64))), 128))]),
1817
1879
  _: 3
1818
1880
  }, 8, ["model-value", "has-content"]);
1819
1881
  }
1820
- var or = /*#__PURE__*/ A(nr, [["render", ar]]), sr = {
1821
- components: { PopoverMenu: or },
1882
+ var cr = /*#__PURE__*/ A(ir, [["render", sr]]), lr = {
1883
+ components: { PopoverMenu: cr },
1822
1884
  mixins: [
1823
1885
  M,
1824
1886
  X,
@@ -1829,7 +1891,7 @@ var or = /*#__PURE__*/ A(nr, [["render", ar]]), sr = {
1829
1891
  actions: {
1830
1892
  type: Array,
1831
1893
  default: () => [],
1832
- validator: (e) => e.every(Zn)
1894
+ validator: (e) => e.every($n)
1833
1895
  },
1834
1896
  modelValue: {
1835
1897
  type: Boolean,
@@ -1841,7 +1903,7 @@ var or = /*#__PURE__*/ A(nr, [["render", ar]]), sr = {
1841
1903
  },
1842
1904
  computed: {
1843
1905
  items() {
1844
- return Qn(this.actions);
1906
+ return er(this.actions);
1845
1907
  },
1846
1908
  hasActions() {
1847
1909
  return this.items.length > 0;
@@ -1850,7 +1912,7 @@ var or = /*#__PURE__*/ A(nr, [["render", ar]]), sr = {
1850
1912
  return this.items[0];
1851
1913
  },
1852
1914
  mainColor() {
1853
- return this.hasActions ? er(this.mainAction) : null;
1915
+ return this.hasActions ? nr(this.mainAction) : null;
1854
1916
  },
1855
1917
  menuActions() {
1856
1918
  return this.items.slice(1);
@@ -1872,7 +1934,7 @@ var or = /*#__PURE__*/ A(nr, [["render", ar]]), sr = {
1872
1934
  },
1873
1935
  methods: {
1874
1936
  isLink(e) {
1875
- return $n(e);
1937
+ return tr(e);
1876
1938
  },
1877
1939
  select(e) {
1878
1940
  if (typeof e.onSelect == "function") return e.onSelect();
@@ -1881,13 +1943,13 @@ var or = /*#__PURE__*/ A(nr, [["render", ar]]), sr = {
1881
1943
  this.menuIsOpen = e, this.$emit("update:modelValue", e);
1882
1944
  }
1883
1945
  }
1884
- }, cr = {
1946
+ }, ur = {
1885
1947
  key: 0,
1886
1948
  class: "bb-dashboard-ui bb:relative bb:inline-flex bb:shadow-xs bb:rounded-md"
1887
- }, lr = ["href", "textContent"], ur = ["textContent"], dr = ["id", "popovertarget"], fr = { class: "bb:sr-only bb:pointer-events-none bb:cursor-default" };
1888
- function pr(e, t, n, o, c, l) {
1949
+ }, dr = ["href", "textContent"], fr = ["textContent"], pr = ["id", "popovertarget"], mr = { class: "bb:sr-only bb:pointer-events-none bb:cursor-default" };
1950
+ function hr(e, t, n, o, c, l) {
1889
1951
  let f = m("popover-menu");
1890
- return l.hasActions ? (d(), i("span", cr, [l.isLink(l.mainAction) ? (d(), i("a", {
1952
+ return l.hasActions ? (d(), i("span", ur, [l.isLink(l.mainAction) ? (d(), i("a", {
1891
1953
  key: 0,
1892
1954
  href: l.mainAction.href,
1893
1955
  class: u(["bb:relative bb:inline-flex bb:items-center bb:px-4 bb:py-2 bb:border bb:text-sm bb:font-medium bb:cursor-pointer bb:focus:z-10 bb:focus:outline-hidden bb:focus:ring-1 bb:focus:ring-indigo-500 bb:focus:border-indigo-500", [{
@@ -1896,7 +1958,7 @@ function pr(e, t, n, o, c, l) {
1896
1958
  }, l.mainColor === null ? "bb:bg-white bb:border-gray-300 bb:text-gray-700 bb:hover:bg-gray-50" : e.colorClass(l.mainColor, "button")]]),
1897
1959
  onClick: t[0] ||= (t) => e.followLink(t, l.mainAction.href),
1898
1960
  textContent: g(l.mainAction.label)
1899
- }, null, 10, lr)) : (d(), i("button", {
1961
+ }, null, 10, dr)) : (d(), i("button", {
1900
1962
  key: 1,
1901
1963
  type: "button",
1902
1964
  class: u(["bb:relative bb:inline-flex bb:items-center bb:px-4 bb:py-2 bb:border bb:text-sm bb:font-medium bb:cursor-pointer bb:focus:z-10 bb:focus:outline-hidden bb:focus:ring-1 bb:focus:ring-indigo-500 bb:focus:border-indigo-500", [{
@@ -1905,7 +1967,7 @@ function pr(e, t, n, o, c, l) {
1905
1967
  }, l.mainColor === null ? "bb:bg-white bb:border-gray-300 bb:text-gray-700 bb:hover:bg-gray-50" : e.colorClass(l.mainColor, "button")]]),
1906
1968
  onClick: t[1] ||= (e) => l.select(l.mainAction),
1907
1969
  textContent: g(l.mainAction.label)
1908
- }, null, 10, ur)), s(f, {
1970
+ }, null, 10, fr)), s(f, {
1909
1971
  class: "bb:-ml-px bb:flex",
1910
1972
  actions: l.menuActions,
1911
1973
  "model-value": n.modelValue,
@@ -1916,7 +1978,7 @@ function pr(e, t, n, o, c, l) {
1916
1978
  id: n.id,
1917
1979
  popovertarget: n.popovertarget,
1918
1980
  class: u(["bb:relative bb:inline-flex bb:items-center bb:px-2 bb:py-2 bb:rounded-r-md bb:border bb:text-sm bb:font-medium bb:focus:z-10 bb:focus:outline-hidden bb:focus:ring-1 bb:focus:ring-indigo-500 bb:focus:border-indigo-500", l.mainColor === null ? "bb:bg-white bb:border-gray-300 bb:text-gray-500 bb:hover:bg-gray-50" : e.colorClass(l.mainColor, "button")])
1919
- }, [a("span", fr, g(e.texts.openMenu), 1), t[2] ||= a("svg", {
1981
+ }, [a("span", mr, g(e.texts.openMenu), 1), t[2] ||= a("svg", {
1920
1982
  class: "bb:h-5 bb:w-5 bb:pointer-events-none bb:cursor-default",
1921
1983
  xmlns: "http://www.w3.org/2000/svg",
1922
1984
  viewBox: "0 0 20 20",
@@ -1926,7 +1988,7 @@ function pr(e, t, n, o, c, l) {
1926
1988
  "fill-rule": "evenodd",
1927
1989
  d: "M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z",
1928
1990
  "clip-rule": "evenodd"
1929
- })], -1)], 10, dr)]),
1991
+ })], -1)], 10, pr)]),
1930
1992
  _: 1
1931
1993
  }, 8, [
1932
1994
  "actions",
@@ -1934,16 +1996,16 @@ function pr(e, t, n, o, c, l) {
1934
1996
  "onUpdate:modelValue"
1935
1997
  ])])) : r("", !0);
1936
1998
  }
1937
- var mr = /*#__PURE__*/ A(sr, [["render", pr]]), hr = {
1938
- components: { PopoverMenu: or },
1999
+ var gr = /*#__PURE__*/ A(lr, [["render", hr]]), _r = {
2000
+ components: { PopoverMenu: cr },
1939
2001
  mixins: [M],
1940
2002
  props: { actions: {
1941
2003
  type: Array,
1942
2004
  default: () => [],
1943
- validator: (e) => e.every(Zn)
2005
+ validator: (e) => e.every($n)
1944
2006
  } }
1945
- }, gr = ["id", "popovertarget"], _r = { class: "bb:sr-only bb:pointer-events-none bb:cursor-default" };
1946
- function vr(e, t, r, i, o, s) {
2007
+ }, vr = ["id", "popovertarget"], yr = { class: "bb:sr-only bb:pointer-events-none bb:cursor-default" };
2008
+ function br(e, t, r, i, o, s) {
1947
2009
  let c = m("popover-menu");
1948
2010
  return d(), n(c, {
1949
2011
  class: "bb-dashboard-ui bb:inline-flex",
@@ -1954,7 +2016,7 @@ function vr(e, t, r, i, o, s) {
1954
2016
  id: n.id,
1955
2017
  popovertarget: n.popovertarget,
1956
2018
  class: "bb:relative bb:inline-flex bb:items-center bb:justify-center bb:p-2 bb:rounded-md bb:text-gray-400 bb:hover:text-gray-500 bb:hover:bg-gray-100 bb:focus:outline-hidden bb:focus:bg-gray-100 bb:focus:text-gray-500 bb:transition bb:duration-150 bb:ease-in-out"
1957
- }, [a("span", _r, g(e.texts.openMenu), 1), t[0] ||= a("svg", {
2019
+ }, [a("span", yr, g(e.texts.openMenu), 1), t[0] ||= a("svg", {
1958
2020
  class: "bb:h-6 bb:w-6 bb:pointer-events-none bb:cursor-default",
1959
2021
  fill: "none",
1960
2022
  viewBox: "0 0 24 24",
@@ -1965,46 +2027,46 @@ function vr(e, t, r, i, o, s) {
1965
2027
  "stroke-linejoin": "round",
1966
2028
  "stroke-width": "2",
1967
2029
  d: "M4 6h16M4 12h16M4 18h16"
1968
- })], -1)], 8, gr)]),
2030
+ })], -1)], 8, vr)]),
1969
2031
  _: 1
1970
2032
  }, 8, ["actions"]);
1971
2033
  }
1972
- var yr = /*#__PURE__*/ A(hr, [["render", vr]]), br = {}, xr = {
2034
+ var xr = /*#__PURE__*/ A(_r, [["render", br]]), Sr = {}, Cr = {
1973
2035
  xmlns: "http://www.w3.org/2000/svg",
1974
2036
  viewBox: "0 0 20 20",
1975
2037
  fill: "currentColor",
1976
2038
  "aria-hidden": "true"
1977
2039
  };
1978
- function Sr(e, t, n, r, o, s) {
1979
- return d(), i("svg", xr, [...t[0] ||= [a("path", {
2040
+ function wr(e, t, n, r, o, s) {
2041
+ return d(), i("svg", Cr, [...t[0] ||= [a("path", {
1980
2042
  "fill-rule": "evenodd",
1981
2043
  "clip-rule": "evenodd",
1982
2044
  d: "M7.707 14.707a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 1.414L5.414 9H17a1 1 0 110 2H5.414l2.293 2.293a1 1 0 010 1.414z"
1983
2045
  }, null, -1)]]);
1984
2046
  }
1985
- var Cr = /*#__PURE__*/ A(br, [["render", Sr]]), wr = {}, Tr = {
2047
+ var Tr = /*#__PURE__*/ A(Sr, [["render", wr]]), Er = {}, Dr = {
1986
2048
  xmlns: "http://www.w3.org/2000/svg",
1987
2049
  viewBox: "0 0 20 20",
1988
2050
  fill: "currentColor",
1989
2051
  "aria-hidden": "true"
1990
2052
  };
1991
- function Er(e, t, n, r, o, s) {
1992
- return d(), i("svg", Tr, [...t[0] ||= [a("path", {
2053
+ function Or(e, t, n, r, o, s) {
2054
+ return d(), i("svg", Dr, [...t[0] ||= [a("path", {
1993
2055
  "fill-rule": "evenodd",
1994
2056
  "clip-rule": "evenodd",
1995
2057
  d: "M12.293 5.293a1 1 0 011.414 0l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414-1.414L14.586 11H3a1 1 0 110-2h11.586l-2.293-2.293a1 1 0 010-1.414z"
1996
2058
  }, null, -1)]]);
1997
2059
  }
1998
- var Dr = /*#__PURE__*/ A(wr, [["render", Er]]);
2060
+ var kr = /*#__PURE__*/ A(Er, [["render", Or]]);
1999
2061
  //#endregion
2000
2062
  //#region src/components/Pagination.vue
2001
- function Or(e) {
2063
+ function Z(e) {
2002
2064
  return typeof e == "string" && e !== "" ? e : null;
2003
2065
  }
2004
- var kr = {
2066
+ var Ar = {
2005
2067
  components: {
2006
- ArrowNarrowLeft: Cr,
2007
- ArrowNarrowRight: Dr
2068
+ ArrowNarrowLeft: Tr,
2069
+ ArrowNarrowRight: kr
2008
2070
  },
2009
2071
  mixins: [M, X],
2010
2072
  props: {
@@ -2034,49 +2096,49 @@ var kr = {
2034
2096
  return typeof this.from == "number" && typeof this.to == "number";
2035
2097
  },
2036
2098
  previousPageUrl() {
2037
- return Or(this.links?.prev);
2099
+ return Z(this.links?.prev);
2038
2100
  },
2039
2101
  nextPageUrl() {
2040
- return Or(this.links?.next);
2102
+ return Z(this.links?.next);
2041
2103
  }
2042
2104
  }
2043
- }, Ar = {
2105
+ }, jr = {
2044
2106
  key: 0,
2045
2107
  class: "bb-dashboard-ui bb:flex bb:items-center bb:justify-between"
2046
- }, jr = { class: "bb:-mt-px bb:w-0 bb:flex-1 bb:flex" }, Mr = ["href"], Nr = {
2108
+ }, Mr = { class: "bb:-mt-px bb:w-0 bb:flex-1 bb:flex" }, Nr = ["href"], Pr = {
2047
2109
  key: 0,
2048
2110
  class: "bb:-mt-px bb:flex bb:text-gray-400 bb:text-sm bb:leading-5"
2049
- }, Pr = { class: "bb:font-medium bb:text-gray-900 bb:mx-1" }, Fr = { class: "bb:font-medium bb:text-gray-900 bb:mx-1" }, Ir = { class: "bb:-mt-px bb:w-0 bb:flex-1 bb:flex bb:justify-end" }, Lr = ["href"];
2050
- function Rr(e, t, n, c, l, u) {
2111
+ }, Fr = { class: "bb:font-medium bb:text-gray-900 bb:mx-1" }, Ir = { class: "bb:font-medium bb:text-gray-900 bb:mx-1" }, Lr = { class: "bb:-mt-px bb:w-0 bb:flex-1 bb:flex bb:justify-end" }, Rr = ["href"];
2112
+ function zr(e, t, n, c, l, u) {
2051
2113
  let f = m("arrow-narrow-left"), p = m("arrow-narrow-right");
2052
- return u.hasResults ? (d(), i("nav", Ar, [
2053
- a("div", jr, [u.previousPageUrl === null ? r("", !0) : (d(), i("a", {
2114
+ return u.hasResults ? (d(), i("nav", jr, [
2115
+ a("div", Mr, [u.previousPageUrl === null ? r("", !0) : (d(), i("a", {
2054
2116
  key: 0,
2055
2117
  href: u.previousPageUrl,
2056
2118
  class: "bb:border-t-2 bb:border-transparent bb:pt-4 bb:pr-1 bb:inline-flex bb:items-center bb:text-sm bb:font-medium bb:text-gray-500 bb:hover:text-gray-700 bb:hover:border-indigo-700",
2057
2119
  onClick: t[0] ||= (t) => e.followLink(t, u.previousPageUrl)
2058
- }, [s(f, { class: "bb:mr-3 bb:h-5 bb:w-5 bb:text-gray-400 bb:pointer-events-none bb:cursor-default" }), o(" " + g(e.texts.previousPage), 1)], 8, Mr))]),
2059
- u.hasRange ? (d(), i("div", Nr, [
2120
+ }, [s(f, { class: "bb:mr-3 bb:h-5 bb:w-5 bb:text-gray-400 bb:pointer-events-none bb:cursor-default" }), o(" " + g(e.texts.previousPage), 1)], 8, Nr))]),
2121
+ u.hasRange ? (d(), i("div", Pr, [
2060
2122
  o(g(e.texts.resultsBefore) + " ", 1),
2061
- a("span", Pr, g(u.from) + " - " + g(u.to), 1),
2123
+ a("span", Fr, g(u.from) + " - " + g(u.to), 1),
2062
2124
  o(" " + g(e.texts.resultsOf) + " ", 1),
2063
- a("span", Fr, g(u.total), 1),
2125
+ a("span", Ir, g(u.total), 1),
2064
2126
  o(" " + g(e.texts.resultsAfter), 1)
2065
2127
  ])) : r("", !0),
2066
- a("div", Ir, [u.nextPageUrl === null ? r("", !0) : (d(), i("a", {
2128
+ a("div", Lr, [u.nextPageUrl === null ? r("", !0) : (d(), i("a", {
2067
2129
  key: 0,
2068
2130
  href: u.nextPageUrl,
2069
2131
  class: "bb:border-t-2 bb:border-transparent bb:pt-4 bb:pl-1 bb:inline-flex bb:items-center bb:text-sm bb:font-medium bb:text-gray-500 bb:hover:text-gray-700 bb:hover:border-indigo-700",
2070
2132
  onClick: t[1] ||= (t) => e.followLink(t, u.nextPageUrl)
2071
- }, [o(g(e.texts.nextPage) + " ", 1), s(p, { class: "bb:ml-3 bb:h-5 bb:w-5 bb:text-gray-400 bb:pointer-events-none bb:cursor-default" })], 8, Lr))])
2133
+ }, [o(g(e.texts.nextPage) + " ", 1), s(p, { class: "bb:ml-3 bb:h-5 bb:w-5 bb:text-gray-400 bb:pointer-events-none bb:cursor-default" })], 8, Rr))])
2072
2134
  ])) : r("", !0);
2073
2135
  }
2074
- var zr = /*#__PURE__*/ A(kr, [["render", Rr]]), Br = [
2136
+ var Br = /*#__PURE__*/ A(Ar, [["render", zr]]), Vr = [
2075
2137
  "left",
2076
2138
  "center",
2077
2139
  "right"
2078
2140
  ];
2079
- function Vr(e) {
2141
+ function Hr(e) {
2080
2142
  if (typeof e != "object" || !e || typeof e.key != "string" || e.key === "") return null;
2081
2143
  let t = e.key;
2082
2144
  return {
@@ -2085,18 +2147,18 @@ function Vr(e) {
2085
2147
  value: typeof e.value == "function" ? e.value : (e) => e?.[t],
2086
2148
  secondary: typeof e.secondary == "function" ? e.secondary : null,
2087
2149
  muted: e.muted === !0,
2088
- align: Br.includes(e.align) ? e.align : "left",
2150
+ align: Vr.includes(e.align) ? e.align : "left",
2089
2151
  wrap: e.wrap === !0,
2090
2152
  narrow: e.narrow === !0,
2091
2153
  visible: e.visible !== !1
2092
2154
  };
2093
2155
  }
2094
- function Z(e) {
2156
+ function Ur(e) {
2095
2157
  return typeof e == "string" && e !== "" ? e : null;
2096
2158
  }
2097
- var Hr = {
2159
+ var Wr = {
2098
2160
  components: {
2099
- Pagination: zr,
2161
+ Pagination: Br,
2100
2162
  InfoPill: q
2101
2163
  },
2102
2164
  mixins: [M, k],
@@ -2144,7 +2206,7 @@ var Hr = {
2144
2206
  return Array.isArray(this.rows) ? this.rows : [];
2145
2207
  },
2146
2208
  visibleColumns() {
2147
- return (Array.isArray(this.columns) ? this.columns : []).map(Vr).filter((e) => e !== null && e.visible);
2209
+ return (Array.isArray(this.columns) ? this.columns : []).map(Hr).filter((e) => e !== null && e.visible);
2148
2210
  },
2149
2211
  rowStripes() {
2150
2212
  return this.normalizedRows.map((e) => this.stripeOf(e));
@@ -2163,10 +2225,10 @@ var Hr = {
2163
2225
  },
2164
2226
  badgeText() {
2165
2227
  if (this.hasRecords) {
2166
- let e = Z(this.foundText);
2228
+ let e = Ur(this.foundText);
2167
2229
  return e === null ? null : `${e}: ${this.recordCount}`;
2168
2230
  }
2169
- return Z(this.emptyText);
2231
+ return Ur(this.emptyText);
2170
2232
  }
2171
2233
  },
2172
2234
  methods: {
@@ -2193,8 +2255,8 @@ var Hr = {
2193
2255
  return n == null ? "" : String(n);
2194
2256
  }
2195
2257
  }
2196
- }, Ur = { class: "bb:min-w-full bb:divide-y bb:divide-gray-200 bb:border-collapse" }, Wr = { class: "bb:bg-gray-50" }, Gr = ["textContent"], Kr = { class: "bb:divide-y bb:divide-gray-200" }, qr = ["textContent"], Jr = ["textContent"];
2197
- function Yr(t, o, s, c, l, h) {
2258
+ }, Gr = { class: "bb:min-w-full bb:divide-y bb:divide-gray-200 bb:border-collapse" }, Kr = { class: "bb:bg-gray-50" }, qr = ["textContent"], Jr = { class: "bb:divide-y bb:divide-gray-200" }, Yr = ["textContent"], Xr = ["textContent"];
2259
+ function Zr(t, o, s, c, l, h) {
2198
2260
  let _ = m("info-pill"), v = m("pagination");
2199
2261
  return d(), i("div", null, [
2200
2262
  h.hasBadgeRow() ? (d(), i("div", {
@@ -2208,7 +2270,7 @@ function Yr(t, o, s, c, l, h) {
2208
2270
  h.normalizedRows.length > 0 ? (d(), i("div", {
2209
2271
  key: 1,
2210
2272
  class: u(h.isCard && h.hasBadgeRow() ? "bb:mt-4" : "")
2211
- }, [a("div", { class: u(["bb:overflow-x-auto", h.isCard ? "bb:border-t bb:border-gray-200" : "bb:shadow-sm bb:border-b bb:border-gray-200 bb:rounded-lg"]) }, [a("table", Ur, [a("thead", null, [a("tr", Wr, [(d(!0), i(e, null, f(h.visibleColumns, (e) => (d(), i("th", {
2273
+ }, [a("div", { class: u(["bb:overflow-x-auto", h.isCard ? "bb:border-t bb:border-gray-200" : "bb:shadow-sm bb:border-b bb:border-gray-200 bb:rounded-lg"]) }, [a("table", Gr, [a("thead", null, [a("tr", Kr, [(d(!0), i(e, null, f(h.visibleColumns, (e) => (d(), i("th", {
2212
2274
  key: e.key,
2213
2275
  scope: "col",
2214
2276
  class: u(["bb:px-6 bb:py-3 bb:text-xs bb:leading-4 bb:font-medium bb:text-gray-500 bb:uppercase bb:tracking-wider bb:whitespace-nowrap", [{
@@ -2217,7 +2279,7 @@ function Yr(t, o, s, c, l, h) {
2217
2279
  "bb:text-right": e.align === "right"
2218
2280
  }, { "bb:w-px": e.narrow }]]),
2219
2281
  textContent: g(e.label)
2220
- }, null, 10, Gr))), 128))])]), a("tbody", Kr, [(d(!0), i(e, null, f(h.normalizedRows, (n, o) => (d(), i("tr", {
2282
+ }, null, 10, qr))), 128))])]), a("tbody", Jr, [(d(!0), i(e, null, f(h.normalizedRows, (n, o) => (d(), i("tr", {
2221
2283
  key: h.keyOf(n, o),
2222
2284
  class: "bb:bg-white bb:even:bg-gray-50"
2223
2285
  }, [(d(!0), i(e, null, f(h.visibleColumns, (e, s) => (d(), i("td", {
@@ -2241,11 +2303,11 @@ function Yr(t, o, s, c, l, h) {
2241
2303
  }, () => [a("div", {
2242
2304
  class: u(["bb:font-medium", e.muted ? "bb:text-gray-400" : "bb:text-gray-900"]),
2243
2305
  textContent: g(h.textOf(e.value, n))
2244
- }, null, 10, qr), e.secondary !== null && h.textOf(e.secondary, n) !== "" ? (d(), i("div", {
2306
+ }, null, 10, Yr), e.secondary !== null && h.textOf(e.secondary, n) !== "" ? (d(), i("div", {
2245
2307
  key: 0,
2246
2308
  class: "bb:text-gray-400",
2247
2309
  textContent: g(h.textOf(e.secondary, n))
2248
- }, null, 8, Jr)) : r("", !0)])], 2))), 128))]))), 128))])])], 2)], 2)) : r("", !0),
2310
+ }, null, 8, Xr)) : r("", !0)])], 2))), 128))]))), 128))])])], 2)], 2)) : r("", !0),
2249
2311
  h.hasMeta ? (d(), n(v, {
2250
2312
  key: 2,
2251
2313
  meta: s.meta,
@@ -2260,7 +2322,7 @@ function Yr(t, o, s, c, l, h) {
2260
2322
  ])) : r("", !0)
2261
2323
  ]);
2262
2324
  }
2263
- var Xr = /*#__PURE__*/ A(Hr, [["render", Yr]]), Zr = {
2325
+ var Qr = /*#__PURE__*/ A(Wr, [["render", Zr]]), $r = {
2264
2326
  mixins: [X],
2265
2327
  props: {
2266
2328
  url: {
@@ -2276,16 +2338,16 @@ var Xr = /*#__PURE__*/ A(Hr, [["render", Yr]]), Zr = {
2276
2338
  default: !1
2277
2339
  }
2278
2340
  }
2279
- }, Qr = ["href", "textContent"];
2280
- function $r(e, t, n, r, a, o) {
2341
+ }, ei = ["href", "textContent"];
2342
+ function ti(e, t, n, r, a, o) {
2281
2343
  return d(), i("a", {
2282
2344
  href: n.url,
2283
2345
  class: u([n.isActive ? "bb:border-indigo-400 bb:text-gray-600 bb:focus:border-indigo-700" : "bb:border-transparent bb:text-gray-500 bb:hover:text-gray-600 bb:hover:border-gray-300 bb:focus:text-gray-700 bb:focus:border-gray-300", "bb-dashboard-ui bb:inline-flex bb:items-center bb:px-1 bb:pt-1 bb:border-b-2 bb:text-sm bb:font-medium bb:leading-5 bb:focus:outline-hidden bb:transition bb:duration-150 bb:ease-in-out"]),
2284
2346
  onClick: t[0] ||= (t) => e.followLink(t, n.url),
2285
2347
  textContent: g(n.name)
2286
- }, null, 10, Qr);
2348
+ }, null, 10, ei);
2287
2349
  }
2288
- var ei = /*#__PURE__*/ A(Zr, [["render", $r]]), ti = {
2350
+ var ni = /*#__PURE__*/ A($r, [["render", ti]]), ri = {
2289
2351
  mixins: [M, X],
2290
2352
  props: {
2291
2353
  tabs: {
@@ -2300,13 +2362,13 @@ var ei = /*#__PURE__*/ A(Zr, [["render", $r]]), ti = {
2300
2362
  computed: { tabList() {
2301
2363
  return Array.isArray(this.tabs) ? this.tabs.filter((e) => typeof e == "object" && !!e) : [];
2302
2364
  } }
2303
- }, ni = ["aria-label"], ri = [
2365
+ }, ii = ["aria-label"], ai = [
2304
2366
  "href",
2305
2367
  "aria-current",
2306
2368
  "onClick",
2307
2369
  "textContent"
2308
2370
  ];
2309
- function ii(t, n, r, a, o, s) {
2371
+ function oi(t, n, r, a, o, s) {
2310
2372
  return d(), i("nav", {
2311
2373
  class: "bb-dashboard-ui bb:flex bb:space-x-4",
2312
2374
  "aria-label": t.texts.tabs
@@ -2317,13 +2379,13 @@ function ii(t, n, r, a, o, s) {
2317
2379
  class: u(["bb:px-3 bb:py-2 bb:font-medium bb:text-sm bb:rounded-md", e.key === r.activeKey ? "bb:bg-indigo-100 bb:text-gray-700" : "bb:text-gray-500 bb:hover:text-gray-700"]),
2318
2380
  onClick: (n) => t.followLink(n, e.url),
2319
2381
  textContent: g(e.name)
2320
- }, null, 10, ri))), 128))], 8, ni);
2382
+ }, null, 10, ai))), 128))], 8, ii);
2321
2383
  }
2322
- var ai = /*#__PURE__*/ A(ti, [["render", ii]]), oi = [
2384
+ var si = /*#__PURE__*/ A(ri, [["render", oi]]), ci = [
2323
2385
  "xl",
2324
2386
  "4xl",
2325
2387
  "7xl"
2326
- ], si = {
2388
+ ], li = {
2327
2389
  components: { CrossButton: N },
2328
2390
  mixins: [M],
2329
2391
  inheritAttrs: !1,
@@ -2331,7 +2393,7 @@ var ai = /*#__PURE__*/ A(ti, [["render", ii]]), oi = [
2331
2393
  width: {
2332
2394
  type: String,
2333
2395
  default: "xl",
2334
- validator: (e) => oi.includes(e)
2396
+ validator: (e) => ci.includes(e)
2335
2397
  },
2336
2398
  fallbackUrl: {
2337
2399
  type: String,
@@ -2347,7 +2409,7 @@ var ai = /*#__PURE__*/ A(ti, [["render", ii]]), oi = [
2347
2409
  },
2348
2410
  computed: {
2349
2411
  resolvedWidth() {
2350
- return oi.includes(this.width) ? this.width : "xl";
2412
+ return ci.includes(this.width) ? this.width : "xl";
2351
2413
  },
2352
2414
  windows() {
2353
2415
  return this.uiSettings.windows;
@@ -2394,7 +2456,7 @@ var ai = /*#__PURE__*/ A(ti, [["render", ii]]), oi = [
2394
2456
  }
2395
2457
  }
2396
2458
  };
2397
- function ci(e, t, a, s, c, f) {
2459
+ function ui(e, t, a, s, c, f) {
2398
2460
  let h = m("cross-button");
2399
2461
  return d(), i("div", l({
2400
2462
  class: ["bb:box-border bb:relative bb:my-6 bb:mx-auto bb:bg-white bb:shadow-xl bb:rounded-lg", [
@@ -2426,7 +2488,7 @@ function ci(e, t, a, s, c, f) {
2426
2488
  _: 1
2427
2489
  }, 8, ["class", "onClicked"])) : r("", !0)], 16);
2428
2490
  }
2429
- var li = /*#__PURE__*/ A(si, [["render", ci]]), ui = {}, di = {
2491
+ var di = /*#__PURE__*/ A(li, [["render", ui]]), fi = {}, pi = {
2430
2492
  class: "bb:h-7 bb:w-7 bb:text-green-600",
2431
2493
  xmlns: "http://www.w3.org/2000/svg",
2432
2494
  fill: "none",
@@ -2435,22 +2497,22 @@ var li = /*#__PURE__*/ A(si, [["render", ci]]), ui = {}, di = {
2435
2497
  stroke: "currentColor",
2436
2498
  "aria-hidden": "true"
2437
2499
  };
2438
- function fi(e, t, n, r, o, s) {
2439
- return d(), i("svg", di, [...t[0] ||= [a("path", {
2500
+ function mi(e, t, n, r, o, s) {
2501
+ return d(), i("svg", pi, [...t[0] ||= [a("path", {
2440
2502
  "stroke-linecap": "round",
2441
2503
  "stroke-linejoin": "round",
2442
2504
  d: "M9 12.75 11.25 15 15 9.75M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z"
2443
2505
  }, null, -1)]]);
2444
2506
  }
2445
- var pi = /*#__PURE__*/ A(ui, [["render", fi]]), mi = {}, hi = {
2507
+ var hi = /*#__PURE__*/ A(fi, [["render", mi]]), gi = {}, _i = {
2446
2508
  class: "bb:h-5 bb:w-5",
2447
2509
  xmlns: "http://www.w3.org/2000/svg",
2448
2510
  viewBox: "0 0 20 20",
2449
2511
  fill: "currentColor",
2450
2512
  "aria-hidden": "true"
2451
2513
  };
2452
- function gi(e, t, n, r, o, s) {
2453
- return d(), i("svg", hi, [...t[0] ||= [a("path", {
2514
+ function vi(e, t, n, r, o, s) {
2515
+ return d(), i("svg", _i, [...t[0] ||= [a("path", {
2454
2516
  "fill-rule": "evenodd",
2455
2517
  d: "M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z",
2456
2518
  "clip-rule": "evenodd"
@@ -2458,12 +2520,12 @@ function gi(e, t, n, r, o, s) {
2458
2520
  }
2459
2521
  //#endregion
2460
2522
  //#region src/components/NotificationMessage.vue
2461
- var _i = {
2523
+ var yi = {
2462
2524
  components: {
2463
- Check: pi,
2464
- Close: /* @__PURE__ */ A(mi, [["render", gi]]),
2465
- Dangerous: J,
2466
- Warning: Y
2525
+ Check: hi,
2526
+ Close: /* @__PURE__ */ A(gi, [["render", vi]]),
2527
+ Dangerous: Y,
2528
+ Warning: Hn
2467
2529
  },
2468
2530
  mixins: [M],
2469
2531
  emits: ["update:modelValue"],
@@ -2503,8 +2565,8 @@ var _i = {
2503
2565
  return this.type === "confirmation";
2504
2566
  }
2505
2567
  }
2506
- }, vi = ["role"], yi = { class: "bb:p-4" }, bi = { class: "bb:flex bb:items-start" }, xi = { class: "bb:shrink-0" }, Si = { class: "bb:ml-3 bb:w-0 bb:flex-1 bb:pt-0.5" }, Ci = { class: "bb:text-sm bb:font-medium bb:text-gray-900" }, wi = { class: "bb:mt-1 bb:text-sm bb:text-gray-500" }, Ti = { class: "bb:ml-4 bb:shrink-0 bb:flex" }, Ei = { class: "bb:sr-only bb:pointer-events-none bb:cursor-default" };
2507
- function Di(e, t, o, c, l, f) {
2568
+ }, bi = ["role"], xi = { class: "bb:p-4" }, Si = { class: "bb:flex bb:items-start" }, Ci = { class: "bb:shrink-0" }, wi = { class: "bb:ml-3 bb:w-0 bb:flex-1 bb:pt-0.5" }, Ti = { class: "bb:text-sm bb:font-medium bb:text-gray-900" }, Ei = { class: "bb:mt-1 bb:text-sm bb:text-gray-500" }, Di = { class: "bb:ml-4 bb:shrink-0 bb:flex" }, Oi = { class: "bb:sr-only bb:pointer-events-none bb:cursor-default" };
2569
+ function ki(e, t, o, c, l, f) {
2508
2570
  let p = m("warning"), h = m("dangerous"), _ = m("check"), v = m("close");
2509
2571
  return d(), i("div", {
2510
2572
  class: "bb-dashboard-ui bb:fixed bb:inset-0 bb:flex bb:items-start bb:justify-end bb:p-6 bb:pointer-events-none",
@@ -2516,14 +2578,14 @@ function Di(e, t, o, c, l, f) {
2516
2578
  "bb:bg-yellow-50": f.isWarning,
2517
2579
  "bb:bg-gray-50": f.isConfirmation
2518
2580
  }])
2519
- }, [a("div", yi, [a("div", bi, [
2520
- a("div", xi, [
2581
+ }, [a("div", xi, [a("div", Si, [
2582
+ a("div", Ci, [
2521
2583
  f.isWarning ? (d(), n(p, { key: 0 })) : r("", !0),
2522
2584
  f.isDangerous ? (d(), n(h, { key: 1 })) : r("", !0),
2523
2585
  f.isConfirmation ? (d(), n(_, { key: 2 })) : r("", !0)
2524
2586
  ]),
2525
- a("div", Si, [a("p", Ci, g(o.notificationHeading), 1), a("p", wi, g(f.text), 1)]),
2526
- a("div", Ti, [a("button", {
2587
+ a("div", wi, [a("p", Ti, g(o.notificationHeading), 1), a("p", Ei, g(f.text), 1)]),
2588
+ a("div", Di, [a("button", {
2527
2589
  type: "button",
2528
2590
  class: u(["bb:rounded-md bb:inline-flex bb:text-gray-400 bb:hover:text-gray-500 bb:focus:outline-hidden bb:focus:ring-2 bb:focus:ring-offset-2 bb:focus:ring-indigo-500", {
2529
2591
  "bb:bg-red-50": f.isDangerous,
@@ -2531,10 +2593,10 @@ function Di(e, t, o, c, l, f) {
2531
2593
  "bb:bg-gray-50": f.isConfirmation
2532
2594
  }]),
2533
2595
  onClick: t[0] ||= S((t) => e.$emit("update:modelValue", ""), ["prevent"])
2534
- }, [a("span", Ei, g(e.texts.close), 1), s(v, { class: "bb:pointer-events-none bb:cursor-default" })], 2)])
2535
- ])])], 2)) : r("", !0)], 8, vi);
2596
+ }, [a("span", Oi, g(e.texts.close), 1), s(v, { class: "bb:pointer-events-none bb:cursor-default" })], 2)])
2597
+ ])])], 2)) : r("", !0)], 8, bi);
2536
2598
  }
2537
- var Oi = /*#__PURE__*/ A(_i, [["render", Di]]), ki = {}, Ai = {
2599
+ var Ai = /*#__PURE__*/ A(yi, [["render", ki]]), ji = {}, Mi = {
2538
2600
  class: "bb:h-5 bb:w-5",
2539
2601
  xmlns: "http://www.w3.org/2000/svg",
2540
2602
  fill: "none",
@@ -2543,8 +2605,8 @@ var Oi = /*#__PURE__*/ A(_i, [["render", Di]]), ki = {}, Ai = {
2543
2605
  "stroke-width": "2",
2544
2606
  "aria-hidden": "true"
2545
2607
  };
2546
- function ji(e, t, n, r, o, s) {
2547
- return d(), i("svg", Ai, [...t[0] ||= [a("path", {
2608
+ function Ni(e, t, n, r, o, s) {
2609
+ return d(), i("svg", Mi, [...t[0] ||= [a("path", {
2548
2610
  "stroke-linecap": "round",
2549
2611
  "stroke-linejoin": "round",
2550
2612
  d: "M15 12a3 3 0 11-6 0 3 3 0 016 0z"
@@ -2554,10 +2616,10 @@ function ji(e, t, n, r, o, s) {
2554
2616
  d: "M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"
2555
2617
  }, null, -1)]]);
2556
2618
  }
2557
- var Mi = /*#__PURE__*/ A(ki, [["render", ji]]), Q = 0, $ = null, Ni = {
2619
+ var Pi = /*#__PURE__*/ A(ji, [["render", Ni]]), Q = 0, $ = null, Fi = {
2558
2620
  components: {
2559
2621
  PopoverPanel: H,
2560
- Eye: Mi
2622
+ Eye: Pi
2561
2623
  },
2562
2624
  mixins: [M],
2563
2625
  emits: ["update:modelValue"],
@@ -2602,8 +2664,8 @@ var Mi = /*#__PURE__*/ A(ki, [["render", ji]]), Q = 0, $ = null, Ni = {
2602
2664
  this.holdsPageSelectionLock && (this.holdsPageSelectionLock = !1, --Q, Q === 0 && (Object.assign(document.documentElement.style, $), $ = null));
2603
2665
  }
2604
2666
  }
2605
- }, Pi = ["id", "popovertarget"], Fi = { class: "bb:sr-only bb:pointer-events-none bb:cursor-default" };
2606
- function Ii(e, t, r, i, c, l) {
2667
+ }, Ii = ["id", "popovertarget"], Li = { class: "bb:sr-only bb:pointer-events-none bb:cursor-default" };
2668
+ function Ri(e, t, r, i, c, l) {
2607
2669
  let u = m("eye"), f = m("popover-panel");
2608
2670
  return d(), n(f, {
2609
2671
  class: "bb-dashboard-ui bb:inline-flex",
@@ -2623,7 +2685,7 @@ function Ii(e, t, r, i, c, l) {
2623
2685
  id: t.id,
2624
2686
  popovertarget: t.popovertarget,
2625
2687
  class: "bb:relative bb:text-gray-400 bb:hover:text-gray-600 bb:rounded-md bb:focus:outline-hidden bb:focus-visible:ring-2 bb:focus-visible:ring-indigo-500"
2626
- }, [a("span", Fi, g(e.texts.showText), 1), s(u, { class: "bb:pointer-events-none bb:cursor-default" })], 8, Pi)]),
2688
+ }, [a("span", Li, g(e.texts.showText), 1), s(u, { class: "bb:pointer-events-none bb:cursor-default" })], 8, Ii)]),
2627
2689
  default: b(() => [o(g(l.normalizedText), 1)]),
2628
2690
  _: 1
2629
2691
  }, 8, [
@@ -2633,6 +2695,6 @@ function Ii(e, t, r, i, c, l) {
2633
2695
  "onToggle"
2634
2696
  ]);
2635
2697
  }
2636
- var Li = /*#__PURE__*/ A(Ni, [["render", Ii]]);
2698
+ var zi = /*#__PURE__*/ A(Fi, [["render", Ri]]);
2637
2699
  //#endregion
2638
- export { On as ActionPill, Xn as ConfirmationModal, Xr as DataTable, Oe as Dot, mr as DropdownButtonWithAction, un as ErrorMessages, yr as HamburgerMenu, q as InfoPill, ei as NavigationMenuElement, Oi as NotificationMessage, li as PageCard, ai as PageTabs, Ze as RussianMobileFilter, it as Search, Ft as SelectDateInterval, $t as SelectSingle, Li as TextPopover, ve as dashboardUi, Se as downloadFile };
2700
+ export { On as ActionPill, Qn as ConfirmationModal, Qr as DataTable, Oe as Dot, gr as DropdownButtonWithAction, un as ErrorMessages, xr as HamburgerMenu, q as InfoPill, ni as NavigationMenuElement, Ai as NotificationMessage, di as PageCard, si as PageTabs, Ze as RussianMobileFilter, it as Search, Ft as SelectDateInterval, $t as SelectSingle, zi as TextPopover, ve as dashboardUi, Se as downloadFile };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@boobooking/dashboard-ui-components",
3
- "version": "0.17.0",
3
+ "version": "0.17.1",
4
4
  "description": "Компоненты дашборда на Vue 3",
5
5
  "keywords": [
6
6
  "vue",