studiokit-scaffolding-js 4.3.21 → 4.3.22
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/LICENSE +21 -21
- package/README.md +127 -127
- package/lib/components/ActionList.d.ts +20 -20
- package/lib/components/ActionList.js +94 -94
- package/lib/components/AlertDialog.d.ts +18 -18
- package/lib/components/AlertDialog.js +21 -21
- package/lib/components/AlertWithIcon.d.ts +7 -7
- package/lib/components/AlertWithIcon.js +57 -57
- package/lib/components/Blots/CustomImageSpec.d.ts +14 -14
- package/lib/components/Blots/CustomImageSpec.js +45 -45
- package/lib/components/Blots/CustomVideoSpec.d.ts +16 -16
- package/lib/components/Blots/CustomVideoSpec.js +47 -47
- package/lib/components/ConnectedModal.d.ts +6 -6
- package/lib/components/ConnectedModal.js +11 -11
- package/lib/components/Dropdowns/GroupsDropdown.d.ts +18 -18
- package/lib/components/Dropdowns/GroupsDropdown.js +90 -90
- package/lib/components/Dropdowns/ManagedNavDropdown.d.ts +32 -32
- package/lib/components/Dropdowns/ManagedNavDropdown.js +118 -118
- package/lib/components/Dropdowns/UserDropdown.d.ts +6 -6
- package/lib/components/Dropdowns/UserDropdown.js +76 -76
- package/lib/components/Dropdowns/index.d.ts +3 -3
- package/lib/components/Dropdowns/index.js +12 -12
- package/lib/components/EntityOwnerList.d.ts +11 -11
- package/lib/components/EntityOwnerList.js +63 -63
- package/lib/components/ErrorBoundary.d.ts +11 -11
- package/lib/components/ErrorBoundary.js +74 -74
- package/lib/components/Forms/DateField.d.ts +13 -13
- package/lib/components/Forms/DateField.js +99 -99
- package/lib/components/Forms/TimeField.d.ts +11 -11
- package/lib/components/Forms/TimeField.js +112 -112
- package/lib/components/Forms/index.d.ts +2 -2
- package/lib/components/Forms/index.js +14 -14
- package/lib/components/Groups/CreateEditCopySaveButtons.d.ts +10 -10
- package/lib/components/Groups/CreateEditCopySaveButtons.js +18 -18
- package/lib/components/Groups/GroupCreateOrEditCommonProps.d.ts +6 -6
- package/lib/components/Groups/GroupCreateOrEditCommonProps.js +2 -2
- package/lib/components/Groups/RosterSyncInfo.d.ts +5 -5
- package/lib/components/Groups/RosterSyncInfo.js +54 -54
- package/lib/components/HOC/AccessibleAppComponent.d.ts +15 -15
- package/lib/components/HOC/AccessibleAppComponent.js +135 -135
- package/lib/components/HOC/ActivityRequiredComponent.d.ts +105 -105
- package/lib/components/HOC/ActivityRequiredComponent.js +101 -101
- package/lib/components/HOC/AsyncComponent.d.ts +37 -37
- package/lib/components/HOC/AsyncComponent.js +136 -136
- package/lib/components/HOC/AuthenticatedComponent.d.ts +10 -10
- package/lib/components/HOC/AuthenticatedComponent.js +104 -104
- package/lib/components/HOC/CollectionComponent.d.ts +61 -61
- package/lib/components/HOC/CollectionComponent.js +175 -175
- package/lib/components/HOC/CollectionFirstItemComponent.d.ts +67 -67
- package/lib/components/HOC/CollectionFirstItemComponent.js +94 -94
- package/lib/components/HOC/CollectionItemComponent.d.ts +61 -61
- package/lib/components/HOC/CollectionItemComponent.js +172 -172
- package/lib/components/HOC/ConnectedModalComponent.d.ts +26 -26
- package/lib/components/HOC/ConnectedModalComponent.js +110 -110
- package/lib/components/HOC/DataDependentComponent.d.ts +61 -61
- package/lib/components/HOC/DataDependentComponent.js +90 -90
- package/lib/components/HOC/EntityComponent.d.ts +83 -83
- package/lib/components/HOC/EntityComponent.js +120 -120
- package/lib/components/HOC/FullscreenModalComponent.d.ts +74 -74
- package/lib/components/HOC/FullscreenModalComponent.js +173 -173
- package/lib/components/HOC/GroupActivityRequiredComponent.d.ts +29 -29
- package/lib/components/HOC/GroupActivityRequiredComponent.js +49 -49
- package/lib/components/HOC/GuidComponent.d.ts +14 -14
- package/lib/components/HOC/GuidComponent.js +72 -72
- package/lib/components/HOC/ModelContextDependencyVerifyComponent.d.ts +172 -172
- package/lib/components/HOC/ModelContextDependencyVerifyComponent.js +72 -72
- package/lib/components/HOC/ModelErrorRedirectComponent.d.ts +69 -69
- package/lib/components/HOC/ModelErrorRedirectComponent.js +101 -101
- package/lib/components/HOC/SearchPersistorComponent.d.ts +85 -85
- package/lib/components/HOC/SearchPersistorComponent.js +198 -198
- package/lib/components/HOC/UnauthenticatedComponent.d.ts +62 -62
- package/lib/components/HOC/UnauthenticatedComponent.js +90 -90
- package/lib/components/HOC/UserComponent.d.ts +3 -3
- package/lib/components/HOC/UserComponent.js +12 -12
- package/lib/components/Icons/IconExternalUser.d.ts +3 -3
- package/lib/components/Icons/IconExternalUser.js +24 -24
- package/lib/components/Icons/IconImpersonation.d.ts +3 -3
- package/lib/components/Icons/IconImpersonation.js +24 -24
- package/lib/components/Icons/IconStopImpersonating.d.ts +3 -3
- package/lib/components/Icons/IconStopImpersonating.js +24 -24
- package/lib/components/Impersonation/Button.d.ts +7 -7
- package/lib/components/Impersonation/Button.js +61 -61
- package/lib/components/Impersonation/Link.d.ts +7 -7
- package/lib/components/Impersonation/Link.js +58 -58
- package/lib/components/Impersonation/UserDetail.css +22 -22
- package/lib/components/Impersonation/UserDetail.d.ts +22 -22
- package/lib/components/Impersonation/UserDetail.js +23 -23
- package/lib/components/Loading.d.ts +4 -4
- package/lib/components/Loading.js +24 -24
- package/lib/components/Lti/Confirm.d.ts +8 -8
- package/lib/components/Lti/Confirm.js +37 -37
- package/lib/components/Lti/CreateNonLtiGroupAlertDialog.d.ts +15 -15
- package/lib/components/Lti/CreateNonLtiGroupAlertDialog.js +83 -83
- package/lib/components/Lti/Launch.d.ts +21 -21
- package/lib/components/Lti/Launch.js +52 -52
- package/lib/components/Lti/LaunchGroup.d.ts +9 -9
- package/lib/components/Lti/LaunchGroup.js +45 -45
- package/lib/components/NewVersionAlert.d.ts +18 -18
- package/lib/components/NewVersionAlert.js +97 -97
- package/lib/components/NotFound.d.ts +3 -3
- package/lib/components/NotFound.js +30 -28
- package/lib/components/Notifications.d.ts +39 -39
- package/lib/components/Notifications.js +175 -175
- package/lib/components/RefreshIndicator/Bordered.d.ts +7 -7
- package/lib/components/RefreshIndicator/Bordered.js +35 -35
- package/lib/components/RefreshIndicator/Inline.d.ts +4 -4
- package/lib/components/RefreshIndicator/Inline.js +36 -36
- package/lib/components/RefreshIndicator/index.d.ts +21 -21
- package/lib/components/RefreshIndicator/index.js +116 -116
- package/lib/components/SearchControls.d.ts +14 -14
- package/lib/components/SearchControls.js +34 -34
- package/lib/components/SentryRoute.d.ts +3 -3
- package/lib/components/SentryRoute.js +25 -25
- package/lib/components/Tables/RoleFilter.d.ts +14 -14
- package/lib/components/Tables/RoleFilter.js +53 -53
- package/lib/components/Tables/TextFilter.d.ts +7 -7
- package/lib/components/Tables/TextFilter.js +26 -26
- package/lib/components/UserRoles/Add.d.ts +31 -31
- package/lib/components/UserRoles/Add.js +165 -165
- package/lib/components/UserRoles/RoleCell.d.ts +21 -21
- package/lib/components/UserRoles/RoleCell.js +53 -53
- package/lib/components/UserRoles/Select.d.ts +27 -27
- package/lib/components/UserRoles/Select.js +44 -44
- package/lib/components/UserRoles/Table.d.ts +16 -16
- package/lib/components/UserRoles/Table.js +99 -99
- package/lib/components/UserRoles/index.d.ts +76 -76
- package/lib/components/UserRoles/index.js +361 -361
- package/lib/constants/baseActivity.d.ts +25 -25
- package/lib/constants/baseActivity.js +29 -29
- package/lib/constants/baseRole.d.ts +9 -9
- package/lib/constants/baseRole.js +13 -13
- package/lib/constants/configuration.d.ts +8 -8
- package/lib/constants/configuration.js +39 -39
- package/lib/constants/externalProviderType.d.ts +5 -5
- package/lib/constants/externalProviderType.js +9 -9
- package/lib/constants/index.d.ts +8 -8
- package/lib/constants/index.js +20 -20
- package/lib/constants/mockData.d.ts +84 -82
- package/lib/constants/mockData.js +379 -379
- package/lib/constants/modelStatus.d.ts +10 -10
- package/lib/constants/modelStatus.js +14 -14
- package/lib/constants/notificationType.d.ts +7 -7
- package/lib/constants/notificationType.js +11 -11
- package/lib/constants/shard.d.ts +6 -6
- package/lib/constants/shard.js +10 -10
- package/lib/constants/tier.d.ts +6 -6
- package/lib/constants/tier.js +10 -10
- package/lib/constants/userRole.d.ts +2 -2
- package/lib/constants/userRole.js +21 -21
- package/lib/css/base/_base.css +98 -98
- package/lib/css/base/_typography.css +130 -130
- package/lib/css/components/_alert.css +85 -85
- package/lib/css/components/_bootstrap-grid.css +28 -28
- package/lib/css/components/_buttons.css +325 -325
- package/lib/css/components/_forms.css +91 -91
- package/lib/css/components/_menu.css +56 -56
- package/lib/css/components/_modals.css +41 -41
- package/lib/css/components/_tables.css +426 -426
- package/lib/css/components/_tags.css +12 -12
- package/lib/css/index-with-variables.css +14 -14
- package/lib/css/index.css +13 -13
- package/lib/css/utils/_border.css +463 -463
- package/lib/css/utils/_color.css +271 -271
- package/lib/css/utils/_display.css +312 -312
- package/lib/css/utils/_general.css +48 -48
- package/lib/css/utils/_icon.css +16 -16
- package/lib/css/utils/_text.css +24 -24
- package/lib/css/utils/_width.css +60 -60
- package/lib/css/variables.css +70 -70
- package/lib/endpointMappings.d.ts +4 -4
- package/lib/endpointMappings.js +173 -173
- package/lib/hooks/useCollection.d.ts +6 -6
- package/lib/hooks/useCollection.js +61 -61
- package/lib/hooks/useCollectionConfiguration.d.ts +27 -27
- package/lib/hooks/useCollectionConfiguration.js +67 -67
- package/lib/hooks/useCollectionItem.d.ts +6 -6
- package/lib/hooks/useCollectionItem.js +54 -54
- package/lib/hooks/useGuid.d.ts +4 -4
- package/lib/hooks/useGuid.js +14 -14
- package/lib/hooks/usePrevious.d.ts +5 -5
- package/lib/hooks/usePrevious.js +18 -18
- package/lib/index.d.ts +8 -8
- package/lib/index.js +30 -30
- package/lib/redux/actionCreator.d.ts +5 -5
- package/lib/redux/actionCreator.js +16 -16
- package/lib/redux/actions.d.ts +12 -12
- package/lib/redux/actions.js +30 -30
- package/lib/redux/configureReducers.d.ts +22 -22
- package/lib/redux/configureReducers.js +94 -94
- package/lib/redux/configureStore.d.ts +14 -14
- package/lib/redux/configureStore.js +118 -118
- package/lib/redux/helpers.d.ts +2 -2
- package/lib/redux/helpers.js +7 -7
- package/lib/redux/reducers/index.d.ts +4 -4
- package/lib/redux/reducers/index.js +12 -12
- package/lib/redux/reducers/modalsReducer.d.ts +8 -8
- package/lib/redux/reducers/modalsReducer.js +54 -54
- package/lib/redux/reducers/notificationsReducer.d.ts +9 -9
- package/lib/redux/reducers/notificationsReducer.js +27 -27
- package/lib/redux/reducers/searchReducer.d.ts +17 -17
- package/lib/redux/reducers/searchReducer.js +26 -26
- package/lib/redux/sagas/caliperSaga.d.ts +2 -2
- package/lib/redux/sagas/caliperSaga.js +296 -296
- package/lib/redux/sagas/clockOffsetSaga.d.ts +10 -10
- package/lib/redux/sagas/clockOffsetSaga.js +81 -81
- package/lib/redux/sagas/configurationSaga.d.ts +1 -1
- package/lib/redux/sagas/configurationSaga.js +48 -48
- package/lib/redux/sagas/errorSaga.d.ts +2 -2
- package/lib/redux/sagas/errorSaga.js +66 -66
- package/lib/redux/sagas/identityProviderSaga.d.ts +2 -2
- package/lib/redux/sagas/identityProviderSaga.js +91 -91
- package/lib/redux/sagas/initialDataLoadSaga.d.ts +1 -1
- package/lib/redux/sagas/initialDataLoadSaga.js +33 -33
- package/lib/redux/sagas/postLoginDataSaga.d.ts +9 -9
- package/lib/redux/sagas/postLoginDataSaga.js +87 -87
- package/lib/redux/sagas/postLoginRedirectSaga.d.ts +6 -6
- package/lib/redux/sagas/postLoginRedirectSaga.js +96 -96
- package/lib/redux/sagas/rootSaga.d.ts +5 -5
- package/lib/redux/sagas/rootSaga.js +144 -144
- package/lib/redux/sagas/sentrySaga.d.ts +1 -1
- package/lib/redux/sagas/sentrySaga.js +103 -103
- package/lib/services/codeProviderService.d.ts +3 -3
- package/lib/services/codeProviderService.js +36 -36
- package/lib/services/documentService.d.ts +10 -10
- package/lib/services/documentService.js +17 -17
- package/lib/services/persistenceService.d.ts +13 -13
- package/lib/services/persistenceService.js +45 -45
- package/lib/services/ticketProviderService.d.ts +3 -3
- package/lib/services/ticketProviderService.js +40 -40
- package/lib/services/windowService.d.ts +9 -9
- package/lib/services/windowService.js +15 -15
- package/lib/setupTests.d.ts +1 -1
- package/lib/setupTests.js +25 -25
- package/lib/startup.d.ts +29 -29
- package/lib/startup.js +128 -128
- package/lib/types/AppConfiguration.d.ts +32 -32
- package/lib/types/AppConfiguration.js +2 -2
- package/lib/types/Artifact.d.ts +14 -14
- package/lib/types/Artifact.js +9 -9
- package/lib/types/BaseReduxState.d.ts +57 -57
- package/lib/types/BaseReduxState.js +2 -2
- package/lib/types/Client.d.ts +6 -6
- package/lib/types/Client.js +2 -2
- package/lib/types/Collection.d.ts +175 -175
- package/lib/types/Collection.js +2 -2
- package/lib/types/Configuration.d.ts +12 -12
- package/lib/types/Configuration.js +2 -2
- package/lib/types/DeepLinkingResponseRequest.d.ts +4 -4
- package/lib/types/DeepLinkingResponseRequest.js +2 -2
- package/lib/types/DeletableModel.d.ts +4 -4
- package/lib/types/DeletableModel.js +2 -2
- package/lib/types/External.d.ts +31 -31
- package/lib/types/External.js +2 -2
- package/lib/types/Group.d.ts +19 -19
- package/lib/types/Group.js +2 -2
- package/lib/types/IdentityProvider.d.ts +11 -11
- package/lib/types/IdentityProvider.js +2 -2
- package/lib/types/LtiLaunch.d.ts +20 -20
- package/lib/types/LtiLaunch.js +2 -2
- package/lib/types/NameOnlyEntity.d.ts +3 -3
- package/lib/types/NameOnlyEntity.js +2 -2
- package/lib/types/Notification.d.ts +15 -15
- package/lib/types/Notification.js +2 -2
- package/lib/types/OptionalRecord.d.ts +4 -4
- package/lib/types/OptionalRecord.js +2 -2
- package/lib/types/OwnerSchedule.d.ts +9 -9
- package/lib/types/OwnerSchedule.js +2 -2
- package/lib/types/PropertyOfType.d.ts +12 -12
- package/lib/types/PropertyOfType.js +2 -2
- package/lib/types/RoleDescription.d.ts +4 -4
- package/lib/types/RoleDescription.js +2 -2
- package/lib/types/Search.d.ts +11 -11
- package/lib/types/Search.js +2 -2
- package/lib/types/SimpleLocation.d.ts +46 -46
- package/lib/types/SimpleLocation.js +2 -2
- package/lib/types/UniTime.d.ts +17 -17
- package/lib/types/UniTime.js +2 -2
- package/lib/types/User.d.ts +68 -68
- package/lib/types/User.js +2 -2
- package/lib/types/UserRole.d.ts +19 -19
- package/lib/types/UserRole.js +2 -2
- package/lib/types/index.d.ts +21 -21
- package/lib/types/index.js +33 -33
- package/lib/utils/baseActivity.d.ts +63 -63
- package/lib/utils/baseActivity.js +155 -155
- package/lib/utils/baseRole.d.ts +2 -2
- package/lib/utils/baseRole.js +38 -38
- package/lib/utils/collection.d.ts +43 -43
- package/lib/utils/collection.js +337 -337
- package/lib/utils/date.d.ts +162 -162
- package/lib/utils/date.js +401 -401
- package/lib/utils/domainIdentifier.d.ts +2 -2
- package/lib/utils/domainIdentifier.js +12 -12
- package/lib/utils/entityUserRole.d.ts +3 -3
- package/lib/utils/entityUserRole.js +7 -7
- package/lib/utils/externalGroup.d.ts +4 -4
- package/lib/utils/externalGroup.js +32 -32
- package/lib/utils/externalProviders.d.ts +2 -2
- package/lib/utils/externalProviders.js +11 -11
- package/lib/utils/externalTerms.d.ts +2 -2
- package/lib/utils/externalTerms.js +10 -10
- package/lib/utils/group.d.ts +15 -15
- package/lib/utils/group.js +15 -15
- package/lib/utils/groupDates.d.ts +9 -9
- package/lib/utils/groupDates.js +52 -52
- package/lib/utils/groupRoles.d.ts +8 -8
- package/lib/utils/groupRoles.js +42 -42
- package/lib/utils/logger.d.ts +10 -10
- package/lib/utils/logger.js +34 -34
- package/lib/utils/lti.d.ts +3 -3
- package/lib/utils/lti.js +9 -9
- package/lib/utils/model.d.ts +15 -15
- package/lib/utils/model.js +58 -58
- package/lib/utils/number.d.ts +13 -13
- package/lib/utils/number.js +32 -32
- package/lib/utils/promise.d.ts +5 -5
- package/lib/utils/promise.js +17 -17
- package/lib/utils/route.d.ts +5 -5
- package/lib/utils/route.js +69 -69
- package/lib/utils/shard.d.ts +3 -3
- package/lib/utils/shard.js +45 -45
- package/lib/utils/sort.d.ts +11 -11
- package/lib/utils/sort.js +69 -69
- package/lib/utils/string.d.ts +2 -2
- package/lib/utils/string.js +16 -16
- package/lib/utils/timezone.d.ts +2 -2
- package/lib/utils/timezone.js +32 -32
- package/lib/utils/url.d.ts +23 -23
- package/lib/utils/url.js +163 -163
- package/lib/utils/user.d.ts +8 -8
- package/lib/utils/user.js +73 -73
- package/lib/utils/userRole.d.ts +21 -21
- package/lib/utils/userRole.js +48 -48
- package/package.json +192 -192
|
@@ -1,44 +1,44 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
var Help_1 = __importDefault(require("@material-ui/icons/Help"));
|
|
7
|
-
var react_1 = __importDefault(require("react"));
|
|
8
|
-
var react_bootstrap_1 = require("react-bootstrap");
|
|
9
|
-
var baseRole_1 = require("../../utils/baseRole");
|
|
10
|
-
var label = function (hasMultipleOptions, labelVisible, hasTooltip) {
|
|
11
|
-
var content = (react_1.default.createElement(react_1.default.Fragment, null,
|
|
12
|
-
"Role",
|
|
13
|
-
hasTooltip && react_1.default.createElement(Help_1.default, { color: "primary", className: "ml1 v-mid", tabIndex: 0 })));
|
|
14
|
-
var classes = "f6 mb1 " + (!labelVisible ? 'visually-hidden' : '');
|
|
15
|
-
return hasMultipleOptions ? (react_1.default.createElement(react_bootstrap_1.FormLabel, { className: classes }, content)) : (react_1.default.createElement("span", { className: classes + ' b' }, content));
|
|
16
|
-
};
|
|
17
|
-
var overlay = function (hasMultipleOptions, labelVisible, rolePopover) {
|
|
18
|
-
if (labelVisible === void 0) { labelVisible = false; }
|
|
19
|
-
return rolePopover ? (react_1.default.createElement(react_bootstrap_1.OverlayTrigger, { placement: "right", trigger: ['click', 'hover', 'focus'], overlay: rolePopover }, label(hasMultipleOptions, labelVisible, true))) : (label(hasMultipleOptions, labelVisible, false));
|
|
20
|
-
};
|
|
21
|
-
var selector = function (options, value, onChange, textForRole, className) {
|
|
22
|
-
return options.length > 1 ? (react_1.default.createElement(react_bootstrap_1.FormControl, { className: className ? className : '', "aria-label": "Role", as: "select", placeholder: "select", onChange: onChange, value: value }, options.map(function (role, i) { return (react_1.default.createElement("option", { value: role, key: role }, textForRole ? textForRole(role) : baseRole_1.textForBaseRole(role))); }))) : (react_1.default.createElement("div", null, textForRole ? textForRole(options[0]) : baseRole_1.textForBaseRole(options[0])));
|
|
23
|
-
};
|
|
24
|
-
/**
|
|
25
|
-
* Create a selector which will be properly labeled based on the number of options and provided content.
|
|
26
|
-
*
|
|
27
|
-
* @param {string} props.className - CSS class passed to the selector FormControl component
|
|
28
|
-
* @param {string[]} props.options - Array of options the user can choose from
|
|
29
|
-
* @param {string} props.value - Currently selected value
|
|
30
|
-
* @param {function} props.onChange - Function that is called when the value changes
|
|
31
|
-
* @param {string} props.controlId - Id for the selector
|
|
32
|
-
* @param {boolean} props.labelVisible - Whether the label text should be visible
|
|
33
|
-
* @param {ReactNode} props.popoverContentComponent - Content of the popover tooltip
|
|
34
|
-
*
|
|
35
|
-
* @returns {ReactElement} Selector and label component
|
|
36
|
-
*/
|
|
37
|
-
var RoleSelect = function (props) {
|
|
38
|
-
var className = props.className, options = props.options, value = props.value, onChange = props.onChange, controlId = props.controlId, labelVisible = props.labelVisible, popoverContentComponent = props.popoverContentComponent, textForRole = props.textForRole;
|
|
39
|
-
var content = (react_1.default.createElement(react_1.default.Fragment, null,
|
|
40
|
-
overlay(options.length > 1, !!labelVisible, popoverContentComponent),
|
|
41
|
-
selector(options, value, onChange, textForRole, className)));
|
|
42
|
-
return options.length > 1 ? (react_1.default.createElement(react_bootstrap_1.FormGroup, { controlId: controlId ? controlId : 'RoleSelect' }, content)) : (react_1.default.createElement("span", null, content));
|
|
43
|
-
};
|
|
44
|
-
exports.default = RoleSelect;
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
var Help_1 = __importDefault(require("@material-ui/icons/Help"));
|
|
7
|
+
var react_1 = __importDefault(require("react"));
|
|
8
|
+
var react_bootstrap_1 = require("react-bootstrap");
|
|
9
|
+
var baseRole_1 = require("../../utils/baseRole");
|
|
10
|
+
var label = function (hasMultipleOptions, labelVisible, hasTooltip) {
|
|
11
|
+
var content = (react_1.default.createElement(react_1.default.Fragment, null,
|
|
12
|
+
"Role",
|
|
13
|
+
hasTooltip && react_1.default.createElement(Help_1.default, { color: "primary", className: "ml1 v-mid", tabIndex: 0 })));
|
|
14
|
+
var classes = "f6 mb1 " + (!labelVisible ? 'visually-hidden' : '');
|
|
15
|
+
return hasMultipleOptions ? (react_1.default.createElement(react_bootstrap_1.FormLabel, { className: classes }, content)) : (react_1.default.createElement("span", { className: classes + ' b' }, content));
|
|
16
|
+
};
|
|
17
|
+
var overlay = function (hasMultipleOptions, labelVisible, rolePopover) {
|
|
18
|
+
if (labelVisible === void 0) { labelVisible = false; }
|
|
19
|
+
return rolePopover ? (react_1.default.createElement(react_bootstrap_1.OverlayTrigger, { placement: "right", trigger: ['click', 'hover', 'focus'], overlay: rolePopover }, label(hasMultipleOptions, labelVisible, true))) : (label(hasMultipleOptions, labelVisible, false));
|
|
20
|
+
};
|
|
21
|
+
var selector = function (options, value, onChange, textForRole, className) {
|
|
22
|
+
return options.length > 1 ? (react_1.default.createElement(react_bootstrap_1.FormControl, { className: className ? className : '', "aria-label": "Role", as: "select", placeholder: "select", onChange: onChange, value: value }, options.map(function (role, i) { return (react_1.default.createElement("option", { value: role, key: role }, textForRole ? textForRole(role) : baseRole_1.textForBaseRole(role))); }))) : (react_1.default.createElement("div", null, textForRole ? textForRole(options[0]) : baseRole_1.textForBaseRole(options[0])));
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Create a selector which will be properly labeled based on the number of options and provided content.
|
|
26
|
+
*
|
|
27
|
+
* @param {string} props.className - CSS class passed to the selector FormControl component
|
|
28
|
+
* @param {string[]} props.options - Array of options the user can choose from
|
|
29
|
+
* @param {string} props.value - Currently selected value
|
|
30
|
+
* @param {function} props.onChange - Function that is called when the value changes
|
|
31
|
+
* @param {string} props.controlId - Id for the selector
|
|
32
|
+
* @param {boolean} props.labelVisible - Whether the label text should be visible
|
|
33
|
+
* @param {ReactNode} props.popoverContentComponent - Content of the popover tooltip
|
|
34
|
+
*
|
|
35
|
+
* @returns {ReactElement} Selector and label component
|
|
36
|
+
*/
|
|
37
|
+
var RoleSelect = function (props) {
|
|
38
|
+
var className = props.className, options = props.options, value = props.value, onChange = props.onChange, controlId = props.controlId, labelVisible = props.labelVisible, popoverContentComponent = props.popoverContentComponent, textForRole = props.textForRole;
|
|
39
|
+
var content = (react_1.default.createElement(react_1.default.Fragment, null,
|
|
40
|
+
overlay(options.length > 1, !!labelVisible, popoverContentComponent),
|
|
41
|
+
selector(options, value, onChange, textForRole, className)));
|
|
42
|
+
return options.length > 1 ? (react_1.default.createElement(react_bootstrap_1.FormGroup, { controlId: controlId ? controlId : 'RoleSelect' }, content)) : (react_1.default.createElement("span", null, content));
|
|
43
|
+
};
|
|
44
|
+
exports.default = RoleSelect;
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { UserWithRoles } from '../../types';
|
|
3
|
-
export interface UserRolesTableProps {
|
|
4
|
-
id?: string;
|
|
5
|
-
users: UserWithRoles[];
|
|
6
|
-
readOnly?: boolean;
|
|
7
|
-
canModifySelf?: boolean;
|
|
8
|
-
removeUserFromRole?: (user: UserWithRoles, role: string) => void;
|
|
9
|
-
textForRole?: (role: string) => string;
|
|
10
|
-
roles: string[];
|
|
11
|
-
/** The role for the owner of the entity, i.e. GroupOwner, RubricOwner, ProblemOwner etc.
|
|
12
|
-
** The current user cannot be removed from an ownership role unless they are an admin.
|
|
13
|
-
**/
|
|
14
|
-
entityOwnerRole: string;
|
|
15
|
-
}
|
|
16
|
-
export declare const UserRolesTable: React.NamedExoticComponent<UserRolesTableProps>;
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { UserWithRoles } from '../../types';
|
|
3
|
+
export interface UserRolesTableProps {
|
|
4
|
+
id?: string;
|
|
5
|
+
users: UserWithRoles[];
|
|
6
|
+
readOnly?: boolean;
|
|
7
|
+
canModifySelf?: boolean;
|
|
8
|
+
removeUserFromRole?: (user: UserWithRoles, role: string) => void;
|
|
9
|
+
textForRole?: (role: string) => string;
|
|
10
|
+
roles: string[];
|
|
11
|
+
/** The role for the owner of the entity, i.e. GroupOwner, RubricOwner, ProblemOwner etc.
|
|
12
|
+
** The current user cannot be removed from an ownership role unless they are an admin.
|
|
13
|
+
**/
|
|
14
|
+
entityOwnerRole: string;
|
|
15
|
+
}
|
|
16
|
+
export declare const UserRolesTable: React.NamedExoticComponent<UserRolesTableProps>;
|
|
@@ -1,99 +1,99 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
-
}) : (function(o, m, k, k2) {
|
|
6
|
-
if (k2 === undefined) k2 = k;
|
|
7
|
-
o[k2] = m[k];
|
|
8
|
-
}));
|
|
9
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
-
}) : function(o, v) {
|
|
12
|
-
o["default"] = v;
|
|
13
|
-
});
|
|
14
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
-
if (mod && mod.__esModule) return mod;
|
|
16
|
-
var result = {};
|
|
17
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
-
__setModuleDefault(result, mod);
|
|
19
|
-
return result;
|
|
20
|
-
};
|
|
21
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
22
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
23
|
-
};
|
|
24
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
|
-
exports.UserRolesTable = void 0;
|
|
26
|
-
var lodash_1 = require("lodash");
|
|
27
|
-
var react_1 = __importStar(require("react"));
|
|
28
|
-
var react_table_1 = __importDefault(require("react-table"));
|
|
29
|
-
var userRole_1 = require("../../utils/userRole");
|
|
30
|
-
var RoleFilter_1 = require("../Tables/RoleFilter");
|
|
31
|
-
var TextFilter_1 = require("../Tables/TextFilter");
|
|
32
|
-
var RoleCell_1 = __importDefault(require("./RoleCell"));
|
|
33
|
-
var UserRolesTableComponent = function (_a) {
|
|
34
|
-
var id = _a.id, users = _a.users, roles = _a.roles, readOnly = _a.readOnly, canModifySelf = _a.canModifySelf, textForRole = _a.textForRole, removeUserFromRole = _a.removeUserFromRole, entityOwnerRole = _a.entityOwnerRole;
|
|
35
|
-
var hasExternal = users.some(function (r) { return r.roles.some(function (r) { return userRole_1.isExternal(r); }); });
|
|
36
|
-
var columns = [
|
|
37
|
-
{
|
|
38
|
-
Header: 'First Name',
|
|
39
|
-
accessor: 'firstName',
|
|
40
|
-
filterMethod: TextFilter_1.textFilterMethod,
|
|
41
|
-
Filter: TextFilter_1.TextFilter
|
|
42
|
-
},
|
|
43
|
-
{
|
|
44
|
-
Header: 'Last Name',
|
|
45
|
-
accessor: 'lastName',
|
|
46
|
-
filterMethod: TextFilter_1.textFilterMethod,
|
|
47
|
-
Filter: TextFilter_1.TextFilter
|
|
48
|
-
},
|
|
49
|
-
{
|
|
50
|
-
Header: 'Email',
|
|
51
|
-
accessor: 'email',
|
|
52
|
-
filterMethod: TextFilter_1.textFilterMethod,
|
|
53
|
-
Filter: TextFilter_1.TextFilter
|
|
54
|
-
}
|
|
55
|
-
];
|
|
56
|
-
if (roles && roles.length > 0) {
|
|
57
|
-
columns.push({
|
|
58
|
-
id: 'role',
|
|
59
|
-
Header: 'Role',
|
|
60
|
-
accessor: function (u) { return u; },
|
|
61
|
-
Cell: function (cell) {
|
|
62
|
-
var user = cell.value;
|
|
63
|
-
return (react_1.default.createElement(RoleCell_1.default, { user: user, readOnly: readOnly, canModifySelf: canModifySelf, textForRole: textForRole, removeUserFromRole: removeUserFromRole, roles: roles, entityOwnerRole: entityOwnerRole }));
|
|
64
|
-
},
|
|
65
|
-
filterMethod: RoleFilter_1.roleFilterMethod,
|
|
66
|
-
Filter: RoleFilter_1.RoleFilter(roles, textForRole, hasExternal),
|
|
67
|
-
sortMethod: userRole_1.sortByHighestAccessRole(roles),
|
|
68
|
-
style: { padding: '4px' }
|
|
69
|
-
});
|
|
70
|
-
}
|
|
71
|
-
var _b = react_1.useState(users), usersState = _b[0], setUsersState = _b[1];
|
|
72
|
-
var onFilteredChange = function (newFiltering, column, value) {
|
|
73
|
-
// when the role filter is set, only show the matching userRoles in the table
|
|
74
|
-
var roleFilter = newFiltering.find(function (f) { return f.id === 'role'; });
|
|
75
|
-
if (roleFilter) {
|
|
76
|
-
setUsersState(users.map(function (u) {
|
|
77
|
-
var newUser = lodash_1.merge({}, u);
|
|
78
|
-
newUser.roles = u.roles.filter(function (r) { return RoleFilter_1.roleUserRoleFilterMethod(roleFilter, r); });
|
|
79
|
-
return newUser;
|
|
80
|
-
}));
|
|
81
|
-
}
|
|
82
|
-
else if (!lodash_1.isEqual(users, usersState)) {
|
|
83
|
-
setUsersState(users);
|
|
84
|
-
}
|
|
85
|
-
};
|
|
86
|
-
return (react_1.default.createElement("div", { id: id, className: "table-container" },
|
|
87
|
-
react_1.default.createElement(react_table_1.default, { className: "-striped", columns: columns, data: usersState, resizable: false, filterable: true, onFilteredChange: onFilteredChange, defaultSorted: [
|
|
88
|
-
{
|
|
89
|
-
id: 'lastName',
|
|
90
|
-
desc: false
|
|
91
|
-
},
|
|
92
|
-
{
|
|
93
|
-
id: 'firstName',
|
|
94
|
-
desc: false
|
|
95
|
-
}
|
|
96
|
-
], defaultPageSize: Object.keys(usersState).length, showPagination: false })));
|
|
97
|
-
};
|
|
98
|
-
// similar to "shouldComponentUpdate", prevent unnecessary renders
|
|
99
|
-
exports.UserRolesTable = react_1.default.memo(UserRolesTableComponent, function (prevProps, nextProps) { return !lodash_1.isEqual(prevProps, nextProps); });
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
+
}) : function(o, v) {
|
|
12
|
+
o["default"] = v;
|
|
13
|
+
});
|
|
14
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
+
if (mod && mod.__esModule) return mod;
|
|
16
|
+
var result = {};
|
|
17
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
+
__setModuleDefault(result, mod);
|
|
19
|
+
return result;
|
|
20
|
+
};
|
|
21
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
22
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
23
|
+
};
|
|
24
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
|
+
exports.UserRolesTable = void 0;
|
|
26
|
+
var lodash_1 = require("lodash");
|
|
27
|
+
var react_1 = __importStar(require("react"));
|
|
28
|
+
var react_table_1 = __importDefault(require("react-table"));
|
|
29
|
+
var userRole_1 = require("../../utils/userRole");
|
|
30
|
+
var RoleFilter_1 = require("../Tables/RoleFilter");
|
|
31
|
+
var TextFilter_1 = require("../Tables/TextFilter");
|
|
32
|
+
var RoleCell_1 = __importDefault(require("./RoleCell"));
|
|
33
|
+
var UserRolesTableComponent = function (_a) {
|
|
34
|
+
var id = _a.id, users = _a.users, roles = _a.roles, readOnly = _a.readOnly, canModifySelf = _a.canModifySelf, textForRole = _a.textForRole, removeUserFromRole = _a.removeUserFromRole, entityOwnerRole = _a.entityOwnerRole;
|
|
35
|
+
var hasExternal = users.some(function (r) { return r.roles.some(function (r) { return userRole_1.isExternal(r); }); });
|
|
36
|
+
var columns = [
|
|
37
|
+
{
|
|
38
|
+
Header: 'First Name',
|
|
39
|
+
accessor: 'firstName',
|
|
40
|
+
filterMethod: TextFilter_1.textFilterMethod,
|
|
41
|
+
Filter: TextFilter_1.TextFilter
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
Header: 'Last Name',
|
|
45
|
+
accessor: 'lastName',
|
|
46
|
+
filterMethod: TextFilter_1.textFilterMethod,
|
|
47
|
+
Filter: TextFilter_1.TextFilter
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
Header: 'Email',
|
|
51
|
+
accessor: 'email',
|
|
52
|
+
filterMethod: TextFilter_1.textFilterMethod,
|
|
53
|
+
Filter: TextFilter_1.TextFilter
|
|
54
|
+
}
|
|
55
|
+
];
|
|
56
|
+
if (roles && roles.length > 0) {
|
|
57
|
+
columns.push({
|
|
58
|
+
id: 'role',
|
|
59
|
+
Header: 'Role',
|
|
60
|
+
accessor: function (u) { return u; },
|
|
61
|
+
Cell: function (cell) {
|
|
62
|
+
var user = cell.value;
|
|
63
|
+
return (react_1.default.createElement(RoleCell_1.default, { user: user, readOnly: readOnly, canModifySelf: canModifySelf, textForRole: textForRole, removeUserFromRole: removeUserFromRole, roles: roles, entityOwnerRole: entityOwnerRole }));
|
|
64
|
+
},
|
|
65
|
+
filterMethod: RoleFilter_1.roleFilterMethod,
|
|
66
|
+
Filter: RoleFilter_1.RoleFilter(roles, textForRole, hasExternal),
|
|
67
|
+
sortMethod: userRole_1.sortByHighestAccessRole(roles),
|
|
68
|
+
style: { padding: '4px' }
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
var _b = react_1.useState(users), usersState = _b[0], setUsersState = _b[1];
|
|
72
|
+
var onFilteredChange = function (newFiltering, column, value) {
|
|
73
|
+
// when the role filter is set, only show the matching userRoles in the table
|
|
74
|
+
var roleFilter = newFiltering.find(function (f) { return f.id === 'role'; });
|
|
75
|
+
if (roleFilter) {
|
|
76
|
+
setUsersState(users.map(function (u) {
|
|
77
|
+
var newUser = lodash_1.merge({}, u);
|
|
78
|
+
newUser.roles = u.roles.filter(function (r) { return RoleFilter_1.roleUserRoleFilterMethod(roleFilter, r); });
|
|
79
|
+
return newUser;
|
|
80
|
+
}));
|
|
81
|
+
}
|
|
82
|
+
else if (!lodash_1.isEqual(users, usersState)) {
|
|
83
|
+
setUsersState(users);
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
return (react_1.default.createElement("div", { id: id, className: "table-container" },
|
|
87
|
+
react_1.default.createElement(react_table_1.default, { className: "-striped", columns: columns, data: usersState, resizable: false, filterable: true, onFilteredChange: onFilteredChange, defaultSorted: [
|
|
88
|
+
{
|
|
89
|
+
id: 'lastName',
|
|
90
|
+
desc: false
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
id: 'firstName',
|
|
94
|
+
desc: false
|
|
95
|
+
}
|
|
96
|
+
], defaultPageSize: Object.keys(usersState).length, showPagination: false })));
|
|
97
|
+
};
|
|
98
|
+
// similar to "shouldComponentUpdate", prevent unnecessary renders
|
|
99
|
+
exports.UserRolesTable = react_1.default.memo(UserRolesTableComponent, function (prevProps, nextProps) { return !lodash_1.isEqual(prevProps, nextProps); });
|
|
@@ -1,76 +1,76 @@
|
|
|
1
|
-
import React, { Component } from 'react';
|
|
2
|
-
import { FetchError, Model, ModelCollection } from 'studiokit-net-js';
|
|
3
|
-
import BASE_ROLE from '../../constants/baseRole';
|
|
4
|
-
import { BaseReduxState, ExternalProvider, RoleDescription, User, UserWithRoles } from '../../types';
|
|
5
|
-
import { CollectionComponentWrappedProps } from '../HOC/CollectionComponent';
|
|
6
|
-
export interface UserRolesReduxProps {
|
|
7
|
-
canModifySelf?: boolean;
|
|
8
|
-
canModify?: boolean;
|
|
9
|
-
}
|
|
10
|
-
export interface UserRolesOwnProps extends CollectionComponentWrappedProps<UserWithRoles> {
|
|
11
|
-
modifyUserRoleActivityName: string;
|
|
12
|
-
filterUsers: (userRoles: UserWithRoles[]) => UserWithRoles[];
|
|
13
|
-
/** The role that will be shown first in the list of available roles. Currently assumes that this is the entity owner role, groupOwner, assignmentOwner, rubricOwner, problemOwner etc. */
|
|
14
|
-
defaultRole: string;
|
|
15
|
-
/** A dictionary of all possible roles and their descriptions. */
|
|
16
|
-
roleDescriptions: RoleDescription;
|
|
17
|
-
/** An optional blacklist of roles that should be excluded from the add options. */
|
|
18
|
-
addRoleBlacklist?: string[];
|
|
19
|
-
canModifySelf?: boolean;
|
|
20
|
-
renderTableDescription?: (canModify?: boolean) => JSX.Element;
|
|
21
|
-
entity?: Model;
|
|
22
|
-
entityName?: string;
|
|
23
|
-
onChange?: () => void;
|
|
24
|
-
renderAddDescription?: (entityName?: string) => JSX.Element;
|
|
25
|
-
disabled?: boolean;
|
|
26
|
-
textForRole?: (role: string) => string;
|
|
27
|
-
singularArticleForRole?: (role: string) => string;
|
|
28
|
-
isDeleteDisabled?: boolean;
|
|
29
|
-
/** An optional parameter for `renderRemoveUserDescription` */
|
|
30
|
-
externalProviders?: ModelCollection<ExternalProvider>;
|
|
31
|
-
}
|
|
32
|
-
export interface UserRolesProps extends UserRolesReduxProps, UserRolesOwnProps {
|
|
33
|
-
}
|
|
34
|
-
interface UserRolesState {
|
|
35
|
-
sortedUsers: UserWithRoles[];
|
|
36
|
-
addUsersHookId: any;
|
|
37
|
-
isAddingUsers: boolean;
|
|
38
|
-
identifiersToAdd?: string[];
|
|
39
|
-
roleForAdd?: string;
|
|
40
|
-
shouldResetAddForm: boolean;
|
|
41
|
-
shouldShowRemoveDialog: boolean;
|
|
42
|
-
userToRemove: UserWithRoles | undefined;
|
|
43
|
-
roleForRemove?: string;
|
|
44
|
-
successMessage?: string;
|
|
45
|
-
existingUsersMessage?: string;
|
|
46
|
-
failMessage?: string;
|
|
47
|
-
}
|
|
48
|
-
export interface AddBusinessModel {
|
|
49
|
-
addedUsers: UserWithRoles[];
|
|
50
|
-
existingUsers: UserWithRoles[];
|
|
51
|
-
invalidIdentifiers: string[];
|
|
52
|
-
allowedDomains: string;
|
|
53
|
-
invalidDomainIdentifiers: string[];
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Component used to manage either UserRoles (global roles) or EntityUserRoles.
|
|
57
|
-
*/
|
|
58
|
-
export declare class UserRoles extends Component<UserRolesProps, UserRolesState> {
|
|
59
|
-
state: UserRolesState;
|
|
60
|
-
componentDidMount(): void;
|
|
61
|
-
componentDidUpdate(prevProps: UserRolesProps): void;
|
|
62
|
-
setStateFromProps: (props: UserRolesProps) => void;
|
|
63
|
-
textForRole: (role: string) => string;
|
|
64
|
-
singularArticleForRole: (role: string) => string;
|
|
65
|
-
addUsers: (ids: string[], role: BASE_ROLE) => void;
|
|
66
|
-
didAdd: (data?: FetchError | AddBusinessModel | undefined) => void;
|
|
67
|
-
alertRemoveUser: (userToRemove: UserWithRoles, roleForRemove: string) => void;
|
|
68
|
-
removeUserTitle: (roleForRemove: string) => string;
|
|
69
|
-
renderRemoveUserDescription: (userToRemove: User, role: string, warning?: JSX.Element | undefined) => JSX.Element;
|
|
70
|
-
removeUser: (shouldRemove: boolean) => void;
|
|
71
|
-
didRemove: (isSuccess: boolean) => void;
|
|
72
|
-
render(): JSX.Element;
|
|
73
|
-
}
|
|
74
|
-
export declare const mapStateToProps: (state: BaseReduxState, ownProps: UserRolesOwnProps) => UserRolesReduxProps;
|
|
75
|
-
declare const _default: import("react-redux").ConnectedComponent<typeof UserRoles, Pick<React.ClassAttributes<UserRoles> & UserRolesProps, "externalProviders" | "model" | "ref" | "onChange" | "key" | "disabled" | "guid" | "load" | "modelName" | "pathParams" | "modelStatus" | "queryParams" | "disableAutoLoad" | "modelArray" | "stopPeriodicLoad" | "create" | "update" | "delete" | "previousModelStatus" | "fetchingId" | "textForRole" | "entityName" | "defaultRole" | "roleDescriptions" | "renderAddDescription" | "modifyUserRoleActivityName" | "filterUsers" | "addRoleBlacklist" | "renderTableDescription" | "entity" | "singularArticleForRole" | "isDeleteDisabled"> & UserRolesOwnProps>;
|
|
76
|
-
export default _default;
|
|
1
|
+
import React, { Component } from 'react';
|
|
2
|
+
import { FetchError, Model, ModelCollection } from 'studiokit-net-js';
|
|
3
|
+
import BASE_ROLE from '../../constants/baseRole';
|
|
4
|
+
import { BaseReduxState, ExternalProvider, RoleDescription, User, UserWithRoles } from '../../types';
|
|
5
|
+
import { CollectionComponentWrappedProps } from '../HOC/CollectionComponent';
|
|
6
|
+
export interface UserRolesReduxProps {
|
|
7
|
+
canModifySelf?: boolean;
|
|
8
|
+
canModify?: boolean;
|
|
9
|
+
}
|
|
10
|
+
export interface UserRolesOwnProps extends CollectionComponentWrappedProps<UserWithRoles> {
|
|
11
|
+
modifyUserRoleActivityName: string;
|
|
12
|
+
filterUsers: (userRoles: UserWithRoles[]) => UserWithRoles[];
|
|
13
|
+
/** The role that will be shown first in the list of available roles. Currently assumes that this is the entity owner role, groupOwner, assignmentOwner, rubricOwner, problemOwner etc. */
|
|
14
|
+
defaultRole: string;
|
|
15
|
+
/** A dictionary of all possible roles and their descriptions. */
|
|
16
|
+
roleDescriptions: RoleDescription;
|
|
17
|
+
/** An optional blacklist of roles that should be excluded from the add options. */
|
|
18
|
+
addRoleBlacklist?: string[];
|
|
19
|
+
canModifySelf?: boolean;
|
|
20
|
+
renderTableDescription?: (canModify?: boolean) => JSX.Element;
|
|
21
|
+
entity?: Model;
|
|
22
|
+
entityName?: string;
|
|
23
|
+
onChange?: () => void;
|
|
24
|
+
renderAddDescription?: (entityName?: string) => JSX.Element;
|
|
25
|
+
disabled?: boolean;
|
|
26
|
+
textForRole?: (role: string) => string;
|
|
27
|
+
singularArticleForRole?: (role: string) => string;
|
|
28
|
+
isDeleteDisabled?: boolean;
|
|
29
|
+
/** An optional parameter for `renderRemoveUserDescription` */
|
|
30
|
+
externalProviders?: ModelCollection<ExternalProvider>;
|
|
31
|
+
}
|
|
32
|
+
export interface UserRolesProps extends UserRolesReduxProps, UserRolesOwnProps {
|
|
33
|
+
}
|
|
34
|
+
interface UserRolesState {
|
|
35
|
+
sortedUsers: UserWithRoles[];
|
|
36
|
+
addUsersHookId: any;
|
|
37
|
+
isAddingUsers: boolean;
|
|
38
|
+
identifiersToAdd?: string[];
|
|
39
|
+
roleForAdd?: string;
|
|
40
|
+
shouldResetAddForm: boolean;
|
|
41
|
+
shouldShowRemoveDialog: boolean;
|
|
42
|
+
userToRemove: UserWithRoles | undefined;
|
|
43
|
+
roleForRemove?: string;
|
|
44
|
+
successMessage?: string;
|
|
45
|
+
existingUsersMessage?: string;
|
|
46
|
+
failMessage?: string;
|
|
47
|
+
}
|
|
48
|
+
export interface AddBusinessModel {
|
|
49
|
+
addedUsers: UserWithRoles[];
|
|
50
|
+
existingUsers: UserWithRoles[];
|
|
51
|
+
invalidIdentifiers: string[];
|
|
52
|
+
allowedDomains: string;
|
|
53
|
+
invalidDomainIdentifiers: string[];
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Component used to manage either UserRoles (global roles) or EntityUserRoles.
|
|
57
|
+
*/
|
|
58
|
+
export declare class UserRoles extends Component<UserRolesProps, UserRolesState> {
|
|
59
|
+
state: UserRolesState;
|
|
60
|
+
componentDidMount(): void;
|
|
61
|
+
componentDidUpdate(prevProps: UserRolesProps): void;
|
|
62
|
+
setStateFromProps: (props: UserRolesProps) => void;
|
|
63
|
+
textForRole: (role: string) => string;
|
|
64
|
+
singularArticleForRole: (role: string) => string;
|
|
65
|
+
addUsers: (ids: string[], role: BASE_ROLE) => void;
|
|
66
|
+
didAdd: (data?: FetchError | AddBusinessModel | undefined) => void;
|
|
67
|
+
alertRemoveUser: (userToRemove: UserWithRoles, roleForRemove: string) => void;
|
|
68
|
+
removeUserTitle: (roleForRemove: string) => string;
|
|
69
|
+
renderRemoveUserDescription: (userToRemove: User, role: string, warning?: JSX.Element | undefined) => JSX.Element;
|
|
70
|
+
removeUser: (shouldRemove: boolean) => void;
|
|
71
|
+
didRemove: (isSuccess: boolean) => void;
|
|
72
|
+
render(): JSX.Element;
|
|
73
|
+
}
|
|
74
|
+
export declare const mapStateToProps: (state: BaseReduxState, ownProps: UserRolesOwnProps) => UserRolesReduxProps;
|
|
75
|
+
declare const _default: import("react-redux").ConnectedComponent<typeof UserRoles, Pick<React.ClassAttributes<UserRoles> & UserRolesProps, "externalProviders" | "model" | "ref" | "onChange" | "key" | "disabled" | "guid" | "load" | "modelName" | "pathParams" | "modelStatus" | "queryParams" | "disableAutoLoad" | "modelArray" | "stopPeriodicLoad" | "create" | "update" | "delete" | "previousModelStatus" | "fetchingId" | "textForRole" | "entityName" | "defaultRole" | "roleDescriptions" | "renderAddDescription" | "modifyUserRoleActivityName" | "filterUsers" | "addRoleBlacklist" | "renderTableDescription" | "entity" | "singularArticleForRole" | "isDeleteDisabled"> & UserRolesOwnProps>;
|
|
76
|
+
export default _default;
|