morya-ui 0.5.0 → 0.5.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 (86) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/dist/{Input-D2bee2LU.js → Input-BErawS7K.js} +1 -5
  3. package/dist/{Pagination-DpNOb0CS.js → Pagination-B8WYoL2a.js} +1 -1
  4. package/dist/{Popover-Bnz7KNZq.js → Popover-zQChu00_.js} +6 -1
  5. package/dist/{Select-q4X2ff_M.js → Select-BaFKBeIh.js} +2 -2
  6. package/dist/{Textarea-DsFOAtPd.js → Textarea-WCEgpzbq.js} +1 -5
  7. package/dist/calendar/index.js +1 -1
  8. package/dist/color-picker/index.js +4 -4
  9. package/dist/command-menu/index.js +73 -66
  10. package/dist/components/ColorPicker/ColorPicker.vue.d.ts +1 -1
  11. package/dist/components/ColorPicker/types.d.ts +1 -1
  12. package/dist/components/ColorPicker/types.d.ts.map +1 -1
  13. package/dist/components/CommandMenu/CommandMenu.vue.d.ts.map +1 -1
  14. package/dist/components/ContextMenu/ContextMenuNodes.vue.d.ts.map +1 -1
  15. package/dist/components/Dock/Dock.vue.d.ts.map +1 -1
  16. package/dist/components/Dropdown/DropdownNodes.vue.d.ts.map +1 -1
  17. package/dist/components/Input/Input.vue.d.ts +0 -1
  18. package/dist/components/Input/Input.vue.d.ts.map +1 -1
  19. package/dist/components/Input/types.d.ts +0 -2
  20. package/dist/components/Input/types.d.ts.map +1 -1
  21. package/dist/components/InputPassword/InputPassword.vue.d.ts +0 -1
  22. package/dist/components/InputPassword/InputPassword.vue.d.ts.map +1 -1
  23. package/dist/components/InputPassword/types.d.ts +0 -2
  24. package/dist/components/InputPassword/types.d.ts.map +1 -1
  25. package/dist/components/MegaMenu/MegaMenu.vue.d.ts.map +1 -1
  26. package/dist/components/Mentions/Mentions.vue.d.ts +0 -1
  27. package/dist/components/Mentions/Mentions.vue.d.ts.map +1 -1
  28. package/dist/components/Mentions/types.d.ts +0 -2
  29. package/dist/components/Mentions/types.d.ts.map +1 -1
  30. package/dist/components/Menu/Menu.vue.d.ts.map +1 -1
  31. package/dist/components/Menu/MenuNodes.vue.d.ts.map +1 -1
  32. package/dist/components/Menu/styles.css +45 -3
  33. package/dist/components/Menu/types.d.ts +3 -1
  34. package/dist/components/Menu/types.d.ts.map +1 -1
  35. package/dist/components/Menubar/Menubar.vue.d.ts +2 -2
  36. package/dist/components/Menubar/Menubar.vue.d.ts.map +1 -1
  37. package/dist/components/Popover/Popover.vue.d.ts.map +1 -1
  38. package/dist/components/Rating/Rating.vue.d.ts +1 -1
  39. package/dist/components/Rating/types.d.ts +2 -2
  40. package/dist/components/Rating/types.d.ts.map +1 -1
  41. package/dist/components/Select/Select.vue.d.ts +1 -1
  42. package/dist/components/Select/types.d.ts +1 -1
  43. package/dist/components/Select/types.d.ts.map +1 -1
  44. package/dist/components/Sidebar/Sidebar.vue.d.ts.map +1 -1
  45. package/dist/components/SpeedDial/SpeedDial.vue.d.ts +3 -3
  46. package/dist/components/SpeedDial/SpeedDial.vue.d.ts.map +1 -1
  47. package/dist/components/SplitButton/SplitButton.vue.d.ts.map +1 -1
  48. package/dist/components/Textarea/Textarea.vue.d.ts +0 -1
  49. package/dist/components/Textarea/Textarea.vue.d.ts.map +1 -1
  50. package/dist/components/Textarea/types.d.ts +0 -2
  51. package/dist/components/Textarea/types.d.ts.map +1 -1
  52. package/dist/components/Tooltip/styles.css +15 -2
  53. package/dist/context-menu/index.js +92 -84
  54. package/dist/data-view/index.js +1 -1
  55. package/dist/dock/index.js +21 -18
  56. package/dist/dropdown/index.js +103 -95
  57. package/dist/{icon-H8prbteT.js → icon-CUrSaD8r.js} +4 -1
  58. package/dist/index.js +3464 -3391
  59. package/dist/input/index.js +1 -1
  60. package/dist/input-password/index.js +1 -5
  61. package/dist/list/index.js +1 -1
  62. package/dist/mega-menu/index.js +94 -87
  63. package/dist/mentions/index.js +35 -39
  64. package/dist/menu/index.js +235 -213
  65. package/dist/menu/style.css +60 -5
  66. package/dist/menubar/index.js +106 -98
  67. package/dist/pagination/index.js +1 -1
  68. package/dist/popover/index.js +1 -1
  69. package/dist/rating/index.js +2 -2
  70. package/dist/select/index.js +1 -1
  71. package/dist/shared/menu/icon.d.ts +3 -0
  72. package/dist/shared/menu/icon.d.ts.map +1 -1
  73. package/dist/shared/menu/index.d.ts +2 -2
  74. package/dist/shared/menu/index.d.ts.map +1 -1
  75. package/dist/shared/menu/types.d.ts +3 -1
  76. package/dist/shared/menu/types.d.ts.map +1 -1
  77. package/dist/sidebar/index.js +37 -29
  78. package/dist/speed-dial/index.js +101 -94
  79. package/dist/split-button/index.js +3 -3
  80. package/dist/styles.css +1 -1
  81. package/dist/table/index.js +3 -3
  82. package/dist/textarea/index.js +1 -1
  83. package/dist/toggle-button/index.js +1 -1
  84. package/dist/tooltip/style.css +15 -2
  85. package/dist/typography/index.js +1 -1
  86. package/package.json +1 -1
@@ -1488,11 +1488,21 @@
1488
1488
  padding: var(--m-space-2) var(--m-space-3);
1489
1489
  pointer-events: none;
1490
1490
  position: absolute;
1491
- transform: translateX(-50%);
1492
1491
  white-space: nowrap;
1493
1492
  z-index: var(--m-z-popper);
1494
1493
  }
1495
1494
 
1495
+ /*
1496
+ * Static centering transforms only apply to in-place (non-teleported) tips.
1497
+ * Teleported tips get viewport coords plus the inline `translate` property
1498
+ * from JS, and a static transform here would stack with it (double offset).
1499
+ * Keeping the transforms off `.m-tooltip__content--teleported` also lets
1500
+ * transition presets that animate `transform` (e.g. scale-fade) win.
1501
+ */
1502
+ .m-tooltip__content:not(.m-tooltip__content--teleported) {
1503
+ transform: translateX(-50%);
1504
+ }
1505
+
1496
1506
  .m-tooltip__content--top {
1497
1507
  bottom: calc(100% + var(--m-space-2));
1498
1508
  }
@@ -1505,12 +1515,15 @@
1505
1515
  left: auto;
1506
1516
  right: calc(100% + var(--m-space-2));
1507
1517
  top: 50%;
1508
- transform: translateY(-50%);
1509
1518
  }
1510
1519
 
1511
1520
  .m-tooltip__content--right {
1512
1521
  left: calc(100% + var(--m-space-2));
1513
1522
  top: 50%;
1523
+ }
1524
+
1525
+ .m-tooltip__content--left:not(.m-tooltip__content--teleported),
1526
+ .m-tooltip__content--right:not(.m-tooltip__content--teleported) {
1514
1527
  transform: translateY(-50%);
1515
1528
  }
1516
1529
 
@@ -1593,7 +1606,8 @@
1593
1606
 
1594
1607
  .m-menu--popup {
1595
1608
  --m-menu-popup-max-height: min(18rem, 45vh);
1596
- box-shadow: var(--m-shadow-md);
1609
+ border-color: color-mix(in srgb, var(--m-color-border) 85%, transparent);
1610
+ box-shadow: var(--m-shadow-lg);
1597
1611
  display: flex;
1598
1612
  flex-direction: column;
1599
1613
  max-height: var(--m-menu-popup-max-height);
@@ -1607,6 +1621,13 @@
1607
1621
  z-index: var(--m-z-popper);
1608
1622
  }
1609
1623
 
1624
+ /* Open-state affordance on the slotted trigger (button stays "pressed"). */
1625
+ .m-menu-popup--open .m-menu-popup__anchor > .m-button,
1626
+ .m-menu-popup[data-open='true'] .m-menu-popup__anchor > .m-button {
1627
+ border-color: color-mix(in srgb, var(--m-color-primary) 45%, var(--m-color-border));
1628
+ color: var(--m-color-primary);
1629
+ }
1630
+
1610
1631
  .m-menu--popup .m-menu__scroll {
1611
1632
  max-height: 100%;
1612
1633
  min-height: 0;
@@ -1678,7 +1699,7 @@
1678
1699
  .m-menu--horizontal .m-menu__item-content {
1679
1700
  align-items: center;
1680
1701
  border-bottom: none;
1681
- border-radius: var(--m-radius-control);
1702
+ border-radius: var(--m-radius-control) var(--m-radius-control) 0 0;
1682
1703
  font-weight: 500;
1683
1704
  height: var(--m-menu-horizontal-height);
1684
1705
  padding-inline: var(--m-space-3);
@@ -1686,11 +1707,36 @@
1686
1707
  }
1687
1708
 
1688
1709
  .m-menu--horizontal .m-menu__item-content::before {
1689
- border-radius: var(--m-radius-control);
1710
+ border-radius: var(--m-radius-control) var(--m-radius-control) 0 0;
1690
1711
  display: block;
1691
1712
  inset: 0;
1692
1713
  }
1693
1714
 
1715
+ /* Bottom indicator: the signature affordance of a horizontal nav */
1716
+ .m-menu--horizontal .m-menu__item-content::after {
1717
+ background: var(--m-menu-item-text-active);
1718
+ border-radius: 999px;
1719
+ bottom: 0;
1720
+ content: "";
1721
+ height: 2px;
1722
+ left: 50%;
1723
+ pointer-events: none;
1724
+ position: absolute;
1725
+ transform: translateX(-50%) scaleX(0.3);
1726
+ opacity: 0;
1727
+ transition:
1728
+ opacity var(--m-motion-fast) var(--m-motion-ease),
1729
+ transform var(--m-motion-fast) var(--m-motion-ease);
1730
+ width: calc(100% - 2 * var(--m-space-3));
1731
+ z-index: 2;
1732
+ }
1733
+
1734
+ .m-menu--horizontal .m-menu__item-content--selected::after,
1735
+ .m-menu--horizontal .m-menu__item-content--child-active::after {
1736
+ opacity: 1;
1737
+ transform: translateX(-50%) scaleX(1);
1738
+ }
1739
+
1694
1740
  .m-menu--horizontal .m-menu__item-content--selected::before,
1695
1741
  .m-menu--horizontal .m-menu__item-content--child-active::before {
1696
1742
  background: var(--m-menu-item-color-active) !important;
@@ -1708,6 +1754,15 @@
1708
1754
  color: var(--m-menu-item-text-active);
1709
1755
  }
1710
1756
 
1757
+ .m-menu--horizontal .m-menu__item-content--selected .m-menu__label {
1758
+ font-weight: 600;
1759
+ }
1760
+
1761
+ [data-m-motion="reduced"] .m-menu--horizontal .m-menu__item-content::after,
1762
+ [data-m-motion="none"] .m-menu--horizontal .m-menu__item-content::after {
1763
+ transition: none;
1764
+ }
1765
+
1711
1766
  .m-menu--horizontal .m-menu__arrow {
1712
1767
  margin-inline-start: var(--m-space-1);
1713
1768
  }
@@ -6,42 +6,42 @@ import { t as ne } from "../useMotionTransition-DohkfWRB.js";
6
6
  import { t as r } from "../Icon-CmHjx7W8.js";
7
7
  import { t as re } from "../Scrollbar-DTeJ8P5b.js";
8
8
  import { t as i } from "../useMenuKeyboard-BedmYE4W.js";
9
- import { t as ie } from "../icon-H8prbteT.js";
10
- import { l as ae } from "../config-Cd20zAyW.js";
11
- import { n as oe } from "../locale-BcxMPufl.js";
9
+ import { n as ie, t as ae } from "../icon-CUrSaD8r.js";
10
+ import { l as oe } from "../config-Cd20zAyW.js";
11
+ import { n as se } from "../locale-BcxMPufl.js";
12
12
  import "./style.js";
13
- import { Fragment as a, Teleport as se, Transition as ce, computed as o, createBlock as le, createCommentVNode as s, createElementBlock as c, createElementVNode as ue, createTextVNode as l, createVNode as u, defineComponent as d, mergeProps as de, nextTick as f, normalizeClass as p, normalizeStyle as fe, onBeforeUnmount as m, onMounted as pe, openBlock as h, ref as g, renderList as _, renderSlot as v, toDisplayString as y, unref as b, useAttrs as me, watch as x, withCtx as S, withModifiers as C } from "vue";
13
+ import { Fragment as a, Teleport as ce, Transition as le, computed as o, createBlock as s, createCommentVNode as c, createElementBlock as l, createElementVNode as ue, createTextVNode as u, createVNode as d, defineComponent as f, mergeProps as de, nextTick as p, normalizeClass as m, normalizeStyle as fe, onBeforeUnmount as pe, onMounted as me, openBlock as h, ref as g, renderList as _, renderSlot as v, resolveDynamicComponent as y, toDisplayString as b, unref as x, useAttrs as he, watch as S, withCtx as C, withModifiers as w } from "vue";
14
14
  //#region src/components/Menubar/Menubar.vue?vue&type=script&setup=true&lang.ts
15
- var he = ["aria-label"], ge = {
15
+ var ge = ["aria-label"], _e = {
16
16
  key: 0,
17
17
  class: "m-menubar__start"
18
- }, _e = [
18
+ }, ve = [
19
19
  "disabled",
20
20
  "tabindex",
21
21
  "aria-expanded",
22
22
  "aria-haspopup",
23
23
  "onClick",
24
24
  "onFocus"
25
- ], ve = {
25
+ ], ye = {
26
26
  key: 0,
27
27
  class: "m-menubar__icon",
28
28
  "aria-hidden": "true"
29
- }, ye = {
29
+ }, be = {
30
30
  key: 1,
31
31
  class: "m-menubar__caret",
32
32
  "aria-hidden": "true"
33
- }, w = [
33
+ }, xe = [
34
34
  "disabled",
35
35
  "tabindex",
36
36
  "onClick"
37
- ], be = {
37
+ ], T = {
38
38
  key: 0,
39
39
  class: "m-menubar__icon",
40
40
  "aria-hidden": "true"
41
- }, xe = {
41
+ }, Se = {
42
42
  key: 1,
43
43
  class: "m-menubar__end"
44
- }, T = /* @__PURE__ */ d({
44
+ }, E = /* @__PURE__ */ f({
45
45
  inheritAttrs: !1,
46
46
  __name: "Menubar",
47
47
  props: {
@@ -59,97 +59,103 @@ var he = ["aria-label"], ge = {
59
59
  }
60
60
  },
61
61
  emits: ["update:selectedKey", "select"],
62
- setup(d, { emit: T }) {
63
- let E = d, D = T, Se = me(), { rootAttrs: O } = e(Se, () => E.pt), k = ae(), { transitionName: A, transitionCss: j } = ne({
62
+ setup(f, { emit: E }) {
63
+ let D = f, O = E, Ce = he(), { rootAttrs: we } = e(Ce, () => D.pt), k = oe(), { transitionName: Te, transitionCss: Ee } = ne({
64
64
  role: "popup",
65
- local: () => E.transition,
65
+ local: () => D.transition,
66
66
  componentName: "Menubar",
67
67
  fallback: "scale-fade"
68
- }), Ce = oe(), M = g(null), N = g(null), P = g([]), F = g({}), I = o(() => t(E, k.value.appendTo)), L = o(() => n(E, k.value.appendTo));
69
- function we(e, t) {
70
- P.value[t] = e instanceof HTMLElement ? e : null;
68
+ }), De = se(), A = g(null), j = g(null), M = g([]), N = g({}), P = o(() => t(D, k.value.appendTo)), F = o(() => n(D, k.value.appendTo));
69
+ function Oe(e, t) {
70
+ M.value[t] = e instanceof HTMLElement ? e : null;
71
71
  }
72
- function R() {
73
- if (!L.value || M.value == null) return;
74
- let e = P.value[M.value];
72
+ function I() {
73
+ if (!F.value || A.value == null) return;
74
+ let e = M.value[A.value];
75
75
  if (!e) return;
76
76
  let t = e.getBoundingClientRect();
77
- F.value = ee(t, "bottom-start", {
77
+ N.value = ee(t, "bottom-start", {
78
78
  gap: 4,
79
79
  minWidth: "var(--m-overlay-menu-min-width, 12rem)"
80
80
  });
81
81
  }
82
- function z(e) {
82
+ function L(e) {
83
83
  return e.key ?? e.label;
84
84
  }
85
+ function R(e) {
86
+ return !!(D.selectedKey && L(e) === D.selectedKey);
87
+ }
88
+ function z(e) {
89
+ return typeof e.icon == "string" ? ae(e.icon) : void 0;
90
+ }
85
91
  function B(e) {
86
- return !!(E.selectedKey && z(e) === E.selectedKey);
92
+ return ie(e.icon);
87
93
  }
88
94
  function V(e) {
89
- return ie(e.icon);
95
+ return !!(z(e) || B(e));
90
96
  }
91
97
  function H(e) {
92
- e.disabled || (e.command?.(), D("update:selectedKey", z(e)), D("select", e));
98
+ e.disabled || (e.command?.(), O("update:selectedKey", L(e)), O("select", e));
93
99
  }
94
100
  function U(e, t) {
95
101
  if (!t.disabled) {
96
102
  if (G.setActive(e), !t.items?.length) {
97
- H(t), M.value = null;
103
+ H(t), A.value = null;
98
104
  return;
99
105
  }
100
- M.value = M.value === e ? null : e, M.value != null && f(() => R());
106
+ A.value = A.value === e ? null : e, A.value != null && p(() => I());
101
107
  }
102
108
  }
103
- let W = o(() => M.value == null ? [] : E.model[M.value]?.items ?? []), G = i({
104
- itemCount: () => E.model.length,
105
- isItemDisabled: (e) => !!E.model[e]?.disabled,
109
+ let W = o(() => A.value == null ? [] : D.model[A.value]?.items ?? []), G = i({
110
+ itemCount: () => D.model.length,
111
+ isItemDisabled: (e) => !!D.model[e]?.disabled,
106
112
  orientation: "horizontal",
107
113
  initialActiveIndex: 0,
108
114
  onActivate: (e) => {
109
- let t = E.model[e];
115
+ let t = D.model[e];
110
116
  t && U(e, t);
111
117
  }
112
118
  }), K = i({
113
119
  itemCount: () => W.value.length,
114
120
  isItemDisabled: (e) => !!W.value[e]?.disabled,
115
- enabled: () => M.value != null,
121
+ enabled: () => A.value != null,
116
122
  onActivate: (e) => {
117
123
  let t = W.value[e];
118
124
  t && Q(t);
119
125
  }
120
126
  });
121
127
  function q(e) {
122
- P.value[e]?.focus({ preventScroll: !0 });
128
+ M.value[e]?.focus({ preventScroll: !0 });
123
129
  }
124
- function Te() {
125
- return N.value?.querySelector(".m-menubar__submenu") || document.querySelector(".m-menubar__submenu--teleported");
130
+ function ke() {
131
+ return j.value?.querySelector(".m-menubar__submenu") || document.querySelector(".m-menubar__submenu--teleported");
126
132
  }
127
133
  function J() {
128
134
  let e = K.activeIndex.value;
129
- e < 0 || Te()?.querySelectorAll(".m-menubar__subitem")[e]?.focus({ preventScroll: !0 });
135
+ e < 0 || ke()?.querySelectorAll(".m-menubar__subitem")[e]?.focus({ preventScroll: !0 });
130
136
  }
131
137
  function Y(e = !1) {
132
- let t = M.value;
133
- M.value = null, K.reset(), e && t != null && q(t);
138
+ let t = A.value;
139
+ A.value = null, K.reset(), e && t != null && q(t);
134
140
  }
135
141
  function X(e, t = !1) {
136
- M.value = e, G.setActive(e), f(() => {
137
- R(), t && (K.moveFirst(), J());
142
+ A.value = e, G.setActive(e), p(() => {
143
+ I(), t && (K.moveFirst(), J());
138
144
  });
139
145
  }
140
146
  function Z(e) {
141
147
  G.move(e);
142
- let t = G.activeIndex.value, n = E.model[t];
143
- M.value != null && (n?.items?.length ? X(t, !0) : Y()), q(t);
148
+ let t = G.activeIndex.value, n = D.model[t];
149
+ A.value != null && (n?.items?.length ? X(t, !0) : Y()), q(t);
144
150
  }
145
- function Ee(e) {
151
+ function Ae(e) {
146
152
  if (e.key === "Escape") {
147
- M.value != null && (e.preventDefault(), Y(!0));
153
+ A.value != null && (e.preventDefault(), Y(!0));
148
154
  return;
149
155
  }
150
156
  if (e.key === "ArrowDown" || e.key === "ArrowUp") {
151
157
  e.preventDefault();
152
- let t = G.activeIndex.value, n = E.model[t];
158
+ let t = G.activeIndex.value, n = D.model[t];
153
159
  n?.items?.length && !n.disabled && X(t, !0);
154
160
  return;
155
161
  }
@@ -159,7 +165,7 @@ var he = ["aria-label"], ge = {
159
165
  }
160
166
  G.onKeydown(e);
161
167
  }
162
- function De(e) {
168
+ function je(e) {
163
169
  if (e.stopPropagation(), e.key === "Escape") {
164
170
  e.preventDefault(), Y(!0);
165
171
  return;
@@ -173,93 +179,95 @@ var he = ["aria-label"], ge = {
173
179
  function Q(e) {
174
180
  H(e), Y(!0);
175
181
  }
176
- x(G.activeIndex, (e) => {
177
- e >= 0 && M.value == null && q(e);
178
- }), x(K.activeIndex, () => {
179
- M.value != null && J();
182
+ S(G.activeIndex, (e) => {
183
+ e >= 0 && A.value == null && q(e);
184
+ }), S(K.activeIndex, () => {
185
+ A.value != null && J();
180
186
  });
181
187
  function $(e) {
182
188
  let t = e.target;
183
- N.value?.contains(t) || document.querySelector(".m-menubar__submenu--teleported")?.contains(t) || Y();
189
+ j.value?.contains(t) || document.querySelector(".m-menubar__submenu--teleported")?.contains(t) || Y();
184
190
  }
185
- function Oe() {
186
- M.value != null && R();
191
+ function Me() {
192
+ A.value != null && I();
187
193
  }
188
- return te(() => M.value != null && L.value, Oe), pe(() => document.addEventListener("click", $)), m(() => {
194
+ return te(() => A.value != null && F.value, Me), me(() => document.addEventListener("click", $)), pe(() => {
189
195
  document.removeEventListener("click", $);
190
- }), (e, t) => (h(), c("nav", de(b(O), {
196
+ }), (e, t) => (h(), l("nav", de(x(we), {
191
197
  ref_key: "root",
192
- ref: N,
198
+ ref: j,
193
199
  class: "m-menubar",
194
- "aria-label": b(Ce).menubar,
195
- onKeydown: Ee
200
+ "aria-label": x(De).menubar,
201
+ onKeydown: Ae
196
202
  }), [
197
- e.$slots.start ? (h(), c("div", ge, [v(e.$slots, "start")])) : s("", !0),
198
- (h(!0), c(a, null, _(d.model, (e, t) => (h(), c("div", {
203
+ e.$slots.start ? (h(), l("div", _e, [v(e.$slots, "start")])) : c("", !0),
204
+ (h(!0), l(a, null, _(f.model, (e, t) => (h(), l("div", {
199
205
  key: `${e.label}-${t}`,
200
- class: p(["m-menubar__item", {
201
- "m-menubar__item--open": M.value === t,
202
- "m-menubar__item--selected": B(e)
206
+ class: m(["m-menubar__item", {
207
+ "m-menubar__item--open": A.value === t,
208
+ "m-menubar__item--selected": R(e)
203
209
  }])
204
210
  }, [ue("button", {
205
211
  ref_for: !0,
206
- ref: (e) => we(e, t),
212
+ ref: (e) => Oe(e, t),
207
213
  type: "button",
208
- class: p(["m-menubar__trigger", { "m-menubar__trigger--selected": B(e) }]),
214
+ class: m(["m-menubar__trigger", { "m-menubar__trigger--selected": R(e) }]),
209
215
  disabled: e.disabled,
210
- tabindex: b(G).tabindexFor(t),
211
- "aria-expanded": e.items?.length ? M.value === t : void 0,
216
+ tabindex: x(G).tabindexFor(t),
217
+ "aria-expanded": e.items?.length ? A.value === t : void 0,
212
218
  "aria-haspopup": e.items?.length ? "menu" : void 0,
213
- onClick: C((n) => U(t, e), ["stop"]),
214
- onFocus: (e) => b(G).setActive(t)
219
+ onClick: w((n) => U(t, e), ["stop"]),
220
+ onFocus: (e) => x(G).setActive(t)
215
221
  }, [
216
- V(e) ? (h(), c("span", ve, [u(r, {
217
- name: V(e),
222
+ V(e) ? (h(), l("span", ye, [z(e) ? (h(), s(r, {
223
+ key: 0,
224
+ name: z(e),
218
225
  size: "sm"
219
- }, null, 8, ["name"])])) : s("", !0),
220
- l(" " + y(e.label) + " ", 1),
221
- e.items?.length ? (h(), c("span", ye, [u(r, {
226
+ }, null, 8, ["name"])) : B(e) ? (h(), s(y(B(e)), { key: 1 })) : c("", !0)])) : c("", !0),
227
+ u(" " + b(e.label) + " ", 1),
228
+ e.items?.length ? (h(), l("span", be, [d(r, {
222
229
  name: "chevron-down",
223
230
  size: "sm"
224
- })])) : s("", !0)
225
- ], 42, _e), (h(), le(se, {
226
- to: I.value.to,
227
- disabled: I.value.disabled
228
- }, [u(ce, {
229
- name: b(A),
230
- css: b(j)
231
+ })])) : c("", !0)
232
+ ], 42, ve), (h(), s(ce, {
233
+ to: P.value.to,
234
+ disabled: P.value.disabled
235
+ }, [d(le, {
236
+ name: x(Te),
237
+ css: x(Ee)
231
238
  }, {
232
- default: S(() => [e.items?.length && M.value === t ? (h(), c("div", {
239
+ default: C(() => [e.items?.length && A.value === t ? (h(), l("div", {
233
240
  key: 0,
234
- class: p(["m-menubar__submenu", { "m-menubar__submenu--teleported": L.value }]),
235
- style: fe(L.value ? F.value : void 0),
241
+ class: m(["m-menubar__submenu", { "m-menubar__submenu--teleported": F.value }]),
242
+ style: fe(F.value ? N.value : void 0),
236
243
  role: "menu",
237
- onKeydown: De
238
- }, [u(re, {
244
+ onKeydown: je
245
+ }, [d(re, {
239
246
  class: "m-menubar__submenu-scroll",
240
247
  "fit-content": "",
241
248
  "wrap-class": "m-menubar__submenu-wrap",
242
249
  "view-class": "m-menubar__submenu-view"
243
250
  }, {
244
- default: S(() => [(h(!0), c(a, null, _(e.items, (e, t) => (h(), c("button", {
251
+ default: C(() => [(h(!0), l(a, null, _(e.items, (e, t) => (h(), l("button", {
245
252
  key: `${e.label}-${t}`,
246
253
  type: "button",
247
- class: p(["m-menubar__subitem", { "m-menubar__subitem--selected": B(e) }]),
254
+ class: m(["m-menubar__subitem", { "m-menubar__subitem--selected": R(e) }]),
248
255
  role: "menuitem",
249
256
  disabled: e.disabled,
250
- tabindex: b(K).tabindexFor(t),
251
- onClick: C((t) => Q(e), ["stop"])
252
- }, [V(e) ? (h(), c("span", be, [u(r, {
253
- name: V(e),
257
+ tabindex: x(K).tabindexFor(t),
258
+ onClick: w((t) => Q(e), ["stop"])
259
+ }, [V(e) ? (h(), l("span", T, [z(e) ? (h(), s(r, {
260
+ key: 0,
261
+ name: z(e),
254
262
  size: "sm"
255
- }, null, 8, ["name"])])) : s("", !0), l(" " + y(e.label), 1)], 10, w))), 128))]),
263
+ }, null, 8, ["name"])) : B(e) ? (h(), s(y(B(e)), { key: 1 })) : c("", !0)])) : c("", !0), u(" " + b(e.label), 1)], 10, xe))), 128))]),
256
264
  _: 2
257
- }, 1024)], 38)) : s("", !0)]),
265
+ }, 1024)], 38)) : c("", !0)]),
258
266
  _: 2
259
267
  }, 1032, ["name", "css"])], 8, ["to", "disabled"]))], 2))), 128)),
260
- e.$slots.end ? (h(), c("div", xe, [v(e.$slots, "end")])) : s("", !0)
261
- ], 16, he));
268
+ e.$slots.end ? (h(), l("div", Se, [v(e.$slots, "end")])) : c("", !0)
269
+ ], 16, ge));
262
270
  }
263
271
  });
264
272
  //#endregion
265
- export { T as MMenubar };
273
+ export { E as MMenubar };
@@ -1,3 +1,3 @@
1
- import { t as e } from "../Pagination-DpNOb0CS.js";
1
+ import { t as e } from "../Pagination-B8WYoL2a.js";
2
2
  import "./style.js";
3
3
  export { e as MPagination };
@@ -1,3 +1,3 @@
1
- import { t as e } from "../Popover-Bnz7KNZq.js";
1
+ import { t as e } from "../Popover-zQChu00_.js";
2
2
  import "./style.js";
3
3
  export { e as MPopover };
@@ -54,7 +54,7 @@ var S = ["id"], C = [
54
54
  type: Boolean,
55
55
  default: void 0
56
56
  },
57
- allowClear: {
57
+ clearable: {
58
58
  type: [Boolean, null],
59
59
  default: null
60
60
  },
@@ -67,7 +67,7 @@ var S = ["id"], C = [
67
67
  },
68
68
  emits: ["update:modelValue"],
69
69
  setup(p, { emit: k }) {
70
- let A = p, j = k, M = x(), { rootAttrs: N, controlAttrs: P } = e(M, () => A.pt, { controlKey: "control" }), F = a(), I = i("Rating", () => A.size), L = n("m-rating"), { isInvalid: R, feedbackText: z, feedbackIsError: B } = t(A), V = c(() => A.allowClear ?? A.cancel ?? !0), H = c(() => A.ariaLabel ?? A.label ?? F.value.rating), U = c(() => o(F.value.star, { value: A.modelValue ?? 0 })), W = c(() => Array.from({ length: Math.max(1, A.stars) }, (e, t) => t + 1)), G = c(() => [
70
+ let A = p, j = k, M = x(), { rootAttrs: N, controlAttrs: P } = e(M, () => A.pt, { controlKey: "control" }), F = a(), I = i("Rating", () => A.size), L = n("m-rating"), { isInvalid: R, feedbackText: z, feedbackIsError: B } = t(A), V = c(() => A.clearable ?? A.cancel ?? !0), H = c(() => A.ariaLabel ?? A.label ?? F.value.rating), U = c(() => o(F.value.star, { value: A.modelValue ?? 0 })), W = c(() => Array.from({ length: Math.max(1, A.stars) }, (e, t) => t + 1)), G = c(() => [
71
71
  "m-rating",
72
72
  `m-rating--${I.value}`,
73
73
  {
@@ -1,3 +1,3 @@
1
- import { t as e } from "../Select-q4X2ff_M.js";
1
+ import { t as e } from "../Select-BaFKBeIh.js";
2
2
  import "./style.js";
3
3
  export { e as MSelect };
@@ -1,4 +1,7 @@
1
+ import { Component } from 'vue';
1
2
  import { IconName } from '../../components/Icon/types';
2
3
  /** Resolve a menu item icon string to a registered IconName, if applicable. */
3
4
  export declare function resolveMenuIcon(icon?: string): IconName | undefined;
5
+ /** Resolve a menu item icon to a custom component, if applicable. */
6
+ export declare function resolveMenuIconComponent(icon?: string | Component): Component | undefined;
4
7
  //# sourceMappingURL=icon.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"icon.d.ts","sourceRoot":"","sources":["../../../src/shared/menu/icon.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAA;AAgB3D,+EAA+E;AAC/E,wBAAgB,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAInE"}
1
+ {"version":3,"file":"icon.d.ts","sourceRoot":"","sources":["../../../src/shared/menu/icon.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,KAAK,CAAA;AACpC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAA;AAgB3D,+EAA+E;AAC/E,wBAAgB,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAInE;AAED,qEAAqE;AACrE,wBAAgB,wBAAwB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAGzF"}
@@ -1,7 +1,7 @@
1
- export { resolveMenuIcon } from './icon';
2
- export { menuNodeKey } from './key';
3
1
  export { flattenVisibleMenuEntries, mergeExpandedKeysForSelection, resolveInitialExpandedKeys, toggleExpandedKeys, } from './expand';
4
2
  export type { FlatMenuEntry, InitialExpandedKeysOptions } from './expand';
3
+ export { resolveMenuIcon, resolveMenuIconComponent } from './icon';
4
+ export { menuNodeKey } from './key';
5
5
  export { collectExpandableKeys, collectTopLevelKeys, findMenuKeyPath, menuHasDescendantKey, resolveMenuItemKey, } from './tree';
6
6
  export type { MenuNodeBase } from './types';
7
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/shared/menu/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAA;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AACnC,OAAO,EACL,yBAAyB,EACzB,6BAA6B,EAC7B,0BAA0B,EAC1B,kBAAkB,GACnB,MAAM,UAAU,CAAA;AACjB,YAAY,EAAE,aAAa,EAAE,0BAA0B,EAAE,MAAM,UAAU,CAAA;AACzE,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,eAAe,EACf,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,QAAQ,CAAA;AACf,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/shared/menu/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yBAAyB,EACzB,6BAA6B,EAC7B,0BAA0B,EAC1B,kBAAkB,GACnB,MAAM,UAAU,CAAA;AACjB,YAAY,EAAE,aAAa,EAAE,0BAA0B,EAAE,MAAM,UAAU,CAAA;AACzE,OAAO,EAAE,eAAe,EAAE,wBAAwB,EAAE,MAAM,QAAQ,CAAA;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AACnC,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,eAAe,EACf,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,QAAQ,CAAA;AACf,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA"}
@@ -1,9 +1,11 @@
1
+ import { Component } from 'vue';
1
2
  /** Shared fields across Menu / Dropdown / ContextMenu item models. */
2
3
  export interface MenuNodeBase {
3
4
  key?: string;
4
5
  label?: string;
5
6
  value?: string;
6
- icon?: string;
7
+ /** Built-in icon name, alias, or custom Vue component. */
8
+ icon?: string | Component;
7
9
  disabled?: boolean;
8
10
  separator?: boolean;
9
11
  shortcut?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/shared/menu/types.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,MAAM,WAAW,YAAY;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,KAAK,CAAC,EAAE,YAAY,EAAE,CAAA;CACvB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/shared/menu/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,KAAK,CAAA;AAEpC,sEAAsE;AACtE,MAAM,WAAW,YAAY;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,0DAA0D;IAC1D,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,KAAK,CAAC,EAAE,YAAY,EAAE,CAAA;CACvB"}