n8n-editor-ui
Version:
Workflow Editor UI for n8n
329 lines (328 loc) • 17.5 kB
JavaScript
;
(function () {
System.register(["./chunk-legacy-Re9CbdfL.js", "./vue.runtime.esm-bundler-legacy--Sn1h8On.js", "./_MapCache-legacy-DlYNX_X1.js", "./src-legacy-uZTNWMC0.js", "./en-legacy-DJK4SpPN.js", "./preload-helper-legacy-CXRjoQ0T.js", "./_plugin-vue_export-helper-legacy-DZMI5HPp.js", "./truncate-legacy-BGje52Or.js", "./icon-legacy-CqVXaCIS.js", "./overlay-legacy-o1gtoD8p.js", "./empty-legacy-CA9D6itE.js", "./useMessage-legacy-M2m6s8Ce.js", "./useTelemetry-legacy-B3pzzkAE.js", "./useToast-legacy-C4Vu5mt9.js", "./sanitize-html-legacy-DLqXJu-U.js", "./CalendarDate-legacy-BUvNgcoo.js", "./path-browserify-legacy-C6ml8BkF.js", "./constants-legacy-TKxWCqvM.js", "./merge-legacy-8xjIc_ts.js", "./_baseOrderBy-legacy-CB2Dh5d_.js", "./dateformat-legacy-C4HUJTCr.js", "./useDebounce-legacy-CqZ-fJEm.js", "./useExternalHooks-legacy-8pg6K3ln.js", "./useStyles-legacy-E8NPEyeD.js", "./cloudPlan.store-legacy-U_Bztyyz.js", "./versions.store-legacy-BtvVzXUy.js", "./usePageRedirectionHelper-legacy-D0bLDat3.js", "./roles.store-legacy-DLKI2yRw.js"], function (_export, _context) {
"use strict";
var __toESM, toDisplayString, createElementBlock, createCommentVNode, unref, ref, createVNode, defineComponent, createBlock, onMounted, Fragment, withCtx, useCssModule, openBlock, createTextVNode, normalizeClass, createBaseVNode, useI18n, N8nActionBox_default, N8nButton_default, N8nText_default, N8nIcon_default, N8nActionToggle_default, N8nDataTableServer_default, N8nTag_default, N8nHeading_default, __plugin_vue_export_helper_default, useRouter, useMessage, useSettingsStore, useDocumentTitle, useTelemetry, useToast, VIEWS, MODAL_CONFIRM, require_dateformat, usePageRedirectionHelper, useRolesStore, __vite_style__, import_dateformat, _hoisted_1, ProjectRolesView_vue_vue_type_script_setup_true_lang_default, headerContainer, headerTitle, clickableRow, tallRow, ProjectRolesView_vue_vue_type_style_index_0_lang_module_default, cssModules, ProjectRolesView_default;
return {
setters: [function (_chunkLegacy001Js) {
__toESM = _chunkLegacy001Js.o;
}, function (_vueRuntimeEsmBundlerLegacy003Js) {
toDisplayString = _vueRuntimeEsmBundlerLegacy003Js.Cn;
createElementBlock = _vueRuntimeEsmBundlerLegacy003Js.D;
createCommentVNode = _vueRuntimeEsmBundlerLegacy003Js.E;
unref = _vueRuntimeEsmBundlerLegacy003Js.Gt;
ref = _vueRuntimeEsmBundlerLegacy003Js.It;
createVNode = _vueRuntimeEsmBundlerLegacy003Js.M;
defineComponent = _vueRuntimeEsmBundlerLegacy003Js.P;
createBlock = _vueRuntimeEsmBundlerLegacy003Js.T;
onMounted = _vueRuntimeEsmBundlerLegacy003Js.Z;
Fragment = _vueRuntimeEsmBundlerLegacy003Js._;
withCtx = _vueRuntimeEsmBundlerLegacy003Js.bt;
useCssModule = _vueRuntimeEsmBundlerLegacy003Js.c;
openBlock = _vueRuntimeEsmBundlerLegacy003Js.et;
createTextVNode = _vueRuntimeEsmBundlerLegacy003Js.j;
normalizeClass = _vueRuntimeEsmBundlerLegacy003Js.vn;
createBaseVNode = _vueRuntimeEsmBundlerLegacy003Js.w;
}, function (_MapCacheLegacy005Js) {
useI18n = _MapCacheLegacy005Js.gt;
}, function (_srcLegacy007Js) {
N8nActionBox_default = _srcLegacy007Js.Ct;
N8nButton_default = _srcLegacy007Js.Hn;
N8nText_default = _srcLegacy007Js.Vn;
N8nIcon_default = _srcLegacy007Js.Wn;
N8nActionToggle_default = _srcLegacy007Js.et;
N8nDataTableServer_default = _srcLegacy007Js.s;
N8nTag_default = _srcLegacy007Js.v;
N8nHeading_default = _srcLegacy007Js.zn;
}, function (_enLegacy00bJs) {}, function (_preloadHelperLegacy00dJs) {}, function (_pluginVue_exportHelperLegacy00fJs) {
__plugin_vue_export_helper_default = _pluginVue_exportHelperLegacy00fJs.t;
}, function (_truncateLegacy00hJs) {
useRouter = _truncateLegacy00hJs.y;
}, function (_iconLegacy00nJs) {}, function (_overlayLegacy00rJs) {}, function (_emptyLegacy00vJs) {}, function (_useMessageLegacy00xJs) {
useMessage = _useMessageLegacy00xJs.t;
}, function (_useTelemetryLegacy00HJs) {
useSettingsStore = _useTelemetryLegacy00HJs.Ho;
useDocumentTitle = _useTelemetryLegacy00HJs.Tn;
useTelemetry = _useTelemetryLegacy00HJs.t;
}, function (_useToastLegacy00JJs) {
useToast = _useToastLegacy00JJs.t;
}, function (_sanitizeHtmlLegacy00LJs) {}, function (_CalendarDateLegacy00NJs) {}, function (_pathBrowserifyLegacy00RJs) {}, function (_constantsLegacy00TJs) {
VIEWS = _constantsLegacy00TJs.Io;
MODAL_CONFIRM = _constantsLegacy00TJs.ts;
}, function (_mergeLegacy00VJs) {}, function (_baseOrderByLegacy00ZJs) {}, function (_dateformatLegacy00$Js) {
require_dateformat = _dateformatLegacy00$Js.t;
}, function (_useDebounceLegacy011Js) {}, function (_useExternalHooksLegacy013Js) {}, function (_useStylesLegacy015Js) {}, function (_cloudPlanStoreLegacy01dJs) {}, function (_versionsStoreLegacy01LJs) {}, function (_usePageRedirectionHelperLegacy01NJs) {
usePageRedirectionHelper = _usePageRedirectionHelperLegacy01NJs.t;
}, function (_rolesStoreLegacy02ZJs) {
useRolesStore = _rolesStoreLegacy02ZJs.t;
}],
execute: function () {
__vite_style__ = document.createElement('style');
__vite_style__.textContent = "\n._headerContainer_1yma8_2 {\n\tdisplay: flex;\n\tjustify-content: space-between;\n\talign-items: center;\n}\n._headerTitle_1yma8_8 {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 8px;\n}\n._clickableRow_1yma8_14 {\n\tcursor: pointer;\n}\n._tallRow_1yma8_18 {\n\theight: 64px;\n}\n/*$vite$:1*/";
document.head.appendChild(__vite_style__);
//#region src/features/project-roles/ProjectRolesView.vue?vue&type=script&setup=true&lang.ts
import_dateformat = /* @__PURE__ */__toESM(require_dateformat());
_hoisted_1 = {
class: "pb-xl"
};
ProjectRolesView_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */defineComponent({
__name: "ProjectRolesView",
setup(__props) {
const {
showError,
showMessage
} = useToast();
const rolesStore = useRolesStore();
const router = useRouter();
const message = useMessage();
const i18n = useI18n();
const $style = useCssModule();
const settingsStore = useSettingsStore();
const {
goToUpgrade
} = usePageRedirectionHelper();
const telemetry = useTelemetry();
onMounted(() => {
useDocumentTitle().set(i18n.baseText("settings.projectRoles"));
});
const headers = ref([{
title: i18n.baseText("projectRoles.sourceControl.table.name"),
key: "displayName",
width: 400,
disableSort: true,
resize: false
}, {
title: i18n.baseText("projectRoles.sourceControl.table.type"),
key: "systemRole",
disableSort: true,
resize: false
}, {
title: i18n.baseText("projectRoles.sourceControl.table.assignedTo"),
key: "usedByUsers",
disableSort: true,
align: "end",
value: item => item.usedByUsers ?? 0,
width: 75,
resize: false
}, {
title: i18n.baseText("projectRoles.sourceControl.table.lastEdited"),
key: "updatedAt",
value: item => item.updatedAt && !item.systemRole ? (0, import_dateformat.default)(item.updatedAt, "d mmm, yyyy") : "—",
disableSort: true,
resize: false
}, {
title: "",
key: "actions",
value: () => "",
width: 50,
minWidth: 50,
disableSort: true,
align: "center",
resize: false
}]);
async function deleteRole(item) {
i18n.baseText("projectRoles.action.delete.text", {
interpolate: {
roleName: item.displayName
}
});
if ((await message.confirm(i18n.baseText("projectRoles.action.delete.text", {
interpolate: {
roleName: item.displayName
}
}), i18n.baseText("projectRoles.action.delete.title", {
interpolate: {
roleName: item.displayName
}
}), {
type: "warning",
confirmButtonText: i18n.baseText("projectRoles.action.delete"),
cancelButtonText: i18n.baseText("projectRoles.action.cancel")
})) !== "confirm") return;
try {
await rolesStore.deleteProjectRole(item.slug);
const index = rolesStore.roles.project.findIndex(role => role.slug === item.slug);
if (index !== -1) rolesStore.roles.project.splice(index, 1);
showMessage({
title: i18n.baseText("projectRoles.action.delete.success"),
type: "success"
});
} catch (error) {
showError(error, i18n.baseText("projectRoles.action.delete.error"));
return;
}
}
async function duplicateRole(item) {
try {
const displayName = i18n.baseText("projectRoles.action.duplicate.name", {
interpolate: {
roleName: item.displayName
}
});
const role = await rolesStore.createProjectRole({
displayName,
description: item.description ?? void 0,
roleType: "project",
scopes: item.scopes
});
rolesStore.roles.project.push(role);
rolesStore.fetchRoles();
telemetry.track("User duplicated role", {
role_id: item.slug,
role_name: item.displayName,
permissions: item.scopes
});
showMessage({
type: "success",
message: i18n.baseText("projectRoles.action.duplicate.success", {
interpolate: {
roleName: item.displayName,
roleDuplicateName: displayName
}
})
});
return role;
} catch (error) {
showError(error, i18n.baseText("projectRoles.action.duplicate.error"));
return;
}
}
const actions = {
duplicate: duplicateRole,
delete: deleteRole
};
function rowProps(row) {
const className = [$style.tallRow];
if (!row.systemRole) className.push($style.clickableRow);
return {
class: className
};
}
function rowActions(item) {
return [{
label: i18n.baseText("projectRoles.action.duplicate"),
value: "duplicate"
}, {
label: i18n.baseText("projectRoles.action.delete"),
value: "delete",
disabled: item.usedByUsers !== 0
}];
}
function handleAction(action, item) {
actions[action](item);
}
function handleRowClick(item) {
if (item.systemRole) return;
router.push({
name: VIEWS.PROJECT_ROLE_SETTINGS,
params: {
roleSlug: item.slug
}
});
}
function addRole() {
telemetry.track("User clicked add role");
router.push({
name: VIEWS.PROJECT_NEW_ROLE
});
}
return (_ctx, _cache) => {
return openBlock(), createElementBlock("div", _hoisted_1, [createBaseVNode("div", {
class: normalizeClass(["mb-xl", unref($style).headerContainer])
}, [createBaseVNode("div", {
class: normalizeClass(unref($style).headerTitle)
}, [createVNode(unref(N8nHeading_default), {
tag: "h1",
size: "2xlarge"
}, {
default: withCtx(() => [createTextVNode(toDisplayString(unref(i18n).baseText("settings.projectRoles")), 1)]),
_: 1
}), createVNode(unref(N8nTag_default), {
clickable: false,
text: "Beta"
})], 2), unref(settingsStore).isCustomRolesFeatureEnabled ? (openBlock(), createBlock(unref(N8nButton_default), {
key: 0,
type: "secondary",
onClick: addRole
}, {
default: withCtx(() => [createTextVNode(toDisplayString(unref(i18n).baseText("projectRoles.addRole")), 1)]),
_: 1
})) : createCommentVNode("", true)], 2), !unref(settingsStore).isCustomRolesFeatureEnabled ? (openBlock(), createBlock(unref(N8nActionBox_default), {
key: 0,
class: "mt-2xl mb-l",
"button-text": unref(i18n).baseText("settings.externalSecrets.actionBox.buttonText"),
description: "yes",
onClick: _cache[0] || (_cache[0] = $event => unref(goToUpgrade)("custom-roles", "upgrade-custom-roles"))
}, {
heading: withCtx(() => [createBaseVNode("span", null, toDisplayString(unref(i18n).baseText("projectRoles.manageRoles.paywall.title")), 1)]),
description: withCtx(() => [createTextVNode(toDisplayString(unref(i18n).baseText("projectRoles.manageRoles.paywall.text")), 1)]),
_: 1
}, 8, ["button-text"])) : (openBlock(), createBlock(unref(N8nDataTableServer_default), {
key: 1,
items: unref(rolesStore).processedProjectRoles,
headers: headers.value,
"items-length": unref(rolesStore).processedProjectRoles.length,
"items-per-page": unref(rolesStore).processedProjectRoles.length,
"page-sizes": [unref(rolesStore).processedProjectRoles.length],
"row-props": rowProps,
"onClick:row": _cache[1] || (_cache[1] = (_event, {
item
}) => handleRowClick(item))
}, {
[`item.displayName`]: withCtx(({
item
}) => [createVNode(unref(N8nText_default), {
tag: "div",
class: "mb-4xs"
}, {
default: withCtx(() => [createTextVNode(toDisplayString(item.displayName), 1)]),
_: 2
}, 1024), createVNode(unref(N8nText_default), {
tag: "div",
size: "small",
color: "text-light"
}, {
default: withCtx(() => [createTextVNode(toDisplayString(item.description), 1)]),
_: 2
}, 1024)]),
[`item.systemRole`]: withCtx(({
item
}) => [item.systemRole ? (openBlock(), createElementBlock(Fragment, {
key: 0
}, [createVNode(unref(N8nIcon_default), {
icon: "lock"
}), createTextVNode(" " + toDisplayString(unref(i18n).baseText("projectRoles.literal.system")), 1)], 64)) : (openBlock(), createElementBlock(Fragment, {
key: 1
}, [createTextVNode(toDisplayString(unref(i18n).baseText("projectRoles.literal.custom")), 1)], 64))]),
[`item.actions`]: withCtx(({
item
}) => [!item.systemRole ? (openBlock(), createBlock(unref(N8nActionToggle_default), {
key: 0,
actions: rowActions(item),
onAction: $event => handleAction($event, item)
}, null, 8, ["actions", "onAction"])) : createCommentVNode("", true)]),
_: 2
}, 1032, ["items", "headers", "items-length", "items-per-page", "page-sizes"]))]);
};
}
}); //#endregion
//#region src/features/project-roles/ProjectRolesView.vue?vue&type=style&index=0&lang.module.css
headerContainer = "_headerContainer_1yma8_2";
headerTitle = "_headerTitle_1yma8_8";
clickableRow = "_clickableRow_1yma8_14";
tallRow = "_tallRow_1yma8_18";
ProjectRolesView_vue_vue_type_style_index_0_lang_module_default = {
headerContainer,
headerTitle,
clickableRow,
tallRow
}; //#endregion
//#region src/features/project-roles/ProjectRolesView.vue
cssModules = {
"$style": ProjectRolesView_vue_vue_type_style_index_0_lang_module_default
};
_export("default", ProjectRolesView_default = /* @__PURE__ */__plugin_vue_export_helper_default(ProjectRolesView_vue_vue_type_script_setup_true_lang_default, [["__cssModules", cssModules]])); //#endregion
}
};
});
})();