dce-reactkit 2.0.10 → 3.0.0-beta.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 (122) hide show
  1. package/dist/cjs/index.js +36424 -0
  2. package/dist/cjs/index.js.map +1 -0
  3. package/dist/cjs/types/components/AppWrapper.d.ts +40 -0
  4. package/{lib → dist/cjs/types}/components/ErrorBox.d.ts +0 -0
  5. package/{lib → dist/cjs/types}/components/LoadingSpinner.d.ts +1 -0
  6. package/dist/cjs/types/components/Modal.d.ts +40 -0
  7. package/dist/cjs/types/components/TabBox.d.ts +11 -0
  8. package/{lib → dist/cjs/types}/errors/ErrorWithCode.d.ts +0 -0
  9. package/{lib → dist/cjs/types}/helpers/abbreviate.d.ts +1 -0
  10. package/{lib → dist/cjs/types}/helpers/avg.d.ts +0 -0
  11. package/{lib → dist/cjs/types}/helpers/ceilToNumDecimals.d.ts +0 -0
  12. package/{lib → dist/cjs/types}/helpers/floorToNumDecimals.d.ts +0 -0
  13. package/{lib → dist/cjs/types}/helpers/forceNumIntoBounds.d.ts +0 -0
  14. package/{lib → dist/cjs/types}/helpers/padDecimalZeros.d.ts +0 -0
  15. package/{lib → dist/cjs/types}/helpers/padZerosLeft.d.ts +0 -0
  16. package/{lib → dist/cjs/types}/helpers/roundToNumDecimals.d.ts +0 -0
  17. package/{lib → dist/cjs/types}/helpers/sum.d.ts +0 -0
  18. package/{lib → dist/cjs/types}/helpers/waitMs.d.ts +0 -0
  19. package/dist/cjs/types/index.d.ts +22 -0
  20. package/dist/cjs/types/types/ModalButtonType.d.ts +17 -0
  21. package/dist/cjs/types/types/ModalSize.d.ts +11 -0
  22. package/dist/cjs/types/types/ModalType.d.ts +16 -0
  23. package/{lib → dist/cjs/types}/types/ReactKitErrorCode.d.ts +0 -0
  24. package/{lib → dist/cjs/types}/types/Variant.d.ts +0 -0
  25. package/dist/esm/index.js +36375 -0
  26. package/dist/esm/index.js.map +1 -0
  27. package/dist/esm/types/components/AppWrapper.d.ts +40 -0
  28. package/dist/esm/types/components/ErrorBox.d.ts +12 -0
  29. package/dist/esm/types/components/LoadingSpinner.d.ts +7 -0
  30. package/dist/esm/types/components/Modal.d.ts +40 -0
  31. package/dist/esm/types/components/TabBox.d.ts +11 -0
  32. package/dist/esm/types/errors/ErrorWithCode.d.ts +9 -0
  33. package/dist/esm/types/helpers/abbreviate.d.ts +10 -0
  34. package/dist/esm/types/helpers/avg.d.ts +8 -0
  35. package/{src/helpers/ceilToNumDecimals.tsx → dist/esm/types/helpers/ceilToNumDecimals.d.ts} +1 -5
  36. package/{src/helpers/floorToNumDecimals.tsx → dist/esm/types/helpers/floorToNumDecimals.d.ts} +1 -5
  37. package/{src/helpers/forceNumIntoBounds.tsx → dist/esm/types/helpers/forceNumIntoBounds.d.ts} +1 -10
  38. package/dist/esm/types/helpers/padDecimalZeros.d.ts +10 -0
  39. package/{src/helpers/padZerosLeft.tsx → dist/esm/types/helpers/padZerosLeft.d.ts} +1 -13
  40. package/{src/helpers/roundToNumDecimals.tsx → dist/esm/types/helpers/roundToNumDecimals.d.ts} +1 -5
  41. package/{src/helpers/sum.tsx → dist/esm/types/helpers/sum.d.ts} +1 -9
  42. package/{src/helpers/waitMs.tsx → dist/esm/types/helpers/waitMs.d.ts} +1 -6
  43. package/dist/esm/types/index.d.ts +22 -0
  44. package/dist/esm/types/types/ModalButtonType.d.ts +17 -0
  45. package/dist/esm/types/types/ModalSize.d.ts +11 -0
  46. package/dist/esm/types/types/ModalType.d.ts +16 -0
  47. package/dist/esm/types/types/ReactKitErrorCode.d.ts +13 -0
  48. package/dist/esm/types/types/Variant.d.ts +15 -0
  49. package/dist/index.d.ts +274 -0
  50. package/package.json +23 -22
  51. package/.eslintrc.js +0 -95
  52. package/lib/components/AppWrapper.d.ts +0 -20
  53. package/lib/components/AppWrapper.js +0 -133
  54. package/lib/components/AppWrapper.js.map +0 -1
  55. package/lib/components/ErrorBox.js +0 -65
  56. package/lib/components/ErrorBox.js.map +0 -1
  57. package/lib/components/LoadingSpinner.js +0 -41
  58. package/lib/components/LoadingSpinner.js.map +0 -1
  59. package/lib/components/Modal.d.ts +0 -69
  60. package/lib/components/Modal.js +0 -315
  61. package/lib/components/Modal.js.map +0 -1
  62. package/lib/errors/ErrorWithCode.js +0 -33
  63. package/lib/errors/ErrorWithCode.js.map +0 -1
  64. package/lib/helpers/abbreviate.js +0 -21
  65. package/lib/helpers/abbreviate.js.map +0 -1
  66. package/lib/helpers/avg.js +0 -24
  67. package/lib/helpers/avg.js.map +0 -1
  68. package/lib/helpers/ceilToNumDecimals.js +0 -15
  69. package/lib/helpers/ceilToNumDecimals.js.map +0 -1
  70. package/lib/helpers/floorToNumDecimals.js +0 -15
  71. package/lib/helpers/floorToNumDecimals.js.map +0 -1
  72. package/lib/helpers/forceNumIntoBounds.js +0 -15
  73. package/lib/helpers/forceNumIntoBounds.js.map +0 -1
  74. package/lib/helpers/handleError.d.ts +0 -14
  75. package/lib/helpers/handleError.js +0 -54
  76. package/lib/helpers/handleError.js.map +0 -1
  77. package/lib/helpers/handleSuccess.d.ts +0 -8
  78. package/lib/helpers/handleSuccess.js +0 -20
  79. package/lib/helpers/handleSuccess.js.map +0 -1
  80. package/lib/helpers/padDecimalZeros.js +0 -30
  81. package/lib/helpers/padDecimalZeros.js.map +0 -1
  82. package/lib/helpers/padZerosLeft.js +0 -21
  83. package/lib/helpers/padZerosLeft.js.map +0 -1
  84. package/lib/helpers/parseRequest.d.ts +0 -21
  85. package/lib/helpers/parseRequest.js +0 -240
  86. package/lib/helpers/parseRequest.js.map +0 -1
  87. package/lib/helpers/roundToNumDecimals.js +0 -15
  88. package/lib/helpers/roundToNumDecimals.js.map +0 -1
  89. package/lib/helpers/showFatalError.d.ts +0 -2
  90. package/lib/helpers/showFatalError.js +0 -5
  91. package/lib/helpers/showFatalError.js.map +0 -1
  92. package/lib/helpers/sum.js +0 -15
  93. package/lib/helpers/sum.js.map +0 -1
  94. package/lib/helpers/visitServerEndpoint.d.ts +0 -23
  95. package/lib/helpers/visitServerEndpoint.js +0 -135
  96. package/lib/helpers/visitServerEndpoint.js.map +0 -1
  97. package/lib/helpers/waitMs.js +0 -55
  98. package/lib/helpers/waitMs.js.map +0 -1
  99. package/lib/types/ParamType.d.ts +0 -17
  100. package/lib/types/ParamType.js +0 -21
  101. package/lib/types/ParamType.js.map +0 -1
  102. package/lib/types/ReactKitErrorCode.js +0 -18
  103. package/lib/types/ReactKitErrorCode.js.map +0 -1
  104. package/lib/types/Variant.js +0 -19
  105. package/lib/types/Variant.js.map +0 -1
  106. package/src/components/AppWrapper.tsx +0 -189
  107. package/src/components/ErrorBox.tsx +0 -124
  108. package/src/components/LoadingSpinner.tsx +0 -105
  109. package/src/components/Modal.tsx +0 -447
  110. package/src/errors/ErrorWithCode.tsx +0 -15
  111. package/src/helpers/abbreviate.tsx +0 -23
  112. package/src/helpers/avg.tsx +0 -22
  113. package/src/helpers/handleError.ts +0 -65
  114. package/src/helpers/handleSuccess.ts +0 -18
  115. package/src/helpers/padDecimalZeros.tsx +0 -32
  116. package/src/helpers/parseRequest.ts +0 -299
  117. package/src/helpers/showFatalError.tsx +0 -3
  118. package/src/helpers/visitServerEndpoint.tsx +0 -110
  119. package/src/types/ParamType.ts +0 -18
  120. package/src/types/ReactKitErrorCode.tsx +0 -16
  121. package/src/types/Variant.tsx +0 -16
  122. package/tsconfig.json +0 -24
@@ -1,189 +0,0 @@
1
- /**
2
- * A wrapper for the entire React app that adds global functionality like
3
- * handling for fatal error messages
4
- * @author Gabe Abrams
5
- */
6
-
7
- // Import React
8
- import React, { useState, useEffect } from 'react';
9
-
10
- // Import shared components
11
- import ErrorBox from './ErrorBox';
12
-
13
- // Import helpers
14
- import { setSessionExpiryHandler } from '../helpers/visitServerEndpoint';
15
-
16
- // Import shared types
17
- import ReactKitErrorCode from '../types/ReactKitErrorCode';
18
-
19
- // Import custom errors
20
- import ErrorWithCode from '../errors/ErrorWithCode';
21
-
22
- /*------------------------------------------------------------------------*/
23
- /* Props */
24
- /*------------------------------------------------------------------------*/
25
-
26
- type Props = {
27
- // The entire app
28
- children: React.ReactNode,
29
- // True if this app is a dark-themed app
30
- dark?: boolean,
31
- // Custom session expired message
32
- sessionExpiredMessage?: string,
33
- };
34
-
35
- /*------------------------------------------------------------------------*/
36
- /* Static Helpers */
37
- /*------------------------------------------------------------------------*/
38
-
39
- // Stored copies of setters
40
- let setFatalErrorMessage: (message: string) => void;
41
- let setFatalErrorCode: (code: string) => void;
42
- let setFatalErrorTitle: (title: string) => void;
43
-
44
- /**
45
- * Show a fatal error message
46
- * @author Gabe Abrams
47
- * @param error the error to show
48
- * @param [errorTitle] title of the error box
49
- */
50
- export const showFatalError = (
51
- error: any,
52
- errorTitle: string = 'An Error Occurred',
53
- ) => {
54
- // Determine message and code
55
- const message: string = (
56
- typeof error === 'string'
57
- ? error.trim()
58
- : String(error.message ?? 'An unknown error occurred.')
59
- );
60
- const code: string = (
61
- typeof error === 'string'
62
- ? ReactKitErrorCode.NoCode
63
- : String(error.code ?? ReactKitErrorCode.NoCode)
64
- );
65
-
66
- // Handle case where app hasn't loaded
67
- if (!setFatalErrorMessage || !setFatalErrorCode) {
68
- return alert(`An error has occurred: ${message} (code: ${code}). Please contact support.`);
69
- }
70
-
71
- // Use setters
72
- setFatalErrorMessage(message);
73
- setFatalErrorCode(code);
74
- setFatalErrorTitle(errorTitle);
75
- };
76
-
77
- /*------------------------------------------------------------------------*/
78
- /* Component */
79
- /*------------------------------------------------------------------------*/
80
-
81
- const AppWrapper = (props: Props): React.ReactElement => {
82
- /*------------------------------------------------------------------------*/
83
- /* Setup */
84
- /*------------------------------------------------------------------------*/
85
-
86
- /* -------------- Props ------------- */
87
-
88
- const {
89
- children,
90
- dark,
91
- sessionExpiredMessage = 'Your session has expired. Please go back to Canvas and start over.',
92
- } = props;
93
-
94
- /* -------------- State ------------- */
95
-
96
- // Fatal error
97
- const [fatalErrorMessage, setFatalErrorMessageInner] = useState(null);
98
- setFatalErrorMessage = setFatalErrorMessageInner;
99
- const [fatalErrorCode, setFatalErrorCodeInner] = useState(null);
100
- setFatalErrorCode = setFatalErrorCodeInner;
101
- const [fatalErrorTitle, setFatalErrorTitleInner] = useState(null);
102
- setFatalErrorTitle = setFatalErrorTitleInner;
103
-
104
- // Session expired
105
- const [sessionHasExpired, setSessionHasExpired] = useState(false);
106
-
107
- /*------------------------------------------------------------------------*/
108
- /* Lifecycle Functions */
109
- /*------------------------------------------------------------------------*/
110
-
111
- /**
112
- * Mount
113
- * @author Gabe Abrams
114
- */
115
- useEffect(
116
- () => {
117
- // Add session expired handler
118
- setSessionExpiryHandler(() => {
119
- // Session expired!
120
- setSessionHasExpired(true);
121
- });
122
- },
123
- [],
124
- );
125
-
126
- /*------------------------------------------------------------------------*/
127
- /* Render */
128
- /*------------------------------------------------------------------------*/
129
-
130
- /*----------------------------------------*/
131
- /* Main UI */
132
- /*----------------------------------------*/
133
-
134
- // Show error
135
- if (fatalErrorMessage || fatalErrorCode || sessionHasExpired) {
136
- // Re-encapsulate in an error
137
- const error = (
138
- sessionHasExpired
139
- ? new ErrorWithCode(
140
- fatalErrorMessage,
141
- fatalErrorCode,
142
- )
143
- : new ErrorWithCode(
144
- sessionExpiredMessage,
145
- ReactKitErrorCode.SessionExpired,
146
- )
147
- );
148
-
149
- // Build error screen
150
- return (
151
- <div
152
- style={{
153
- display: 'block',
154
- width: '100vw',
155
- minHeight: '100vh',
156
- paddingTop: '10rem',
157
- backgroundColor: (
158
- dark
159
- ? '#222'
160
- : '#fff'
161
- ),
162
- }}
163
- >
164
- <ErrorBox
165
- title={(
166
- sessionHasExpired
167
- ? 'Session Expired'
168
- : fatalErrorTitle
169
- )}
170
- error={error}
171
- />
172
- </div>
173
- );
174
- }
175
-
176
- // Show the app itself
177
- return (
178
- <>
179
- {children}
180
- </>
181
- );
182
- };
183
-
184
- /*------------------------------------------------------------------------*/
185
- /* Wrap Up */
186
- /*------------------------------------------------------------------------*/
187
-
188
- // Export component
189
- export default AppWrapper;
@@ -1,124 +0,0 @@
1
- /**
2
- * Displays an error
3
- * @author Gabe Abrams
4
- */
5
-
6
- // Import React
7
- import React from 'react';
8
-
9
- // Import FontAwesome Icons
10
- import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
11
- import { faExclamationTriangle } from '@fortawesome/free-solid-svg-icons';
12
-
13
- // Import shared types
14
- import ReactKitErrorCode from '../types/ReactKitErrorCode';
15
-
16
- /*------------------------------------------------------------------------*/
17
- /* Types */
18
- /*------------------------------------------------------------------------*/
19
-
20
- type Props = {
21
- // Error to display
22
- error: any,
23
- // Customized title of error box
24
- title?: string,
25
- // Handler for close,
26
- onClose?: () => void,
27
- };
28
-
29
- /*------------------------------------------------------------------------*/
30
- /* Component */
31
- /*------------------------------------------------------------------------*/
32
-
33
- const ErrorBox: React.FC<Props> = (props) => {
34
- /*------------------------------------------------------------------------*/
35
- /* Setup */
36
- /*------------------------------------------------------------------------*/
37
-
38
- /* -------------- Props ------------- */
39
-
40
- const {
41
- error,
42
- title = 'An Error Occurred',
43
- onClose,
44
- } = props;
45
-
46
- /*------------------------------------------------------------------------*/
47
- /* Render */
48
- /*------------------------------------------------------------------------*/
49
-
50
- // Determine error text
51
- const errorText: string = (
52
- typeof error === 'string'
53
- ? error.trim()
54
- : String(error.message || 'An unknown error occurred. Please contact support.')
55
- );
56
-
57
- // Error code box
58
- let errorCodeBox;
59
- if (error && (error as any).code) {
60
- errorCodeBox = (
61
- <span>
62
- {' '}
63
- <span
64
- style={{
65
- backgroundColor: 'white',
66
- borderRadius: '5px',
67
- paddingLeft: '3px',
68
- paddingRight: '3px',
69
- color: '#DC4150',
70
- fontVariant: 'small-caps',
71
- fontSize: '80%',
72
- whiteSpace: 'nowrap',
73
- }}
74
- >
75
- code:
76
- {' '}
77
- {String((error as any).code ?? ReactKitErrorCode.NoCode).toUpperCase()}
78
- </span>
79
- </span>
80
- );
81
- }
82
-
83
- // Main UI
84
- return (
85
- <div
86
- className="alert alert-danger text-center"
87
- style={{
88
- maxWidth: '650px',
89
- margin: 'auto',
90
- }}
91
- >
92
- <h4 className="mb-1">
93
- <FontAwesomeIcon
94
- icon={faExclamationTriangle}
95
- className="me-2"
96
- />
97
- {title}
98
- </h4>
99
- <div>
100
- {errorText}
101
- {errorCodeBox}
102
- </div>
103
- {onClose && (
104
- <div className="mt-2">
105
- <button
106
- type="button"
107
- className="btn btn-light"
108
- aria-label="dismiss error and close this activity or view"
109
- onClick={onClose}
110
- >
111
- Close
112
- </button>
113
- </div>
114
- )}
115
- </div>
116
- );
117
- };
118
-
119
- /*------------------------------------------------------------------------*/
120
- /* Wrap Up */
121
- /*------------------------------------------------------------------------*/
122
-
123
- // Export component
124
- export default ErrorBox;
@@ -1,105 +0,0 @@
1
- /**
2
- * Loading spinner/indicator
3
- * @author Gabe Abrams
4
- */
5
-
6
- // Import FontAwesome Icons
7
- import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
8
- import { faCircle } from '@fortawesome/free-solid-svg-icons';
9
-
10
- /*------------------------------------------------------------------------*/
11
- /* Style */
12
- /*------------------------------------------------------------------------*/
13
-
14
- const style = `
15
- /* Blips */
16
- .LoadingSpinner-blip-1,
17
- .LoadingSpinner-blip-2,
18
- .LoadingSpinner-blip-3,
19
- .LoadingSpinner-blip-4 {
20
- font-size: 25px;
21
- opacity: 0.6;
22
- margin-top: 20px;
23
- margin-bottom: 20px;
24
- }
25
-
26
- /* First Blip */
27
- .LoadingSpinner-blip-1 {
28
- animation: LoadingSpinner-pop-animation 2s infinite;
29
- }
30
-
31
- /* Second Blip */
32
- .LoadingSpinner-blip-2 {
33
- animation: LoadingSpinner-pop-animation 2s infinite;
34
- -webkit-animation-delay: 0.1s;
35
- animation-delay: 0.1s;
36
- }
37
-
38
- /* Third Blip */
39
- .LoadingSpinner-blip-3 {
40
- animation: LoadingSpinner-pop-animation 2s infinite;
41
- animation-delay: 0.2s;
42
- }
43
-
44
- /* Fourth Blip */
45
- .LoadingSpinner-blip-4 {
46
- animation: LoadingSpinner-pop-animation 2s infinite;
47
- animation-delay: 0.3s;
48
- }
49
-
50
- /* Pop Animation for Each Blip */
51
- @keyframes LoadingSpinner-pop-animation {
52
- 0% {
53
- transform: scale(1.0);
54
- }
55
- 10% {
56
- transform: scale(1.5);
57
- }
58
- 30% {
59
- transform: scale(1.0);
60
- }
61
- 100% {
62
- transform: scale(1.0);
63
- }
64
- }
65
- `;
66
-
67
- /*------------------------------------------------------------------------*/
68
- /* Component */
69
- /*------------------------------------------------------------------------*/
70
-
71
- const LoadingSpinner = () => {
72
- /*------------------------------------------------------------------------*/
73
- /* Render */
74
- /*------------------------------------------------------------------------*/
75
-
76
- // Add all four blips to a container
77
- return (
78
- <div className="text-center LoadingSpinner LoadingSpinner-container">
79
- <style>{style}</style>
80
- <FontAwesomeIcon
81
- icon={faCircle}
82
- className="LoadingSpinner-blip-1 me-1"
83
- />
84
- <FontAwesomeIcon
85
- icon={faCircle}
86
- className="LoadingSpinner-blip-2 me-1"
87
- />
88
- <FontAwesomeIcon
89
- icon={faCircle}
90
- className="LoadingSpinner-blip-3 me-1"
91
- />
92
- <FontAwesomeIcon
93
- icon={faCircle}
94
- className="LoadingSpinner-blip-4"
95
- />
96
- </div>
97
- );
98
- };
99
-
100
- /*------------------------------------------------------------------------*/
101
- /* Wrap Up */
102
- /*------------------------------------------------------------------------*/
103
-
104
- // Export component
105
- export default LoadingSpinner;