n8n-editor-ui
Version:
Workflow Editor UI for n8n
210 lines (209 loc) • 9.06 kB
JavaScript
import { C as computed, Cn as toDisplayString, D as createElementBlock, E as createCommentVNode, Gt as unref, M as createVNode, P as defineComponent, T as createBlock, W as mergeProps, at as renderSlot, bt as withCtx, et as openBlock, j as createTextVNode, ot as resolveComponent, st as resolveDirective, vn as normalizeClass, w as createBaseVNode, xt as withDirectives } from "./vue.runtime.esm-bundler-tP5dCd7J.js";
import { _t as useI18n } from "./_MapCache-ficiegRb.js";
import { ht as N8nTooltip_default, lt as N8nBadge_default } from "./src-DgvumQTi.js";
import { t as __plugin_vue_export_helper_default } from "./_plugin-vue_export-helper-BwBpWJRZ.js";
import { Qn as ProjectTypes, di as splitName, li as ResourceType } from "./builder.store-sBTWwxRU.js";
import { Ro as VIEWS } from "./constants-BbpucWL4.js";
import { n as isIconOrEmoji, t as ProjectIcon_default } from "./ProjectIcon-A2WPT9dM.js";
var ProjectState = /* @__PURE__ */ function(ProjectState$1) {
ProjectState$1["SharedPersonal"] = "shared-personal";
ProjectState$1["SharedOwned"] = "shared-owned";
ProjectState$1["Owned"] = "owned";
ProjectState$1["Personal"] = "personal";
ProjectState$1["Team"] = "team";
ProjectState$1["SharedTeam"] = "shared-team";
ProjectState$1["Unknown"] = "unknown";
return ProjectState$1;
}(ProjectState || {});
var ProjectCardBadge_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
__name: "ProjectCardBadge",
props: {
resource: {},
resourceType: {},
resourceTypeLabel: {},
personalProject: {},
showBadgeBorder: {
type: Boolean,
default: true
},
global: { type: Boolean }
},
setup(__props) {
const props = __props;
const i18n = useI18n();
const isShared = computed(() => {
return "sharedWithProjects" in props.resource && props.resource.sharedWithProjects?.length;
});
const projectState = computed(() => {
if (props.resource.homeProject && props.personalProject && props.resource.homeProject.id === props.personalProject.id || !props.resource.homeProject) {
if (isShared.value) return ProjectState.SharedOwned;
return ProjectState.Owned;
} else if (props.resource.homeProject?.type !== ProjectTypes.Team) {
if (isShared.value) return ProjectState.SharedPersonal;
return ProjectState.Personal;
} else if (props.resource.homeProject?.type === ProjectTypes.Team) {
if (isShared.value) return ProjectState.SharedTeam;
return ProjectState.Team;
}
return ProjectState.Unknown;
});
const numberOfMembersInHomeTeamProject = computed(() => "sharedWithProjects" in props.resource ? props.resource.sharedWithProjects?.length ?? 0 : 0);
const badgeText = computed(() => {
if (projectState.value === ProjectState.Owned || projectState.value === ProjectState.SharedOwned) return i18n.baseText("projects.menu.personal");
else {
const { name, email } = splitName(props.resource.homeProject?.name ?? "");
return name ?? email ?? "";
}
});
const badgeIcon = computed(() => {
switch (projectState.value) {
case ProjectState.Owned:
case ProjectState.SharedOwned:
case ProjectState.Personal:
case ProjectState.SharedPersonal: return {
type: "icon",
value: "user"
};
case ProjectState.Team:
case ProjectState.SharedTeam: return isIconOrEmoji(props.resource.homeProject?.icon) ? props.resource.homeProject?.icon : {
type: "icon",
value: "layers"
};
default: return {
type: "icon",
value: "layers"
};
}
});
const badgeTooltip = computed(() => {
switch (projectState.value) {
case ProjectState.SharedOwned: return i18n.baseText("projects.badge.tooltip.sharedOwned", { interpolate: {
resourceTypeLabel: props.resourceTypeLabel,
count: numberOfMembersInHomeTeamProject.value
} });
case ProjectState.SharedPersonal: return i18n.baseText("projects.badge.tooltip.sharedPersonal", { interpolate: {
resourceTypeLabel: props.resourceTypeLabel,
name: badgeText.value,
count: numberOfMembersInHomeTeamProject.value
} });
case ProjectState.Personal: return i18n.baseText("projects.badge.tooltip.personal", { interpolate: {
resourceTypeLabel: props.resourceTypeLabel,
name: badgeText.value
} });
case ProjectState.Team: return i18n.baseText("projects.badge.tooltip.team", { interpolate: {
resourceTypeLabel: props.resourceTypeLabel,
name: badgeText.value
} });
case ProjectState.SharedTeam: return i18n.baseText("projects.badge.tooltip.sharedTeam", { interpolate: {
resourceTypeLabel: props.resourceTypeLabel,
name: badgeText.value,
count: numberOfMembersInHomeTeamProject.value
} });
default: return "";
}
});
const projectLocation = computed(() => {
if (projectState.value !== ProjectState.Personal && projectState.value !== ProjectState.SharedPersonal && props.resource.homeProject?.id && props.resourceType === ResourceType.Workflow) return {
name: VIEWS.PROJECTS_WORKFLOWS,
params: { projectId: props.resource.homeProject.id }
};
return null;
});
return (_ctx, _cache) => {
const _component_RouterLink = resolveComponent("RouterLink");
const _directive_n8n_truncate = resolveDirective("n8n-truncate");
return openBlock(), createElementBlock("div", mergeProps({ class: {
[_ctx.$style.wrapper]: true,
[_ctx.$style["no-border"]]: _ctx.showBadgeBorder
} }, _ctx.$attrs), [
badgeText.value ? (openBlock(), createBlock(unref(N8nTooltip_default), {
key: 0,
disabled: !badgeTooltip.value || numberOfMembersInHomeTeamProject.value !== 0,
placement: "top"
}, {
content: withCtx(() => [createTextVNode(toDisplayString(badgeTooltip.value), 1)]),
default: withCtx(() => [createVNode(unref(N8nBadge_default), {
class: normalizeClass([_ctx.$style.badge, _ctx.$style.projectBadge]),
theme: "tertiary",
"data-test-id": "card-badge",
"show-border": _ctx.showBadgeBorder
}, {
default: withCtx(() => [createVNode(ProjectIcon_default, {
icon: badgeIcon.value,
"border-less": true,
size: "mini"
}, null, 8, ["icon"]), projectLocation.value ? (openBlock(), createBlock(_component_RouterLink, {
key: 0,
to: projectLocation.value
}, {
default: withCtx(() => [withDirectives(createBaseVNode("span", { class: normalizeClass(_ctx.$style.nowrap) }, null, 2), [[
_directive_n8n_truncate,
badgeText.value,
"20"
]])]),
_: 1
}, 8, ["to"])) : withDirectives((openBlock(), createElementBlock("span", {
key: 1,
class: normalizeClass(_ctx.$style.nowrap)
}, null, 2)), [[
_directive_n8n_truncate,
badgeText.value,
"20"
]])]),
_: 1
}, 8, ["class", "show-border"])]),
_: 1
}, 8, ["disabled"])) : createCommentVNode("", true),
renderSlot(_ctx.$slots, "default"),
_ctx.global ? (openBlock(), createBlock(unref(N8nTooltip_default), {
key: 1,
placement: "top"
}, {
content: withCtx(() => [createTextVNode(toDisplayString(unref(i18n).baseText("projects.badge.tooltip.global", { interpolate: { resourceTypeLabel: props.resourceTypeLabel } })), 1)]),
default: withCtx(() => [createBaseVNode("div", {
class: normalizeClass(_ctx.$style["global-badge"]),
"data-test-id": "credential-global-badge",
theme: "tertiary",
bold: ""
}, [createVNode(ProjectIcon_default, {
icon: {
type: "icon",
value: "globe"
},
"border-less": true,
size: "mini"
}), createTextVNode(" " + toDisplayString(unref(i18n).baseText("projects.badge.global")), 1)], 2)]),
_: 1
})) : createCommentVNode("", true),
numberOfMembersInHomeTeamProject.value ? (openBlock(), createBlock(unref(N8nTooltip_default), {
key: 2,
disabled: !badgeTooltip.value || numberOfMembersInHomeTeamProject.value === 0,
placement: "top"
}, {
content: withCtx(() => [createTextVNode(toDisplayString(badgeTooltip.value), 1)]),
default: withCtx(() => [createBaseVNode("div", {
class: normalizeClass(_ctx.$style["count-badge"]),
theme: "tertiary",
bold: ""
}, " +" + toDisplayString(numberOfMembersInHomeTeamProject.value), 3)]),
_: 1
}, 8, ["disabled"])) : createCommentVNode("", true)
], 16);
};
}
});
const wrapper = "_wrapper_k20jl_123";
const badge = "_badge_k20jl_133";
const projectBadge = "_projectBadge_k20jl_146";
const nowrap = "_nowrap_k20jl_166";
var ProjectCardBadge_vue_vue_type_style_index_0_lang_module_default = {
wrapper,
"no-border": "_no-border_k20jl_129",
badge,
projectBadge,
"count-badge": "_count-badge_k20jl_151",
"global-badge": "_global-badge_k20jl_159 _count-badge_k20jl_151",
nowrap
};
var ProjectCardBadge_default = /* @__PURE__ */ __plugin_vue_export_helper_default(ProjectCardBadge_vue_vue_type_script_setup_true_lang_default, [["__cssModules", { "$style": ProjectCardBadge_vue_vue_type_style_index_0_lang_module_default }]]);
export { ProjectCardBadge_default as t };