UNPKG

@scalar/api-client

Version:

the open source API testing client

93 lines (92 loc) 3.17 kB
import { defineComponent as w, computed as n, watch as h, createBlock as y, createElementBlock as b, openBlock as m, unref as i, withCtx as g, createVNode as p, createElementVNode as s, toDisplayString as x } from "vue"; import { ScalarListbox as k, ScalarButton as U, ScalarIcon as V } from "@scalar/components"; import { useWorkspace as B } from "../../store/store.js"; const W = { class: "overflow-x-auto" }, z = { key: 1, class: "text-c-1 flex h-auto w-full items-center gap-0.75 rounded-b-lg px-3 py-1.5 text-xs whitespace-nowrap lg:text-sm" }, C = { class: "overflow-x-auto" }, j = /* @__PURE__ */ w({ __name: "ServerSelector", props: { collection: {}, server: {}, target: {} }, emits: ["updateServer"], setup(l, { emit: S }) { const u = S, { servers: o, collectionMutators: c } = B(), a = n( () => { var t; return (t = l.collection) == null ? void 0 : t.servers.map((e) => { var r; return { id: e, label: ((r = o[e]) == null ? void 0 : r.url) ?? "Unknown server" }; }); } ), d = n({ get: () => l.server ? a.value.find((t) => t.id === l.server.uid) : void 0, set: (t) => { var r; if (!t) return; c.edit( l.collection.uid, "selectedServerUid", t.id ); const e = (r = o[t.id]) == null ? void 0 : r.url; e && u("updateServer", e); } }); h( () => l.collection, (t) => { var r, f; if (!t || t.selectedServerUid) return; const e = (r = l.collection.servers) == null ? void 0 : r[0]; e && (c.edit(l.collection.uid, "selectedServerUid", e), (f = o[e]) != null && f.url && u("updateServer", o[e].url)); } ); const v = n(() => { var t, e, r; return (e = (t = l.server) == null ? void 0 : t.url) != null && e.endsWith("/") ? l.server.url.slice(0, -1) : ((r = l.server) == null ? void 0 : r.url) || ""; }); return (t, e) => a.value.length > 1 ? (m(), y(i(k), { key: 0, modelValue: d.value, "onUpdate:modelValue": e[0] || (e[0] = (r) => d.value = r), options: a.value, placement: "bottom-start", resize: "", target: t.target, teleport: `#${t.target}` }, { default: g(() => [ p(i(U), { class: "bg-b-1 text-c-1 h-auto w-full justify-start gap-0.75 overflow-x-auto rounded-t-none rounded-b-lg px-3 py-1.5 text-xs font-normal whitespace-nowrap -outline-offset-1 lg:text-sm", variant: "ghost" }, { default: g(() => [ e[1] || (e[1] = s("span", { class: "sr-only" }, "Server:", -1)), s("span", W, x(v.value), 1), p(i(V), { class: "text-c-2", icon: "ChevronDown", size: "sm" }) ]), _: 1 }) ]), _: 1 }, 8, ["modelValue", "options", "target", "teleport"])) : (m(), b("div", z, [ e[2] || (e[2] = s("span", { class: "sr-only" }, "Server:", -1)), s("span", C, x(v.value), 1) ])); } }); export { j as default };