studiokit-scaffolding-js 7.0.14-alpha.1 → 7.1.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.
Files changed (374) hide show
  1. package/lib/components/ActionList.d.ts +2 -2
  2. package/lib/components/ActionList.js +166 -87
  3. package/lib/components/AlertDialog.d.ts +3 -3
  4. package/lib/components/AlertDialog.js +133 -18
  5. package/lib/components/AlertWithIcon.js +93 -52
  6. package/lib/components/ConnectedModal.d.ts +1 -2
  7. package/lib/components/ConnectedModal.js +41 -35
  8. package/lib/components/Dropdowns/GroupsDropdown.d.ts +4 -4
  9. package/lib/components/Dropdowns/GroupsDropdown.js +69 -82
  10. package/lib/components/Dropdowns/ManagedNavDropdown.d.ts +2 -2
  11. package/lib/components/Dropdowns/ManagedNavDropdown.js +96 -108
  12. package/lib/components/Dropdowns/UserDropdown.js +109 -70
  13. package/lib/components/Dropdowns/index.js +27 -11
  14. package/lib/components/EntityOwnerList.d.ts +3 -3
  15. package/lib/components/EntityOwnerList.js +52 -60
  16. package/lib/components/Error.js +107 -27
  17. package/lib/components/ErrorBoundary.js +133 -94
  18. package/lib/components/ErrorMessage.d.ts +2 -2
  19. package/lib/components/ErrorMessage.js +44 -14
  20. package/lib/components/Forms/DateField.d.ts +2 -2
  21. package/lib/components/Forms/DateField.js +63 -95
  22. package/lib/components/Forms/TimeField.d.ts +2 -2
  23. package/lib/components/Forms/TimeField.js +84 -108
  24. package/lib/components/Forms/index.js +27 -13
  25. package/lib/components/Groups/CreateEditCopySaveButtons.d.ts +2 -2
  26. package/lib/components/Groups/CreateEditCopySaveButtons.js +102 -14
  27. package/lib/components/Groups/ExternalGroups/Attach.d.ts +6 -7
  28. package/lib/components/Groups/ExternalGroups/Attach.js +213 -188
  29. package/lib/components/Groups/ExternalGroups/Table.js +183 -76
  30. package/lib/components/Groups/GroupCreateOrEditCommonProps.js +5 -1
  31. package/lib/components/Groups/RosterSyncInfo.js +140 -49
  32. package/lib/components/HOC/AccessibleAppComponent.d.ts +2 -2
  33. package/lib/components/HOC/AccessibleAppComponent.js +96 -119
  34. package/lib/components/HOC/ActivityRequiredComponent.d.ts +14 -14
  35. package/lib/components/HOC/ActivityRequiredComponent.js +72 -86
  36. package/lib/components/HOC/AsyncComponent.d.ts +9 -9
  37. package/lib/components/HOC/AsyncComponent.js +53 -129
  38. package/lib/components/HOC/AuthenticatedComponent.d.ts +4 -4
  39. package/lib/components/HOC/AuthenticatedComponent.js +59 -96
  40. package/lib/components/HOC/CollectionComponent.d.ts +12 -12
  41. package/lib/components/HOC/CollectionComponent.js +161 -161
  42. package/lib/components/HOC/CollectionFirstItemComponent.d.ts +13 -13
  43. package/lib/components/HOC/CollectionFirstItemComponent.js +49 -91
  44. package/lib/components/HOC/CollectionItemComponent.d.ts +9 -9
  45. package/lib/components/HOC/CollectionItemComponent.js +159 -158
  46. package/lib/components/HOC/ConnectedModalComponent.d.ts +9 -9
  47. package/lib/components/HOC/ConnectedModalComponent.js +96 -126
  48. package/lib/components/HOC/DataDependentComponent.d.ts +3 -55
  49. package/lib/components/HOC/DataDependentComponent.js +30 -79
  50. package/lib/components/HOC/EntityComponent.d.ts +13 -13
  51. package/lib/components/HOC/EntityComponent.js +63 -101
  52. package/lib/components/HOC/FullscreenModalComponent.d.ts +9 -9
  53. package/lib/components/HOC/FullscreenModalComponent.js +145 -165
  54. package/lib/components/HOC/GroupActivityRequiredComponent.d.ts +2 -2
  55. package/lib/components/HOC/GroupActivityRequiredComponent.js +32 -31
  56. package/lib/components/HOC/GuidComponent.d.ts +1 -1
  57. package/lib/components/HOC/GuidComponent.js +25 -64
  58. package/lib/components/HOC/ModelContextDependencyVerifyComponent.d.ts +28 -29
  59. package/lib/components/HOC/ModelContextDependencyVerifyComponent.js +36 -59
  60. package/lib/components/HOC/ModelErrorRedirectComponent.d.ts +10 -10
  61. package/lib/components/HOC/ModelErrorRedirectComponent.js +40 -83
  62. package/lib/components/HOC/SearchPersistorComponent.d.ts +4 -4
  63. package/lib/components/HOC/SearchPersistorComponent.js +243 -216
  64. package/lib/components/HOC/UnauthenticatedComponent.d.ts +12 -12
  65. package/lib/components/HOC/UnauthenticatedComponent.js +37 -82
  66. package/lib/components/HOC/UserComponent.d.ts +1 -1
  67. package/lib/components/HOC/UserComponent.js +12 -11
  68. package/lib/components/Icons/IconAlphaList.js +34 -20
  69. package/lib/components/Icons/IconExternalUser.js +34 -20
  70. package/lib/components/Icons/IconImpersonation.js +34 -20
  71. package/lib/components/Icons/IconStopImpersonating.js +34 -20
  72. package/lib/components/Icons/IconTable.js +35 -21
  73. package/lib/components/Icons/IconTableDeleteCol.js +34 -20
  74. package/lib/components/Icons/IconTableDeleteRow.js +34 -20
  75. package/lib/components/Icons/IconTableInsertCol.js +34 -20
  76. package/lib/components/Icons/IconTableInsertRow.js +34 -20
  77. package/lib/components/Impersonation/Button.d.ts +2 -2
  78. package/lib/components/Impersonation/Button.js +76 -56
  79. package/lib/components/Impersonation/Link.d.ts +2 -2
  80. package/lib/components/Impersonation/Link.js +76 -53
  81. package/lib/components/Impersonation/UserDetail.d.ts +2 -2
  82. package/lib/components/Impersonation/UserDetail.js +64 -15
  83. package/lib/components/Loading.js +27 -21
  84. package/lib/components/LockDownBrowser/Check.js +194 -107
  85. package/lib/components/LockDownBrowser/ExitButton.js +27 -14
  86. package/lib/components/LockDownBrowser/Launch.js +70 -85
  87. package/lib/components/Lti/Confirm.js +152 -33
  88. package/lib/components/Lti/CreateNonLtiGroupAlertDialog.d.ts +4 -2
  89. package/lib/components/Lti/CreateNonLtiGroupAlertDialog.js +170 -78
  90. package/lib/components/Lti/Launch.js +105 -49
  91. package/lib/components/Lti/LaunchGroup.js +85 -39
  92. package/lib/components/ManageTable.d.ts +1 -2
  93. package/lib/components/ManageTable.js +309 -104
  94. package/lib/components/ManageTableNoDataComponent.js +42 -22
  95. package/lib/components/NewVersionAlert.d.ts +2 -2
  96. package/lib/components/NewVersionAlert.js +82 -91
  97. package/lib/components/NotFound.js +87 -28
  98. package/lib/components/Notifications.d.ts +4 -4
  99. package/lib/components/Notifications.js +187 -169
  100. package/lib/components/PaginationNextButton.js +33 -21
  101. package/lib/components/PaginationPreviousButton.js +33 -21
  102. package/lib/components/Quill/CustomToolbar.d.ts +2 -2
  103. package/lib/components/Quill/CustomToolbar.js +432 -257
  104. package/lib/components/Quill/Formats/Image.d.ts +10 -25
  105. package/lib/components/Quill/Formats/Image.js +76 -82
  106. package/lib/components/Quill/Formats/List.d.ts +6 -3
  107. package/lib/components/Quill/Formats/List.js +50 -72
  108. package/lib/components/Quill/Formats/Video.d.ts +2 -1
  109. package/lib/components/Quill/Formats/Video.js +29 -43
  110. package/lib/components/Quill/ImageDropModule.d.ts +1 -1
  111. package/lib/components/Quill/ImageDropModule.js +142 -115
  112. package/lib/components/Quill/ImageWarning.d.ts +2 -2
  113. package/lib/components/Quill/ImageWarning.js +45 -32
  114. package/lib/components/Quill/ImageWithAltTextModal.d.ts +0 -1
  115. package/lib/components/Quill/ImageWithAltTextModal.js +425 -141
  116. package/lib/components/Quill/Specs/CustomImageSpec.d.ts +1 -1
  117. package/lib/components/Quill/Specs/CustomImageSpec.js +37 -45
  118. package/lib/components/Quill/Specs/CustomVideoSpec.d.ts +1 -1
  119. package/lib/components/Quill/Specs/CustomVideoSpec.js +27 -36
  120. package/lib/components/Quill/TableModule/Blots/BaseTableBlot.d.ts +2 -1
  121. package/lib/components/Quill/TableModule/Blots/BaseTableBlot.js +100 -116
  122. package/lib/components/Quill/TableModule/Blots/TableBlot.js +53 -66
  123. package/lib/components/Quill/TableModule/Blots/TableBodyBlot.js +54 -67
  124. package/lib/components/Quill/TableModule/Blots/TableCellBlot.d.ts +1 -1
  125. package/lib/components/Quill/TableModule/Blots/TableCellBlot.js +225 -241
  126. package/lib/components/Quill/TableModule/Blots/TableContainer.js +82 -99
  127. package/lib/components/Quill/TableModule/Blots/TableRowBlot.js +76 -87
  128. package/lib/components/Quill/TableModule/constants.js +45 -41
  129. package/lib/components/Quill/TableModule/index.css +25 -25
  130. package/lib/components/Quill/TableModule/index.d.ts +14 -5
  131. package/lib/components/Quill/TableModule/index.js +373 -313
  132. package/lib/components/Quill/TableModule/utils.js +45 -45
  133. package/lib/components/Quill/accessibilityFix.d.ts +0 -1
  134. package/lib/components/Quill/accessibilityFix.js +222 -238
  135. package/lib/components/Quill/index.js +36 -32
  136. package/lib/components/RefreshIndicator/Bordered.js +48 -32
  137. package/lib/components/RefreshIndicator/Inline.js +48 -33
  138. package/lib/components/RefreshIndicator/index.d.ts +2 -2
  139. package/lib/components/RefreshIndicator/index.js +263 -113
  140. package/lib/components/SearchControls.js +216 -31
  141. package/lib/components/SentryRoute.js +10 -23
  142. package/lib/components/Tables/RoleFilter.d.ts +3 -4
  143. package/lib/components/Tables/RoleFilter.js +71 -46
  144. package/lib/components/Tables/TextFilter.d.ts +2 -3
  145. package/lib/components/Tables/TextFilter.js +62 -20
  146. package/lib/components/UserRoles/Add.d.ts +3 -3
  147. package/lib/components/UserRoles/Add.js +199 -161
  148. package/lib/components/UserRoles/Context.js +8 -6
  149. package/lib/components/UserRoles/RoleCell.js +181 -100
  150. package/lib/components/UserRoles/Select.js +168 -54
  151. package/lib/components/UserRoles/Table.js +221 -102
  152. package/lib/components/UserRoles/index.d.ts +6 -6
  153. package/lib/components/UserRoles/index.js +535 -464
  154. package/lib/config/eslint/index.d.ts +2 -0
  155. package/lib/config/eslint/index.js +36 -0
  156. package/lib/config/eslint/lib/order.d.ts +3 -0
  157. package/lib/config/eslint/lib/order.js +30 -0
  158. package/lib/config/eslint/lib/prettier.d.ts +3 -0
  159. package/lib/config/eslint/lib/prettier.js +23 -0
  160. package/lib/config/eslint/lib/typescript.d.ts +2 -0
  161. package/lib/config/eslint/lib/typescript.js +98 -0
  162. package/lib/config/eslint/react.d.ts +2 -0
  163. package/lib/config/eslint/react.js +30 -0
  164. package/lib/constants/baseActivity.js +30 -26
  165. package/lib/constants/baseRole.js +14 -10
  166. package/lib/constants/configuration.d.ts +1 -1
  167. package/lib/constants/configuration.js +43 -39
  168. package/lib/constants/externalProviderType.js +10 -6
  169. package/lib/constants/fetchErrorData.js +15 -11
  170. package/lib/constants/index.js +137 -23
  171. package/lib/constants/lockDownBrowser.js +28 -24
  172. package/lib/constants/mockData.d.ts +4 -6
  173. package/lib/constants/mockData.js +383 -324
  174. package/lib/constants/modelStatus.js +15 -11
  175. package/lib/constants/notificationType.js +12 -8
  176. package/lib/constants/operatingSystem.js +12 -8
  177. package/lib/constants/shard.js +11 -7
  178. package/lib/constants/table.js +21 -21
  179. package/lib/constants/tier.js +12 -8
  180. package/lib/constants/userRole.d.ts +1 -2
  181. package/lib/constants/userRole.js +15 -17
  182. package/lib/css/components/_buttons.css +11 -3
  183. package/lib/css/components/_quill.css +3 -3
  184. package/lib/css/components/_tables.css +6 -5
  185. package/lib/css/utils/_display.css +12 -19
  186. package/lib/css/utils/_general.css +1 -1
  187. package/lib/css/utils/_text.css +2 -1
  188. package/lib/css/variables.css +0 -4
  189. package/lib/endpointMappings.js +197 -193
  190. package/lib/hooks/useCollection.js +83 -65
  191. package/lib/hooks/useCollectionConfiguration.d.ts +0 -1
  192. package/lib/hooks/useCollectionConfiguration.js +179 -82
  193. package/lib/hooks/useCollectionItem.js +155 -58
  194. package/lib/hooks/useEventCalback.d.ts +14 -0
  195. package/lib/hooks/useEventCalback.js +51 -0
  196. package/lib/hooks/useGuid.js +19 -8
  197. package/lib/hooks/usePrevious.d.ts +24 -1
  198. package/lib/hooks/usePrevious.js +82 -12
  199. package/lib/index.js +156 -36
  200. package/lib/redux/actionCreator.d.ts +6 -6
  201. package/lib/redux/actionCreator.js +51 -40
  202. package/lib/redux/actions/AuthAction.js +44 -31
  203. package/lib/redux/actions/ModalAction.d.ts +1 -1
  204. package/lib/redux/actions/ModalAction.js +10 -6
  205. package/lib/redux/actions/ModelAction.d.ts +1 -1
  206. package/lib/redux/actions/ModelAction.js +77 -49
  207. package/lib/redux/actions/NotificationAction.js +10 -6
  208. package/lib/redux/actions/SearchAction.js +9 -5
  209. package/lib/redux/actions/index.js +60 -16
  210. package/lib/redux/configureReducers.d.ts +2 -5
  211. package/lib/redux/configureReducers.js +61 -72
  212. package/lib/redux/configureStore.d.ts +2 -2
  213. package/lib/redux/configureStore.js +83 -115
  214. package/lib/redux/helpers.js +7 -2
  215. package/lib/redux/reducers/authReducer.js +50 -44
  216. package/lib/redux/reducers/index.js +41 -15
  217. package/lib/redux/reducers/modalsReducer.js +49 -52
  218. package/lib/redux/reducers/modelsReducer.d.ts +2 -2
  219. package/lib/redux/reducers/modelsReducer.js +136 -135
  220. package/lib/redux/reducers/notificationsReducer.js +26 -21
  221. package/lib/redux/reducers/searchReducer.js +18 -12
  222. package/lib/redux/sagas/appInsightsSaga.js +24 -62
  223. package/lib/redux/sagas/authSaga.js +287 -414
  224. package/lib/redux/sagas/caliperSaga.js +154 -248
  225. package/lib/redux/sagas/clockOffsetSaga.js +35 -76
  226. package/lib/redux/sagas/configurationSaga.js +13 -46
  227. package/lib/redux/sagas/downtimeApiErrorSaga.d.ts +0 -1
  228. package/lib/redux/sagas/downtimeApiErrorSaga.js +23 -64
  229. package/lib/redux/sagas/errorSaga.d.ts +0 -1
  230. package/lib/redux/sagas/errorSaga.js +29 -63
  231. package/lib/redux/sagas/googleAnalyticsSaga.js +29 -69
  232. package/lib/redux/sagas/identityProviderSaga.js +24 -69
  233. package/lib/redux/sagas/initialDataLoadSaga.js +38 -29
  234. package/lib/redux/sagas/lockDownBrowserErrorSaga.d.ts +0 -1
  235. package/lib/redux/sagas/lockDownBrowserErrorSaga.js +32 -81
  236. package/lib/redux/sagas/modelFetchSaga.js +331 -411
  237. package/lib/redux/sagas/noStoreSaga.d.ts +1 -1
  238. package/lib/redux/sagas/noStoreSaga.js +68 -101
  239. package/lib/redux/sagas/postLoginDataSaga.js +42 -74
  240. package/lib/redux/sagas/postLoginRedirectSaga.js +27 -68
  241. package/lib/redux/sagas/rootSaga.js +85 -137
  242. package/lib/redux/sagas/sentrySaga.js +29 -85
  243. package/lib/redux/sagas/userIdSaga.js +18 -54
  244. package/lib/services/codeProviderService.js +25 -29
  245. package/lib/services/dateService.js +12 -10
  246. package/lib/services/documentService.js +15 -10
  247. package/lib/services/fetchService.js +110 -144
  248. package/lib/services/persistenceService.d.ts +4 -4
  249. package/lib/services/persistenceService.js +45 -43
  250. package/lib/services/ticketProviderService.js +29 -33
  251. package/lib/services/tokenPersistenceService.js +13 -9
  252. package/lib/services/windowService.js +21 -17
  253. package/lib/startup.d.ts +1 -1
  254. package/lib/startup.js +115 -118
  255. package/lib/types/AppConfiguration.js +5 -1
  256. package/lib/types/Artifact.js +11 -7
  257. package/lib/types/BaseReduxState.js +5 -1
  258. package/lib/types/Client.js +5 -1
  259. package/lib/types/Collection.d.ts +3 -3
  260. package/lib/types/Collection.js +5 -1
  261. package/lib/types/Configuration.js +5 -1
  262. package/lib/types/DeepLinkingResponseRequest.js +5 -1
  263. package/lib/types/DeletableModel.js +5 -1
  264. package/lib/types/Event.js +5 -1
  265. package/lib/types/ExternalGroup.js +5 -1
  266. package/lib/types/ExternalProvider.js +5 -1
  267. package/lib/types/ExternalTerm.js +5 -1
  268. package/lib/types/Group.js +5 -1
  269. package/lib/types/IdentityProvider.js +5 -1
  270. package/lib/types/LtiLaunch.js +5 -1
  271. package/lib/types/NameOnlyEntity.js +5 -1
  272. package/lib/types/Notification.d.ts +2 -2
  273. package/lib/types/Notification.js +5 -1
  274. package/lib/types/OptionalRecord.d.ts +1 -1
  275. package/lib/types/OptionalRecord.js +5 -1
  276. package/lib/types/OwnerSchedule.d.ts +3 -1
  277. package/lib/types/OwnerSchedule.js +5 -1
  278. package/lib/types/PropertyOfType.d.ts +3 -3
  279. package/lib/types/PropertyOfType.js +5 -1
  280. package/lib/types/Quill.js +5 -1
  281. package/lib/types/RoleDescription.d.ts +0 -1
  282. package/lib/types/RoleDescription.js +5 -1
  283. package/lib/types/Search.js +5 -1
  284. package/lib/types/SimpleLocation.js +5 -1
  285. package/lib/types/UniTime.js +5 -1
  286. package/lib/types/User.js +5 -1
  287. package/lib/types/UserRole.js +5 -1
  288. package/lib/types/auth/AuthState.js +5 -1
  289. package/lib/types/auth/CasV1LoginRequestBody.js +5 -1
  290. package/lib/types/auth/ClientCredentials.js +5 -1
  291. package/lib/types/auth/CodeProviderService.js +5 -1
  292. package/lib/types/auth/LocalLoginRequestBody.js +5 -1
  293. package/lib/types/auth/TicketProviderService.js +5 -1
  294. package/lib/types/auth/TokenPersistenceService.js +5 -1
  295. package/lib/types/auth/index.js +82 -18
  296. package/lib/types/externals.d.js +2 -0
  297. package/lib/types/index.js +313 -39
  298. package/lib/types/net/EndpointConfig.js +5 -1
  299. package/lib/types/net/EndpointMapping.js +5 -1
  300. package/lib/types/net/EndpointMappings.js +5 -1
  301. package/lib/types/net/ErrorHandler.d.ts +1 -1
  302. package/lib/types/net/ErrorHandler.js +5 -1
  303. package/lib/types/net/FetchConfig.d.ts +1 -1
  304. package/lib/types/net/FetchConfig.js +5 -1
  305. package/lib/types/net/FetchErrorData.js +10 -6
  306. package/lib/types/net/FetchResult.d.ts +2 -2
  307. package/lib/types/net/FetchResult.js +5 -1
  308. package/lib/types/net/HTTPMethod.d.ts +1 -1
  309. package/lib/types/net/HTTPMethod.js +5 -1
  310. package/lib/types/net/HTTPStatusCode.js +16 -12
  311. package/lib/types/net/Metadata.js +5 -1
  312. package/lib/types/net/Model.js +5 -1
  313. package/lib/types/net/ModelCollection.js +5 -1
  314. package/lib/types/net/ModelsState.js +5 -1
  315. package/lib/types/net/OAuthToken.js +5 -1
  316. package/lib/types/net/OAuthTokenOrNull.d.ts +1 -1
  317. package/lib/types/net/OAuthTokenOrNull.js +5 -1
  318. package/lib/types/net/TokenAccessFunction.d.ts +1 -1
  319. package/lib/types/net/TokenAccessFunction.js +5 -1
  320. package/lib/types/net/index.js +181 -27
  321. package/lib/utils/baseActivity.d.ts +2 -2
  322. package/lib/utils/baseActivity.js +93 -91
  323. package/lib/utils/baseRole.js +37 -33
  324. package/lib/utils/collection.js +413 -291
  325. package/lib/utils/cookies.js +22 -37
  326. package/lib/utils/date.js +210 -210
  327. package/lib/utils/dom.js +145 -133
  328. package/lib/utils/domainIdentifier.js +9 -9
  329. package/lib/utils/entityUserRole.js +6 -2
  330. package/lib/utils/error.d.ts +1 -1
  331. package/lib/utils/error.js +18 -16
  332. package/lib/utils/events.js +37 -30
  333. package/lib/utils/externalGroup.js +25 -21
  334. package/lib/utils/externalProviders.js +8 -4
  335. package/lib/utils/externalTerms.js +9 -6
  336. package/lib/utils/fetch.d.ts +1 -1
  337. package/lib/utils/fetch.js +179 -176
  338. package/lib/utils/group.js +17 -9
  339. package/lib/utils/groupDates.d.ts +1 -1
  340. package/lib/utils/groupDates.js +43 -39
  341. package/lib/utils/groupRoles.js +28 -28
  342. package/lib/utils/lockDownBrowser.js +16 -12
  343. package/lib/utils/logger.js +30 -25
  344. package/lib/utils/lti.js +10 -5
  345. package/lib/utils/model.d.ts +2 -2
  346. package/lib/utils/model.js +35 -44
  347. package/lib/utils/number.js +13 -16
  348. package/lib/utils/promise.d.ts +6 -1
  349. package/lib/utils/promise.js +34 -15
  350. package/lib/utils/quill.js +60 -71
  351. package/lib/utils/route.d.ts +2 -2
  352. package/lib/utils/route.js +61 -60
  353. package/lib/utils/search.d.ts +1 -1
  354. package/lib/utils/search.js +78 -85
  355. package/lib/utils/shard.js +38 -41
  356. package/lib/utils/sort.d.ts +3 -3
  357. package/lib/utils/sort.js +62 -58
  358. package/lib/utils/string.js +14 -10
  359. package/lib/utils/table.d.ts +3 -3
  360. package/lib/utils/table.js +36 -33
  361. package/lib/utils/timezone.js +12 -26
  362. package/lib/utils/url.d.ts +2 -1
  363. package/lib/utils/url.js +139 -193
  364. package/lib/utils/user.js +59 -61
  365. package/lib/utils/userAgent.js +11 -11
  366. package/lib/utils/userRole.d.ts +3 -3
  367. package/lib/utils/userRole.js +46 -44
  368. package/package.json +90 -73
  369. package/lib/config/eslint/index.cjs +0 -21
  370. package/lib/config/eslint/lib/order.cjs +0 -22
  371. package/lib/config/eslint/lib/prettier.cjs +0 -18
  372. package/lib/config/eslint/lib/typescript.cjs +0 -86
  373. package/lib/config/eslint/react.cjs +0 -9
  374. package/lib/css/utils/_focus.css +0 -4
@@ -1,106 +1,187 @@
1
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;
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
13
6
  });
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
7
  exports.RoleCell = void 0;
26
- var core_1 = require("@material-ui/core");
27
- var Delete_1 = __importDefault(require("@material-ui/icons/Delete"));
28
- var react_1 = __importStar(require("react"));
29
- var react_bootstrap_1 = require("react-bootstrap");
30
- var react_redux_1 = require("react-redux");
31
- var userRole_1 = require("../../utils/userRole");
32
- var IconExternalUser_1 = require("../Icons/IconExternalUser");
33
- var Inline_1 = require("../RefreshIndicator/Inline");
34
- var Context_1 = require("./Context");
35
- var Select_1 = require("./Select");
36
- var RoleCell = function (_a) {
37
- var user = _a.user, requiredRoleCount = _a.requiredRoleCount;
38
- 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, userRoleToUpdate = _b.userRoleToUpdate, isUpdating = _b.isUpdating, updateUserRole = _b.updateUserRole, userRoleToRemove = _b.userRoleToRemove, isRemoving = _b.isRemoving, removeUserRole = _b.removeUserRole;
39
- var currentUserId = react_redux_1.useSelector(function (state) {
40
- if (!state.models.user || !state.models.user.userInfo) {
41
- throw new Error('Current user id is not stored in redux');
42
- }
43
- return state.models.user.userInfo.id;
8
+ var _reactCompilerRuntime = require("react-compiler-runtime");
9
+ var _core = require("@material-ui/core");
10
+ var _Delete = _interopRequireDefault(require("@material-ui/icons/Delete"));
11
+ var _react = require("react");
12
+ var _reactBootstrap = require("react-bootstrap");
13
+ var _reactRedux = require("react-redux");
14
+ var _userRole = require("../../utils/userRole");
15
+ var _IconExternalUser = require("../Icons/IconExternalUser");
16
+ var _Inline = require("../RefreshIndicator/Inline");
17
+ var _Context = require("./Context");
18
+ var _Select = require("./Select");
19
+ var _jsxRuntime = require("react/jsx-runtime");
20
+ const RoleCell = t0 => {
21
+ const $ = (0, _reactCompilerRuntime.c)(39);
22
+ const {
23
+ user,
24
+ requiredRoleCount
25
+ } = t0;
26
+ const {
27
+ isUpdateDisabled,
28
+ isDeleteDisabled,
29
+ canModify,
30
+ canDeleteSelf,
31
+ allowMultipleRoles,
32
+ roles,
33
+ requiredRole,
34
+ textForRole,
35
+ userRoleToUpdate,
36
+ isUpdating,
37
+ updateUserRole,
38
+ userRoleToRemove,
39
+ isRemoving,
40
+ removeUserRole
41
+ } = (0, _react.useContext)(_Context.UserRolesContext);
42
+ const currentUserId = (0, _reactRedux.useSelector)(_temp);
43
+ let t1;
44
+ if ($[0] !== allowMultipleRoles || $[1] !== canDeleteSelf || $[2] !== canModify || $[3] !== currentUserId || $[4] !== isDeleteDisabled || $[5] !== isRemoving || $[6] !== isUpdateDisabled || $[7] !== isUpdating || $[8] !== removeUserRole || $[9] !== requiredRole || $[10] !== requiredRoleCount || $[11] !== roles || $[12] !== textForRole || $[13] !== updateUserRole || $[14] !== user.id || $[15] !== user.roles || $[16] !== userRoleToRemove?.id || $[17] !== userRoleToUpdate?.id) {
45
+ let t2;
46
+ if ($[19] !== allowMultipleRoles || $[20] !== canDeleteSelf || $[21] !== canModify || $[22] !== currentUserId || $[23] !== isDeleteDisabled || $[24] !== isRemoving || $[25] !== isUpdateDisabled || $[26] !== isUpdating || $[27] !== removeUserRole || $[28] !== requiredRole || $[29] !== requiredRoleCount || $[30] !== roles || $[31] !== textForRole || $[32] !== updateUserRole || $[33] !== user.id || $[34] !== userRoleToRemove?.id || $[35] !== userRoleToUpdate?.id) {
47
+ t2 = userRole => {
48
+ const roleText = (0, _userRole.getRoleText)(textForRole)(userRole);
49
+ const isUserRoleExternal = (0, _userRole.isExternal)(userRole);
50
+ const userId = (0, _userRole.getUserId)(userRole);
51
+ const canUpdate = canModify && !allowMultipleRoles && !isUserRoleExternal && !isUpdateDisabled && roles.length > 1 && (!requiredRole || userRole.role !== requiredRole || !requiredRoleCount || requiredRoleCount > 1);
52
+ const canDelete = !isUserRoleExternal && !isDeleteDisabled && (!requiredRole || userRole.role !== requiredRole || !requiredRoleCount || requiredRoleCount > 1) && (canModify && user.id !== currentUserId || canDeleteSelf && user.id === currentUserId);
53
+ const shouldDisplayRightAligned = allowMultipleRoles || roles.length === 1 || !canModify || isUpdateDisabled;
54
+ const isExternalPopover = /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactBootstrap.Popover, {
55
+ id: `is-external-popover-${userId}-${userRole.role}`,
56
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("h3", {
57
+ children: "Added via Roster Sync"
58
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("p", {
59
+ className: "mb2",
60
+ children: "This person was added automatically via roster sync and cannot be manually removed."
61
+ })]
62
+ });
63
+ const isUserRoleUpdating = isUpdating && userRoleToUpdate?.id === userRole.id;
64
+ const isUserRoleRemoving = isRemoving && userRoleToRemove?.id === userRole.id;
65
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)("li", {
66
+ className: `nowrap flex items-center${shouldDisplayRightAligned ? " justify-end" : ""}`,
67
+ children: [isUserRoleUpdating ? /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
68
+ className: "flex justify-start flex-grow-1 pl3",
69
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Inline.RefreshIndicatorInline, {
70
+ size: 20
71
+ })
72
+ }) : canUpdate ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_Select.RoleSelectControl, {
73
+ options: roles,
74
+ value: userRole.role,
75
+ onChange: role => {
76
+ updateUserRole(userRole, role);
77
+ },
78
+ textForRole: textForRole,
79
+ disabled: isUpdating || isRemoving
80
+ }) : /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
81
+ className: shouldDisplayRightAligned ? "" : "pl3",
82
+ children: roleText
83
+ }), isUserRoleRemoving ? /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
84
+ className: "flex items-center",
85
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Inline.RefreshIndicatorInline, {
86
+ size: 20,
87
+ className: "ma3"
88
+ })
89
+ }) : canDelete ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_core.IconButton, {
90
+ className: "remove-user-button",
91
+ "aria-label": `Remove ${roleText}`,
92
+ onClick: () => {
93
+ removeUserRole(userRole);
94
+ },
95
+ disabled: isUpdating || isRemoving,
96
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Delete.default, {
97
+ color: "error"
98
+ })
99
+ }) : isUserRoleExternal ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.OverlayTrigger, {
100
+ placement: "auto",
101
+ trigger: ["hover", "focus"],
102
+ overlay: isExternalPopover,
103
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_IconExternalUser.IconExternalUser, {
104
+ tabIndex: 0,
105
+ style: {
106
+ margin: "12px",
107
+ opacity: 0.5
108
+ },
109
+ className: "external-icon",
110
+ titleAccess: "External Role"
111
+ })
112
+ }) : /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
113
+ style: {
114
+ margin: "12px",
115
+ width: "24px",
116
+ height: "24px",
117
+ display: "inline-block",
118
+ verticalAlign: "middle"
119
+ }
120
+ })]
121
+ }, `${user.id}-${roleText}`);
122
+ };
123
+ $[19] = allowMultipleRoles;
124
+ $[20] = canDeleteSelf;
125
+ $[21] = canModify;
126
+ $[22] = currentUserId;
127
+ $[23] = isDeleteDisabled;
128
+ $[24] = isRemoving;
129
+ $[25] = isUpdateDisabled;
130
+ $[26] = isUpdating;
131
+ $[27] = removeUserRole;
132
+ $[28] = requiredRole;
133
+ $[29] = requiredRoleCount;
134
+ $[30] = roles;
135
+ $[31] = textForRole;
136
+ $[32] = updateUserRole;
137
+ $[33] = user.id;
138
+ $[34] = userRoleToRemove?.id;
139
+ $[35] = userRoleToUpdate?.id;
140
+ $[36] = t2;
141
+ } else {
142
+ t2 = $[36];
143
+ }
144
+ t1 = user.roles.sort((0, _userRole.sortByRole)(roles)).map(t2);
145
+ $[0] = allowMultipleRoles;
146
+ $[1] = canDeleteSelf;
147
+ $[2] = canModify;
148
+ $[3] = currentUserId;
149
+ $[4] = isDeleteDisabled;
150
+ $[5] = isRemoving;
151
+ $[6] = isUpdateDisabled;
152
+ $[7] = isUpdating;
153
+ $[8] = removeUserRole;
154
+ $[9] = requiredRole;
155
+ $[10] = requiredRoleCount;
156
+ $[11] = roles;
157
+ $[12] = textForRole;
158
+ $[13] = updateUserRole;
159
+ $[14] = user.id;
160
+ $[15] = user.roles;
161
+ $[16] = userRoleToRemove?.id;
162
+ $[17] = userRoleToUpdate?.id;
163
+ $[18] = t1;
164
+ } else {
165
+ t1 = $[18];
166
+ }
167
+ let t2;
168
+ if ($[37] !== t1) {
169
+ t2 = /*#__PURE__*/(0, _jsxRuntime.jsx)("ul", {
170
+ className: "mb0 list pa0 tr",
171
+ children: t1
44
172
  });
45
- return (react_1.default.createElement("ul", { className: "mb0 list pa0 tr" }, user.roles.sort(userRole_1.sortByRole(roles)).map(function (userRole) {
46
- var roleText = userRole_1.getRoleText(textForRole)(userRole);
47
- var isUserRoleExternal = userRole_1.isExternal(userRole);
48
- var userId = userRole_1.getUserId(userRole);
49
- var canUpdate =
50
- // current user has modify access
51
- canModify &&
52
- // in single role mode (multiple roles are not allowed)
53
- !allowMultipleRoles &&
54
- // the userRole is not external (roster synced)
55
- !isUserRoleExternal &&
56
- // update is not disabled
57
- !isUpdateDisabled &&
58
- // there is more than one possible role
59
- roles.length > 1 &&
60
- // the user role is not the last remaining required role user
61
- (!requiredRole || userRole.role !== requiredRole || !requiredRoleCount || requiredRoleCount > 1);
62
- var canDelete =
63
- // the userRole is not external (roster synced)
64
- !isUserRoleExternal &&
65
- // delete is not disabled, e.g. course is ended
66
- !isDeleteDisabled &&
67
- // the role is not the last required role
68
- (!requiredRole || userRole.role !== requiredRole || !requiredRoleCount || requiredRoleCount > 1) &&
69
- // the current user can delete the role for another user, or the current user can delete themselves
70
- ((canModify && user.id !== currentUserId) || (canDeleteSelf && user.id === currentUserId));
71
- var shouldDisplayRightAligned =
72
- // in multiple role mode
73
- allowMultipleRoles ||
74
- // only one role option
75
- roles.length === 1 ||
76
- // no access to update
77
- !canModify ||
78
- // update is disabled
79
- isUpdateDisabled;
80
- var isExternalPopover = (react_1.default.createElement(react_bootstrap_1.Popover, { id: "is-external-popover-" + userId + "-" + userRole.role },
81
- react_1.default.createElement("h3", null, "Added via Roster Sync"),
82
- react_1.default.createElement("p", { className: "mb2" }, "This person was added automatically via roster sync and cannot be manually removed.")));
83
- var isUserRoleUpdating = isUpdating && (userRoleToUpdate === null || userRoleToUpdate === void 0 ? void 0 : userRoleToUpdate.id) === userRole.id;
84
- var isUserRoleRemoving = isRemoving && (userRoleToRemove === null || userRoleToRemove === void 0 ? void 0 : userRoleToRemove.id) === userRole.id;
85
- return (react_1.default.createElement("li", { key: user.id + "-" + roleText, className: "nowrap flex items-center" + (shouldDisplayRightAligned ? ' justify-end' : '') },
86
- isUserRoleUpdating ? (react_1.default.createElement("div", { className: "flex justify-start flex-grow-1 pl3" },
87
- react_1.default.createElement(Inline_1.RefreshIndicatorInline, { size: 20 }))) : canUpdate ? (react_1.default.createElement(Select_1.RoleSelectControl, { options: roles, value: userRole.role, onChange: function (role) {
88
- updateUserRole(userRole, role);
89
- }, textForRole: textForRole, disabled: isUpdating || isRemoving })) : (react_1.default.createElement("span", { className: shouldDisplayRightAligned ? '' : 'pl3' }, roleText)),
90
- isUserRoleRemoving ? (react_1.default.createElement("div", { className: "flex items-center" },
91
- react_1.default.createElement(Inline_1.RefreshIndicatorInline, { size: 20, className: "ma3" }))) : canDelete ? (react_1.default.createElement(core_1.IconButton, { className: "remove-user-button", "aria-label": "Remove " + roleText, onClick: function () {
92
- removeUserRole(userRole);
93
- }, disabled: isUpdating || isRemoving },
94
- react_1.default.createElement(Delete_1.default, { color: "error" }))) : isUserRoleExternal ? (react_1.default.createElement(react_bootstrap_1.OverlayTrigger, { placement: "auto", trigger: ['hover', 'focus'], overlay: isExternalPopover },
95
- react_1.default.createElement(IconExternalUser_1.IconExternalUser, { tabIndex: 0, style: { margin: '12px', opacity: 0.5 }, className: "external-icon", titleAccess: "External Role" }))) : (
96
- // dummy spacer to keep items aligned
97
- react_1.default.createElement("span", { style: {
98
- margin: '12px',
99
- width: '24px',
100
- height: '24px',
101
- display: 'inline-block',
102
- verticalAlign: 'middle'
103
- } }))));
104
- })));
173
+ $[37] = t1;
174
+ $[38] = t2;
175
+ } else {
176
+ t2 = $[38];
177
+ }
178
+ return t2;
105
179
  };
106
180
  exports.RoleCell = RoleCell;
181
+ function _temp(state) {
182
+ if (!state.models.user || !state.models.user.userInfo) {
183
+ throw new Error("Current user id is not stored in redux");
184
+ }
185
+ return state.models.user.userInfo.id;
186
+ }
187
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29yZSIsInJlcXVpcmUiLCJfRGVsZXRlIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9yZWFjdCIsIl9yZWFjdEJvb3RzdHJhcCIsIl9yZWFjdFJlZHV4IiwiX3VzZXJSb2xlIiwiX0ljb25FeHRlcm5hbFVzZXIiLCJfSW5saW5lIiwiX0NvbnRleHQiLCJfU2VsZWN0IiwiX2pzeFJ1bnRpbWUiLCJSb2xlQ2VsbCIsInQwIiwiJCIsIl9yZWFjdENvbXBpbGVyUnVudGltZSIsImMiLCJ1c2VyIiwicmVxdWlyZWRSb2xlQ291bnQiLCJpc1VwZGF0ZURpc2FibGVkIiwiaXNEZWxldGVEaXNhYmxlZCIsImNhbk1vZGlmeSIsImNhbkRlbGV0ZVNlbGYiLCJhbGxvd011bHRpcGxlUm9sZXMiLCJyb2xlcyIsInJlcXVpcmVkUm9sZSIsInRleHRGb3JSb2xlIiwidXNlclJvbGVUb1VwZGF0ZSIsImlzVXBkYXRpbmciLCJ1cGRhdGVVc2VyUm9sZSIsInVzZXJSb2xlVG9SZW1vdmUiLCJpc1JlbW92aW5nIiwicmVtb3ZlVXNlclJvbGUiLCJ1c2VDb250ZXh0IiwiVXNlclJvbGVzQ29udGV4dCIsImN1cnJlbnRVc2VySWQiLCJ1c2VTZWxlY3RvciIsIl90ZW1wIiwidDEiLCJpZCIsInQyIiwidXNlclJvbGUiLCJyb2xlVGV4dCIsImdldFJvbGVUZXh0IiwiaXNVc2VyUm9sZUV4dGVybmFsIiwiaXNFeHRlcm5hbCIsInVzZXJJZCIsImdldFVzZXJJZCIsImNhblVwZGF0ZSIsImxlbmd0aCIsInJvbGUiLCJjYW5EZWxldGUiLCJzaG91bGREaXNwbGF5UmlnaHRBbGlnbmVkIiwiaXNFeHRlcm5hbFBvcG92ZXIiLCJqc3hzIiwiUG9wb3ZlciIsImNoaWxkcmVuIiwianN4IiwiY2xhc3NOYW1lIiwiaXNVc2VyUm9sZVVwZGF0aW5nIiwiaXNVc2VyUm9sZVJlbW92aW5nIiwiUmVmcmVzaEluZGljYXRvcklubGluZSIsInNpemUiLCJSb2xlU2VsZWN0Q29udHJvbCIsInZhbHVlIiwib25DaGFuZ2UiLCJkaXNhYmxlZCIsIkljb25CdXR0b24iLCJvbkNsaWNrIiwiZGVmYXVsdCIsImNvbG9yIiwiT3ZlcmxheVRyaWdnZXIiLCJwbGFjZW1lbnQiLCJ0cmlnZ2VyIiwiSWNvbkV4dGVybmFsVXNlciIsInRhYkluZGV4Iiwic3R5bGUiLCJtYXJnaW4iLCJvcGFjaXR5IiwidGl0bGVBY2Nlc3MiLCJ3aWR0aCIsImhlaWdodCIsImRpc3BsYXkiLCJ2ZXJ0aWNhbEFsaWduIiwic29ydCIsInNvcnRCeVJvbGUiLCJtYXAiLCJleHBvcnRzIiwic3RhdGUiLCJtb2RlbHMiLCJ1c2VySW5mbyIsIkVycm9yIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvVXNlclJvbGVzL1JvbGVDZWxsLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJY29uQnV0dG9uIH0gZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUnXG5pbXBvcnQgSWNvbkRlbGV0ZSBmcm9tICdAbWF0ZXJpYWwtdWkvaWNvbnMvRGVsZXRlJ1xuaW1wb3J0IHsgRnVuY3Rpb25Db21wb25lbnQsIHVzZUNvbnRleHQgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IE92ZXJsYXlUcmlnZ2VyLCBQb3BvdmVyIH0gZnJvbSAncmVhY3QtYm9vdHN0cmFwJ1xuaW1wb3J0IHsgdXNlU2VsZWN0b3IgfSBmcm9tICdyZWFjdC1yZWR1eCdcbmltcG9ydCB7IEJhc2VSZWR1eFN0YXRlIH0gZnJvbSAnLi4vLi4vdHlwZXMvQmFzZVJlZHV4U3RhdGUnXG5pbXBvcnQgeyBVc2VyV2l0aFJvbGVzIH0gZnJvbSAnLi4vLi4vdHlwZXMvVXNlclJvbGUnXG5pbXBvcnQgeyBnZXRSb2xlVGV4dCwgZ2V0VXNlcklkLCBpc0V4dGVybmFsLCBzb3J0QnlSb2xlIH0gZnJvbSAnLi4vLi4vdXRpbHMvdXNlclJvbGUnXG5pbXBvcnQgeyBJY29uRXh0ZXJuYWxVc2VyIH0gZnJvbSAnLi4vSWNvbnMvSWNvbkV4dGVybmFsVXNlcidcbmltcG9ydCB7IFJlZnJlc2hJbmRpY2F0b3JJbmxpbmUgfSBmcm9tICcuLi9SZWZyZXNoSW5kaWNhdG9yL0lubGluZSdcbmltcG9ydCB7IFVzZXJSb2xlc0NvbnRleHQgfSBmcm9tICcuL0NvbnRleHQnXG5pbXBvcnQgeyBSb2xlU2VsZWN0Q29udHJvbCB9IGZyb20gJy4vU2VsZWN0J1xuXG5leHBvcnQgaW50ZXJmYWNlIFJvbGVDZWxsUHJvcHMge1xuXHR1c2VyOiBVc2VyV2l0aFJvbGVzXG5cdHJlcXVpcmVkUm9sZUNvdW50PzogbnVtYmVyXG59XG5cbmV4cG9ydCBjb25zdCBSb2xlQ2VsbDogRnVuY3Rpb25Db21wb25lbnQ8Um9sZUNlbGxQcm9wcz4gPSAoeyB1c2VyLCByZXF1aXJlZFJvbGVDb3VudCB9KSA9PiB7XG5cdGNvbnN0IHtcblx0XHRpc1VwZGF0ZURpc2FibGVkLFxuXHRcdGlzRGVsZXRlRGlzYWJsZWQsXG5cdFx0Y2FuTW9kaWZ5LFxuXHRcdGNhbkRlbGV0ZVNlbGYsXG5cdFx0YWxsb3dNdWx0aXBsZVJvbGVzLFxuXHRcdHJvbGVzLFxuXHRcdHJlcXVpcmVkUm9sZSxcblx0XHR0ZXh0Rm9yUm9sZSxcblx0XHR1c2VyUm9sZVRvVXBkYXRlLFxuXHRcdGlzVXBkYXRpbmcsXG5cdFx0dXBkYXRlVXNlclJvbGUsXG5cdFx0dXNlclJvbGVUb1JlbW92ZSxcblx0XHRpc1JlbW92aW5nLFxuXHRcdHJlbW92ZVVzZXJSb2xlXG5cdH0gPSB1c2VDb250ZXh0KFVzZXJSb2xlc0NvbnRleHQpXG5cblx0Y29uc3QgY3VycmVudFVzZXJJZCA9IHVzZVNlbGVjdG9yKChzdGF0ZTogQmFzZVJlZHV4U3RhdGUpID0+IHtcblx0XHRpZiAoIXN0YXRlLm1vZGVscy51c2VyIHx8ICFzdGF0ZS5tb2RlbHMudXNlci51c2VySW5mbykge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKCdDdXJyZW50IHVzZXIgaWQgaXMgbm90IHN0b3JlZCBpbiByZWR1eCcpXG5cdFx0fVxuXHRcdHJldHVybiBzdGF0ZS5tb2RlbHMudXNlci51c2VySW5mby5pZFxuXHR9KVxuXG5cdHJldHVybiAoXG5cdFx0PHVsIGNsYXNzTmFtZT1cIm1iMCBsaXN0IHBhMCB0clwiPlxuXHRcdFx0e3VzZXIucm9sZXMuc29ydChzb3J0QnlSb2xlKHJvbGVzKSkubWFwKHVzZXJSb2xlID0+IHtcblx0XHRcdFx0Y29uc3Qgcm9sZVRleHQgPSBnZXRSb2xlVGV4dCh0ZXh0Rm9yUm9sZSkodXNlclJvbGUpXG5cdFx0XHRcdGNvbnN0IGlzVXNlclJvbGVFeHRlcm5hbCA9IGlzRXh0ZXJuYWwodXNlclJvbGUpXG5cdFx0XHRcdGNvbnN0IHVzZXJJZCA9IGdldFVzZXJJZCh1c2VyUm9sZSlcblxuXHRcdFx0XHRjb25zdCBjYW5VcGRhdGUgPVxuXHRcdFx0XHRcdC8vIGN1cnJlbnQgdXNlciBoYXMgbW9kaWZ5IGFjY2Vzc1xuXHRcdFx0XHRcdGNhbk1vZGlmeSAmJlxuXHRcdFx0XHRcdC8vIGluIHNpbmdsZSByb2xlIG1vZGUgKG11bHRpcGxlIHJvbGVzIGFyZSBub3QgYWxsb3dlZClcblx0XHRcdFx0XHQhYWxsb3dNdWx0aXBsZVJvbGVzICYmXG5cdFx0XHRcdFx0Ly8gdGhlIHVzZXJSb2xlIGlzIG5vdCBleHRlcm5hbCAocm9zdGVyIHN5bmNlZClcblx0XHRcdFx0XHQhaXNVc2VyUm9sZUV4dGVybmFsICYmXG5cdFx0XHRcdFx0Ly8gdXBkYXRlIGlzIG5vdCBkaXNhYmxlZFxuXHRcdFx0XHRcdCFpc1VwZGF0ZURpc2FibGVkICYmXG5cdFx0XHRcdFx0Ly8gdGhlcmUgaXMgbW9yZSB0aGFuIG9uZSBwb3NzaWJsZSByb2xlXG5cdFx0XHRcdFx0cm9sZXMubGVuZ3RoID4gMSAmJlxuXHRcdFx0XHRcdC8vIHRoZSB1c2VyIHJvbGUgaXMgbm90IHRoZSBsYXN0IHJlbWFpbmluZyByZXF1aXJlZCByb2xlIHVzZXJcblx0XHRcdFx0XHQoIXJlcXVpcmVkUm9sZSB8fCB1c2VyUm9sZS5yb2xlICE9PSByZXF1aXJlZFJvbGUgfHwgIXJlcXVpcmVkUm9sZUNvdW50IHx8IHJlcXVpcmVkUm9sZUNvdW50ID4gMSlcblxuXHRcdFx0XHRjb25zdCBjYW5EZWxldGUgPVxuXHRcdFx0XHRcdC8vIHRoZSB1c2VyUm9sZSBpcyBub3QgZXh0ZXJuYWwgKHJvc3RlciBzeW5jZWQpXG5cdFx0XHRcdFx0IWlzVXNlclJvbGVFeHRlcm5hbCAmJlxuXHRcdFx0XHRcdC8vIGRlbGV0ZSBpcyBub3QgZGlzYWJsZWQsIGUuZy4gY291cnNlIGlzIGVuZGVkXG5cdFx0XHRcdFx0IWlzRGVsZXRlRGlzYWJsZWQgJiZcblx0XHRcdFx0XHQvLyB0aGUgcm9sZSBpcyBub3QgdGhlIGxhc3QgcmVxdWlyZWQgcm9sZVxuXHRcdFx0XHRcdCghcmVxdWlyZWRSb2xlIHx8IHVzZXJSb2xlLnJvbGUgIT09IHJlcXVpcmVkUm9sZSB8fCAhcmVxdWlyZWRSb2xlQ291bnQgfHwgcmVxdWlyZWRSb2xlQ291bnQgPiAxKSAmJlxuXHRcdFx0XHRcdC8vIHRoZSBjdXJyZW50IHVzZXIgY2FuIGRlbGV0ZSB0aGUgcm9sZSBmb3IgYW5vdGhlciB1c2VyLCBvciB0aGUgY3VycmVudCB1c2VyIGNhbiBkZWxldGUgdGhlbXNlbHZlc1xuXHRcdFx0XHRcdCgoY2FuTW9kaWZ5ICYmIHVzZXIuaWQgIT09IGN1cnJlbnRVc2VySWQpIHx8IChjYW5EZWxldGVTZWxmICYmIHVzZXIuaWQgPT09IGN1cnJlbnRVc2VySWQpKVxuXG5cdFx0XHRcdGNvbnN0IHNob3VsZERpc3BsYXlSaWdodEFsaWduZWQgPVxuXHRcdFx0XHRcdC8vIGluIG11bHRpcGxlIHJvbGUgbW9kZVxuXHRcdFx0XHRcdGFsbG93TXVsdGlwbGVSb2xlcyB8fFxuXHRcdFx0XHRcdC8vIG9ubHkgb25lIHJvbGUgb3B0aW9uXG5cdFx0XHRcdFx0cm9sZXMubGVuZ3RoID09PSAxIHx8XG5cdFx0XHRcdFx0Ly8gbm8gYWNjZXNzIHRvIHVwZGF0ZVxuXHRcdFx0XHRcdCFjYW5Nb2RpZnkgfHxcblx0XHRcdFx0XHQvLyB1cGRhdGUgaXMgZGlzYWJsZWRcblx0XHRcdFx0XHRpc1VwZGF0ZURpc2FibGVkXG5cblx0XHRcdFx0Y29uc3QgaXNFeHRlcm5hbFBvcG92ZXIgPSAoXG5cdFx0XHRcdFx0PFBvcG92ZXIgaWQ9e2Bpcy1leHRlcm5hbC1wb3BvdmVyLSR7dXNlcklkfS0ke3VzZXJSb2xlLnJvbGV9YH0+XG5cdFx0XHRcdFx0XHQ8aDM+QWRkZWQgdmlhIFJvc3RlciBTeW5jPC9oMz5cblx0XHRcdFx0XHRcdDxwIGNsYXNzTmFtZT1cIm1iMlwiPlxuXHRcdFx0XHRcdFx0XHRUaGlzIHBlcnNvbiB3YXMgYWRkZWQgYXV0b21hdGljYWxseSB2aWEgcm9zdGVyIHN5bmMgYW5kIGNhbm5vdCBiZSBtYW51YWxseSByZW1vdmVkLlxuXHRcdFx0XHRcdFx0PC9wPlxuXHRcdFx0XHRcdDwvUG9wb3Zlcj5cblx0XHRcdFx0KVxuXG5cdFx0XHRcdGNvbnN0IGlzVXNlclJvbGVVcGRhdGluZyA9IGlzVXBkYXRpbmcgJiYgdXNlclJvbGVUb1VwZGF0ZT8uaWQgPT09IHVzZXJSb2xlLmlkXG5cdFx0XHRcdGNvbnN0IGlzVXNlclJvbGVSZW1vdmluZyA9IGlzUmVtb3ZpbmcgJiYgdXNlclJvbGVUb1JlbW92ZT8uaWQgPT09IHVzZXJSb2xlLmlkXG5cblx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHQ8bGlcblx0XHRcdFx0XHRcdGtleT17YCR7dXNlci5pZH0tJHtyb2xlVGV4dH1gfVxuXHRcdFx0XHRcdFx0Y2xhc3NOYW1lPXtgbm93cmFwIGZsZXggaXRlbXMtY2VudGVyJHtzaG91bGREaXNwbGF5UmlnaHRBbGlnbmVkID8gJyBqdXN0aWZ5LWVuZCcgOiAnJ31gfT5cblx0XHRcdFx0XHRcdHtpc1VzZXJSb2xlVXBkYXRpbmcgPyAoXG5cdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3NOYW1lPVwiZmxleCBqdXN0aWZ5LXN0YXJ0IGZsZXgtZ3Jvdy0xIHBsM1wiPlxuXHRcdFx0XHRcdFx0XHRcdDxSZWZyZXNoSW5kaWNhdG9ySW5saW5lIHNpemU9ezIwfSAvPlxuXHRcdFx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0XHRcdCkgOiBjYW5VcGRhdGUgPyAoXG5cdFx0XHRcdFx0XHRcdDxSb2xlU2VsZWN0Q29udHJvbFxuXHRcdFx0XHRcdFx0XHRcdG9wdGlvbnM9e3JvbGVzfVxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlPXt1c2VyUm9sZS5yb2xlfVxuXHRcdFx0XHRcdFx0XHRcdG9uQ2hhbmdlPXsocm9sZTogc3RyaW5nKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHR1cGRhdGVVc2VyUm9sZSh1c2VyUm9sZSwgcm9sZSlcblx0XHRcdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdFx0XHRcdHRleHRGb3JSb2xlPXt0ZXh0Rm9yUm9sZX1cblx0XHRcdFx0XHRcdFx0XHRkaXNhYmxlZD17aXNVcGRhdGluZyB8fCBpc1JlbW92aW5nfVxuXHRcdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdFx0KSA6IChcblx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3NOYW1lPXtzaG91bGREaXNwbGF5UmlnaHRBbGlnbmVkID8gJycgOiAncGwzJ30+e3JvbGVUZXh0fTwvc3Bhbj5cblx0XHRcdFx0XHRcdCl9XG5cblx0XHRcdFx0XHRcdHtpc1VzZXJSb2xlUmVtb3ZpbmcgPyAoXG5cdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXJcIj5cblx0XHRcdFx0XHRcdFx0XHQ8UmVmcmVzaEluZGljYXRvcklubGluZSBzaXplPXsyMH0gY2xhc3NOYW1lPVwibWEzXCIgLz5cblx0XHRcdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdFx0XHQpIDogY2FuRGVsZXRlID8gKFxuXHRcdFx0XHRcdFx0XHQ8SWNvbkJ1dHRvblxuXHRcdFx0XHRcdFx0XHRcdGNsYXNzTmFtZT1cInJlbW92ZS11c2VyLWJ1dHRvblwiXG5cdFx0XHRcdFx0XHRcdFx0YXJpYS1sYWJlbD17YFJlbW92ZSAke3JvbGVUZXh0fWB9XG5cdFx0XHRcdFx0XHRcdFx0b25DbGljaz17KCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0cmVtb3ZlVXNlclJvbGUodXNlclJvbGUpXG5cdFx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdFx0XHRkaXNhYmxlZD17aXNVcGRhdGluZyB8fCBpc1JlbW92aW5nfT5cblx0XHRcdFx0XHRcdFx0XHQ8SWNvbkRlbGV0ZSBjb2xvcj1cImVycm9yXCIgLz5cblx0XHRcdFx0XHRcdFx0PC9JY29uQnV0dG9uPlxuXHRcdFx0XHRcdFx0KSA6IGlzVXNlclJvbGVFeHRlcm5hbCA/IChcblx0XHRcdFx0XHRcdFx0PE92ZXJsYXlUcmlnZ2VyIHBsYWNlbWVudD1cImF1dG9cIiB0cmlnZ2VyPXtbJ2hvdmVyJywgJ2ZvY3VzJ119IG92ZXJsYXk9e2lzRXh0ZXJuYWxQb3BvdmVyfT5cblx0XHRcdFx0XHRcdFx0XHQ8SWNvbkV4dGVybmFsVXNlclxuXHRcdFx0XHRcdFx0XHRcdFx0dGFiSW5kZXg9ezB9XG5cdFx0XHRcdFx0XHRcdFx0XHRzdHlsZT17eyBtYXJnaW46ICcxMnB4Jywgb3BhY2l0eTogMC41IH19XG5cdFx0XHRcdFx0XHRcdFx0XHRjbGFzc05hbWU9XCJleHRlcm5hbC1pY29uXCJcblx0XHRcdFx0XHRcdFx0XHRcdHRpdGxlQWNjZXNzPVwiRXh0ZXJuYWwgUm9sZVwiXG5cdFx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdFx0PC9PdmVybGF5VHJpZ2dlcj5cblx0XHRcdFx0XHRcdCkgOiAoXG5cdFx0XHRcdFx0XHRcdC8vIGR1bW15IHNwYWNlciB0byBrZWVwIGl0ZW1zIGFsaWduZWRcblx0XHRcdFx0XHRcdFx0PHNwYW5cblx0XHRcdFx0XHRcdFx0XHRzdHlsZT17e1xuXHRcdFx0XHRcdFx0XHRcdFx0bWFyZ2luOiAnMTJweCcsXG5cdFx0XHRcdFx0XHRcdFx0XHR3aWR0aDogJzI0cHgnLFxuXHRcdFx0XHRcdFx0XHRcdFx0aGVpZ2h0OiAnMjRweCcsXG5cdFx0XHRcdFx0XHRcdFx0XHRkaXNwbGF5OiAnaW5saW5lLWJsb2NrJyxcblx0XHRcdFx0XHRcdFx0XHRcdHZlcnRpY2FsQWxpZ246ICdtaWRkbGUnXG5cdFx0XHRcdFx0XHRcdFx0fX0+PC9zcGFuPlxuXHRcdFx0XHRcdFx0KX1cblx0XHRcdFx0XHQ8L2xpPlxuXHRcdFx0XHQpXG5cdFx0XHR9KX1cblx0XHQ8L3VsPlxuXHQpXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsSUFBQUEsS0FBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsTUFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksZUFBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssV0FBQSxHQUFBTCxPQUFBO0FBR0EsSUFBQU0sU0FBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8saUJBQUEsR0FBQVAsT0FBQTtBQUNBLElBQUFRLE9BQUEsR0FBQVIsT0FBQTtBQUNBLElBQUFTLFFBQUEsR0FBQVQsT0FBQTtBQUNBLElBQUFVLE9BQUEsR0FBQVYsT0FBQTtBQUE0QyxJQUFBVyxXQUFBLEdBQUFYLE9BQUE7QUFPckMsTUFBTVksUUFBMEMsR0FBR0MsRUFBQTtFQUFBLE1BQUFDLENBQUEsT0FBQUMscUJBQUEsQ0FBQUMsQ0FBQTtFQUFDO0lBQUFDLElBQUE7SUFBQUM7RUFBQSxJQUFBTCxFQUEyQjtFQUNyRjtJQUFBTSxnQkFBQTtJQUFBQyxnQkFBQTtJQUFBQyxTQUFBO0lBQUFDLGFBQUE7SUFBQUMsa0JBQUE7SUFBQUMsS0FBQTtJQUFBQyxZQUFBO0lBQUFDLFdBQUE7SUFBQUMsZ0JBQUE7SUFBQUMsVUFBQTtJQUFBQyxjQUFBO0lBQUFDLGdCQUFBO0lBQUFDLFVBQUE7SUFBQUM7RUFBQSxJQWVJLElBQUFDLGlCQUFVLEVBQUNDLHlCQUFnQixDQUFDO0VBRWhDLE1BQUFDLGFBQUEsR0FBc0IsSUFBQUMsdUJBQVcsRUFBQ0MsS0FLakMsQ0FBQztFQUFBLElBQUFDLEVBQUE7RUFBQSxJQUFBeEIsQ0FBQSxRQUFBUyxrQkFBQSxJQUFBVCxDQUFBLFFBQUFRLGFBQUEsSUFBQVIsQ0FBQSxRQUFBTyxTQUFBLElBQUFQLENBQUEsUUFBQXFCLGFBQUEs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
@@ -1,61 +1,175 @@
1
1
  "use strict";
2
- var __assign = (this && this.__assign) || function () {
3
- __assign = Object.assign || function(t) {
4
- for (var s, i = 1, n = arguments.length; i < n; i++) {
5
- s = arguments[i];
6
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
- t[p] = s[p];
8
- }
9
- return t;
10
- };
11
- return __assign.apply(this, arguments);
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.RoleSelectControl = exports.RoleSelect = void 0;
8
+ var _reactCompilerRuntime = require("react-compiler-runtime");
9
+ var _Help = _interopRequireDefault(require("@material-ui/icons/Help"));
10
+ var _reactBootstrap = require("react-bootstrap");
11
+ var _baseRole = require("../../utils/baseRole");
12
+ var _jsxRuntime = require("react/jsx-runtime");
13
+ const label = (hasMultipleOptions, labelVisible, hasTooltip, ref) => {
14
+ const content = /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
15
+ children: ["Role", hasTooltip && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Help.default, {
16
+ ref: ref,
17
+ color: "primary",
18
+ className: "ml1 v-mid",
19
+ tabIndex: 0,
20
+ titleAccess: "help"
21
+ })]
22
+ });
23
+ const classes = `f6 mb1 ${!labelVisible ? 'visually-hidden' : ''}`;
24
+ return hasMultipleOptions ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.FormLabel, {
25
+ className: classes,
26
+ children: content
27
+ }) : /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
28
+ className: classes + ' b',
29
+ children: content
30
+ });
12
31
  };
13
- var __rest = (this && this.__rest) || function (s, e) {
14
- var t = {};
15
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
16
- t[p] = s[p];
17
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
18
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
19
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
20
- t[p[i]] = s[p[i]];
21
- }
22
- return t;
32
+ const overlay = function (hasMultipleOptions) {
33
+ let labelVisible = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
34
+ let rolePopover = arguments.length > 2 ? arguments[2] : undefined;
35
+ return rolePopover ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.OverlayTrigger, {
36
+ placement: "right",
37
+ trigger: ['hover', 'focus'],
38
+ overlay: rolePopover,
39
+ children: _ref => {
40
+ let {
41
+ ref,
42
+ ...triggerHandler
43
+ } = _ref;
44
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
45
+ ...triggerHandler,
46
+ children: label(hasMultipleOptions, labelVisible, true, ref)
47
+ });
48
+ }
49
+ }) : label(hasMultipleOptions, labelVisible, false);
23
50
  };
24
- var __importDefault = (this && this.__importDefault) || function (mod) {
25
- return (mod && mod.__esModule) ? mod : { "default": mod };
26
- };
27
- Object.defineProperty(exports, "__esModule", { value: true });
28
- exports.RoleSelect = exports.RoleSelectControl = void 0;
29
- var Help_1 = __importDefault(require("@material-ui/icons/Help"));
30
- var react_1 = __importDefault(require("react"));
31
- var react_bootstrap_1 = require("react-bootstrap");
32
- var baseRole_1 = require("../../utils/baseRole");
33
- var label = function (hasMultipleOptions, labelVisible, hasTooltip, ref) {
34
- var content = (react_1.default.createElement(react_1.default.Fragment, null,
35
- "Role",
36
- hasTooltip && react_1.default.createElement(Help_1.default, { ref: ref, color: "primary", className: "ml1 v-mid", tabIndex: 0, titleAccess: "help" })));
37
- var classes = "f6 mb1 " + (!labelVisible ? 'visually-hidden' : '');
38
- return hasMultipleOptions ? (react_1.default.createElement(react_bootstrap_1.FormLabel, { className: classes }, content)) : (react_1.default.createElement("span", { className: classes + ' b' }, content));
39
- };
40
- var overlay = function (hasMultipleOptions, labelVisible, rolePopover) {
41
- if (labelVisible === void 0) { labelVisible = false; }
42
- return rolePopover ? (react_1.default.createElement(react_bootstrap_1.OverlayTrigger, { placement: "right", trigger: ['hover', 'focus'], overlay: rolePopover }, function (_a) {
43
- var ref = _a.ref, triggerHandler = __rest(_a, ["ref"]);
44
- return (react_1.default.createElement("span", __assign({}, triggerHandler), label(hasMultipleOptions, labelVisible, true, ref)));
45
- })) : (label(hasMultipleOptions, labelVisible, false));
46
- };
47
- var RoleSelectControl = function (_a) {
48
- var className = _a.className, options = _a.options, value = _a.value, onChange = _a.onChange, textForRole = _a.textForRole, disabled = _a.disabled;
49
- return options.length > 1 ? (react_1.default.createElement(react_bootstrap_1.FormControl, { className: className ? className : '', "aria-label": "Role", as: "select", placeholder: "select", onChange: function (e) {
50
- onChange(e.target.value);
51
- }, value: value, disabled: disabled }, 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])));
51
+ const RoleSelectControl = t0 => {
52
+ const $ = (0, _reactCompilerRuntime.c)(7);
53
+ const {
54
+ className,
55
+ options,
56
+ value,
57
+ onChange,
58
+ textForRole,
59
+ disabled
60
+ } = t0;
61
+ let t1;
62
+ if ($[0] !== className || $[1] !== disabled || $[2] !== onChange || $[3] !== options || $[4] !== textForRole || $[5] !== value) {
63
+ t1 = options.length > 1 ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.FormControl, {
64
+ className: className ? className : "",
65
+ "aria-label": "Role",
66
+ as: "select",
67
+ placeholder: "select",
68
+ onChange: e => {
69
+ onChange(e.target.value);
70
+ },
71
+ value: value,
72
+ disabled: disabled,
73
+ children: options.map(role => /*#__PURE__*/(0, _jsxRuntime.jsx)("option", {
74
+ value: role,
75
+ children: textForRole ? textForRole(role) : (0, _baseRole.textForBaseRole)(role)
76
+ }, role))
77
+ }) : /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
78
+ children: textForRole ? textForRole(options[0]) : (0, _baseRole.textForBaseRole)(options[0])
79
+ });
80
+ $[0] = className;
81
+ $[1] = disabled;
82
+ $[2] = onChange;
83
+ $[3] = options;
84
+ $[4] = textForRole;
85
+ $[5] = value;
86
+ $[6] = t1;
87
+ } else {
88
+ t1 = $[6];
89
+ }
90
+ return t1;
52
91
  };
53
92
  exports.RoleSelectControl = RoleSelectControl;
54
- var RoleSelect = function (_a) {
55
- var controlId = _a.controlId, labelVisible = _a.labelVisible, popoverContentComponent = _a.popoverContentComponent, options = _a.options, controlProps = __rest(_a, ["controlId", "labelVisible", "popoverContentComponent", "options"]);
56
- var content = (react_1.default.createElement(react_1.default.Fragment, null,
57
- overlay(options.length > 1, !!labelVisible, popoverContentComponent),
58
- react_1.default.createElement(exports.RoleSelectControl, __assign({ options: options }, controlProps))));
59
- return options.length > 1 ? (react_1.default.createElement(react_bootstrap_1.FormGroup, { controlId: controlId ? controlId : 'RoleSelect' }, content)) : (react_1.default.createElement("span", null, content));
93
+ const RoleSelect = t0 => {
94
+ const $ = (0, _reactCompilerRuntime.c)(20);
95
+ let controlId;
96
+ let controlProps;
97
+ let labelVisible;
98
+ let options;
99
+ let popoverContentComponent;
100
+ if ($[0] !== t0) {
101
+ ({
102
+ controlId,
103
+ labelVisible,
104
+ popoverContentComponent,
105
+ options,
106
+ ...controlProps
107
+ } = t0);
108
+ $[0] = t0;
109
+ $[1] = controlId;
110
+ $[2] = controlProps;
111
+ $[3] = labelVisible;
112
+ $[4] = options;
113
+ $[5] = popoverContentComponent;
114
+ } else {
115
+ controlId = $[1];
116
+ controlProps = $[2];
117
+ labelVisible = $[3];
118
+ options = $[4];
119
+ popoverContentComponent = $[5];
120
+ }
121
+ const t1 = options.length > 1;
122
+ const t2 = !!labelVisible;
123
+ let t3;
124
+ if ($[6] !== popoverContentComponent || $[7] !== t1 || $[8] !== t2) {
125
+ t3 = overlay(t1, t2, popoverContentComponent);
126
+ $[6] = popoverContentComponent;
127
+ $[7] = t1;
128
+ $[8] = t2;
129
+ $[9] = t3;
130
+ } else {
131
+ t3 = $[9];
132
+ }
133
+ let t4;
134
+ if ($[10] !== controlProps || $[11] !== options) {
135
+ t4 = /*#__PURE__*/(0, _jsxRuntime.jsx)(RoleSelectControl, {
136
+ options: options,
137
+ ...controlProps
138
+ });
139
+ $[10] = controlProps;
140
+ $[11] = options;
141
+ $[12] = t4;
142
+ } else {
143
+ t4 = $[12];
144
+ }
145
+ let t5;
146
+ if ($[13] !== t3 || $[14] !== t4) {
147
+ t5 = /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
148
+ children: [t3, t4]
149
+ });
150
+ $[13] = t3;
151
+ $[14] = t4;
152
+ $[15] = t5;
153
+ } else {
154
+ t5 = $[15];
155
+ }
156
+ const content = t5;
157
+ let t6;
158
+ if ($[16] !== content || $[17] !== controlId || $[18] !== options.length) {
159
+ t6 = options.length > 1 ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.FormGroup, {
160
+ controlId: controlId ? controlId : "RoleSelect",
161
+ children: content
162
+ }) : /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
163
+ children: content
164
+ });
165
+ $[16] = content;
166
+ $[17] = controlId;
167
+ $[18] = options.length;
168
+ $[19] = t6;
169
+ } else {
170
+ t6 = $[19];
171
+ }
172
+ return t6;
60
173
  };
61
174
  exports.RoleSelect = RoleSelect;
175
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfSGVscCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX3JlYWN0Qm9vdHN0cmFwIiwiX2Jhc2VSb2xlIiwiX2pzeFJ1bnRpbWUiLCJsYWJlbCIsImhhc011bHRpcGxlT3B0aW9ucyIsImxhYmVsVmlzaWJsZSIsImhhc1Rvb2x0aXAiLCJyZWYiLCJjb250ZW50IiwianN4cyIsIkZyYWdtZW50IiwiY2hpbGRyZW4iLCJqc3giLCJkZWZhdWx0IiwiY29sb3IiLCJjbGFzc05hbWUiLCJ0YWJJbmRleCIsInRpdGxlQWNjZXNzIiwiY2xhc3NlcyIsIkZvcm1MYWJlbCIsIm92ZXJsYXkiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJyb2xlUG9wb3ZlciIsIk92ZXJsYXlUcmlnZ2VyIiwicGxhY2VtZW50IiwidHJpZ2dlciIsIl9yZWYiLCJ0cmlnZ2VySGFuZGxlciIsIlJvbGVTZWxlY3RDb250cm9sIiwidDAiLCIkIiwiX3JlYWN0Q29tcGlsZXJSdW50aW1lIiwiYyIsIm9wdGlvbnMiLCJ2YWx1ZSIsIm9uQ2hhbmdlIiwidGV4dEZvclJvbGUiLCJkaXNhYmxlZCIsInQxIiwiRm9ybUNvbnRyb2wiLCJhcyIsInBsYWNlaG9sZGVyIiwiZSIsInRhcmdldCIsIm1hcCIsInJvbGUiLCJ0ZXh0Rm9yQmFzZVJvbGUiLCJleHBvcnRzIiwiUm9sZVNlbGVjdCIsImNvbnRyb2xJZCIsImNvbnRyb2xQcm9wcyIsInBvcG92ZXJDb250ZW50Q29tcG9uZW50IiwidDIiLCJ0MyIsInQ0IiwidDUiLCJ0NiIsIkZvcm1Hcm91cCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1VzZXJSb2xlcy9TZWxlY3QudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBJY29uSGVscCBmcm9tICdAbWF0ZXJpYWwtdWkvaWNvbnMvSGVscCdcbmltcG9ydCB7IENoYW5nZUV2ZW50LCBGdW5jdGlvbkNvbXBvbmVudCwgUmVhY3RFbGVtZW50LCBSZWYgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIEZvcm1MYWJlbCwgT3ZlcmxheVRyaWdnZXIgfSBmcm9tICdyZWFjdC1ib290c3RyYXAnXG5pbXBvcnQgeyBPdmVybGF5SW5qZWN0ZWRQcm9wcyB9IGZyb20gJ3JlYWN0LWJvb3RzdHJhcC9PdmVybGF5J1xuaW1wb3J0IHsgdGV4dEZvckJhc2VSb2xlIH0gZnJvbSAnLi4vLi4vdXRpbHMvYmFzZVJvbGUnXG5cbmNvbnN0IGxhYmVsID0gKGhhc011bHRpcGxlT3B0aW9uczogYm9vbGVhbiwgbGFiZWxWaXNpYmxlOiBib29sZWFuLCBoYXNUb29sdGlwOiBib29sZWFuLCByZWY/OiBSZWY8U1ZHU1ZHRWxlbWVudD4pID0+IHtcblx0Y29uc3QgY29udGVudCA9IChcblx0XHQ8PlxuXHRcdFx0Um9sZVxuXHRcdFx0e2hhc1Rvb2x0aXAgJiYgPEljb25IZWxwIHJlZj17cmVmfSBjb2xvcj1cInByaW1hcnlcIiBjbGFzc05hbWU9XCJtbDEgdi1taWRcIiB0YWJJbmRleD17MH0gdGl0bGVBY2Nlc3M9XCJoZWxwXCIgLz59XG5cdFx0PC8+XG5cdClcblxuXHRjb25zdCBjbGFzc2VzID0gYGY2IG1iMSAkeyFsYWJlbFZpc2libGUgPyAndmlzdWFsbHktaGlkZGVuJyA6ICcnfWBcblxuXHRyZXR1cm4gaGFzTXVsdGlwbGVPcHRpb25zID8gKFxuXHRcdDxGb3JtTGFiZWwgY2xhc3NOYW1lPXtjbGFzc2VzfT57Y29udGVudH08L0Zvcm1MYWJlbD5cblx0KSA6IChcblx0XHQ8c3BhbiBjbGFzc05hbWU9e2NsYXNzZXMgKyAnIGInfT57Y29udGVudH08L3NwYW4+XG5cdClcbn1cblxuY29uc3Qgb3ZlcmxheSA9IChcblx0aGFzTXVsdGlwbGVPcHRpb25zOiBib29sZWFuLFxuXHRsYWJlbFZpc2libGUgPSBmYWxzZSxcblx0cm9sZVBvcG92ZXI/OiBSZWFjdEVsZW1lbnQ8T3ZlcmxheUluamVjdGVkUHJvcHM+XG4pID0+XG5cdHJvbGVQb3BvdmVyID8gKFxuXHRcdDxPdmVybGF5VHJpZ2dlciBwbGFjZW1lbnQ9XCJyaWdodFwiIHRyaWdnZXI9e1snaG92ZXInLCAnZm9jdXMnXX0gb3ZlcmxheT17cm9sZVBvcG92ZXJ9PlxuXHRcdFx0eyh7IHJlZiwgLi4udHJpZ2dlckhhbmRsZXIgfSkgPT4gKFxuXHRcdFx0XHQ8c3BhbiB7Li4udHJpZ2dlckhhbmRsZXJ9PntsYWJlbChoYXNNdWx0aXBsZU9wdGlvbnMsIGxhYmVsVmlzaWJsZSwgdHJ1ZSwgcmVmKX08L3NwYW4+XG5cdFx0XHQpfVxuXHRcdDwvT3ZlcmxheVRyaWdnZXI+XG5cdCkgOiAoXG5cdFx0bGFiZWwoaGFzTXVsdGlwbGVPcHRpb25zLCBsYWJlbFZpc2libGUsIGZhbHNlKVxuXHQpXG5cbmV4cG9ydCBpbnRlcmZhY2UgUm9sZVNlbGVjdENvbnRyb2xQcm9wcyB7XG5cdC8qKiBDU1MgY2xhc3MgcGFzc2VkIHRvIHRoZSBzZWxlY3RvciBGb3JtQ29udHJvbCBjb21wb25lbnQgKi9cblx0Y2xhc3NOYW1lPzogc3RyaW5nXG5cdC8qKiBBcnJheSBvZiBvcHRpb25zIHRoZSB1c2VyIGNhbiBjaG9vc2UgZnJvbSAqL1xuXHRvcHRpb25zOiBzdHJpbmdbXVxuXHQvKiogQ3VycmVudGx5IHNlbGVjdGVkIHZhbHVlICovXG5cdHZhbHVlOiBzdHJpbmdcblx0LyoqIEZ1bmN0aW9uIHRoYXQgaXMgY2FsbGVkIHdoZW4gdGhlIHZhbHVlIGNoYW5nZXMgKi9cblx0b25DaGFuZ2U6IChvcHRpb246IHN0cmluZykgPT4gdm9pZFxuXHQvKiogKE9wdGlvbmFsKSBQcm92aWRlIGN1c3RvbSB1c2VyLWZyaWVuZGx5IG5hbWVzIGZvciBkaXNwbGF5ZWQgcm9sZXMgKi9cblx0dGV4dEZvclJvbGU/OiAocm9sZTogc3RyaW5nKSA9PiBzdHJpbmdcblx0LyoqIChPcHRpb25hbCkgSXMgdGhlIGNvbnRyb2wgZGlzYWJsZWQ/ICovXG5cdGRpc2FibGVkPzogYm9vbGVhblxufVxuXG5leHBvcnQgY29uc3QgUm9sZVNlbGVjdENvbnRyb2w6IEZ1bmN0aW9uQ29tcG9uZW50PFJvbGVTZWxlY3RDb250cm9sUHJvcHM+ID0gKHtcblx0Y2xhc3NOYW1lLFxuXHRvcHRpb25zLFxuXHR2YWx1ZSxcblx0b25DaGFuZ2UsXG5cdHRleHRGb3JSb2xlLFxuXHRkaXNhYmxlZFxufSkgPT5cblx0b3B0aW9ucy5sZW5ndGggPiAxID8gKFxuXHRcdDxGb3JtQ29udHJvbFxuXHRcdFx0Y2xhc3NOYW1lPXtjbGFzc05hbWUgPyBjbGFzc05hbWUgOiAnJ31cblx0XHRcdGFyaWEtbGFiZWw9XCJSb2xlXCJcblx0XHRcdGFzPVwic2VsZWN0XCJcblx0XHRcdHBsYWNlaG9sZGVyPVwic2VsZWN0XCJcblx0XHRcdG9uQ2hhbmdlPXsoZTogQ2hhbmdlRXZlbnQ8SFRNTFNlbGVjdEVsZW1lbnQ+KSA9PiB7XG5cdFx0XHRcdG9uQ2hhbmdlKGUudGFyZ2V0LnZhbHVlKVxuXHRcdFx0fX1cblx0XHRcdHZhbHVlPXt2YWx1ZX1cblx0XHRcdGRpc2FibGVkPXtkaXNhYmxlZH0+XG5cdFx0XHR7b3B0aW9ucy5tYXAocm9sZSA9PiAoXG5cdFx0XHRcdDxvcHRpb24gdmFsdWU9e3JvbGV9IGtleT17cm9sZX0+XG5cdFx0XHRcdFx0e3RleHRGb3JSb2xlID8gdGV4dEZvclJvbGUocm9sZSkgOiB0ZXh0Rm9yQmFzZVJvbGUocm9sZSl9XG5cdFx0XHRcdDwvb3B0aW9uPlxuXHRcdFx0KSl9XG5cdFx0PC9Gb3JtQ29udHJvbD5cblx0KSA6IChcblx0XHQ8ZGl2Pnt0ZXh0Rm9yUm9sZSA/IHRleHRGb3JSb2xlKG9wdGlvbnNbMF0pIDogdGV4dEZvckJhc2VSb2xlKG9wdGlvbnNbMF0pfTwvZGl2PlxuXHQpXG5cbmV4cG9ydCBpbnRlcmZhY2UgUm9sZVNlbGVjdFByb3BzIGV4dGVuZHMgUm9sZVNlbGVjdENvbnRyb2xQcm9wcyB7XG5cdC8qKiBJZCBmb3IgdGhlICdzZWxlY3QnIGZvcm0gY29udHJvbCwgZGVmYXVsdHMgdG8gJ1JvbGVTZWxlY3QnICovXG5cdGNvbnRyb2xJZD86IHN0cmluZ1xuXHQvKiogV2hldGhlciB0aGUgbGFiZWwgdGV4dCBzaG91bGQgYmUgdmlzaWJsZSAqL1xuXHRsYWJlbFZpc2libGU/OiBib29sZWFuXG5cdC8qKiAoT3B0aW9uYWwpIENvbnRlbnQgb2YgdGhlIHBvcG92ZXIgdG9vbHRpcCAqL1xuXHRwb3BvdmVyQ29udGVudENvbXBvbmVudD86IFJlYWN0RWxlbWVudDxPdmVybGF5SW5qZWN0ZWRQcm9wcz5cbn1cblxuZXhwb3J0IGNvbnN0IFJvbGVTZWxlY3Q6IEZ1bmN0aW9uQ29tcG9uZW50PFJvbGVTZWxlY3RQcm9wcz4gPSAoe1xuXHRjb250cm9sSWQsXG5cdGxhYmVsVmlzaWJsZSxcblx0cG9wb3ZlckNvbnRlbnRDb21wb25lbnQsXG5cdG9wdGlvbnMsXG5cdC4uLmNvbnRyb2xQcm9wc1xufSkgPT4ge1xuXHRjb25zdCBjb250ZW50ID0gKFxuXHRcdDw+XG5cdFx0XHR7b3ZlcmxheShvcHRpb25zLmxlbmd0aCA+IDEsICEhbGFiZWxWaXNpYmxlLCBwb3BvdmVyQ29udGVudENvbXBvbmVudCl9XG5cdFx0XHQ8Um9sZVNlbGVjdENvbnRyb2wgb3B0aW9ucz17b3B0aW9uc30gey4uLmNvbnRyb2xQcm9wc30gLz5cblx0XHQ8Lz5cblx0KVxuXG5cdHJldHVybiBvcHRpb25zLmxlbmd0aCA+IDEgPyAoXG5cdFx0PEZvcm1Hcm91cCBjb250cm9sSWQ9e2NvbnRyb2xJZCA/IGNvbnRyb2xJZCA6ICdSb2xlU2VsZWN0J30+e2NvbnRlbnR9PC9Gb3JtR3JvdXA+XG5cdCkgOiAoXG5cdFx0PHNwYW4+e2NvbnRlbnR9PC9zcGFuPlxuXHQpXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsSUFBQUEsS0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUMsZUFBQSxHQUFBRCxPQUFBO0FBRUEsSUFBQUUsU0FBQSxHQUFBRixPQUFBO0FBQXNELElBQUFHLFdBQUEsR0FBQUgsT0FBQTtBQUV0RCxNQUFNSSxLQUFL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