@campxdev/shared 1.8.13 → 1.8.15

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@campxdev/shared",
3
- "version": "1.8.13",
3
+ "version": "1.8.15",
4
4
  "main": "./exports.ts",
5
5
  "scripts": {
6
6
  "start": "react-scripts start",
@@ -2,3 +2,4 @@ export { default as useFetch } from './useFetch'
2
2
  export * from './useRouter'
3
3
  export { default as useAuth } from './useAuth'
4
4
  export { default as useFilter } from './useFilters'
5
+ export { default as useExternalScript } from './useExternalScript'
@@ -0,0 +1,37 @@
1
+ import { useEffect, useState } from 'react'
2
+ const useExternalScript = (url) => {
3
+ let [state, setState] = useState(url ? 'loading' : 'idle')
4
+
5
+ useEffect(() => {
6
+ if (!url) {
7
+ setState('idle')
8
+ return
9
+ }
10
+ let script: any = document.querySelector(`script[src="${url}"]`)
11
+
12
+ const handleScript = (e) => {
13
+ setState(e.type === 'load' ? 'ready' : 'error')
14
+ }
15
+ if (!script) {
16
+ script = document.createElement('script')
17
+ script.type = 'application/javascript'
18
+ script.src = url
19
+ script.async = true
20
+ document.body.appendChild(script)
21
+ script.addEventListener('load', handleScript)
22
+ script.addEventListener('error', handleScript)
23
+ }
24
+
25
+ script.addEventListener('load', handleScript)
26
+ script.addEventListener('error', handleScript)
27
+
28
+ return () => {
29
+ script.removeEventListener('load', handleScript)
30
+ script.removeEventListener('error', handleScript)
31
+ }
32
+ }, [url])
33
+
34
+ return state
35
+ }
36
+
37
+ export default useExternalScript
@@ -141,6 +141,10 @@ export enum Permission {
141
141
  CAN_ASSESSMENT_RULES_DELETE = 'can_assessment_rules_delete',
142
142
  CAN_ASSESSMENT_RULES_EDIT = 'can_assessment_rules_edit',
143
143
  CAN_ASSESSMENT_RULES_VIEW = 'can_assessment_rules_view',
144
+ CAN_ASSESSMENT_TEMPLATES_ADD = 'can_assessment_templates_add',
145
+ CAN_ASSESSMENT_TEMPLATES_EDIT = 'can_assessment_templates_edit',
146
+ CAN_ASSESSMENT_TEMPLATES_VIEW = 'can_assessment_templates_view',
147
+ CAN_ASSESSMENT_TEMPLATES_DELETE = 'can_assessment_templates_delete',
144
148
  CAN_RESULTS_PROCESSING_GENERATE_MEMOS = 'can_results_processing_generate_memos',
145
149
  CAN_RESULTS_PROCESSING_MODERATION_AND_GRAFTING = 'can_results_processing_moderation_and_grafting',
146
150
  CAN_RESULTS_PROCESSING_PUBLISH_RESULTS = 'can_results_processing_publish_results',
@@ -373,6 +377,10 @@ export interface IPermissions {
373
377
  can_grades_edit: boolean
374
378
  can_grades_delete: boolean
375
379
  can_grades_view: boolean
380
+ can_assessment_templates_add: boolean
381
+ can_assessment_templates_edit: boolean
382
+ can_assessment_templates_view: boolean
383
+ can_assessment_templates_delete: boolean
376
384
  }
377
385
 
378
386
  interface IPermissionsStore {