studiokit-scaffolding-js 4.3.20-next.2.2 → 4.3.20-next.2.3
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.
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { UserRole } from '../../types';
|
|
3
3
|
export interface UserRolesContextType {
|
|
4
|
+
/** disable all user role select dropdowns, if any */
|
|
5
|
+
isUpdateDisabled?: boolean;
|
|
4
6
|
/** disable all user role delete buttons */
|
|
5
7
|
isDeleteDisabled?: boolean;
|
|
6
8
|
/** Is the current user allowed to add, update, and delete user roles? */
|
|
@@ -34,7 +34,7 @@ var Context_1 = require("./Context");
|
|
|
34
34
|
var Select_1 = require("./Select");
|
|
35
35
|
var RoleCell = function (_a) {
|
|
36
36
|
var user = _a.user, requiredRoleCount = _a.requiredRoleCount;
|
|
37
|
-
var _b = react_1.useContext(Context_1.UserRolesContext), isDeleteDisabled = _b.isDeleteDisabled, canModify = _b.canModify, canDeleteSelf = _b.canDeleteSelf, allowMultipleRoles = _b.allowMultipleRoles, roles = _b.roles, requiredRole = _b.requiredRole, textForRole = _b.textForRole, updateUserRole = _b.updateUserRole, removeUserRole = _b.removeUserRole;
|
|
37
|
+
var _b = react_1.useContext(Context_1.UserRolesContext), isUpdateDisabled = _b.isUpdateDisabled, isDeleteDisabled = _b.isDeleteDisabled, canModify = _b.canModify, canDeleteSelf = _b.canDeleteSelf, allowMultipleRoles = _b.allowMultipleRoles, roles = _b.roles, requiredRole = _b.requiredRole, textForRole = _b.textForRole, updateUserRole = _b.updateUserRole, removeUserRole = _b.removeUserRole;
|
|
38
38
|
var currentUserId = react_redux_1.useSelector(function (state) {
|
|
39
39
|
if (!state.models.user || !state.models.user.userInfo) {
|
|
40
40
|
throw new Error('Current user id is not stored in redux');
|
|
@@ -45,6 +45,19 @@ var RoleCell = function (_a) {
|
|
|
45
45
|
var roleText = userRole_1.getRoleText(textForRole)(userRole);
|
|
46
46
|
var isUserRoleExternal = userRole_1.isExternal(userRole);
|
|
47
47
|
var userId = userRole_1.getUserId(userRole);
|
|
48
|
+
/**
|
|
49
|
+
* allow update if
|
|
50
|
+
* * multiple roles are not allowed (single role mode)
|
|
51
|
+
* * the userRole is not external (roster synced)
|
|
52
|
+
* * update is not disabled
|
|
53
|
+
* * there is more than one possible role
|
|
54
|
+
* * the user role is not the last remaining required role user
|
|
55
|
+
*/
|
|
56
|
+
var canUpdate = !allowMultipleRoles &&
|
|
57
|
+
!isUserRoleExternal &&
|
|
58
|
+
!isUpdateDisabled &&
|
|
59
|
+
roles.length > 1 &&
|
|
60
|
+
(!requiredRole || userRole.role !== requiredRole || !requiredRoleCount || requiredRoleCount > 1);
|
|
48
61
|
/**
|
|
49
62
|
* allow removal if
|
|
50
63
|
* * the userRole is not external (roster synced)
|
|
@@ -59,10 +72,10 @@ var RoleCell = function (_a) {
|
|
|
59
72
|
var isExternalPopover = (react_1.default.createElement(react_bootstrap_1.Popover, { id: "is-external-popover-" + userId + "-" + userRole.role },
|
|
60
73
|
react_1.default.createElement("h3", null, "Added via Roster Sync"),
|
|
61
74
|
react_1.default.createElement("p", { className: "mb2" }, "This person was added automatically via roster sync and cannot be manually removed.")));
|
|
62
|
-
return (react_1.default.createElement("li", { key: user.id + "-" + roleText, className: "nowrap flex items-center justify-end
|
|
63
|
-
|
|
75
|
+
return (react_1.default.createElement("li", { key: user.id + "-" + roleText, className: "nowrap flex items-center" + (allowMultipleRoles ? ' justify-end' : '') },
|
|
76
|
+
canUpdate ? (react_1.default.createElement(Select_1.RoleSelectControl, { options: roles, value: userRole.role, onChange: function (role) {
|
|
64
77
|
updateUserRole(userRole, role);
|
|
65
|
-
}, textForRole: textForRole })),
|
|
78
|
+
}, textForRole: textForRole })) : (react_1.default.createElement("span", { className: allowMultipleRoles ? '' : 'pl3' }, roleText)),
|
|
66
79
|
canDelete ? (react_1.default.createElement(core_1.IconButton, { className: "remove-user-button", "aria-label": "Remove " + roleText, onClick: function () {
|
|
67
80
|
removeUserRole(userRole);
|
|
68
81
|
} },
|
|
@@ -14,7 +14,9 @@ export interface UserRolesOwnProps extends CollectionComponentWrappedProps<UserR
|
|
|
14
14
|
/** If multiple roles allowed, each role is displayed per user, otherwise a select dropdown is displayed. */
|
|
15
15
|
allowMultipleRoles?: boolean;
|
|
16
16
|
/** disable adding new user roles */
|
|
17
|
-
|
|
17
|
+
isAddDisabled?: boolean;
|
|
18
|
+
/** disable all user role select dropdowns, if any */
|
|
19
|
+
isUpdateDisabled?: boolean;
|
|
18
20
|
/** disable all user role delete buttons */
|
|
19
21
|
isDeleteDisabled?: boolean;
|
|
20
22
|
/** The activity the current user must have in order to add, update, or delete user roles. */
|
|
@@ -96,5 +98,5 @@ export declare class UserRoles extends Component<UserRolesProps, UserRolesState>
|
|
|
96
98
|
render(): JSX.Element;
|
|
97
99
|
}
|
|
98
100
|
export declare const mapStateToProps: (state: BaseReduxState, ownProps: UserRolesOwnProps) => UserRolesReduxProps;
|
|
99
|
-
declare const _default: import("react-redux").ConnectedComponent<typeof UserRoles, Pick<React.ClassAttributes<UserRoles> & UserRolesProps, "externalProviders" | "model" | "ref" | "onChange" | "key" | "
|
|
101
|
+
declare const _default: import("react-redux").ConnectedComponent<typeof UserRoles, Pick<React.ClassAttributes<UserRoles> & UserRolesProps, "externalProviders" | "model" | "ref" | "onChange" | "key" | "guid" | "load" | "modelName" | "pathParams" | "modelStatus" | "queryParams" | "disableAutoLoad" | "modelArray" | "stopPeriodicLoad" | "create" | "update" | "delete" | "previousModelStatus" | "fetchingId" | "textForRole" | "entityName" | "defaultRole" | "roleDescriptions" | "renderAddDescription" | "isUpdateDisabled" | "isDeleteDisabled" | "allowMultipleRoles" | "requiredRole" | "isAddDisabled" | "modifyUserRoleActivityName" | "deleteOwnUserRoleActivityName" | "addRoleExcludeList" | "entity" | "filterUsers" | "renderTableDescription" | "singularArticleForRole"> & UserRolesOwnProps>;
|
|
100
102
|
export default _default;
|
|
@@ -382,7 +382,7 @@ var UserRoles = /** @class */ (function (_super) {
|
|
|
382
382
|
//#endregion Remove User
|
|
383
383
|
UserRoles.prototype.render = function () {
|
|
384
384
|
var _this = this;
|
|
385
|
-
var _a = this.props, modelStatus = _a.modelStatus, canModify = _a.canModify, canDeleteSelf = _a.canDeleteSelf, allowMultipleRoles = _a.allowMultipleRoles,
|
|
385
|
+
var _a = this.props, modelStatus = _a.modelStatus, canModify = _a.canModify, canDeleteSelf = _a.canDeleteSelf, allowMultipleRoles = _a.allowMultipleRoles, isAddDisabled = _a.isAddDisabled, isUpdateDisabled = _a.isUpdateDisabled, isDeleteDisabled = _a.isDeleteDisabled, defaultRole = _a.defaultRole, requiredRole = _a.requiredRole, roleDescriptions = _a.roleDescriptions, addRoleExcludeList = _a.addRoleExcludeList, entityName = _a.entityName, renderTableDescription = _a.renderTableDescription, renderAddDescription = _a.renderAddDescription;
|
|
386
386
|
var _b = this.state, sortedUsers = _b.sortedUsers, isAddingUsers = _b.isAddingUsers, shouldResetAddForm = _b.shouldResetAddForm, shouldShowRemoveDialog = _b.shouldShowRemoveDialog, userRoleToRemove = _b.userRoleToRemove, successMessage = _b.successMessage, existingMessage = _b.existingMessage, blockedMessage = _b.blockedMessage, failMessage = _b.failMessage;
|
|
387
387
|
var addableRoleDescriptions = addRoleExcludeList
|
|
388
388
|
? lodash_1.pickBy(roleDescriptions, function (_, key) { return !addRoleExcludeList.includes(key); })
|
|
@@ -413,10 +413,11 @@ var UserRoles = /** @class */ (function (_super) {
|
|
|
413
413
|
});
|
|
414
414
|
} },
|
|
415
415
|
react_1.default.createElement("p", { className: "pre-wrap" }, failMessage))),
|
|
416
|
-
canModify && (react_1.default.createElement(Add_1.default, { id: "entityUserRolesAdd", disabled:
|
|
416
|
+
canModify && (react_1.default.createElement(Add_1.default, { id: "entityUserRolesAdd", disabled: isAddDisabled, entityName: entityName, defaultRole: defaultRole, roleDescriptions: addableRoleDescriptions, renderAddDescription: renderAddDescription, textForRole: this.textForRole, isAddingUsersToRole: isAddingUsers, shouldReset: shouldResetAddForm, addUserRoles: this.addUserRoles })),
|
|
417
417
|
!!renderTableDescription && renderTableDescription(canModify),
|
|
418
418
|
react_1.default.createElement(react_bootstrap_1.Row, { className: "mt3" },
|
|
419
419
|
react_1.default.createElement(react_bootstrap_1.Col, { xs: 12 }, modelStatus === modelStatus_1.default.LOADING ? (react_1.default.createElement(Loading_1.default, null)) : sortedUsers.length > 0 ? (react_1.default.createElement(Context_1.UserRolesContext.Provider, { value: {
|
|
420
|
+
isUpdateDisabled: isUpdateDisabled,
|
|
420
421
|
isDeleteDisabled: isDeleteDisabled,
|
|
421
422
|
canModify: canModify,
|
|
422
423
|
canDeleteSelf: canDeleteSelf,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "studiokit-scaffolding-js",
|
|
3
|
-
"version": "4.3.20-next.2.
|
|
3
|
+
"version": "4.3.20-next.2.3",
|
|
4
4
|
"description": "Common scaffolding for Studio apps at Purdue",
|
|
5
5
|
"repository": "https://gitlab.com/purdue-informatics/studiokit/studiokit-scaffolding-js",
|
|
6
6
|
"license": "MIT",
|