@scalar/api-client
Version:
the open source API testing client
237 lines (236 loc) • 8.45 kB
JavaScript
import { defineComponent as L, ref as P, watch as F, onMounted as K, onBeforeUnmount as j, computed as G, createElementBlock as w, openBlock as l, Fragment as C, createBlock as o, createCommentVNode as r, createVNode as i, unref as n, withCtx as a, withKeys as H, createElementVNode as c, createTextVNode as W, toDisplayString as J } from "vue";
import { useModal as $, ScalarFloating as O, ScalarDropdownMenu as Q, ScalarDropdownButton as p, ScalarIcon as I, ScalarModal as q } from "@scalar/components";
import { useRouter as X } from "vue-router";
import b from "../../components/Sidebar/Actions/DeleteSidebarListElement.vue.js";
import Y from "../../components/Sidebar/Actions/EditSidebarListCollection.vue.js";
import Z from "../../components/Sidebar/Actions/EditSidebarListElement.vue.js";
import { PathId as u } from "../../routes.js";
import { useActiveEntities as _ } from "../../store/active-entities.js";
import { createInitialRequest as ee } from "../../store/requests.js";
import { useWorkspace as te } from "../../store/store.js";
const fe = /* @__PURE__ */ L({
__name: "RequestSidebarItemMenu",
props: {
menuItem: {}
},
emits: ["closeMenu", "toggleWatchMode", "clearDrafts"],
setup(x, { emit: z }) {
const s = x, M = z, { replace: k } = X(), {
activeRouterParams: E,
activeWorkspaceCollections: y,
activeWorkspaceRequests: N
} = _(), { events: S, requestMutators: T } = te(), d = $(), v = $(), g = $(), A = () => S.commandPalette.emit({
commandName: "Add Example",
metaData: {
itemUid: s.menuItem.item?.entity.uid
}
}), R = (t, e) => {
s.menuItem.item?.edit(t, e), d.hide();
}, B = () => {
if (s.menuItem.item?.delete(), !N.value.length) {
const { request: t } = ee(), e = y.value.find(
(m) => m.info?.title === "Drafts"
);
e && (T.add(t, e.uid), k({
name: "request",
params: {
[u.Request]: t.uid
}
}));
}
if (E.value[u.Request] === s.menuItem.item?.entity.uid && k({
name: "request",
params: {
[u.Request]: "default"
}
}), E.value[u.Examples] === s.menuItem.item?.entity.uid && k({
name: "request",
params: {
[u.Request]: "default"
}
}), y.value[0]) {
const t = y.value[0].requests[0];
k({
name: "request",
params: {
[u.Request]: t
}
});
}
v.hide();
}, f = P(null);
F([() => s.menuItem.open, f], ([t]) => {
t && f.value?.$parent?.$el && f.value.$parent.$el.focus();
});
const h = () => s.menuItem.open && M("closeMenu");
K(() => window.addEventListener("click", h)), j(() => window.removeEventListener("click", h));
const U = () => {
M("toggleWatchMode", s.menuItem.item);
}, V = () => {
M("clearDrafts"), g.hide();
}, D = G(() => s.menuItem.item?.title === "Drafts");
return (t, e) => (l(), w(C, null, [
t.menuItem.targetRef && t.menuItem.open ? (l(), o(n(O), {
key: 0,
placement: "right-start",
target: t.menuItem.targetRef,
teleport: ""
}, {
floating: a(() => [
i(n(Q), {
onKeydown: e[3] || (e[3] = H((m) => t.$emit("closeMenu"), ["escape"]))
}, {
default: a(() => [
t.menuItem.item?.entity.type === "request" ? (l(), o(n(p), {
key: 0,
class: "flex items-center gap-2",
onClick: A
}, {
default: a(() => [
i(n(I), {
class: "inline-flex",
icon: "Example",
size: "md",
thickness: "1.5"
}),
e[8] || (e[8] = c("span", null, "Add Example", -1))
]),
_: 1
})) : r("", !0),
D.value ? r("", !0) : (l(), o(n(p), {
key: 1,
ref_key: "menuRef",
ref: f,
class: "flex items-center gap-2",
onClick: e[0] || (e[0] = (m) => n(d).show())
}, {
default: a(() => [
i(n(I), {
class: "inline-flex",
icon: "Edit",
size: "md",
thickness: "1.5"
}),
c("span", null, [
t.menuItem.item?.entity.type === "collection" ? (l(), w(C, { key: 0 }, [
W(" Edit ")
], 64)) : (l(), w(C, { key: 1 }, [
W(" Rename ")
], 64))
])
]),
_: 1
}, 512)),
t.menuItem.item?.documentUrl ? (l(), o(n(p), {
key: 2,
ref_key: "menuRef",
ref: f,
class: "flex items-center gap-2",
onClick: U
}, {
default: a(() => [
i(n(I), {
class: "inline-flex",
icon: t.menuItem.item?.watchMode ? "Unwatch" : "Watch",
size: "md",
thickness: "1.5"
}, null, 8, ["icon"]),
c("span", null, J(t.menuItem.item?.watchMode ? "Disable Watch Mode" : "Enable Watch Mode"), 1)
]),
_: 1
}, 512)) : r("", !0),
D.value ? r("", !0) : (l(), o(n(p), {
key: 3,
class: "flex items-center gap-2",
onClick: e[1] || (e[1] = (m) => n(v).show())
}, {
default: a(() => [
i(n(I), {
class: "inline-flex",
icon: "Delete",
size: "md",
thickness: "1.5"
}),
e[9] || (e[9] = c("span", null, "Delete", -1))
]),
_: 1
})),
D.value ? (l(), o(n(p), {
key: 4,
class: "flex items-center gap-2",
onClick: e[2] || (e[2] = (m) => n(g).show())
}, {
default: a(() => [
i(n(I), {
class: "inline-flex",
icon: "Delete",
size: "md",
thickness: "1.5"
}),
e[10] || (e[10] = c("span", null, "Clear Drafts", -1))
]),
_: 1
})) : r("", !0)
]),
_: 1
})
]),
_: 1
}, 8, ["target"])) : r("", !0),
i(n(q), {
size: "xxs",
state: n(v),
title: `Delete ${t.menuItem.item?.resourceTitle}`
}, {
default: a(() => [
i(b, {
variableName: t.menuItem.item?.title ?? "",
warningMessage: t.menuItem.item?.warning,
onClose: e[4] || (e[4] = (m) => n(v).hide()),
onDelete: B
}, null, 8, ["variableName", "warningMessage"])
]),
_: 1
}, 8, ["state", "title"]),
i(n(q), {
size: "xxs",
state: n(d),
title: `Edit ${t.menuItem.item?.resourceTitle}`
}, {
default: a(() => [
t.menuItem.item?.resourceTitle === "Collection" ? (l(), o(Y, {
key: 0,
icon: t.menuItem.item?.icon || "interface-content-folder",
name: t.menuItem.item?.title,
onClose: e[5] || (e[5] = (m) => n(d).hide()),
onEdit: R
}, null, 8, ["icon", "name"])) : (l(), o(Z, {
key: 1,
name: t.menuItem.item?.title ?? "",
onClose: e[6] || (e[6] = (m) => n(d).hide()),
onEdit: R
}, null, 8, ["name"]))
]),
_: 1
}, 8, ["state", "title"]),
i(n(q), {
size: "xxs",
state: n(g),
title: "Clear Drafts"
}, {
default: a(() => [
i(b, {
variableName: "All Drafts",
warningMessage: "This action will clear all drafts. This cannot be undone.",
onClose: e[7] || (e[7] = (m) => n(g).hide()),
onDelete: V
})
]),
_: 1
}, 8, ["state"])
], 64));
}
});
export {
fe as default
};