@defikitdotnet/education-module-ai
Version:
AI Education Module using Agent Framework
65 lines (64 loc) • 3.16 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.UserRoleSelect = void 0;
var jsx_runtime_1 = require("react/jsx-runtime");
var react_1 = require("react");
var select_1 = require("../components/ui/select");
var badge_1 = require("../components/ui/badge");
// Predefined roles with permissions based on the education module's existing roles
var PREDEFINED_ROLES = [
{
id: "admin",
name: "Administrator",
permissions: [
"manage_users",
"manage_courses",
"manage_content",
"view_reports",
"manage_settings",
],
},
{
id: "instructor",
name: "Instructor",
permissions: [
"manage_courses",
"manage_content",
"view_reports",
"grade_assignments",
],
},
{
id: "student",
name: "Student",
permissions: [
"view_courses",
"submit_assignments",
"participate_discussions",
],
},
];
var UserRoleSelect = function (_a) {
var value = _a.value, onChange = _a.onChange, _b = _a.disabled, disabled = _b === void 0 ? false : _b;
var _c = (0, react_1.useState)(PREDEFINED_ROLES.find(function (role) { return role.id === value; }) || null), selectedRole = _c[0], setSelectedRole = _c[1];
// Update selected role when value prop changes
(0, react_1.useEffect)(function () {
var role = PREDEFINED_ROLES.find(function (role) { return role.id === value; });
if (role) {
setSelectedRole(role);
}
}, [value]);
// Handle role change
var handleRoleChange = function (roleId) {
onChange(roleId);
var role = PREDEFINED_ROLES.find(function (r) { return r.id === roleId; });
if (role) {
setSelectedRole(role);
}
};
return ((0, jsx_runtime_1.jsxs)("div", { className: "space-y-3", children: [(0, jsx_runtime_1.jsxs)(select_1.Select, { value: value, onValueChange: function (value) { return handleRoleChange(value); }, children: [(0, jsx_runtime_1.jsx)(select_1.SelectTrigger, { className: "w-full", children: (0, jsx_runtime_1.jsx)(select_1.SelectValue, { placeholder: "Select a role" }) }), (0, jsx_runtime_1.jsx)(select_1.SelectContent, { children: PREDEFINED_ROLES.map(function (role) { return ((0, jsx_runtime_1.jsx)(select_1.SelectItem, { value: role.id, children: role.name }, role.id)); }) })] }), selectedRole && ((0, jsx_runtime_1.jsxs)("div", { className: "space-y-2", children: [(0, jsx_runtime_1.jsx)("div", { className: "text-sm font-medium", children: "Permissions:" }), (0, jsx_runtime_1.jsx)("div", { className: "flex flex-wrap gap-2", children: selectedRole.permissions.map(function (permission) { return ((0, jsx_runtime_1.jsx)(badge_1.Badge, { variant: "secondary", children: permission
.split("_")
.map(function (word) { return word.charAt(0).toUpperCase() + word.slice(1); })
.join(" ") }, permission)); }) })] }))] }));
};
exports.UserRoleSelect = UserRoleSelect;