@qodalis/vue-cli 2.0.0-beta.12 → 2.0.0-beta.14
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/index.js +79 -8
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +79 -8
- package/dist/index.mjs.map +1 -1
- package/dist/package.json +1 -1
- package/package.json +3 -3
package/dist/index.js
CHANGED
|
@@ -393,7 +393,7 @@ var CliPanel = (0, import_vue3.defineComponent)({
|
|
|
393
393
|
const statusServerState = (0, import_vue3.ref)("none");
|
|
394
394
|
const statusServerDetails = (0, import_vue3.ref)([]);
|
|
395
395
|
const statusUptime = (0, import_vue3.ref)(0);
|
|
396
|
-
const
|
|
396
|
+
const notification = (0, import_vue3.ref)(null);
|
|
397
397
|
const servicesDropdownOpen = (0, import_vue3.ref)(false);
|
|
398
398
|
const serversDropdownOpen = (0, import_vue3.ref)(false);
|
|
399
399
|
const servicesDropdownTriggerRect = (0, import_vue3.ref)(null);
|
|
@@ -419,8 +419,8 @@ var CliPanel = (0, import_vue3.defineComponent)({
|
|
|
419
419
|
statusExecutionState.value = running ? "running" : "idle";
|
|
420
420
|
const result = context.lastCommandResult;
|
|
421
421
|
statusLastCommand.value = result ? { name: result.command, success: result.success } : null;
|
|
422
|
-
const
|
|
423
|
-
|
|
422
|
+
const notif = context.notifier?.current;
|
|
423
|
+
notification.value = notif || null;
|
|
424
424
|
}, 300);
|
|
425
425
|
globalPollTimer = setInterval(() => {
|
|
426
426
|
const tab = tabs.value.find((t) => t.id === resolvedActiveTabId.value);
|
|
@@ -916,11 +916,62 @@ var CliPanel = (0, import_vue3.defineComponent)({
|
|
|
916
916
|
(0, import_vue3.h)("span", { class: "cli-panel-status-icon", innerHTML: "↑" }),
|
|
917
917
|
(0, import_vue3.h)("span", { class: "cli-panel-status-label" }, formattedUptime.value)
|
|
918
918
|
]) : null,
|
|
919
|
-
// Custom
|
|
920
|
-
|
|
921
|
-
(0, import_vue3.h)("span", { class: "cli-panel-status-label" },
|
|
919
|
+
// Custom notification
|
|
920
|
+
notification.value ? (0, import_vue3.h)("span", { class: `cli-panel-status-item status-text level-${notification.value.level}` }, [
|
|
921
|
+
(0, import_vue3.h)("span", { class: "cli-panel-status-label" }, notification.value.message)
|
|
922
922
|
]) : null
|
|
923
923
|
].filter(Boolean)) : null,
|
|
924
|
+
// Compact status indicators (left/right positions — CSS controls visibility)
|
|
925
|
+
(0, import_vue3.h)("div", { class: "cli-panel-status-indicators-compact" }, [
|
|
926
|
+
// Execution state
|
|
927
|
+
(0, import_vue3.h)("span", { class: "cli-panel-status-compact-item", title: statusExecutionState.value }, [
|
|
928
|
+
(0, import_vue3.h)("span", { class: ["cli-panel-status-dot", statusExecutionState.value === "running" ? "dot-running" : "dot-idle"].join(" ") })
|
|
929
|
+
]),
|
|
930
|
+
// Background services
|
|
931
|
+
statusServiceCount.value.total > 0 ? (0, import_vue3.h)("span", {
|
|
932
|
+
class: "cli-panel-status-compact-item status-clickable",
|
|
933
|
+
title: `${statusServiceCount.value.running}/${statusServiceCount.value.total} services`,
|
|
934
|
+
onClick: (e) => {
|
|
935
|
+
e.stopPropagation();
|
|
936
|
+
servicesDropdownTriggerRect.value = e.currentTarget.getBoundingClientRect();
|
|
937
|
+
servicesDropdownOpen.value = !servicesDropdownOpen.value;
|
|
938
|
+
serversDropdownOpen.value = false;
|
|
939
|
+
}
|
|
940
|
+
}, [
|
|
941
|
+
(0, import_vue3.h)("span", { class: "cli-panel-status-icon", innerHTML: "⚙" })
|
|
942
|
+
]) : null,
|
|
943
|
+
// Last command
|
|
944
|
+
statusLastCommand.value ? (0, import_vue3.h)("span", {
|
|
945
|
+
class: "cli-panel-status-compact-item",
|
|
946
|
+
title: `${statusLastCommand.value.success ? "\u2713" : "\u2717"} ${statusLastCommand.value.name}`
|
|
947
|
+
}, [
|
|
948
|
+
(0, import_vue3.h)("span", {
|
|
949
|
+
class: ["cli-panel-status-icon", statusLastCommand.value.success ? "status-success" : "status-error"].join(" "),
|
|
950
|
+
innerHTML: statusLastCommand.value.success ? "✓" : "✕"
|
|
951
|
+
})
|
|
952
|
+
]) : null,
|
|
953
|
+
// Server connection
|
|
954
|
+
statusServerState.value !== "none" ? (0, import_vue3.h)("span", {
|
|
955
|
+
class: "cli-panel-status-compact-item status-clickable",
|
|
956
|
+
title: `${statusServerDetails.value.filter((s) => s.connected).length}/${statusServerDetails.value.length} servers`,
|
|
957
|
+
onClick: (e) => {
|
|
958
|
+
e.stopPropagation();
|
|
959
|
+
serversDropdownTriggerRect.value = e.currentTarget.getBoundingClientRect();
|
|
960
|
+
serversDropdownOpen.value = !serversDropdownOpen.value;
|
|
961
|
+
servicesDropdownOpen.value = false;
|
|
962
|
+
}
|
|
963
|
+
}, [
|
|
964
|
+
(0, import_vue3.h)("span", { class: ["cli-panel-status-dot", statusServerState.value === "connected" ? "dot-idle" : "dot-error"].join(" ") })
|
|
965
|
+
]) : null,
|
|
966
|
+
// Uptime
|
|
967
|
+
statusUptime.value > 0 ? (0, import_vue3.h)("span", { class: "cli-panel-status-compact-item status-muted", title: formattedUptime.value }, [
|
|
968
|
+
(0, import_vue3.h)("span", { class: "cli-panel-status-icon", innerHTML: "↑" })
|
|
969
|
+
]) : null,
|
|
970
|
+
// Notification
|
|
971
|
+
notification.value ? (0, import_vue3.h)("span", { class: "cli-panel-status-compact-item", title: notification.value.message }, [
|
|
972
|
+
(0, import_vue3.h)("span", { class: `cli-panel-status-compact-dot level-${notification.value.level}` })
|
|
973
|
+
]) : null
|
|
974
|
+
].filter(Boolean)),
|
|
924
975
|
(0, import_vue3.h)("div", { class: "cli-panel-action-buttons" }, [
|
|
925
976
|
(0, import_vue3.h)("div", {
|
|
926
977
|
class: "cli-panel-btn-position-wrapper",
|
|
@@ -1325,7 +1376,17 @@ var CliPanel = (0, import_vue3.defineComponent)({
|
|
|
1325
1376
|
style: (() => {
|
|
1326
1377
|
const rect = servicesDropdownTriggerRect.value;
|
|
1327
1378
|
if (!rect) return {};
|
|
1328
|
-
|
|
1379
|
+
const base = { position: "fixed", zIndex: 1100 };
|
|
1380
|
+
switch (resolvedPosition.value) {
|
|
1381
|
+
case "top":
|
|
1382
|
+
return { ...base, top: `${rect.bottom + 4}px`, left: `${rect.left}px` };
|
|
1383
|
+
case "left":
|
|
1384
|
+
return { ...base, top: `${rect.top}px`, left: `${rect.right + 4}px` };
|
|
1385
|
+
case "right":
|
|
1386
|
+
return { ...base, top: `${rect.top}px`, right: `${window.innerWidth - rect.left + 4}px` };
|
|
1387
|
+
default:
|
|
1388
|
+
return { ...base, bottom: `${window.innerHeight - rect.top + 4}px`, left: `${rect.left}px` };
|
|
1389
|
+
}
|
|
1329
1390
|
})(),
|
|
1330
1391
|
onClick: (e) => e.stopPropagation()
|
|
1331
1392
|
}, [
|
|
@@ -1351,7 +1412,17 @@ var CliPanel = (0, import_vue3.defineComponent)({
|
|
|
1351
1412
|
style: (() => {
|
|
1352
1413
|
const rect = serversDropdownTriggerRect.value;
|
|
1353
1414
|
if (!rect) return {};
|
|
1354
|
-
|
|
1415
|
+
const base = { position: "fixed", zIndex: 1100 };
|
|
1416
|
+
switch (resolvedPosition.value) {
|
|
1417
|
+
case "top":
|
|
1418
|
+
return { ...base, top: `${rect.bottom + 4}px`, left: `${rect.left}px` };
|
|
1419
|
+
case "left":
|
|
1420
|
+
return { ...base, top: `${rect.top}px`, left: `${rect.right + 4}px` };
|
|
1421
|
+
case "right":
|
|
1422
|
+
return { ...base, top: `${rect.top}px`, right: `${window.innerWidth - rect.left + 4}px` };
|
|
1423
|
+
default:
|
|
1424
|
+
return { ...base, bottom: `${window.innerHeight - rect.top + 4}px`, left: `${rect.left}px` };
|
|
1425
|
+
}
|
|
1355
1426
|
})(),
|
|
1356
1427
|
onClick: (e) => e.stopPropagation()
|
|
1357
1428
|
}, [
|