studiokit-scaffolding-js 7.0.12-next.1.3 → 7.0.12-next.2.1
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/lib/components/ActionList.js +164 -37
- package/lib/components/AlertDialog.js +128 -12
- package/lib/components/AlertWithIcon.js +88 -29
- package/lib/components/ConnectedModal.js +35 -12
- package/lib/components/Dropdowns/GroupsDropdown.js +63 -45
- package/lib/components/Dropdowns/ManagedNavDropdown.js +92 -67
- package/lib/components/Dropdowns/UserDropdown.js +105 -24
- package/lib/components/Dropdowns/index.js +4 -10
- package/lib/components/EntityOwnerList.js +47 -21
- package/lib/components/Error.js +101 -12
- package/lib/components/ErrorBoundary.js +127 -38
- package/lib/components/ErrorMessage.js +39 -12
- package/lib/components/Forms/DateField.js +56 -45
- package/lib/components/Forms/TimeField.js +76 -45
- package/lib/components/Forms/index.js +3 -5
- package/lib/components/Groups/CreateEditCopySaveButtons.js +109 -14
- package/lib/components/Groups/ExternalGroups/Attach.js +206 -151
- package/lib/components/Groups/ExternalGroups/Table.js +176 -48
- package/lib/components/Groups/GroupCreateOrEditCommonProps.js +2 -2
- package/lib/components/Groups/RosterSyncInfo.js +142 -23
- package/lib/components/HOC/AccessibleAppComponent.js +88 -72
- package/lib/components/HOC/ActivityRequiredComponent.js +68 -33
- package/lib/components/HOC/AsyncComponent.js +49 -41
- package/lib/components/HOC/AuthenticatedComponent.js +55 -44
- package/lib/components/HOC/CollectionComponent.js +154 -104
- package/lib/components/HOC/CollectionFirstItemComponent.js +45 -40
- package/lib/components/HOC/CollectionItemComponent.js +152 -100
- package/lib/components/HOC/ConnectedModalComponent.js +87 -69
- package/lib/components/HOC/DataDependentComponent.js +26 -27
- package/lib/components/HOC/EntityComponent.js +57 -53
- package/lib/components/HOC/FullscreenModalComponent.js +139 -108
- package/lib/components/HOC/GroupActivityRequiredComponent.js +27 -20
- package/lib/components/HOC/GuidComponent.js +20 -20
- package/lib/components/HOC/ModelContextDependencyVerifyComponent.js +32 -29
- package/lib/components/HOC/ModelErrorRedirectComponent.js +37 -39
- package/lib/components/HOC/SearchPersistorComponent.js +237 -173
- package/lib/components/HOC/UnauthenticatedComponent.js +32 -30
- package/lib/components/HOC/UserComponent.js +6 -8
- package/lib/components/Icons/IconAlphaList.js +28 -8
- package/lib/components/Icons/IconExternalUser.js +28 -8
- package/lib/components/Icons/IconImpersonation.js +28 -8
- package/lib/components/Icons/IconStopImpersonating.js +28 -8
- package/lib/components/Icons/IconTable.js +29 -9
- package/lib/components/Icons/IconTableDeleteCol.js +28 -8
- package/lib/components/Icons/IconTableDeleteRow.js +28 -8
- package/lib/components/Icons/IconTableInsertCol.js +28 -8
- package/lib/components/Icons/IconTableInsertRow.js +28 -8
- package/lib/components/Impersonation/Button.js +71 -16
- package/lib/components/Impersonation/Link.js +72 -16
- package/lib/components/Impersonation/UserDetail.js +60 -11
- package/lib/components/Loading.js +23 -8
- package/lib/components/LockDownBrowser/Check.js +188 -51
- package/lib/components/LockDownBrowser/ExitButton.js +22 -13
- package/lib/components/LockDownBrowser/Launch.js +64 -64
- package/lib/components/Lti/Confirm.js +147 -14
- package/lib/components/Lti/CreateNonLtiGroupAlertDialog.js +165 -36
- package/lib/components/Lti/Launch.js +99 -25
- package/lib/components/Lti/LaunchGroup.js +81 -16
- package/lib/components/ManageTable.js +304 -90
- package/lib/components/ManageTableNoDataComponent.js +38 -7
- package/lib/components/NewVersionAlert.js +76 -49
- package/lib/components/NotFound.js +81 -11
- package/lib/components/Notifications.js +179 -129
- package/lib/components/PaginationNextButton.js +28 -9
- package/lib/components/PaginationPreviousButton.js +28 -9
- package/lib/components/Quill/CustomToolbar.js +427 -222
- package/lib/components/Quill/Formats/Image.js +67 -67
- package/lib/components/Quill/Formats/List.js +38 -47
- package/lib/components/Quill/Formats/Video.js +23 -26
- package/lib/components/Quill/ImageDropModule.js +136 -114
- package/lib/components/Quill/ImageWarning.js +41 -12
- package/lib/components/Quill/ImageWithAltTextModal.js +420 -89
- package/lib/components/Quill/Specs/CustomImageSpec.js +32 -31
- package/lib/components/Quill/Specs/CustomVideoSpec.js +22 -23
- package/lib/components/Quill/TableModule/Blots/BaseTableBlot.js +89 -97
- package/lib/components/Quill/TableModule/Blots/TableBlot.js +47 -50
- package/lib/components/Quill/TableModule/Blots/TableBodyBlot.js +48 -51
- package/lib/components/Quill/TableModule/Blots/TableCellBlot.js +219 -224
- package/lib/components/Quill/TableModule/Blots/TableContainer.js +75 -86
- package/lib/components/Quill/TableModule/Blots/TableRowBlot.js +70 -73
- package/lib/components/Quill/TableModule/constants.js +40 -42
- package/lib/components/Quill/TableModule/index.js +357 -305
- package/lib/components/Quill/TableModule/utils.js +39 -48
- package/lib/components/Quill/accessibilityFix.js +219 -223
- package/lib/components/Quill/index.js +30 -33
- package/lib/components/RefreshIndicator/Bordered.js +44 -10
- package/lib/components/RefreshIndicator/Inline.js +43 -12
- package/lib/components/RefreshIndicator/index.js +257 -62
- package/lib/components/SearchControls.js +211 -14
- package/lib/components/SentryRoute.js +5 -7
- package/lib/components/Tables/RoleFilter.js +66 -38
- package/lib/components/Tables/TextFilter.js +58 -18
- package/lib/components/UserRoles/Add.js +193 -99
- package/lib/components/UserRoles/Context.js +3 -6
- package/lib/components/UserRoles/RoleCell.js +176 -75
- package/lib/components/UserRoles/Select.js +151 -20
- package/lib/components/UserRoles/Table.js +215 -82
- package/lib/components/UserRoles/index.js +526 -386
- package/lib/config/eslint/index.js +26 -29
- package/lib/config/eslint/lib/order.js +21 -28
- package/lib/config/eslint/lib/prettier.js +15 -19
- package/lib/config/eslint/lib/typescript.js +87 -113
- package/lib/config/eslint/react.js +18 -15
- package/lib/constants/baseActivity.js +26 -28
- package/lib/constants/baseRole.js +10 -12
- package/lib/constants/configuration.js +43 -55
- package/lib/constants/externalProviderType.js +6 -8
- package/lib/constants/fetchErrorData.js +10 -12
- package/lib/constants/index.js +13 -15
- package/lib/constants/lockDownBrowser.js +23 -25
- package/lib/constants/mockData.js +370 -300
- package/lib/constants/modelStatus.js +11 -13
- package/lib/constants/notificationType.js +8 -10
- package/lib/constants/operatingSystem.js +8 -10
- package/lib/constants/shard.js +7 -9
- package/lib/constants/table.js +18 -22
- package/lib/constants/tier.js +8 -10
- package/lib/constants/userRole.js +11 -8
- package/lib/endpointMappings.js +191 -182
- package/lib/hooks/useCollection.js +79 -65
- package/lib/hooks/useCollectionConfiguration.js +220 -80
- package/lib/hooks/useCollectionItem.js +151 -57
- package/lib/hooks/useGuid.js +16 -9
- package/lib/hooks/usePrevious.js +14 -13
- package/lib/index.js +11 -26
- package/lib/redux/actionCreator.js +44 -35
- package/lib/redux/actions/AuthAction.js +45 -32
- package/lib/redux/actions/ModalAction.js +6 -8
- package/lib/redux/actions/ModelAction.js +95 -43
- package/lib/redux/actions/NotificationAction.js +6 -8
- package/lib/redux/actions/SearchAction.js +5 -7
- package/lib/redux/actions/index.js +6 -8
- package/lib/redux/configureReducers.js +48 -46
- package/lib/redux/configureStore.js +77 -91
- package/lib/redux/helpers.js +2 -5
- package/lib/redux/reducers/authReducer.js +44 -43
- package/lib/redux/reducers/index.js +7 -14
- package/lib/redux/reducers/modalsReducer.js +43 -31
- package/lib/redux/reducers/modelsReducer.js +131 -137
- package/lib/redux/reducers/notificationsReducer.js +20 -20
- package/lib/redux/reducers/searchReducer.js +13 -13
- package/lib/redux/sagas/appInsightsSaga.js +19 -21
- package/lib/redux/sagas/authSaga.js +248 -234
- package/lib/redux/sagas/caliperSaga.js +142 -131
- package/lib/redux/sagas/clockOffsetSaga.js +29 -32
- package/lib/redux/sagas/configurationSaga.js +8 -10
- package/lib/redux/sagas/downtimeApiErrorSaga.js +16 -19
- package/lib/redux/sagas/errorSaga.js +23 -24
- package/lib/redux/sagas/googleAnalyticsSaga.js +24 -27
- package/lib/redux/sagas/identityProviderSaga.js +19 -21
- package/lib/redux/sagas/initialDataLoadSaga.js +34 -31
- package/lib/redux/sagas/lockDownBrowserErrorSaga.js +25 -22
- package/lib/redux/sagas/modelFetchSaga.js +302 -286
- package/lib/redux/sagas/noStoreSaga.js +60 -61
- package/lib/redux/sagas/postLoginDataSaga.js +37 -32
- package/lib/redux/sagas/postLoginRedirectSaga.js +22 -27
- package/lib/redux/sagas/rootSaga.js +77 -60
- package/lib/redux/sagas/sentrySaga.js +25 -28
- package/lib/redux/sagas/userIdSaga.js +13 -15
- package/lib/services/codeProviderService.js +21 -21
- package/lib/services/dateService.js +6 -8
- package/lib/services/documentService.js +10 -11
- package/lib/services/fetchService.js +103 -95
- package/lib/services/persistenceService.js +27 -30
- package/lib/services/ticketProviderService.js +25 -25
- package/lib/services/tokenPersistenceService.js +8 -10
- package/lib/services/windowService.js +14 -16
- package/lib/startup.js +110 -101
- package/lib/types/AppConfiguration.js +2 -2
- package/lib/types/Artifact.js +7 -9
- package/lib/types/BaseReduxState.js +2 -2
- package/lib/types/Client.js +2 -2
- package/lib/types/Collection.js +2 -2
- package/lib/types/Configuration.js +2 -2
- package/lib/types/DeepLinkingResponseRequest.js +2 -2
- package/lib/types/DeletableModel.js +2 -2
- package/lib/types/Event.js +2 -2
- package/lib/types/ExternalGroup.js +2 -2
- package/lib/types/ExternalProvider.js +2 -2
- package/lib/types/ExternalTerm.js +2 -2
- package/lib/types/Group.js +2 -2
- package/lib/types/IdentityProvider.js +2 -2
- package/lib/types/LtiLaunch.js +2 -2
- package/lib/types/NameOnlyEntity.js +2 -2
- package/lib/types/Notification.js +2 -2
- package/lib/types/OptionalRecord.js +2 -2
- package/lib/types/OwnerSchedule.js +2 -2
- package/lib/types/PropertyOfType.js +2 -2
- package/lib/types/Quill.js +2 -2
- package/lib/types/RoleDescription.js +2 -2
- package/lib/types/Search.js +2 -2
- package/lib/types/SimpleLocation.js +2 -2
- package/lib/types/UniTime.js +2 -2
- package/lib/types/User.js +2 -2
- package/lib/types/UserRole.js +2 -2
- package/lib/types/auth/AuthState.js +2 -2
- package/lib/types/auth/CasV1LoginRequestBody.js +2 -2
- package/lib/types/auth/ClientCredentials.js +2 -2
- package/lib/types/auth/CodeProviderService.js +2 -2
- package/lib/types/auth/LocalLoginRequestBody.js +2 -2
- package/lib/types/auth/TicketProviderService.js +2 -2
- package/lib/types/auth/TokenPersistenceService.js +2 -2
- package/lib/types/auth/index.js +8 -10
- package/lib/types/externals.d.js +2 -0
- package/lib/types/index.js +29 -31
- package/lib/types/net/EndpointConfig.js +2 -2
- package/lib/types/net/EndpointMapping.js +2 -2
- package/lib/types/net/EndpointMappings.js +2 -2
- package/lib/types/net/ErrorHandler.js +2 -2
- package/lib/types/net/FetchConfig.js +2 -2
- package/lib/types/net/FetchErrorData.js +6 -8
- package/lib/types/net/FetchResult.js +2 -2
- package/lib/types/net/HTTPMethod.js +2 -2
- package/lib/types/net/HTTPStatusCode.js +12 -14
- package/lib/types/net/Metadata.js +2 -2
- package/lib/types/net/Model.js +2 -2
- package/lib/types/net/ModelCollection.js +2 -2
- package/lib/types/net/ModelsState.js +2 -2
- package/lib/types/net/OAuthToken.js +2 -2
- package/lib/types/net/OAuthTokenOrNull.js +2 -2
- package/lib/types/net/TokenAccessFunction.js +2 -2
- package/lib/types/net/index.js +17 -19
- package/lib/utils/baseActivity.js +83 -85
- package/lib/utils/baseRole.js +32 -36
- package/lib/utils/collection.js +403 -297
- package/lib/utils/cookies.js +19 -23
- package/lib/utils/date.js +188 -205
- package/lib/utils/dom.js +130 -131
- package/lib/utils/domainIdentifier.js +4 -8
- package/lib/utils/entityUserRole.js +2 -5
- package/lib/utils/error.js +14 -19
- package/lib/utils/events.js +32 -31
- package/lib/utils/externalGroup.js +20 -25
- package/lib/utils/externalProviders.js +4 -7
- package/lib/utils/externalTerms.js +6 -6
- package/lib/utils/fetch.js +168 -176
- package/lib/utils/group.js +14 -11
- package/lib/utils/groupDates.js +38 -46
- package/lib/utils/groupRoles.js +23 -32
- package/lib/utils/lockDownBrowser.js +12 -15
- package/lib/utils/logger.js +23 -28
- package/lib/utils/lti.js +4 -7
- package/lib/utils/model.js +28 -43
- package/lib/utils/number.js +9 -13
- package/lib/utils/promise.js +23 -26
- package/lib/utils/quill.js +55 -60
- package/lib/utils/route.js +52 -60
- package/lib/utils/search.js +72 -87
- package/lib/utils/shard.js +33 -42
- package/lib/utils/sort.js +47 -50
- package/lib/utils/string.js +10 -12
- package/lib/utils/table.js +29 -33
- package/lib/utils/timezone.js +7 -12
- package/lib/utils/url.js +130 -144
- package/lib/utils/user.js +54 -64
- package/lib/utils/userAgent.js +7 -14
- package/lib/utils/userRole.js +36 -39
- package/package.json +17 -3
|
@@ -1,101 +1,195 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
render() {
|
|
91
|
-
const { identifiers, role, showErrorAlert, errorMessage } = this.state;
|
|
92
|
-
const { entityName, isAddingUsersToRole, roleDescriptions, renderAddDescription, disabled, textForRole } = this.props;
|
|
93
|
-
const roles = lodash_1.default.keys(roleDescriptions);
|
|
94
|
-
const rolePopover = ((0, jsx_runtime_1.jsxs)(react_bootstrap_1.Popover, { id: "role", children: [(0, jsx_runtime_1.jsx)("h3", { children: "Role" }), roles.map(r => ((0, jsx_runtime_1.jsx)(react_1.Fragment, { children: roleDescriptions[r] }, r)))] }));
|
|
95
|
-
const appConfig = (0, configuration_1.getAppConfig)();
|
|
96
|
-
const appName = appConfig.APP_NAME;
|
|
97
|
-
const gradableDescriptor = appConfig.GRADABLE_DESCRIPTOR;
|
|
98
|
-
return ((0, jsx_runtime_1.jsxs)(react_bootstrap_1.Row, { children: [!!renderAddDescription && (0, jsx_runtime_1.jsx)(react_bootstrap_1.Col, { xs: 12, children: renderAddDescription(entityName) }), (0, jsx_runtime_1.jsx)(react_bootstrap_1.Col, { xs: 12, sm: 6, children: (0, jsx_runtime_1.jsxs)(react_bootstrap_1.FormGroup, { controlId: "UserEntry", children: [(0, jsx_runtime_1.jsxs)(react_bootstrap_1.FormLabel, { className: "f6", children: [(0, domainIdentifier_1.getDomainIdentifierTypePluralString)(), " (separated by a new line)"] }), (0, jsx_runtime_1.jsx)(react_bootstrap_1.FormControl, { type: "text", as: "textarea", name: "account", "aria-label": "The account names to add", onChange: this.updateIdentifiers, value: identifiers, placeholder: (0, domainIdentifier_1.getDomainIdentifierTypeString)(), disabled: disabled })] }) }), (0, jsx_runtime_1.jsx)(react_bootstrap_1.Col, { xs: 12, sm: 4, children: (0, jsx_runtime_1.jsx)(Select_1.RoleSelect, { options: roles, value: role, onChange: this.updateRole, labelVisible: true, popoverContentComponent: rolePopover, textForRole: textForRole }) }), (0, jsx_runtime_1.jsxs)(react_bootstrap_1.Col, { xs: 12, sm: 2, className: "mt3-ns pt2-ns", children: [isAddingUsersToRole && (0, jsx_runtime_1.jsx)(Inline_1.RefreshIndicatorInline, { className: "mr3" }), !isAddingUsersToRole && ((0, jsx_runtime_1.jsxs)(Button_1.default, { id: "userRolesAddButton", color: "primary", className: "btn-primary w-100-lt-xs", disabled: !identifiers || disabled, onClick: this.handleSubmit, children: [(0, jsx_runtime_1.jsx)(AddCircle_1.default, { className: "v-mid" }), "Add"] })), (0, jsx_runtime_1.jsx)(AlertDialog_1.AlertDialog, { isOpen: showErrorAlert, title: `Error Adding People to the ${entityName}`, description: (0, jsx_runtime_1.jsx)("div", { className: "pre-wrap", children: errorMessage }), proceedText: "Got it. Thanks!", onProceed: this.closeErrorAlert, onCancel: this.closeErrorAlert })] }), lodash_1.default.includes(FERPA_ROLES, role) && ((0, jsx_runtime_1.jsx)(react_bootstrap_1.Col, { xs: 12, children: (0, jsx_runtime_1.jsx)(AlertWithIcon_1.AlertWithIcon, { id: "ferpaWarning", variant: "warning", children: (0, jsx_runtime_1.jsxs)("p", { children: ["This role includes ", gradableDescriptor, " scores in ", appName, ". Please consider whether", ' ', (0, jsx_runtime_1.jsx)("a", { href: "https://www.purdue.edu/registrar/FERPA/index.html", target: "_blank", rel: "noopener noreferrer", children: "FERPA" }), ' ', "certification is needed."] }) }) }))] }));
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
+
import Button from '@material-ui/core/Button';
|
|
3
|
+
import AddCircle from '@material-ui/icons/AddCircle';
|
|
4
|
+
import _ from 'lodash';
|
|
5
|
+
import React, { Component, Fragment } from 'react';
|
|
6
|
+
import { Col, FormControl, FormGroup, FormLabel, Popover, Row } from 'react-bootstrap';
|
|
7
|
+
import { AlertDialog } from '../../components/AlertDialog';
|
|
8
|
+
import { RefreshIndicatorInline } from '../../components/RefreshIndicator/Inline';
|
|
9
|
+
import { RoleSelect } from '../../components/UserRoles/Select';
|
|
10
|
+
import { BASE_ROLE } from '../../constants/baseRole';
|
|
11
|
+
import { getAppConfig } from '../../constants/configuration';
|
|
12
|
+
import { getDomainIdentifierTypePluralString, getDomainIdentifierTypeString } from '../../utils/domainIdentifier';
|
|
13
|
+
import { isPurdueShard } from '../../utils/shard';
|
|
14
|
+
import { isEmail, isPurdueAliasOrPuid } from '../../utils/string';
|
|
15
|
+
import { AlertWithIcon } from '../AlertWithIcon';
|
|
16
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
17
|
+
const FERPA_ROLES = [BASE_ROLE.SUPER_ADMIN, BASE_ROLE.ADMIN, BASE_ROLE.GROUP_OWNER, BASE_ROLE.GROUP_GRADER];
|
|
18
|
+
export class UserRolesAdd extends Component {
|
|
19
|
+
constructor(props) {
|
|
20
|
+
super(props);
|
|
21
|
+
_defineProperty(this, "updateRole", role => {
|
|
22
|
+
this.setState({
|
|
23
|
+
role
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
_defineProperty(this, "handleSubmit", () => {
|
|
27
|
+
const {
|
|
28
|
+
identifiers,
|
|
29
|
+
role
|
|
30
|
+
} = this.state;
|
|
31
|
+
const identifiersArray = identifiers.split(/\r\n|\r|\n/g).map(id => id.trim()).filter(id => id !== ''); // filter identifiers that are empty
|
|
32
|
+
const errorMessage = this.getValidationErrorMessage(identifiersArray);
|
|
33
|
+
if (errorMessage) {
|
|
34
|
+
this.setState({
|
|
35
|
+
showErrorAlert: true,
|
|
36
|
+
errorMessage
|
|
37
|
+
});
|
|
38
|
+
} else {
|
|
39
|
+
this.props.addUserRoles(identifiersArray, role);
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
_defineProperty(this, "closeErrorAlert", () => {
|
|
43
|
+
this.setState({
|
|
44
|
+
showErrorAlert: false,
|
|
45
|
+
errorMessage: undefined
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
_defineProperty(this, "updateIdentifiers", e => {
|
|
49
|
+
this.setState({
|
|
50
|
+
identifiers: e.target.value
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
_defineProperty(this, "getValidationErrorMessage", identifiers => {
|
|
54
|
+
if (!identifiers || identifiers.length === 0) {
|
|
55
|
+
return `Please enter at least one ${getDomainIdentifierTypeString()}.`;
|
|
56
|
+
}
|
|
57
|
+
let invalidIdentifiers;
|
|
58
|
+
if (isPurdueShard() && !identifiers.every(id => isPurdueAliasOrPuid(id))) {
|
|
59
|
+
invalidIdentifiers = identifiers.filter(id => !isPurdueAliasOrPuid(id));
|
|
60
|
+
}
|
|
61
|
+
if (!isPurdueShard() && !identifiers.every(id => isEmail(id))) {
|
|
62
|
+
invalidIdentifiers = identifiers.filter(id => !isEmail(id));
|
|
63
|
+
}
|
|
64
|
+
if (invalidIdentifiers) {
|
|
65
|
+
return `Please enter valid ${getDomainIdentifierTypePluralString()}. The following are invalid:\r\n${invalidIdentifiers.join('\r\n')}`;
|
|
66
|
+
}
|
|
67
|
+
return undefined;
|
|
68
|
+
});
|
|
69
|
+
this.state = {
|
|
70
|
+
identifiers: '',
|
|
71
|
+
role: this.props.defaultRole,
|
|
72
|
+
showErrorAlert: false,
|
|
73
|
+
errorMessage: undefined
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
componentDidUpdate(prevProps) {
|
|
77
|
+
const {
|
|
78
|
+
shouldReset: prevShouldReset
|
|
79
|
+
} = prevProps;
|
|
80
|
+
const {
|
|
81
|
+
shouldReset
|
|
82
|
+
} = this.props;
|
|
83
|
+
if (!prevShouldReset && shouldReset) {
|
|
84
|
+
this.setState({
|
|
85
|
+
identifiers: '',
|
|
86
|
+
role: this.props.defaultRole
|
|
87
|
+
});
|
|
99
88
|
}
|
|
89
|
+
}
|
|
90
|
+
render() {
|
|
91
|
+
const {
|
|
92
|
+
identifiers,
|
|
93
|
+
role,
|
|
94
|
+
showErrorAlert,
|
|
95
|
+
errorMessage
|
|
96
|
+
} = this.state;
|
|
97
|
+
const {
|
|
98
|
+
entityName,
|
|
99
|
+
isAddingUsersToRole,
|
|
100
|
+
roleDescriptions,
|
|
101
|
+
renderAddDescription,
|
|
102
|
+
disabled,
|
|
103
|
+
textForRole
|
|
104
|
+
} = this.props;
|
|
105
|
+
const roles = _.keys(roleDescriptions);
|
|
106
|
+
const rolePopover = /*#__PURE__*/_jsxs(Popover, {
|
|
107
|
+
id: "role",
|
|
108
|
+
children: [/*#__PURE__*/_jsx("h3", {
|
|
109
|
+
children: "Role"
|
|
110
|
+
}), roles.map(r => /*#__PURE__*/_jsx(Fragment, {
|
|
111
|
+
children: roleDescriptions[r]
|
|
112
|
+
}, r))]
|
|
113
|
+
});
|
|
114
|
+
const appConfig = getAppConfig();
|
|
115
|
+
const appName = appConfig.APP_NAME;
|
|
116
|
+
const gradableDescriptor = appConfig.GRADABLE_DESCRIPTOR;
|
|
117
|
+
return /*#__PURE__*/_jsxs(Row, {
|
|
118
|
+
children: [!!renderAddDescription && /*#__PURE__*/_jsx(Col, {
|
|
119
|
+
xs: 12,
|
|
120
|
+
children: renderAddDescription(entityName)
|
|
121
|
+
}), /*#__PURE__*/_jsx(Col, {
|
|
122
|
+
xs: 12,
|
|
123
|
+
sm: 6,
|
|
124
|
+
children: /*#__PURE__*/_jsxs(FormGroup, {
|
|
125
|
+
controlId: "UserEntry",
|
|
126
|
+
children: [/*#__PURE__*/_jsxs(FormLabel, {
|
|
127
|
+
className: "f6",
|
|
128
|
+
children: [getDomainIdentifierTypePluralString(), " (separated by a new line)"]
|
|
129
|
+
}), /*#__PURE__*/_jsx(FormControl, {
|
|
130
|
+
type: "text",
|
|
131
|
+
as: "textarea",
|
|
132
|
+
name: "account",
|
|
133
|
+
"aria-label": "The account names to add",
|
|
134
|
+
onChange: this.updateIdentifiers,
|
|
135
|
+
value: identifiers,
|
|
136
|
+
placeholder: getDomainIdentifierTypeString(),
|
|
137
|
+
disabled: disabled
|
|
138
|
+
})]
|
|
139
|
+
})
|
|
140
|
+
}), /*#__PURE__*/_jsx(Col, {
|
|
141
|
+
xs: 12,
|
|
142
|
+
sm: 4,
|
|
143
|
+
children: /*#__PURE__*/_jsx(RoleSelect, {
|
|
144
|
+
options: roles,
|
|
145
|
+
value: role,
|
|
146
|
+
onChange: this.updateRole,
|
|
147
|
+
labelVisible: true,
|
|
148
|
+
popoverContentComponent: rolePopover,
|
|
149
|
+
textForRole: textForRole
|
|
150
|
+
})
|
|
151
|
+
}), /*#__PURE__*/_jsxs(Col, {
|
|
152
|
+
xs: 12,
|
|
153
|
+
sm: 2,
|
|
154
|
+
className: "mt3-ns pt2-ns",
|
|
155
|
+
children: [isAddingUsersToRole && /*#__PURE__*/_jsx(RefreshIndicatorInline, {
|
|
156
|
+
className: "mr3"
|
|
157
|
+
}), !isAddingUsersToRole && /*#__PURE__*/_jsxs(Button, {
|
|
158
|
+
id: "userRolesAddButton",
|
|
159
|
+
color: "primary",
|
|
160
|
+
className: "btn-primary w-100-lt-xs",
|
|
161
|
+
disabled: !identifiers || disabled,
|
|
162
|
+
onClick: this.handleSubmit,
|
|
163
|
+
children: [/*#__PURE__*/_jsx(AddCircle, {
|
|
164
|
+
className: "v-mid"
|
|
165
|
+
}), "Add"]
|
|
166
|
+
}), /*#__PURE__*/_jsx(AlertDialog, {
|
|
167
|
+
isOpen: showErrorAlert,
|
|
168
|
+
title: `Error Adding People to the ${entityName}`,
|
|
169
|
+
description: /*#__PURE__*/_jsx("div", {
|
|
170
|
+
className: "pre-wrap",
|
|
171
|
+
children: errorMessage
|
|
172
|
+
}),
|
|
173
|
+
proceedText: "Got it. Thanks!",
|
|
174
|
+
onProceed: this.closeErrorAlert,
|
|
175
|
+
onCancel: this.closeErrorAlert
|
|
176
|
+
})]
|
|
177
|
+
}), _.includes(FERPA_ROLES, role) && /*#__PURE__*/_jsx(Col, {
|
|
178
|
+
xs: 12,
|
|
179
|
+
children: /*#__PURE__*/_jsx(AlertWithIcon, {
|
|
180
|
+
id: "ferpaWarning",
|
|
181
|
+
variant: "warning",
|
|
182
|
+
children: /*#__PURE__*/_jsxs("p", {
|
|
183
|
+
children: ["This role includes ", gradableDescriptor, " scores in ", appName, ". Please consider whether", ' ', /*#__PURE__*/_jsx("a", {
|
|
184
|
+
href: "https://www.purdue.edu/registrar/FERPA/index.html",
|
|
185
|
+
target: "_blank",
|
|
186
|
+
rel: "noopener noreferrer",
|
|
187
|
+
children: "FERPA"
|
|
188
|
+
}), ' ', "certification is needed."]
|
|
189
|
+
})
|
|
190
|
+
})
|
|
191
|
+
})]
|
|
192
|
+
});
|
|
193
|
+
}
|
|
100
194
|
}
|
|
101
|
-
exports.UserRolesAdd = UserRolesAdd;
|
|
195
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCdXR0b24iLCJBZGRDaXJjbGUiLCJfIiwiUmVhY3QiLCJDb21wb25lbnQiLCJGcmFnbWVudCIsIkNvbCIsIkZvcm1Db250cm9sIiwiRm9ybUdyb3VwIiwiRm9ybUxhYmVsIiwiUG9wb3ZlciIsIlJvdyIsIkFsZXJ0RGlhbG9nIiwiUmVmcmVzaEluZGljYXRvcklubGluZSIsIlJvbGVTZWxlY3QiLCJCQVNFX1JPTEUiLCJnZXRBcHBDb25maWciLCJnZXREb21haW5JZGVudGlmaWVyVHlwZVBsdXJhbFN0cmluZyIsImdldERvbWFpbklkZW50aWZpZXJUeXBlU3RyaW5nIiwiaXNQdXJkdWVTaGFyZCIsImlzRW1haWwiLCJpc1B1cmR1ZUFsaWFzT3JQdWlkIiwiQWxlcnRXaXRoSWNvbiIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJGRVJQQV9ST0xFUyIsIlNVUEVSX0FETUlOIiwiQURNSU4iLCJHUk9VUF9PV05FUiIsIkdST1VQX0dSQURFUiIsIlVzZXJSb2xlc0FkZCIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJfZGVmaW5lUHJvcGVydHkiLCJyb2xlIiwic2V0U3RhdGUiLCJpZGVudGlmaWVycyIsInN0YXRlIiwiaWRlbnRpZmllcnNBcnJheSIsInNwbGl0IiwibWFwIiwiaWQiLCJ0cmltIiwiZmlsdGVyIiwiZXJyb3JNZXNzYWdlIiwiZ2V0VmFsaWRhdGlvbkVycm9yTWVzc2FnZSIsInNob3dFcnJvckFsZXJ0IiwiYWRkVXNlclJvbGVzIiwidW5kZWZpbmVkIiwiZSIsInRhcmdldCIsInZhbHVlIiwibGVuZ3RoIiwiaW52YWxpZElkZW50aWZpZXJzIiwiZXZlcnkiLCJqb2luIiwiZGVmYXVsdFJvbGUiLCJjb21wb25lbnREaWRVcGRhdGUiLCJwcmV2UHJvcHMiLCJzaG91bGRSZXNldCIsInByZXZTaG91bGRSZXNldCIsInJlbmRlciIsImVudGl0eU5hbWUiLCJpc0FkZGluZ1VzZXJzVG9Sb2xlIiwicm9sZURlc2NyaXB0aW9ucyIsInJlbmRlckFkZERlc2NyaXB0aW9uIiwiZGlzYWJsZWQiLCJ0ZXh0Rm9yUm9sZSIsInJvbGVzIiwia2V5cyIsInJvbGVQb3BvdmVyIiwiY2hpbGRyZW4iLCJyIiwiYXBwQ29uZmlnIiwiYXBwTmFtZSIsIkFQUF9OQU1FIiwiZ3JhZGFibGVEZXNjcmlwdG9yIiwiR1JBREFCTEVfREVTQ1JJUFRPUiIsInhzIiwic20iLCJjb250cm9sSWQiLCJjbGFzc05hbWUiLCJ0eXBlIiwiYXMiLCJuYW1lIiwib25DaGFuZ2UiLCJ1cGRhdGVJZGVudGlmaWVycyIsInBsYWNlaG9sZGVyIiwib3B0aW9ucyIsInVwZGF0ZVJvbGUiLCJsYWJlbFZpc2libGUiLCJwb3BvdmVyQ29udGVudENvbXBvbmVudCIsImNvbG9yIiwib25DbGljayIsImhhbmRsZVN1Ym1pdCIsImlzT3BlbiIsInRpdGxlIiwiZGVzY3JpcHRpb24iLCJwcm9jZWVkVGV4dCIsIm9uUHJvY2VlZCIsImNsb3NlRXJyb3JBbGVydCIsIm9uQ2FuY2VsIiwiaW5jbHVkZXMiLCJ2YXJpYW50IiwiaHJlZiIsInJlbCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1VzZXJSb2xlcy9BZGQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCdXR0b24gZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUvQnV0dG9uJ1xuaW1wb3J0IEFkZENpcmNsZSBmcm9tICdAbWF0ZXJpYWwtdWkvaWNvbnMvQWRkQ2lyY2xlJ1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJ1xuaW1wb3J0IFJlYWN0LCB7IENvbXBvbmVudCwgRnJhZ21lbnQgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IENvbCwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgRm9ybUxhYmVsLCBQb3BvdmVyLCBSb3cgfSBmcm9tICdyZWFjdC1ib290c3RyYXAnXG5pbXBvcnQgeyBBbGVydERpYWxvZyB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvQWxlcnREaWFsb2cnXG5pbXBvcnQgeyBSZWZyZXNoSW5kaWNhdG9ySW5saW5lIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9SZWZyZXNoSW5kaWNhdG9yL0lubGluZSdcbmltcG9ydCB7IFJvbGVTZWxlY3QgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL1VzZXJSb2xlcy9TZWxlY3QnXG5pbXBvcnQgeyBCQVNFX1JPTEUgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvYmFzZVJvbGUnXG5pbXBvcnQgeyBnZXRBcHBDb25maWcgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvY29uZmlndXJhdGlvbidcbmltcG9ydCB7IFJvbGVEZXNjcmlwdGlvbnMgfSBmcm9tICcuLi8uLi90eXBlcydcbmltcG9ydCB7IGdldERvbWFpbklkZW50aWZpZXJUeXBlUGx1cmFsU3RyaW5nLCBnZXREb21haW5JZGVudGlmaWVyVHlwZVN0cmluZyB9IGZyb20gJy4uLy4uL3V0aWxzL2RvbWFpbklkZW50aWZpZXInXG5pbXBvcnQgeyBpc1B1cmR1ZVNoYXJkIH0gZnJvbSAnLi4vLi4vdXRpbHMvc2hhcmQnXG5pbXBvcnQgeyBpc0VtYWlsLCBpc1B1cmR1ZUFsaWFzT3JQdWlkIH0gZnJvbSAnLi4vLi4vdXRpbHMvc3RyaW5nJ1xuaW1wb3J0IHsgQWxlcnRXaXRoSWNvbiB9IGZyb20gJy4uL0FsZXJ0V2l0aEljb24nXG5cbmNvbnN0IEZFUlBBX1JPTEVTID0gW0JBU0VfUk9MRS5TVVBFUl9BRE1JTiwgQkFTRV9ST0xFLkFETUlOLCBCQVNFX1JPTEUuR1JPVVBfT1dORVIsIEJBU0VfUk9MRS5HUk9VUF9HUkFERVJdXG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlclJvbGVzQWRkUHJvcHMge1xuXHRpZDogc3RyaW5nXG5cblx0ZGlzYWJsZWQ/OiBib29sZWFuXG5cdGVudGl0eU5hbWU/OiBzdHJpbmdcblx0ZGVmYXVsdFJvbGU6IHN0cmluZ1xuXHRyb2xlRGVzY3JpcHRpb25zOiBSb2xlRGVzY3JpcHRpb25zXG5cdHJlbmRlckFkZERlc2NyaXB0aW9uPzogKGVudGl0eU5hbWU/OiBzdHJpbmcpID0+IFJlYWN0LkpTWC5FbGVtZW50XG5cdHRleHRGb3JSb2xlPzogKHJvbGU6IHN0cmluZykgPT4gc3RyaW5nXG5cblx0aXNBZGRpbmdVc2Vyc1RvUm9sZTogYm9vbGVhblxuXHRzaG91bGRSZXNldDogYm9vbGVhblxuXHRhZGRVc2VyUm9sZXM6IChpZGVudGlmaWVyczogc3RyaW5nW10sIHJvbGU6IHN0cmluZykgPT4gdm9pZFxufVxuXG5pbnRlcmZhY2UgVXNlclJvbGVzQWRkU3RhdGUge1xuXHRpZGVudGlmaWVyczogc3RyaW5nXG5cdHJvbGU6IHN0cmluZ1xuXHRzaG93RXJyb3JBbGVydDogYm9vbGVhblxuXHRlcnJvck1lc3NhZ2U/OiBzdHJpbmdcbn1cblxuZXhwb3J0IGNsYXNzIFVzZXJSb2xlc0FkZCBleHRlbmRzIENvbXBvbmVudDxVc2VyUm9sZXNBZGRQcm9wcywgVXNlclJvbGVzQWRkU3RhdGU+IHtcblx0Y29uc3RydWN0b3IocHJvcHM6IFVzZXJSb2xlc0FkZFByb3BzKSB7XG5cdFx0c3VwZXIocHJvcHMpXG5cdFx0dGhpcy5zdGF0ZSA9IHtcblx0XHRcdGlkZW50aWZpZXJzOiAnJyxcblx0XHRcdHJvbGU6IHRoaXMucHJvcHMuZGVmYXVsdFJvbGUsXG5cdFx0XHRzaG93RXJyb3JBbGVydDogZmFsc2UsXG5cdFx0XHRlcnJvck1lc3NhZ2U6IHVuZGVmaW5lZFxuXHRcdH1cblx0fVxuXG5cdHVwZGF0ZVJvbGUgPSAocm9sZTogc3RyaW5nKSA9PiB7XG5cdFx0dGhpcy5zZXRTdGF0ZSh7XG5cdFx0XHRyb2xlXG5cdFx0fSlcblx0fVxuXG5cdGNvbXBvbmVudERpZFVwZGF0ZShwcmV2UHJvcHM6IFVzZXJSb2xlc0FkZFByb3BzKSB7XG5cdFx0Y29uc3QgeyBzaG91bGRSZXNldDogcHJldlNob3VsZFJlc2V0IH0gPSBwcmV2UHJvcHNcblx0XHRjb25zdCB7IHNob3VsZFJlc2V0IH0gPSB0aGlzLnByb3BzXG5cdFx0aWYgKCFwcmV2U2hvdWxkUmVzZXQgJiYgc2hvdWxkUmVzZXQpIHtcblx0XHRcdHRoaXMuc2V0U3RhdGUoe1xuXHRcdFx0XHRpZGVudGlmaWVyczogJycsXG5cdFx0XHRcdHJvbGU6IHRoaXMucHJvcHMuZGVmYXVsdFJvbGVcblx0XHRcdH0pXG5cdFx0fVxuXHR9XG5cblx0aGFuZGxlU3VibWl0ID0gKCkgPT4ge1xuXHRcdGNvbnN0IHsgaWRlbnRpZmllcnMsIHJvbGUgfSA9IHRoaXMuc3RhdGVcblx0XHRjb25zdCBpZGVudGlmaWVyc0FycmF5ID0gaWRlbnRpZmllcnNcblx0XHRcdC5zcGxpdCgvXFxyXFxufFxccnxcXG4vZylcblx0XHRcdC5tYXAoaWQgPT4gaWQudHJpbSgpKVxuXHRcdFx0LmZpbHRlcihpZCA9PiBpZCAhPT0gJycpIC8vIGZpbHRlciBpZGVudGlmaWVycyB0aGF0IGFyZSBlbXB0eVxuXHRcdGNvbnN0IGVycm9yTWVzc2FnZSA9IHRoaXMuZ2V0VmFsaWRhdGlvbkVycm9yTWVzc2FnZShpZGVudGlmaWVyc0FycmF5KVxuXHRcdGlmIChlcnJvck1lc3NhZ2UpIHtcblx0XHRcdHRoaXMuc2V0U3RhdGUoe1xuXHRcdFx0XHRzaG93RXJyb3JBbGVydDogdHJ1ZSxcblx0XHRcdFx0ZXJyb3JNZXNzYWdlXG5cdFx0XHR9KVxuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnByb3BzLmFkZFVzZXJSb2xlcyhpZGVudGlmaWVyc0FycmF5LCByb2xlKVxuXHRcdH1cblx0fVxuXG5cdGNsb3NlRXJyb3JBbGVydCA9ICgpID0+IHtcblx0XHR0aGlzLnNldFN0YXRlKHtcblx0XHRcdHNob3dFcnJvckFsZXJ0OiBmYWxzZSxcblx0XHRcdGVycm9yTWVzc2FnZTogdW5kZWZpbmVkXG5cdFx0fSlcblx0fVxuXG5cdHVwZGF0ZUlkZW50aWZpZXJzID0gKGU6IGFueSkgPT4ge1xuXHRcdHRoaXMuc2V0U3RhdGUoe1xuXHRcdFx0aWRlbnRpZmllcnM6IGUudGFyZ2V0LnZhbHVlIGFzIHN0cmluZ1xuXHRcdH0pXG5cdH1cblxuXHRnZXRWYWxpZGF0aW9uRXJyb3JNZXNzYWdlID0gKGlkZW50aWZpZXJzPzogc3RyaW5nW10pID0+IHtcblx0XHRpZiAoIWlkZW50aWZpZXJzIHx8IGlkZW50aWZpZXJzLmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0cmV0dXJuIGBQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lICR7Z2V0RG9tYWluSWRlbnRpZmllclR5cGVTdHJpbmcoKX0uYFxuXHRcdH1cblxuXHRcdGxldCBpbnZhbGlkSWRlbnRpZmllcnNcblx0XHRpZiAoaXNQdXJkdWVTaGFyZCgpICYmICFpZGVudGlmaWVycy5ldmVyeShpZCA9PiBpc1B1cmR1ZUFsaWFzT3JQdWlkKGlkKSkpIHtcblx0XHRcdGludmFsaWRJZGVudGlmaWVycyA9IGlkZW50aWZpZXJzLmZpbHRlcihpZCA9PiAhaXNQdXJkdWVBbGlhc09yUHVpZChpZCkpXG5cdFx0fVxuXHRcdGlmICghaXNQdXJkdWVTaGFyZCgpICYmICFpZGVudGlmaWVycy5ldmVyeShpZCA9PiBpc0VtYWlsKGlkKSkpIHtcblx0XHRcdGludmFsaWRJZGVudGlmaWVycyA9IGlkZW50aWZpZXJzLmZpbHRlcihpZCA9PiAhaXNFbWFpbChpZCkpXG5cdFx0fVxuXHRcdGlmIChpbnZhbGlkSWRlbnRpZmllcnMpIHtcblx0XHRcdHJldHVybiBgUGxlYXNlIGVudGVyIHZhbGlkICR7Z2V0RG9tYWluSWRlbnRpZmllclR5cGVQbHVyYWxTdHJpbmcoKX0uIFRoZSBmb2xsb3dpbmcgYXJlIGludmFsaWQ6XFxyXFxuJHtpbnZhbGlkSWRlbnRpZmllcnMuam9pbihcblx0XHRcdFx0J1xcclxcbidcblx0XHRcdCl9YFxuXHRcdH1cblx0XHRyZXR1cm4gdW5kZWZpbmVkXG5cdH1cblxuXHRyZW5kZXIoKSB7XG5cdFx0Y29uc3QgeyBpZGVudGlmaWVycywgcm9sZSwgc2hvd0Vycm9yQWxlcnQsIGVycm9yTWVzc2FnZSB9ID0gdGhpcy5zdGF0ZVxuXHRcdGNvbnN0IHsgZW50aXR5TmFtZSwgaXNBZGRpbmdVc2Vyc1RvUm9sZSwgcm9sZURlc2NyaXB0aW9ucywgcmVuZGVyQWRkRGVzY3JpcHRpb24sIGRpc2FibGVkLCB0ZXh0Rm9yUm9sZSB9ID1cblx0XHRcdHRoaXMucHJvcHNcblx0XHRjb25zdCByb2xlcyA9IF8ua2V5cyhyb2xlRGVzY3JpcHRpb25zKVxuXHRcdGNvbnN0IHJvbGVQb3BvdmVyID0gKFxuXHRcdFx0PFBvcG92ZXIgaWQ9XCJyb2xlXCI+XG5cdFx0XHRcdDxoMz5Sb2xlPC9oMz5cblx0XHRcdFx0e3JvbGVzLm1hcChyID0+IChcblx0XHRcdFx0XHQ8RnJhZ21lbnQga2V5PXtyfT57cm9sZURlc2NyaXB0aW9uc1tyXX08L0ZyYWdtZW50PlxuXHRcdFx0XHQpKX1cblx0XHRcdDwvUG9wb3Zlcj5cblx0XHQpXG5cblx0XHRjb25zdCBhcHBDb25maWcgPSBnZXRBcHBDb25maWcoKVxuXHRcdGNvbnN0IGFwcE5hbWUgPSBhcHBDb25maWcuQVBQX05BTUVcblx0XHRjb25zdCBncmFkYWJsZURlc2NyaXB0b3IgPSBhcHBDb25maWcuR1JBREFCTEVfREVTQ1JJUFRPUlxuXG5cdFx0cmV0dXJuIChcblx0XHRcdDxSb3c+XG5cdFx0XHRcdHshIXJlbmRlckFkZERlc2NyaXB0aW9uICYmIDxDb2wgeHM9ezEyfT57cmVuZGVyQWRkRGVzY3JpcHRpb24oZW50aXR5TmFtZSl9PC9Db2w+fVxuXHRcdFx0XHQ8Q29sIHhzPXsxMn0gc209ezZ9PlxuXHRcdFx0XHRcdDxGb3JtR3JvdXAgY29udHJvbElkPVwiVXNlckVudHJ5XCI+XG5cdFx0XHRcdFx0XHQ8Rm9ybUxhYmVsIGNsYXNzTmFtZT1cImY2XCI+XG5cdFx0XHRcdFx0XHRcdHtnZXREb21haW5JZGVudGlmaWVyVHlwZVBsdXJhbFN0cmluZygpfSAoc2VwYXJhdGVkIGJ5IGEgbmV3IGxpbmUpXG5cdFx0XHRcdFx0XHQ8L0Zvcm1MYWJlbD5cblx0XHRcdFx0XHRcdDxGb3JtQ29udHJvbFxuXHRcdFx0XHRcdFx0XHR0eXBlPVwidGV4dFwiXG5cdFx0XHRcdFx0XHRcdGFzPVwidGV4dGFyZWFcIlxuXHRcdFx0XHRcdFx0XHRuYW1lPVwiYWNjb3VudFwiXG5cdFx0XHRcdFx0XHRcdGFyaWEtbGFiZWw9XCJUaGUgYWNjb3VudCBuYW1lcyB0byBhZGRcIlxuXHRcdFx0XHRcdFx0XHRvbkNoYW5nZT17dGhpcy51cGRhdGVJZGVudGlmaWVyc31cblx0XHRcdFx0XHRcdFx0dmFsdWU9e2lkZW50aWZpZXJzfVxuXHRcdFx0XHRcdFx0XHRwbGFjZWhvbGRlcj17Z2V0RG9tYWluSWRlbnRpZmllclR5cGVTdHJpbmcoKX1cblx0XHRcdFx0XHRcdFx0ZGlzYWJsZWQ9e2Rpc2FibGVkfVxuXHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHQ8L0Zvcm1Hcm91cD5cblx0XHRcdFx0PC9Db2w+XG5cdFx0XHRcdDxDb2wgeHM9ezEyfSBzbT17NH0+XG5cdFx0XHRcdFx0PFJvbGVTZWxlY3Rcblx0XHRcdFx0XHRcdG9wdGlvbnM9e3JvbGVzfVxuXHRcdFx0XHRcdFx0dmFsdWU9e3JvbGV9XG5cdFx0XHRcdFx0XHRvbkNoYW5nZT17dGhpcy51cGRhdGVSb2xlfVxuXHRcdFx0XHRcdFx0bGFiZWxWaXNpYmxlXG5cdFx0XHRcdFx0XHRwb3BvdmVyQ29udGVudENvbXBvbmVudD17cm9sZVBvcG92ZXJ9XG5cdFx0XHRcdFx0XHR0ZXh0Rm9yUm9sZT17dGV4dEZvclJvbGV9XG5cdFx0XHRcdFx0Lz5cblx0XHRcdFx0PC9Db2w+XG5cdFx0XHRcdDxDb2wgeHM9ezEyfSBzbT17Mn0gY2xhc3NOYW1lPVwibXQzLW5zIHB0Mi1uc1wiPlxuXHRcdFx0XHRcdHtpc0FkZGluZ1VzZXJzVG9Sb2xlICYmIDxSZWZyZXNoSW5kaWNhdG9ySW5saW5lIGNsYXNzTmFtZT1cIm1yM1wiIC8+fVxuXHRcdFx0XHRcdHshaXNBZGRpbmdVc2Vyc1RvUm9sZSAmJiAoXG5cdFx0XHRcdFx0XHQ8QnV0dG9uXG5cdFx0XHRcdFx0XHRcdGlkPVwidXNlclJvbGVzQWRkQnV0dG9uXCJcblx0XHRcdFx0XHRcdFx0Y29sb3I9XCJwcmltYXJ5XCJcblx0XHRcdFx0XHRcdFx0Y2xhc3NOYW1lPVwiYnRuLXByaW1hcnkgdy0xMDAtbHQteHNcIlxuXHRcdFx0XHRcdFx0XHRkaXNhYmxlZD17IWlkZW50aWZpZXJzIHx8IGRpc2FibGVkfVxuXHRcdFx0XHRcdFx0XHRvbkNsaWNrPXt0aGlzLmhhbmRsZVN1Ym1pdH0+XG5cdFx0XHRcdFx0XHRcdDxBZGRDaXJjbGUgY2xhc3NOYW1lPVwidi1taWRcIiAvPlxuXHRcdFx0XHRcdFx0XHRBZGRcblx0XHRcdFx0XHRcdDwvQnV0dG9uPlxuXHRcdFx0XHRcdCl9XG5cdFx0XHRcdFx0PEFsZXJ0RGlhbG9nXG5cdFx0XHRcdFx0XHRpc09wZW49e3Nob3dFcnJvckFsZXJ0fVxuXHRcdFx0XHRcdFx0dGl0bGU9e2BFcnJvciBBZGRpbmcgUGVvcGxlIHRvIHRoZSAke2VudGl0eU5hbWV9YH1cblx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uPXs8ZGl2IGNsYXNzTmFtZT1cInByZS13cmFwXCI+e2Vycm9yTWVzc2FnZX08L2Rpdj59XG5cdFx0XHRcdFx0XHRwcm9jZWVkVGV4dD1cIkdvdCBpdC4gVGhhbmtzIVwiXG5cdFx0XHRcdFx0XHRvblByb2NlZWQ9e3RoaXMuY2xvc2VFcnJvckFsZXJ0fVxuXHRcdFx0XHRcdFx0b25DYW5jZWw9e3RoaXMuY2xvc2VFcnJvckFsZXJ0fVxuXHRcdFx0XHRcdC8+XG5cdFx0XHRcdDwvQ29sPlxuXHRcdFx0XHR7Xy5pbmNsdWRlcyhGRVJQQV9ST0xFUywgcm9sZSkgJiYgKFxuXHRcdFx0XHRcdDxDb2wgeHM9ezEyfT5cblx0XHRcdFx0XHRcdDxBbGVydFdpdGhJY29uIGlkPVwiZmVycGFXYXJuaW5nXCIgdmFyaWFudD1cIndhcm5pbmdcIj5cblx0XHRcdFx0XHRcdFx0PHA+XG5cdFx0XHRcdFx0XHRcdFx0VGhpcyByb2xlIGluY2x1ZGVzIHtncmFkYWJsZURlc2NyaXB0b3J9IHNjb3JlcyBpbiB7YXBwTmFtZX0uIFBsZWFzZSBjb25zaWRlciB3aGV0aGVyeycgJ31cblx0XHRcdFx0XHRcdFx0XHQ8YVxuXHRcdFx0XHRcdFx0XHRcdFx0aHJlZj1cImh0dHBzOi8vd3d3LnB1cmR1ZS5lZHUvcmVnaXN0cmFyL0ZFUlBBL2luZGV4Lmh0bWxcIlxuXHRcdFx0XHRcdFx0XHRcdFx0dGFyZ2V0PVwiX2JsYW5rXCJcblx0XHRcdFx0XHRcdFx0XHRcdHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIj5cblx0XHRcdFx0XHRcdFx0XHRcdEZFUlBBXG5cdFx0XHRcdFx0XHRcdFx0PC9hPnsnICd9XG5cdFx0XHRcdFx0XHRcdFx0Y2VydGlmaWNhdGlvbiBpcyBuZWVkZWQuXG5cdFx0XHRcdFx0XHRcdDwvcD5cblx0XHRcdFx0XHRcdDwvQWxlcnRXaXRoSWNvbj5cblx0XHRcdFx0XHQ8L0NvbD5cblx0XHRcdFx0KX1cblx0XHRcdDwvUm93PlxuXHRcdClcblx0fVxufVxuIl0sIm1hcHBpbmdzIjoiO0FBQUEsT0FBT0EsTUFBTSxNQUFNLDBCQUEwQjtBQUM3QyxPQUFPQyxTQUFTLE1BQU0sOEJBQThCO0FBQ3BELE9BQU9DLENBQUMsTUFBTSxRQUFRO0FBQ3RCLE9BQU9DLEtBQUssSUFBSUMsU0FBUyxFQUFFQyxRQUFRLFFBQVEsT0FBTztBQUNsRCxTQUFTQyxHQUFHLEVBQUVDLFdBQVcsRUFBRUMsU0FBUyxFQUFFQyxTQUFTLEVBQUVDLE9BQU8sRUFBRUMsR0FBRyxRQUFRLGlCQUFpQjtBQUN0RixTQUFTQyxXQUFXLFFBQVEsOEJBQThCO0FBQzFELFNBQVNDLHNCQUFzQixRQUFRLDBDQUEwQztBQUNqRixTQUFTQyxVQUFVLFFBQVEsbUNBQW1DO0FBQzlELFNBQVNDLFNBQVMsUUFBUSwwQkFBMEI7QUFDcEQsU0FBU0MsWUFBWSxRQUFRLCtCQUErQjtBQUU1RCxTQUFTQyxtQ0FBbUMsRUFBRUMsNkJBQTZCLFFBQVEsOEJBQThCO0FBQ2pILFNBQVNDLGFBQWEsUUFBUSxtQkFBbUI7QUFDakQsU0FBU0MsT0FBTyxFQUFFQyxtQkFBbUIsUUFBUSxvQkFBb0I7QUFDakUsU0FBU0MsYUFBYSxRQUFRLGtCQUFrQjtBQUFBLFNBQUFDLEdBQUEsSUFBQUMsSUFBQSxFQUFBQyxJQUFBLElBQUFDLEtBQUE7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
|
|
@@ -1,11 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.UserRolesContext = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const react_1 = tslib_1.__importDefault(require("react"));
|
|
1
|
+
import React from 'react';
|
|
6
2
|
/*
|
|
7
3
|
* Context provided to the children of UserRoles. Default values should be initialized
|
|
8
4
|
* by the context provider.
|
|
9
5
|
*/
|
|
10
6
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
11
|
-
|
|
7
|
+
export const UserRolesContext = /*#__PURE__*/React.createContext(undefined);
|
|
8
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlVzZXJSb2xlc0NvbnRleHQiLCJjcmVhdGVDb250ZXh0IiwidW5kZWZpbmVkIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvVXNlclJvbGVzL0NvbnRleHQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IFVzZXJSb2xlIH0gZnJvbSAnLi4vLi4vdHlwZXMnXG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlclJvbGVzQ29udGV4dFR5cGUge1xuXHQvKiogZGlzYWJsZSBhbGwgdXNlciByb2xlIHNlbGVjdCBkcm9wZG93bnMsIGlmIGFueSAqL1xuXHRpc1VwZGF0ZURpc2FibGVkPzogYm9vbGVhblxuXHQvKiogZGlzYWJsZSBhbGwgdXNlciByb2xlIGRlbGV0ZSBidXR0b25zICovXG5cdGlzRGVsZXRlRGlzYWJsZWQ/OiBib29sZWFuXG5cdC8qKiBJcyB0aGUgY3VycmVudCB1c2VyIGFsbG93ZWQgdG8gYWRkLCB1cGRhdGUsIGFuZCBkZWxldGUgdXNlciByb2xlcz8gKi9cblx0Y2FuTW9kaWZ5PzogYm9vbGVhblxuXHQvKiogSXMgdGhlIGN1cnJlbnQgdXNlciBhbGxvd2VkIHRvIGRlbGV0ZSB0aGVpciBvd24gdXNlciByb2xlPyAqL1xuXHRjYW5EZWxldGVTZWxmPzogYm9vbGVhblxuXHQvKiogSWYgbXVsdGlwbGUgcm9sZXMgYWxsb3dlZCwgZWFjaCByb2xlIGlzIGRpc3BsYXllZCBwZXIgdXNlciwgb3RoZXJ3aXNlIGEgc2VsZWN0IGRyb3Bkb3duIGlzIGRpc3BsYXllZC4gKi9cblx0YWxsb3dNdWx0aXBsZVJvbGVzPzogYm9vbGVhblxuXHRyb2xlczogc3RyaW5nW11cblx0LyoqIChPcHRpb25hbCkgSWYgcHJvdmlkZWQsIHRoZSBsYXN0IHVzZXIgcm9sZSB3aXRoIHRoZSByZXF1aXJlZCByb2xlIHdpbGwgYmUgcHJldmVudGVkIGZyb20gYmVpbmcgcmVtb3ZlZC4gKi9cblx0cmVxdWlyZWRSb2xlPzogc3RyaW5nXG5cdC8qKiAoT3B0aW9uYWwpIFByb3ZpZGUgY3VzdG9tIHVzZXItZnJpZW5kbHkgbmFtZXMgZm9yIGRpc3BsYXllZCByb2xlcyAqL1xuXHR0ZXh0Rm9yUm9sZT86IChyb2xlOiBzdHJpbmcpID0+IHN0cmluZ1xuXHQvKiogVGhlIHVzZXIgcm9sZSBiZWluZyB1cGRhdGVkICovXG5cdHVzZXJSb2xlVG9VcGRhdGU/OiBVc2VyUm9sZVxuXHQvKiogSWYgYSB1c2VyIHJvbGUgaXMgYmVpbmcgdXBkYXRlZCAqL1xuXHRpc1VwZGF0aW5nOiBib29sZWFuXG5cdC8qKiBNZXRob2QgdG8gdXBkYXRlIGEgdXNlciByb2xlICovXG5cdHVwZGF0ZVVzZXJSb2xlOiAodXNlclJvbGVUb1VwZGF0ZTogVXNlclJvbGUsIG5ld1JvbGU6IHN0cmluZykgPT4gdm9pZFxuXHQvKiogVGhlIHVzZXIgcm9sZSBiZWluZyByZW1vdmVkICovXG5cdHVzZXJSb2xlVG9SZW1vdmU/OiBVc2VyUm9sZVxuXHQvKiogSWYgYSB1c2VyIHJvbGUgaXMgYmVpbmcgcmVtb3ZlZCAqL1xuXHRpc1JlbW92aW5nOiBib29sZWFuXG5cdC8qKiBNZXRob2QgdG8gcmVtb3ZlIGEgdXNlciByb2xlICovXG5cdHJlbW92ZVVzZXJSb2xlOiAodXNlclJvbGVUb1JlbW92ZTogVXNlclJvbGUpID0+IHZvaWRcbn1cblxuLypcbiAqIENvbnRleHQgcHJvdmlkZWQgdG8gdGhlIGNoaWxkcmVuIG9mIFVzZXJSb2xlcy4gIERlZmF1bHQgdmFsdWVzIHNob3VsZCBiZSBpbml0aWFsaXplZFxuICogYnkgdGhlIGNvbnRleHQgcHJvdmlkZXIuXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbm9uLW51bGwtYXNzZXJ0aW9uXG5leHBvcnQgY29uc3QgVXNlclJvbGVzQ29udGV4dCA9IFJlYWN0LmNyZWF0ZUNvbnRleHQ8VXNlclJvbGVzQ29udGV4dFR5cGU+KHVuZGVmaW5lZCEpXG4iXSwibWFwcGluZ3MiOiJBQUFBLE9BQU9BLEtBQUssTUFBTSxPQUFPO0FBaUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxNQUFNQyxnQkFBZ0IsZ0JBQUdELEtBQUssQ0FBQ0UsYUFBYSxDQUF1QkMsU0FBVSxDQUFDIiwiaWdub3JlTGlzdCI6W119
|