@m3ui-vue/m3ui-vue 0.3.1 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{MMenuItem-C6RwHl-l.js → MMenuItem-FyttjOj_.js} +399 -207
- package/dist/MMenuItem-FyttjOj_.js.map +1 -0
- package/dist/components/MAutocomplete.vue.d.ts +2 -0
- package/dist/components/MBox.vue.d.ts +2 -2
- package/dist/components/MButton.vue.d.ts +4 -0
- package/dist/components/MButtonGroup.vue.d.ts +28 -0
- package/dist/components/MCarousel.vue.d.ts +21 -12
- package/dist/components/MColorPickerModal.vue.d.ts +18 -0
- package/dist/components/MDataTable.vue.d.ts +1 -1
- package/dist/components/MDatePickerModal.vue.d.ts +21 -0
- package/dist/components/MDateRangePickerModal.vue.d.ts +24 -0
- package/dist/components/MDialog.vue.d.ts +9 -1
- package/dist/components/MExpansionPanel.vue.d.ts +3 -2
- package/dist/components/MFab.vue.d.ts +14 -2
- package/dist/components/MFlex.vue.d.ts +2 -2
- package/dist/components/MIconButton.vue.d.ts +4 -2
- package/dist/components/MInfiniteScroll.vue.d.ts +1 -1
- package/dist/components/MList.vue.d.ts +2 -0
- package/dist/components/MLoadingOverlay.vue.d.ts +1 -1
- package/dist/components/MMenu.vue.d.ts +3 -1
- package/dist/components/MMenuItem.vue.d.ts +14 -3
- package/dist/components/MMultiAutocomplete.vue.d.ts +2 -0
- package/dist/components/MMultiSelect.vue.d.ts +2 -0
- package/dist/components/MNavigationDrawer.vue.d.ts +1 -1
- package/dist/components/MNotificationHost.vue.d.ts +3 -0
- package/dist/components/MSelect.vue.d.ts +2 -0
- package/dist/components/MSlider.vue.d.ts +15 -4
- package/dist/components/MSplitButton.vue.d.ts +39 -0
- package/dist/components/MSplitter.vue.d.ts +1 -1
- package/dist/components/MStack.vue.d.ts +2 -2
- package/dist/components/MTable.vue.d.ts +1 -1
- package/dist/components/MTimePickerModal.vue.d.ts +21 -0
- package/dist/components/MToolbar.vue.d.ts +30 -0
- package/dist/components/MTooltip.vue.d.ts +8 -2
- package/dist/components/MWindow.vue.d.ts +2 -2
- package/dist/composables/useDevice.d.ts +3 -0
- package/dist/composables/useNotification.d.ts +64 -0
- package/dist/composables/useToast.d.ts +8 -0
- package/dist/index.d.ts +12 -0
- package/dist/m3ui-vue.css +1 -1
- package/dist/m3ui.js +5220 -2994
- package/dist/m3ui.js.map +1 -1
- package/dist/rich-text-editor.js +10 -10
- package/dist/styles.css +1 -1
- package/package.json +1 -1
- package/src/components/MAutocomplete.vue +108 -13
- package/src/components/MButton.vue +38 -16
- package/src/components/MButtonGroup.vue +158 -0
- package/src/components/MCarousel.vue +223 -101
- package/src/components/MColorPicker.vue +1 -4
- package/src/components/MColorPickerModal.vue +276 -0
- package/src/components/MDatePicker.vue +1 -4
- package/src/components/MDatePickerModal.vue +265 -0
- package/src/components/MDateRangePicker.vue +1 -4
- package/src/components/MDateRangePickerModal.vue +264 -0
- package/src/components/MDialog.vue +38 -1
- package/src/components/MExpansionPanel.vue +10 -32
- package/src/components/MFab.vue +92 -11
- package/src/components/MIconButton.vue +36 -6
- package/src/components/MList.vue +6 -3
- package/src/components/MListItem.vue +9 -3
- package/src/components/MMenu.vue +10 -5
- package/src/components/MMenuItem.vue +93 -10
- package/src/components/MMultiAutocomplete.vue +104 -10
- package/src/components/MMultiSelect.vue +106 -13
- package/src/components/MNotificationHost.vue +163 -0
- package/src/components/MSelect.vue +99 -16
- package/src/components/MSlider.vue +367 -134
- package/src/components/MSnackbar.vue +3 -0
- package/src/components/MSplitButton.vue +240 -0
- package/src/components/MTabs.vue +82 -39
- package/src/components/MTagInput.vue +11 -1
- package/src/components/MTimePicker.vue +1 -4
- package/src/components/MTimePickerModal.vue +458 -0
- package/src/components/MToolbar.vue +75 -0
- package/src/components/MTooltip.vue +60 -10
- package/src/components/_MContextMenuPanel.vue +2 -2
- package/src/composables/useDevice.ts +29 -0
- package/src/composables/useNotification.ts +93 -0
- package/src/composables/useToast.ts +42 -5
- package/src/index.ts +12 -0
- package/dist/MMenuItem-C6RwHl-l.js.map +0 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { t as e } from "./MIcon-CaEooCmZ.js";
|
|
2
2
|
import { t } from "./_plugin-vue_export-helper-B3ysoDQm.js";
|
|
3
|
-
import { Fragment as n, Teleport as r, Transition as i, computed as a, createBlock as o, createCommentVNode as s, createElementBlock as c, createElementVNode as l, createTextVNode as u, createVNode as d, defineComponent as f, inject as p, normalizeClass as m, normalizeStyle as h, onBeforeUnmount as g, onMounted as _, onUnmounted as v, openBlock as y,
|
|
3
|
+
import { Fragment as n, Teleport as r, Transition as i, computed as a, createBlock as o, createCommentVNode as s, createElementBlock as c, createElementVNode as l, createTextVNode as u, createVNode as d, defineComponent as f, inject as p, normalizeClass as m, normalizeStyle as h, onBeforeUnmount as g, onMounted as _, onUnmounted as v, openBlock as y, provide as b, ref as x, renderSlot as S, resolveDynamicComponent as C, toDisplayString as w, unref as T, useId as E, useSlots as D, watch as O, withCtx as k, withModifiers as A } from "vue";
|
|
4
4
|
//#region src/composables/useLocale.ts
|
|
5
|
-
var
|
|
5
|
+
var j = {
|
|
6
6
|
search: "Search...",
|
|
7
7
|
noResults: "No results",
|
|
8
8
|
close: "Close",
|
|
@@ -71,17 +71,74 @@ var A = {
|
|
|
71
71
|
insertImage: "Insert image",
|
|
72
72
|
imageUrlLabel: "Image URL",
|
|
73
73
|
insert: "Insert"
|
|
74
|
-
},
|
|
75
|
-
function
|
|
76
|
-
let e = p(
|
|
74
|
+
}, M = Symbol("m3-locale");
|
|
75
|
+
function N() {
|
|
76
|
+
let e = p(M, {});
|
|
77
77
|
return {
|
|
78
|
-
...
|
|
78
|
+
...j,
|
|
79
79
|
...e
|
|
80
80
|
};
|
|
81
81
|
}
|
|
82
82
|
//#endregion
|
|
83
|
-
//#region src/
|
|
84
|
-
var
|
|
83
|
+
//#region src/components/MSpinner.vue?vue&type=script&setup=true&lang.ts
|
|
84
|
+
var P = ["aria-label"], F = {
|
|
85
|
+
key: 0,
|
|
86
|
+
class: "block h-full w-full animate-spin rounded-full border-2 border-current border-t-transparent"
|
|
87
|
+
}, I = [
|
|
88
|
+
"width",
|
|
89
|
+
"height",
|
|
90
|
+
"viewBox"
|
|
91
|
+
], L = ["d", "stroke-dasharray"], R = 3, z = 9, B = /* @__PURE__ */ f({
|
|
92
|
+
__name: "MSpinner",
|
|
93
|
+
props: {
|
|
94
|
+
size: { default: 20 },
|
|
95
|
+
wavy: {
|
|
96
|
+
type: Boolean,
|
|
97
|
+
default: !1
|
|
98
|
+
},
|
|
99
|
+
label: {}
|
|
100
|
+
},
|
|
101
|
+
setup(e) {
|
|
102
|
+
let t = e, n = N(), r = a(() => (t.size / 2 - 1 - R / 2) / 1.25), i = a(() => t.size / 2), o = a(() => {
|
|
103
|
+
let e = i.value, t = r.value, n = t * .08, a = z * 24, o = [], s = 0, c = 0, l = 0;
|
|
104
|
+
for (let r = 0; r <= a; r++) {
|
|
105
|
+
let i = 2 * Math.PI * r / a - Math.PI / 2, u = t + n * Math.sin(z * i), d = e + u * Math.cos(i), f = e + u * Math.sin(i);
|
|
106
|
+
r > 0 && (s += Math.sqrt((d - c) ** 2 + (f - l) ** 2)), o.push(`${r === 0 ? "M" : "L"}${d.toFixed(2)},${f.toFixed(2)}`), c = d, l = f;
|
|
107
|
+
}
|
|
108
|
+
let u = s * .58, d = s - u, f = `${u.toFixed(1)} ${d.toFixed(1)}`;
|
|
109
|
+
return {
|
|
110
|
+
path: o.join("") + "Z",
|
|
111
|
+
dash: f,
|
|
112
|
+
len: s.toFixed(1)
|
|
113
|
+
};
|
|
114
|
+
});
|
|
115
|
+
return (t, r) => (y(), c("span", {
|
|
116
|
+
class: "inline-flex shrink-0 items-center justify-center",
|
|
117
|
+
style: h({
|
|
118
|
+
width: `${e.size}px`,
|
|
119
|
+
height: `${e.size}px`
|
|
120
|
+
}),
|
|
121
|
+
role: "status",
|
|
122
|
+
"aria-label": e.label ?? T(n).loading
|
|
123
|
+
}, [e.wavy ? (y(), c("svg", {
|
|
124
|
+
key: 1,
|
|
125
|
+
width: e.size,
|
|
126
|
+
height: e.size,
|
|
127
|
+
viewBox: `0 0 ${e.size} ${e.size}`,
|
|
128
|
+
fill: "none",
|
|
129
|
+
class: "animate-[m3-wavy-spin_2.8s_linear_infinite]",
|
|
130
|
+
style: h(`transform-origin: ${i.value}px ${i.value}px`)
|
|
131
|
+
}, [l("path", {
|
|
132
|
+
d: o.value.path,
|
|
133
|
+
stroke: "currentColor",
|
|
134
|
+
"stroke-width": R,
|
|
135
|
+
"stroke-linecap": "round",
|
|
136
|
+
"stroke-dasharray": o.value.dash,
|
|
137
|
+
class: "animate-[m3-wavy-travel_2s_linear_infinite]",
|
|
138
|
+
style: h({ "--m3-wave-len": o.value.len })
|
|
139
|
+
}, null, 12, L)], 12, I)) : (y(), c("span", F))], 12, P));
|
|
140
|
+
}
|
|
141
|
+
}), V = [
|
|
85
142
|
"bg-surface-container-highest",
|
|
86
143
|
"bg-surface-container-high",
|
|
87
144
|
"bg-surface-container-low",
|
|
@@ -102,11 +159,11 @@ var N = [
|
|
|
102
159
|
"bg-tertiary",
|
|
103
160
|
"bg-error"
|
|
104
161
|
];
|
|
105
|
-
function
|
|
106
|
-
for (let t of
|
|
162
|
+
function H(e) {
|
|
163
|
+
for (let t of V) if (e.classList.contains(t)) return `var(--color-${t.slice(3)})`;
|
|
107
164
|
return null;
|
|
108
165
|
}
|
|
109
|
-
function
|
|
166
|
+
function U(e) {
|
|
110
167
|
if (!e || e === "transparent") return !0;
|
|
111
168
|
let t = e.match(/^rgba?\(([^)]+)\)$/);
|
|
112
169
|
if (t) {
|
|
@@ -115,15 +172,15 @@ function F(e) {
|
|
|
115
172
|
}
|
|
116
173
|
return !1;
|
|
117
174
|
}
|
|
118
|
-
function
|
|
119
|
-
let n =
|
|
175
|
+
function W(e, t) {
|
|
176
|
+
let n = x("var(--color-surface)");
|
|
120
177
|
function r(r) {
|
|
121
178
|
n.value = r, e.value?.style.setProperty("--field-bg", t() ?? r);
|
|
122
179
|
}
|
|
123
180
|
function i() {
|
|
124
181
|
let t = e.value?.parentElement ?? null;
|
|
125
182
|
for (; t;) {
|
|
126
|
-
let e =
|
|
183
|
+
let e = H(t);
|
|
127
184
|
if (e) {
|
|
128
185
|
r(e);
|
|
129
186
|
return;
|
|
@@ -133,7 +190,7 @@ function I(e, t) {
|
|
|
133
190
|
return;
|
|
134
191
|
}
|
|
135
192
|
let n = getComputedStyle(t).backgroundColor;
|
|
136
|
-
if (!
|
|
193
|
+
if (!U(n)) {
|
|
137
194
|
r(n);
|
|
138
195
|
return;
|
|
139
196
|
}
|
|
@@ -154,65 +211,92 @@ function I(e, t) {
|
|
|
154
211
|
}), g(() => o?.disconnect()), { resolvedFieldBg: a(() => t() ?? n.value) };
|
|
155
212
|
}
|
|
156
213
|
//#endregion
|
|
157
|
-
//#region src/components/
|
|
158
|
-
var
|
|
159
|
-
|
|
160
|
-
class: "block h-full w-full animate-spin rounded-full border-2 border-current border-t-transparent"
|
|
161
|
-
}, z = [
|
|
162
|
-
"width",
|
|
163
|
-
"height",
|
|
164
|
-
"viewBox"
|
|
165
|
-
], B = ["d", "stroke-dasharray"], V = 3, H = 9, U = /* @__PURE__ */ f({
|
|
166
|
-
__name: "MSpinner",
|
|
214
|
+
//#region src/components/MIconButton.vue?vue&type=script&setup=true&lang.ts
|
|
215
|
+
var G = "inline-flex shrink-0 items-center justify-center transition-colors duration-150 cursor-pointer disabled:cursor-not-allowed disabled:opacity-[0.38]", K = /* @__PURE__ */ f({
|
|
216
|
+
__name: "MIconButton",
|
|
167
217
|
props: {
|
|
168
|
-
|
|
169
|
-
|
|
218
|
+
icon: {},
|
|
219
|
+
label: {},
|
|
220
|
+
variant: { default: "standard" },
|
|
221
|
+
shape: { default: "rounded" },
|
|
222
|
+
size: { default: "sm" },
|
|
223
|
+
disabled: {
|
|
170
224
|
type: Boolean,
|
|
171
225
|
default: !1
|
|
172
226
|
},
|
|
173
|
-
|
|
227
|
+
to: {}
|
|
174
228
|
},
|
|
175
|
-
setup(
|
|
176
|
-
let
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
229
|
+
setup(t) {
|
|
230
|
+
let n = t, r = a(() => n.to ? "RouterLink" : "button"), i = {
|
|
231
|
+
xs: {
|
|
232
|
+
px: 32,
|
|
233
|
+
icon: 16
|
|
234
|
+
},
|
|
235
|
+
sm: {
|
|
236
|
+
px: 40,
|
|
237
|
+
icon: 20
|
|
238
|
+
},
|
|
239
|
+
md: {
|
|
240
|
+
px: 48,
|
|
241
|
+
icon: 24
|
|
242
|
+
},
|
|
243
|
+
lg: {
|
|
244
|
+
px: 56,
|
|
245
|
+
icon: 28
|
|
246
|
+
},
|
|
247
|
+
xl: {
|
|
248
|
+
px: 64,
|
|
249
|
+
icon: 32
|
|
250
|
+
}
|
|
251
|
+
}, s = a(() => typeof n.size == "number" ? {
|
|
252
|
+
px: n.size,
|
|
253
|
+
icon: Math.round(n.size * .55)
|
|
254
|
+
} : i[n.size] ?? i.sm), c = a(() => n.shape === "squared" ? "rounded-md" : "rounded-full");
|
|
255
|
+
function l(e) {
|
|
256
|
+
if (n.disabled) return;
|
|
257
|
+
let t = e.currentTarget, r = t.getBoundingClientRect(), i = Math.max(r.width, r.height) * 2, a = document.createElement("span");
|
|
258
|
+
a.className = "m3-ripple", a.style.cssText = `width:${i}px;height:${i}px;top:${e.clientY - r.top - i / 2}px;left:${e.clientX - r.left - i / 2}px`, t.appendChild(a), a.addEventListener("animationend", () => a.remove(), { once: !0 });
|
|
259
|
+
}
|
|
260
|
+
let u = a(() => {
|
|
261
|
+
switch (n.variant) {
|
|
262
|
+
case "filled": return "bg-primary text-on-primary hover:shadow-elevation-1";
|
|
263
|
+
case "tonal": return "bg-secondary-container text-on-secondary-container hover:shadow-elevation-1";
|
|
264
|
+
case "outlined": return "border border-outline text-on-surface-variant hover:bg-on-surface/8";
|
|
265
|
+
default: return "text-on-surface-variant hover:bg-on-surface/8 active:bg-on-surface/12";
|
|
181
266
|
}
|
|
182
|
-
let u = s * .58, d = s - u, f = `${u.toFixed(1)} ${d.toFixed(1)}`;
|
|
183
|
-
return {
|
|
184
|
-
path: o.join("") + "Z",
|
|
185
|
-
dash: f,
|
|
186
|
-
len: s.toFixed(1)
|
|
187
|
-
};
|
|
188
267
|
});
|
|
189
|
-
return (
|
|
190
|
-
|
|
268
|
+
return (n, i) => (y(), o(C(r.value), {
|
|
269
|
+
to: t.to || void 0,
|
|
270
|
+
type: t.to ? void 0 : "button",
|
|
271
|
+
"aria-label": t.label || void 0,
|
|
272
|
+
disabled: t.disabled,
|
|
273
|
+
class: m([
|
|
274
|
+
G,
|
|
275
|
+
c.value,
|
|
276
|
+
u.value,
|
|
277
|
+
"relative overflow-hidden"
|
|
278
|
+
]),
|
|
191
279
|
style: h({
|
|
192
|
-
width: `${
|
|
193
|
-
height: `${
|
|
280
|
+
width: `${s.value.px}px`,
|
|
281
|
+
height: `${s.value.px}px`
|
|
194
282
|
}),
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
"
|
|
209
|
-
|
|
210
|
-
"stroke-dasharray": o.value.dash,
|
|
211
|
-
class: "animate-[m3-wavy-travel_2s_linear_infinite]",
|
|
212
|
-
style: h({ "--m3-wave-len": o.value.len })
|
|
213
|
-
}, null, 12, B)], 12, z)) : (y(), c("span", R))], 12, L));
|
|
283
|
+
onPointerdown: l
|
|
284
|
+
}, {
|
|
285
|
+
default: k(() => [d(e, {
|
|
286
|
+
name: t.icon,
|
|
287
|
+
size: s.value.icon
|
|
288
|
+
}, null, 8, ["name", "size"])]),
|
|
289
|
+
_: 1
|
|
290
|
+
}, 40, [
|
|
291
|
+
"to",
|
|
292
|
+
"type",
|
|
293
|
+
"aria-label",
|
|
294
|
+
"disabled",
|
|
295
|
+
"class",
|
|
296
|
+
"style"
|
|
297
|
+
]));
|
|
214
298
|
}
|
|
215
|
-
}),
|
|
299
|
+
}), q = "relative inline-flex items-center justify-center gap-2 font-medium whitespace-nowrap overflow-hidden transition-[box-shadow,background-color,color] duration-150 select-none cursor-pointer disabled:cursor-not-allowed disabled:opacity-[0.38] disabled:shadow-none before:content-[''] before:pointer-events-none before:absolute before:inset-0 before:bg-current before:opacity-0 before:transition-opacity before:duration-150 enabled:hover:before:opacity-[0.08] enabled:active:before:opacity-[0.12]", J = /* @__PURE__ */ f({
|
|
216
300
|
__name: "MButton",
|
|
217
301
|
props: {
|
|
218
302
|
variant: { default: "filled" },
|
|
@@ -227,6 +311,8 @@ var L = ["aria-label"], R = {
|
|
|
227
311
|
default: !1
|
|
228
312
|
},
|
|
229
313
|
icon: {},
|
|
314
|
+
size: { default: "sm" },
|
|
315
|
+
shape: { default: "rounded" },
|
|
230
316
|
to: {}
|
|
231
317
|
},
|
|
232
318
|
setup(t) {
|
|
@@ -237,38 +323,90 @@ var L = ["aria-label"], R = {
|
|
|
237
323
|
"--color-primary-container": r.color + "33",
|
|
238
324
|
"--color-on-primary-container": r.color
|
|
239
325
|
};
|
|
240
|
-
}), u = a(() => r.color === "error"), d = a(() => {
|
|
326
|
+
}), u = a(() => r.color === "error"), d = a(() => r.shape === "squared" ? "rounded-md" : "rounded-full"), f = {
|
|
327
|
+
xs: {
|
|
328
|
+
h: "h-8",
|
|
329
|
+
text: "text-label-medium",
|
|
330
|
+
icon: 16,
|
|
331
|
+
spinner: 14,
|
|
332
|
+
px: "px-4",
|
|
333
|
+
pxIcon: "pl-3 pr-4",
|
|
334
|
+
pxText: "px-2"
|
|
335
|
+
},
|
|
336
|
+
sm: {
|
|
337
|
+
h: "h-10",
|
|
338
|
+
text: "text-label-large",
|
|
339
|
+
icon: 20,
|
|
340
|
+
spinner: 16,
|
|
341
|
+
px: "px-6",
|
|
342
|
+
pxIcon: "pl-4 pr-6",
|
|
343
|
+
pxText: "px-3"
|
|
344
|
+
},
|
|
345
|
+
md: {
|
|
346
|
+
h: "h-14",
|
|
347
|
+
text: "text-title-medium",
|
|
348
|
+
icon: 20,
|
|
349
|
+
spinner: 18,
|
|
350
|
+
px: "px-6",
|
|
351
|
+
pxIcon: "pl-5 pr-6",
|
|
352
|
+
pxText: "px-3"
|
|
353
|
+
},
|
|
354
|
+
lg: {
|
|
355
|
+
h: "h-16",
|
|
356
|
+
text: "text-title-large",
|
|
357
|
+
icon: 22,
|
|
358
|
+
spinner: 20,
|
|
359
|
+
px: "px-7",
|
|
360
|
+
pxIcon: "pl-6 pr-7",
|
|
361
|
+
pxText: "px-4"
|
|
362
|
+
},
|
|
363
|
+
xl: {
|
|
364
|
+
h: "h-20",
|
|
365
|
+
text: "text-headline-small",
|
|
366
|
+
icon: 24,
|
|
367
|
+
spinner: 22,
|
|
368
|
+
px: "px-8",
|
|
369
|
+
pxIcon: "pl-7 pr-8",
|
|
370
|
+
pxText: "px-4"
|
|
371
|
+
}
|
|
372
|
+
}, p = a(() => f[r.size] ?? f.sm), g = a(() => `${p.value.h} ${p.value.text}`), _ = a(() => p.value.icon), v = a(() => p.value.spinner), b = a(() => r.variant === "text" ? p.value.pxText : r.icon || r.loading ? p.value.pxIcon : p.value.px), x = a(() => {
|
|
241
373
|
let e = u.value;
|
|
242
374
|
switch (r.variant) {
|
|
243
|
-
case "filled": return e ? "
|
|
244
|
-
case "tonal": return e ? "
|
|
245
|
-
case "elevated": return e ? "
|
|
246
|
-
case "outlined": return e ? "
|
|
247
|
-
case "text": return e ? "
|
|
375
|
+
case "filled": return e ? "bg-error text-on-error enabled:hover:shadow-elevation-1 enabled:active:shadow-none" : "bg-primary text-on-primary enabled:hover:shadow-elevation-1 enabled:active:shadow-none";
|
|
376
|
+
case "tonal": return e ? "bg-error-container text-on-error-container enabled:hover:shadow-elevation-1 enabled:active:shadow-none" : "bg-secondary-container text-on-secondary-container enabled:hover:shadow-elevation-1 enabled:active:shadow-none";
|
|
377
|
+
case "elevated": return e ? "bg-surface-container-low text-error shadow-elevation-1 enabled:hover:shadow-elevation-2" : "bg-surface-container-low text-primary shadow-elevation-1 enabled:hover:shadow-elevation-2";
|
|
378
|
+
case "outlined": return e ? "border border-error text-error" : "border border-outline text-primary";
|
|
379
|
+
case "text": return e ? "text-error" : "text-primary";
|
|
248
380
|
default: return "";
|
|
249
381
|
}
|
|
250
382
|
});
|
|
251
|
-
function
|
|
383
|
+
function w(e) {
|
|
252
384
|
if (r.disabled || r.loading) return;
|
|
253
385
|
let t = e.currentTarget, n = t.getBoundingClientRect(), i = Math.max(n.width, n.height) * 2, a = document.createElement("span");
|
|
254
386
|
a.className = "m3-ripple", a.style.cssText = `width:${i}px;height:${i}px;top:${e.clientY - n.top - i / 2}px;left:${e.clientX - n.left - i / 2}px`, t.appendChild(a), a.addEventListener("animationend", () => a.remove(), { once: !0 });
|
|
255
387
|
}
|
|
256
|
-
return (n, r) => (y(), o(
|
|
388
|
+
return (n, r) => (y(), o(C(i.value), {
|
|
257
389
|
to: t.to || void 0,
|
|
258
390
|
type: t.to ? void 0 : t.type,
|
|
259
391
|
disabled: t.disabled || t.loading,
|
|
260
|
-
class: m([
|
|
392
|
+
class: m([
|
|
393
|
+
q,
|
|
394
|
+
d.value,
|
|
395
|
+
g.value,
|
|
396
|
+
b.value,
|
|
397
|
+
x.value
|
|
398
|
+
]),
|
|
261
399
|
style: h(l.value),
|
|
262
|
-
onPointerdown:
|
|
400
|
+
onPointerdown: w
|
|
263
401
|
}, {
|
|
264
|
-
default:
|
|
402
|
+
default: k(() => [t.loading ? (y(), o(B, {
|
|
265
403
|
key: 0,
|
|
266
|
-
size:
|
|
267
|
-
})) : t.icon ? (y(), o(e, {
|
|
404
|
+
size: v.value
|
|
405
|
+
}, null, 8, ["size"])) : t.icon ? (y(), o(e, {
|
|
268
406
|
key: 1,
|
|
269
407
|
name: t.icon,
|
|
270
|
-
size:
|
|
271
|
-
}, null, 8, ["name"])) : s("", !0),
|
|
408
|
+
size: _.value
|
|
409
|
+
}, null, 8, ["name", "size"])) : s("", !0), S(n.$slots, "default")]),
|
|
272
410
|
_: 3
|
|
273
411
|
}, 40, [
|
|
274
412
|
"to",
|
|
@@ -278,57 +416,16 @@ var L = ["aria-label"], R = {
|
|
|
278
416
|
"style"
|
|
279
417
|
]));
|
|
280
418
|
}
|
|
281
|
-
}),
|
|
282
|
-
__name: "MIconButton",
|
|
283
|
-
props: {
|
|
284
|
-
icon: {},
|
|
285
|
-
label: {},
|
|
286
|
-
variant: { default: "standard" },
|
|
287
|
-
disabled: {
|
|
288
|
-
type: Boolean,
|
|
289
|
-
default: !1
|
|
290
|
-
},
|
|
291
|
-
size: { default: 40 },
|
|
292
|
-
to: {}
|
|
293
|
-
},
|
|
294
|
-
setup(t) {
|
|
295
|
-
let n = t, r = a(() => n.to ? "RouterLink" : "button"), i = a(() => {
|
|
296
|
-
switch (n.variant) {
|
|
297
|
-
case "filled": return "bg-primary text-on-primary hover:shadow-elevation-1";
|
|
298
|
-
case "tonal": return "bg-secondary-container text-on-secondary-container hover:shadow-elevation-1";
|
|
299
|
-
case "outlined": return "border border-outline text-on-surface-variant hover:bg-on-surface/8";
|
|
300
|
-
default: return "text-on-surface-variant hover:bg-on-surface/8 active:bg-on-surface/12";
|
|
301
|
-
}
|
|
302
|
-
});
|
|
303
|
-
return (n, a) => (y(), o(S(r.value), {
|
|
304
|
-
to: t.to || void 0,
|
|
305
|
-
type: t.to ? void 0 : "button",
|
|
306
|
-
"aria-label": t.label || void 0,
|
|
307
|
-
disabled: t.disabled,
|
|
308
|
-
class: m([K, i.value]),
|
|
309
|
-
style: h({
|
|
310
|
-
width: `${t.size}px`,
|
|
311
|
-
height: `${t.size}px`
|
|
312
|
-
})
|
|
313
|
-
}, {
|
|
314
|
-
default: O(() => [d(e, {
|
|
315
|
-
name: t.icon,
|
|
316
|
-
size: Math.round(t.size * .55)
|
|
317
|
-
}, null, 8, ["name", "size"])]),
|
|
318
|
-
_: 1
|
|
319
|
-
}, 8, [
|
|
320
|
-
"to",
|
|
321
|
-
"type",
|
|
322
|
-
"aria-label",
|
|
323
|
-
"disabled",
|
|
324
|
-
"class",
|
|
325
|
-
"style"
|
|
326
|
-
]));
|
|
327
|
-
}
|
|
328
|
-
}), J = { class: "flex items-start justify-between gap-4 px-6 pt-6 pb-2" }, Y = { class: "text-headline-small text-on-surface" }, X = { class: "overflow-y-auto px-6 py-2 text-body-medium text-on-surface-variant" }, Z = {
|
|
419
|
+
}), Y = { class: "flex items-start justify-between gap-4 px-6 pt-6 pb-2" }, X = { class: "text-headline-small text-on-surface" }, Z = { class: "overflow-y-auto px-6 py-2 text-body-medium text-on-surface-variant" }, Q = {
|
|
329
420
|
key: 0,
|
|
330
421
|
class: "flex justify-end gap-2 px-6 py-4"
|
|
331
|
-
},
|
|
422
|
+
}, $ = {
|
|
423
|
+
key: 0,
|
|
424
|
+
class: "dialog-fs fixed inset-0 z-50 flex flex-col bg-surface"
|
|
425
|
+
}, ee = { class: "flex h-14 shrink-0 items-center gap-2 px-2" }, te = { class: "flex-1 text-title-large font-medium text-on-surface" }, ne = {
|
|
426
|
+
key: 1,
|
|
427
|
+
class: "flex items-center gap-2"
|
|
428
|
+
}, re = { class: "flex-1 overflow-y-auto px-6 py-4 text-body-medium text-on-surface-variant" }, ie = /*#__PURE__*/ t(/* @__PURE__ */ f({
|
|
332
429
|
__name: "MDialog",
|
|
333
430
|
props: {
|
|
334
431
|
modelValue: { type: Boolean },
|
|
@@ -338,63 +435,85 @@ var L = ["aria-label"], R = {
|
|
|
338
435
|
type: Boolean,
|
|
339
436
|
default: !1
|
|
340
437
|
},
|
|
438
|
+
fullscreen: {
|
|
439
|
+
type: Boolean,
|
|
440
|
+
default: !1
|
|
441
|
+
},
|
|
341
442
|
closeLabel: {}
|
|
342
443
|
},
|
|
343
444
|
emits: ["update:modelValue"],
|
|
344
445
|
setup(e, { emit: t }) {
|
|
345
|
-
let n = e, a =
|
|
346
|
-
function
|
|
347
|
-
n.persistent ||
|
|
446
|
+
let n = e, a = N(), d = t;
|
|
447
|
+
function f() {
|
|
448
|
+
n.persistent || d("update:modelValue", !1);
|
|
348
449
|
}
|
|
349
|
-
function
|
|
350
|
-
e.key === "Escape" &&
|
|
450
|
+
function p(e) {
|
|
451
|
+
e.key === "Escape" && f();
|
|
351
452
|
}
|
|
352
|
-
return
|
|
353
|
-
e ? (document.addEventListener("keydown",
|
|
354
|
-
}), (t, n) => (y(), o(r, { to: "body" }, [
|
|
355
|
-
|
|
453
|
+
return O(() => n.modelValue, (e) => {
|
|
454
|
+
e ? (document.addEventListener("keydown", p), document.body.style.overflow = "hidden") : (document.removeEventListener("keydown", p), document.body.style.overflow = "");
|
|
455
|
+
}), (t, n) => (y(), o(r, { to: "body" }, [e.fullscreen ? (y(), o(i, {
|
|
456
|
+
key: 1,
|
|
457
|
+
name: "m3-dialog-fs"
|
|
458
|
+
}, {
|
|
459
|
+
default: k(() => [e.modelValue ? (y(), c("div", $, [l("div", ee, [
|
|
460
|
+
e.persistent ? s("", !0) : (y(), o(K, {
|
|
461
|
+
key: 0,
|
|
462
|
+
icon: "close",
|
|
463
|
+
label: e.closeLabel ?? T(a).close,
|
|
464
|
+
onClick: f
|
|
465
|
+
}, null, 8, ["label"])),
|
|
466
|
+
l("h2", te, [S(t.$slots, "title", {}, () => [u(w(e.title), 1)], !0)]),
|
|
467
|
+
t.$slots.actions ? (y(), c("div", ne, [S(t.$slots, "actions", {}, void 0, !0)])) : s("", !0)
|
|
468
|
+
]), l("div", re, [S(t.$slots, "default", {}, void 0, !0)])])) : s("", !0)]),
|
|
469
|
+
_: 3
|
|
470
|
+
})) : (y(), o(i, {
|
|
471
|
+
key: 0,
|
|
472
|
+
name: "m3-dialog"
|
|
473
|
+
}, {
|
|
474
|
+
default: k(() => [e.modelValue ? (y(), c("div", {
|
|
356
475
|
key: 0,
|
|
357
476
|
class: "fixed inset-0 z-50 flex items-center justify-center bg-black/40 p-4",
|
|
358
|
-
onClick:
|
|
477
|
+
onClick: A(f, ["self"])
|
|
359
478
|
}, [l("div", { class: m(["dialog-box flex max-h-[90vh] w-full flex-col rounded-xl bg-surface-container-high shadow-elevation-3", e.maxWidth]) }, [
|
|
360
|
-
l("div",
|
|
479
|
+
l("div", Y, [l("h2", X, [S(t.$slots, "title", {}, () => [u(w(e.title), 1)], !0)]), e.persistent ? s("", !0) : (y(), o(K, {
|
|
361
480
|
key: 0,
|
|
362
481
|
icon: "close",
|
|
363
|
-
label: e.closeLabel ??
|
|
364
|
-
onClick:
|
|
482
|
+
label: e.closeLabel ?? T(a).close,
|
|
483
|
+
onClick: f
|
|
365
484
|
}, null, 8, ["label"]))]),
|
|
366
|
-
l("div",
|
|
367
|
-
t.$slots.actions ? (y(), c("div",
|
|
485
|
+
l("div", Z, [S(t.$slots, "default", {}, void 0, !0)]),
|
|
486
|
+
t.$slots.actions ? (y(), c("div", Q, [S(t.$slots, "actions", {}, void 0, !0)])) : s("", !0)
|
|
368
487
|
], 2)])) : s("", !0)]),
|
|
369
488
|
_: 3
|
|
370
|
-
})]));
|
|
489
|
+
}))]));
|
|
371
490
|
}
|
|
372
|
-
}), [["__scopeId", "data-v-
|
|
491
|
+
}), [["__scopeId", "data-v-2e3c3567"]]), ae = { class: "flex flex-col gap-1" }, oe = [
|
|
373
492
|
"id",
|
|
374
493
|
"value",
|
|
375
494
|
"rows",
|
|
376
495
|
"disabled",
|
|
377
496
|
"required"
|
|
378
|
-
],
|
|
497
|
+
], se = [
|
|
379
498
|
"id",
|
|
380
499
|
"type",
|
|
381
500
|
"value",
|
|
382
501
|
"disabled",
|
|
383
502
|
"required",
|
|
384
503
|
"autocomplete"
|
|
385
|
-
],
|
|
504
|
+
], ce = ["for"], le = {
|
|
386
505
|
key: 0,
|
|
387
506
|
class: "text-error"
|
|
388
|
-
},
|
|
507
|
+
}, ue = {
|
|
389
508
|
key: 3,
|
|
390
509
|
class: "absolute right-2 top-1/2 -translate-y-1/2"
|
|
391
|
-
},
|
|
510
|
+
}, de = {
|
|
392
511
|
key: 0,
|
|
393
512
|
class: "px-4 text-body-small text-error"
|
|
394
|
-
},
|
|
513
|
+
}, fe = {
|
|
395
514
|
key: 1,
|
|
396
515
|
class: "px-4 text-body-small text-on-surface-variant"
|
|
397
|
-
},
|
|
516
|
+
}, pe = /* @__PURE__ */ f({
|
|
398
517
|
__name: "MTextField",
|
|
399
518
|
props: {
|
|
400
519
|
modelValue: {},
|
|
@@ -417,7 +536,7 @@ var L = ["aria-label"], R = {
|
|
|
417
536
|
},
|
|
418
537
|
emits: ["update:modelValue"],
|
|
419
538
|
setup(t, { emit: n }) {
|
|
420
|
-
let r = t, i = n, o =
|
|
539
|
+
let r = t, i = n, o = E(), f = D(), p = x(null), { resolvedFieldBg: g } = W(p, () => r.fieldBg), _ = a(() => r.clearable && String(r.modelValue).length > 0 && !r.disabled), v = a(() => {
|
|
421
540
|
let e = !!f.trailing || r.clearable, t = r.leadingIcon ? "pl-12" : "pl-4", n = e ? "pr-12" : "pr-4", i = [
|
|
422
541
|
"peer block w-full text-body-large text-on-surface outline-none placeholder:text-transparent",
|
|
423
542
|
"transition-[border-color,border-width] duration-150",
|
|
@@ -435,7 +554,7 @@ var L = ["aria-label"], R = {
|
|
|
435
554
|
"rounded-t-sm bg-surface-container-highest border-b pt-6 pb-2",
|
|
436
555
|
r.error ? "border-error focus:border-b-2 focus:border-error" : "border-on-surface-variant hover:border-on-surface focus:border-b-2 focus:border-primary"
|
|
437
556
|
].join(" ");
|
|
438
|
-
}),
|
|
557
|
+
}), b = a(() => {
|
|
439
558
|
let e = [
|
|
440
559
|
"pointer-events-none absolute truncate transition-all duration-200",
|
|
441
560
|
r.leadingIcon ? r.variant === "outlined" ? "left-11" : "left-12" : r.variant === "outlined" ? "left-3" : "left-4",
|
|
@@ -455,15 +574,15 @@ var L = ["aria-label"], R = {
|
|
|
455
574
|
r.error ? "text-error peer-focus:text-error" : "text-on-surface-variant peer-focus:text-primary"
|
|
456
575
|
].join(" ");
|
|
457
576
|
});
|
|
458
|
-
function
|
|
577
|
+
function C(e) {
|
|
459
578
|
let t = e.target;
|
|
460
579
|
i("update:modelValue", t.value);
|
|
461
580
|
}
|
|
462
|
-
return (n, r) => (y(), c("div",
|
|
581
|
+
return (n, r) => (y(), c("div", ae, [l("div", {
|
|
463
582
|
ref_key: "fieldBgEl",
|
|
464
583
|
ref: p,
|
|
465
584
|
class: m(["relative", t.variant === "outlined" ? "mt-2" : ""]),
|
|
466
|
-
style: h(t.variant === "outlined" ? { "--field-bg":
|
|
585
|
+
style: h(t.variant === "outlined" ? { "--field-bg": T(g) } : void 0)
|
|
467
586
|
}, [
|
|
468
587
|
t.leadingIcon ? (y(), c("div", {
|
|
469
588
|
key: 0,
|
|
@@ -474,17 +593,17 @@ var L = ["aria-label"], R = {
|
|
|
474
593
|
}, null, 8, ["name"])], 2)) : s("", !0),
|
|
475
594
|
t.multiline ? (y(), c("textarea", {
|
|
476
595
|
key: 1,
|
|
477
|
-
id:
|
|
596
|
+
id: T(o),
|
|
478
597
|
value: String(t.modelValue),
|
|
479
598
|
rows: t.rows,
|
|
480
599
|
disabled: t.disabled,
|
|
481
600
|
required: t.required,
|
|
482
601
|
placeholder: " ",
|
|
483
602
|
class: m(v.value),
|
|
484
|
-
onInput:
|
|
485
|
-
}, null, 42,
|
|
603
|
+
onInput: C
|
|
604
|
+
}, null, 42, oe)) : (y(), c("input", {
|
|
486
605
|
key: 2,
|
|
487
|
-
id:
|
|
606
|
+
id: T(o),
|
|
488
607
|
type: t.type,
|
|
489
608
|
value: t.modelValue,
|
|
490
609
|
disabled: t.disabled,
|
|
@@ -492,13 +611,13 @@ var L = ["aria-label"], R = {
|
|
|
492
611
|
autocomplete: t.autocomplete,
|
|
493
612
|
placeholder: " ",
|
|
494
613
|
class: m(v.value),
|
|
495
|
-
onInput:
|
|
496
|
-
}, null, 42,
|
|
614
|
+
onInput: C
|
|
615
|
+
}, null, 42, se)),
|
|
497
616
|
l("label", {
|
|
498
|
-
for:
|
|
499
|
-
class: m(
|
|
500
|
-
}, [u(
|
|
501
|
-
n.$slots.trailing ? (y(), c("div",
|
|
617
|
+
for: T(o),
|
|
618
|
+
class: m(b.value)
|
|
619
|
+
}, [u(w(t.label), 1), t.required ? (y(), c("span", le, "\xA0*")) : s("", !0)], 10, ce),
|
|
620
|
+
n.$slots.trailing ? (y(), c("div", ue, [S(n.$slots, "trailing")])) : _.value ? (y(), c("button", {
|
|
502
621
|
key: 4,
|
|
503
622
|
type: "button",
|
|
504
623
|
class: "absolute right-3 top-1/2 -translate-y-1/2 flex h-6 w-6 cursor-pointer items-center justify-center rounded-full text-on-surface-variant transition-colors hover:bg-on-surface/8 hover:text-on-surface",
|
|
@@ -507,56 +626,56 @@ var L = ["aria-label"], R = {
|
|
|
507
626
|
name: "close",
|
|
508
627
|
size: 18
|
|
509
628
|
})])) : s("", !0)
|
|
510
|
-
], 6), t.error ? (y(), c("p",
|
|
629
|
+
], 6), t.error ? (y(), c("p", de, w(t.error), 1)) : t.hint ? (y(), c("p", fe, w(t.hint), 1)) : s("", !0)]));
|
|
511
630
|
}
|
|
512
|
-
}),
|
|
631
|
+
}), me = /* @__PURE__ */ f({
|
|
513
632
|
__name: "MMenu",
|
|
514
633
|
props: { align: { default: "right" } },
|
|
515
634
|
setup(e, { expose: t }) {
|
|
516
|
-
let u = e, f =
|
|
517
|
-
function
|
|
635
|
+
let u = e, f = x(!1), p = x(null), m = x(null), g = x({});
|
|
636
|
+
function C() {
|
|
518
637
|
if (!p.value) return;
|
|
519
638
|
let e = p.value.getBoundingClientRect(), t = window.innerHeight - e.bottom - 8, n = t < 200 && e.top > t, r = { maxHeight: `${Math.min(n ? e.top - 12 : t, 400)}px` };
|
|
520
639
|
n ? r.bottom = `${window.innerHeight - e.top + 4}px` : r.top = `${e.bottom + 4}px`, u.align === "right" ? r.right = `${window.innerWidth - e.right}px` : r.left = `${e.left}px`, g.value = r;
|
|
521
640
|
}
|
|
522
|
-
function C() {
|
|
523
|
-
f.value || S(), f.value = !f.value;
|
|
524
|
-
}
|
|
525
641
|
function w() {
|
|
642
|
+
f.value || C(), f.value = !f.value;
|
|
643
|
+
}
|
|
644
|
+
function T() {
|
|
526
645
|
f.value = !1;
|
|
527
646
|
}
|
|
528
|
-
t({
|
|
529
|
-
close:
|
|
647
|
+
b("m-menu-close", T), t({
|
|
648
|
+
close: T,
|
|
530
649
|
open: f
|
|
531
650
|
});
|
|
532
|
-
function
|
|
651
|
+
function E(e) {
|
|
533
652
|
let t = e.target;
|
|
534
|
-
|
|
653
|
+
p.value?.contains(t) || m.value?.contains(t) || t.closest?.(".m3-submenu") || T();
|
|
535
654
|
}
|
|
536
|
-
function
|
|
655
|
+
function D(e) {
|
|
537
656
|
if (!f.value || m.value?.contains(e.target) || !p.value) return;
|
|
538
657
|
let t = p.value.getBoundingClientRect();
|
|
539
658
|
if (t.bottom < 0 || t.top > window.innerHeight) {
|
|
540
|
-
|
|
659
|
+
T();
|
|
541
660
|
return;
|
|
542
661
|
}
|
|
543
|
-
|
|
662
|
+
C();
|
|
544
663
|
}
|
|
545
|
-
function
|
|
546
|
-
e.key === "Escape" &&
|
|
664
|
+
function O(e) {
|
|
665
|
+
e.key === "Escape" && T();
|
|
547
666
|
}
|
|
548
667
|
_(() => {
|
|
549
|
-
document.addEventListener("mousedown",
|
|
668
|
+
document.addEventListener("mousedown", E), document.addEventListener("keydown", O), window.addEventListener("scroll", D, !0);
|
|
550
669
|
}), v(() => {
|
|
551
|
-
document.removeEventListener("mousedown",
|
|
670
|
+
document.removeEventListener("mousedown", E), document.removeEventListener("keydown", O), window.removeEventListener("scroll", D, !0);
|
|
552
671
|
});
|
|
553
|
-
let
|
|
672
|
+
let A = a(() => u.align === "right" ? "top right" : "top left");
|
|
554
673
|
return (e, t) => (y(), c(n, null, [l("div", {
|
|
555
674
|
ref_key: "triggerEl",
|
|
556
675
|
ref: p,
|
|
557
676
|
class: "inline-block",
|
|
558
|
-
onClick:
|
|
559
|
-
}, [
|
|
677
|
+
onClick: w
|
|
678
|
+
}, [S(e.$slots, "trigger", { open: f.value })], 512), (y(), o(r, { to: "body" }, [d(i, {
|
|
560
679
|
"enter-active-class": "transition-[opacity,transform] duration-100 ease-out",
|
|
561
680
|
"enter-from-class": "opacity-0 scale-95",
|
|
562
681
|
"enter-to-class": "opacity-100 scale-100",
|
|
@@ -564,44 +683,117 @@ var L = ["aria-label"], R = {
|
|
|
564
683
|
"leave-from-class": "opacity-100 scale-100",
|
|
565
684
|
"leave-to-class": "opacity-0 scale-95"
|
|
566
685
|
}, {
|
|
567
|
-
default:
|
|
686
|
+
default: k(() => [f.value ? (y(), c("div", {
|
|
568
687
|
key: 0,
|
|
569
688
|
ref_key: "dropdownEl",
|
|
570
689
|
ref: m,
|
|
571
|
-
class: "fixed z-500 min-w-48 overflow-
|
|
690
|
+
class: "fixed z-500 min-w-48 overflow-hidden rounded-lg bg-surface-container shadow-elevation-2",
|
|
572
691
|
style: h({
|
|
573
692
|
...g.value,
|
|
574
|
-
transformOrigin:
|
|
575
|
-
})
|
|
576
|
-
|
|
577
|
-
|
|
693
|
+
transformOrigin: A.value
|
|
694
|
+
})
|
|
695
|
+
}, [l("div", {
|
|
696
|
+
class: "overflow-y-auto py-1",
|
|
697
|
+
style: h({ maxHeight: g.value.maxHeight })
|
|
698
|
+
}, [S(e.$slots, "default", { close: T })], 4)], 4)) : s("", !0)]),
|
|
578
699
|
_: 3
|
|
579
700
|
})]))], 64));
|
|
580
701
|
}
|
|
581
|
-
}),
|
|
702
|
+
}), he = { class: "flex-1" }, ge = /* @__PURE__ */ f({
|
|
582
703
|
__name: "MMenuItem",
|
|
583
704
|
props: {
|
|
584
705
|
icon: {},
|
|
585
|
-
to: {}
|
|
706
|
+
to: {},
|
|
707
|
+
disabled: {
|
|
708
|
+
type: Boolean,
|
|
709
|
+
default: !1
|
|
710
|
+
},
|
|
711
|
+
danger: {
|
|
712
|
+
type: Boolean,
|
|
713
|
+
default: !1
|
|
714
|
+
}
|
|
586
715
|
},
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
716
|
+
emits: ["click"],
|
|
717
|
+
setup(t, { emit: n }) {
|
|
718
|
+
let u = t, f = n, g = D(), _ = a(() => u.to ? "RouterLink" : "button"), v = a(() => !!g.children), b = p("m-menu-close", null);
|
|
719
|
+
function w() {
|
|
720
|
+
u.disabled || v.value || (f("click"), b?.());
|
|
721
|
+
}
|
|
722
|
+
let T = x(!1), E = x(), O = x({});
|
|
723
|
+
function A() {
|
|
724
|
+
if (!v.value || u.disabled || (T.value = !0, !E.value)) return;
|
|
725
|
+
let e = E.value.getBoundingClientRect(), t = e.right + 200 > window.innerWidth;
|
|
726
|
+
O.value = {
|
|
727
|
+
position: "fixed",
|
|
728
|
+
top: `${e.top}px`,
|
|
729
|
+
...t ? { right: `${window.innerWidth - e.left}px` } : { left: `${e.right}px` },
|
|
730
|
+
zIndex: "501"
|
|
731
|
+
};
|
|
732
|
+
}
|
|
733
|
+
function j(e) {
|
|
734
|
+
e.relatedTarget?.closest(".m3-submenu") || (T.value = !1);
|
|
735
|
+
}
|
|
736
|
+
function M(e) {
|
|
737
|
+
let t = e.relatedTarget;
|
|
738
|
+
t?.closest(".m3-submenu") || E.value?.contains(t) || (T.value = !1);
|
|
739
|
+
}
|
|
740
|
+
return (n, a) => (y(), c("div", {
|
|
741
|
+
ref_key: "itemEl",
|
|
742
|
+
ref: E,
|
|
743
|
+
onMouseenter: A,
|
|
744
|
+
onMouseleave: j
|
|
745
|
+
}, [(y(), o(C(_.value), {
|
|
590
746
|
to: t.to || void 0,
|
|
591
747
|
type: t.to ? void 0 : "button",
|
|
592
|
-
class: "flex w-full
|
|
748
|
+
class: m(["flex w-full items-center gap-3 px-4 py-2.5 text-left text-body-large transition-colors", [
|
|
749
|
+
t.disabled ? "cursor-not-allowed opacity-[0.38] text-on-surface" : "cursor-pointer",
|
|
750
|
+
!t.disabled && t.danger ? "text-error hover:bg-error/8" : "",
|
|
751
|
+
!t.disabled && !t.danger ? "text-on-surface hover:bg-on-surface/8" : ""
|
|
752
|
+
]]),
|
|
753
|
+
disabled: t.disabled || void 0,
|
|
754
|
+
onClick: w
|
|
755
|
+
}, {
|
|
756
|
+
default: k(() => [
|
|
757
|
+
t.icon ? (y(), o(e, {
|
|
758
|
+
key: 0,
|
|
759
|
+
name: t.icon,
|
|
760
|
+
size: 20,
|
|
761
|
+
class: m(["shrink-0", t.danger ? "text-error" : "text-on-surface-variant"])
|
|
762
|
+
}, null, 8, ["name", "class"])) : s("", !0),
|
|
763
|
+
l("span", he, [S(n.$slots, "default")]),
|
|
764
|
+
v.value ? (y(), o(e, {
|
|
765
|
+
key: 1,
|
|
766
|
+
name: "chevron_right",
|
|
767
|
+
size: 18,
|
|
768
|
+
class: "shrink-0 text-on-surface-variant"
|
|
769
|
+
})) : s("", !0)
|
|
770
|
+
]),
|
|
771
|
+
_: 3
|
|
772
|
+
}, 8, [
|
|
773
|
+
"to",
|
|
774
|
+
"type",
|
|
775
|
+
"class",
|
|
776
|
+
"disabled"
|
|
777
|
+
])), v.value ? (y(), o(r, {
|
|
778
|
+
key: 0,
|
|
779
|
+
to: "body"
|
|
780
|
+
}, [d(i, {
|
|
781
|
+
"enter-active-class": "transition-opacity duration-100",
|
|
782
|
+
"enter-from-class": "opacity-0",
|
|
783
|
+
"leave-active-class": "transition-opacity duration-75",
|
|
784
|
+
"leave-to-class": "opacity-0"
|
|
593
785
|
}, {
|
|
594
|
-
default:
|
|
786
|
+
default: k(() => [T.value ? (y(), c("div", {
|
|
595
787
|
key: 0,
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
},
|
|
788
|
+
class: "m3-submenu min-w-44 overflow-hidden rounded-lg bg-surface-container py-1 shadow-elevation-2",
|
|
789
|
+
style: h(O.value),
|
|
790
|
+
onMouseleave: M
|
|
791
|
+
}, [S(n.$slots, "children")], 36)) : s("", !0)]),
|
|
600
792
|
_: 3
|
|
601
|
-
}
|
|
793
|
+
})])) : s("", !0)], 544));
|
|
602
794
|
}
|
|
603
795
|
});
|
|
604
796
|
//#endregion
|
|
605
|
-
export {
|
|
797
|
+
export { J as a, B as c, N as d, ie as i, M as l, me as n, K as o, pe as r, W as s, ge as t, j as u };
|
|
606
798
|
|
|
607
|
-
//# sourceMappingURL=MMenuItem-
|
|
799
|
+
//# sourceMappingURL=MMenuItem-FyttjOj_.js.map
|