dce-reactkit 3.2.3 → 3.2.5
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/dist/cjs/index.js +61 -13
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/types/helpers/isMobileOrTablet.d.ts +7 -0
- package/dist/cjs/types/index.d.ts +2 -1
- package/dist/esm/index.js +61 -14
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/types/helpers/isMobileOrTablet.d.ts +7 -0
- package/dist/esm/types/index.d.ts +2 -1
- package/dist/index.d.ts +8 -1
- package/package.json +1 -1
- package/src/components/LogReviewer.tsx +43 -3
- package/src/dynamicConstants/DynamicWord.tsx +11 -22
- package/src/helpers/isMobileOrTablet.tsx +26 -0
- package/src/index.ts +2 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Check if the user is on a mobile device or tablet
|
|
3
|
+
* from https://stackoverflow.com/questions/11381673/detecting-a-mobile-browser
|
|
4
|
+
* @returns true if user is on a mobile device
|
|
5
|
+
*/
|
|
6
|
+
declare const isMobileOrTablet: () => boolean;
|
|
7
|
+
export default isMobileOrTablet;
|
|
@@ -50,6 +50,7 @@ import initLogCollection from './server/initLogCollection';
|
|
|
50
50
|
import getMonthName from './helpers/getMonthName';
|
|
51
51
|
import genCSV from './helpers/genCSV';
|
|
52
52
|
import canReviewLogs from './helpers/canReviewLogs';
|
|
53
|
+
import isMobileOrTablet from './helpers/isMobileOrTablet';
|
|
53
54
|
import ModalButtonType from './types/ModalButtonType';
|
|
54
55
|
import ModalSize from './types/ModalSize';
|
|
55
56
|
import ModalType from './types/ModalType';
|
|
@@ -65,4 +66,4 @@ import LogBuiltInMetadata from './types/LogBuiltInMetadata';
|
|
|
65
66
|
import LogMetadataType from './types/LogMetadataType';
|
|
66
67
|
import IntelliTableColumn from './types/IntelliTableColumn';
|
|
67
68
|
import PickableItem from './components/ItemPicker/types/PickableItem';
|
|
68
|
-
export { AppWrapper, LoadingSpinner, ErrorBox, Modal, TabBox, RadioButton, CheckboxButton, ButtonInputGroup, SimpleDateChooser, Drawer, PopSuccessMark, PopFailureMark, PopPendingMark, CopiableBox, ItemPicker, LogReviewer, IntelliTable, CSVDownloadButton, alert, confirm, showFatalError, ErrorWithCode, MINUTE_IN_MS, HOUR_IN_MS, DAY_IN_MS, DynamicWord, abbreviate, avg, ceilToNumDecimals, floorToNumDecimals, forceNumIntoBounds, padDecimalZeros, padZerosLeft, roundToNumDecimals, sum, waitMs, getOrdinal, getTimeInfoInET, stubServerEndpoint, startMinWait, getHumanReadableDate, getPartOfDay, stringsToHumanReadableList, onlyKeepLetters, parallelLimit, getMonthName, genCSV, canReviewLogs, visitServerEndpoint, logClientEvent, initServer, genRouteHandler, handleError, handleSuccess, initLogCollection, ModalButtonType, ModalSize, ModalType, ReactKitErrorCode, Variant, DayOfWeek, Log, LogType, LogSource, LogAction, LogBuiltInMetadata, LogMetadataType, IntelliTableColumn, PickableItem, ParamType, };
|
|
69
|
+
export { AppWrapper, LoadingSpinner, ErrorBox, Modal, TabBox, RadioButton, CheckboxButton, ButtonInputGroup, SimpleDateChooser, Drawer, PopSuccessMark, PopFailureMark, PopPendingMark, CopiableBox, ItemPicker, LogReviewer, IntelliTable, CSVDownloadButton, alert, confirm, showFatalError, ErrorWithCode, MINUTE_IN_MS, HOUR_IN_MS, DAY_IN_MS, DynamicWord, abbreviate, avg, ceilToNumDecimals, floorToNumDecimals, forceNumIntoBounds, padDecimalZeros, padZerosLeft, roundToNumDecimals, sum, waitMs, getOrdinal, getTimeInfoInET, stubServerEndpoint, startMinWait, getHumanReadableDate, getPartOfDay, stringsToHumanReadableList, onlyKeepLetters, parallelLimit, getMonthName, genCSV, canReviewLogs, isMobileOrTablet, visitServerEndpoint, logClientEvent, initServer, genRouteHandler, handleError, handleSuccess, initLogCollection, ModalButtonType, ModalSize, ModalType, ReactKitErrorCode, Variant, DayOfWeek, Log, LogType, LogSource, LogAction, LogBuiltInMetadata, LogMetadataType, IntelliTableColumn, PickableItem, ParamType, };
|
package/dist/index.d.ts
CHANGED
|
@@ -1017,6 +1017,13 @@ declare const genCSV: (data: {
|
|
|
1017
1017
|
*/
|
|
1018
1018
|
declare const canReviewLogs: () => Promise<boolean>;
|
|
1019
1019
|
|
|
1020
|
+
/**
|
|
1021
|
+
* Check if the user is on a mobile device or tablet
|
|
1022
|
+
* from https://stackoverflow.com/questions/11381673/detecting-a-mobile-browser
|
|
1023
|
+
* @returns true if user is on a mobile device
|
|
1024
|
+
*/
|
|
1025
|
+
declare const isMobileOrTablet: () => boolean;
|
|
1026
|
+
|
|
1020
1027
|
/**
|
|
1021
1028
|
* List of error codes built into the react kit
|
|
1022
1029
|
* @author Gabe Abrams
|
|
@@ -1065,4 +1072,4 @@ declare const LogBuiltInMetadata: {
|
|
|
1065
1072
|
};
|
|
1066
1073
|
};
|
|
1067
1074
|
|
|
1068
|
-
export { AppWrapper, ButtonInputGroup, CSVDownloadButton, CheckboxButton, CopiableBox, DAY_IN_MS, DayOfWeek, Drawer, DynamicWord, ErrorBox, ErrorWithCode, HOUR_IN_MS, IntelliTable, IntelliTableColumn, ItemPicker, LoadingSpinner, Log, LogAction, LogBuiltInMetadata, LogMetadataType, LogReviewer, LogSource, LogType, MINUTE_IN_MS, Modal, ModalButtonType, ModalSize, ModalType, ParamType, PickableItem, PopFailureMark, PopPendingMark, PopSuccessMark, RadioButton, ReactKitErrorCode, SimpleDateChooser, TabBox, Variant, abbreviate, alert, avg, canReviewLogs, ceilToNumDecimals, confirm, floorToNumDecimals, forceNumIntoBounds, genCSV, genRouteHandler, getHumanReadableDate, getMonthName, getOrdinal, getPartOfDay, getTimeInfoInET, handleError, handleSuccess, initLogCollection, initServer, logClientEvent, onlyKeepLetters, padDecimalZeros, padZerosLeft, parallelLimit, roundToNumDecimals, showFatalError, startMinWait, stringsToHumanReadableList, stubServerEndpoint, sum, visitServerEndpoint, waitMs };
|
|
1075
|
+
export { AppWrapper, ButtonInputGroup, CSVDownloadButton, CheckboxButton, CopiableBox, DAY_IN_MS, DayOfWeek, Drawer, DynamicWord, ErrorBox, ErrorWithCode, HOUR_IN_MS, IntelliTable, IntelliTableColumn, ItemPicker, LoadingSpinner, Log, LogAction, LogBuiltInMetadata, LogMetadataType, LogReviewer, LogSource, LogType, MINUTE_IN_MS, Modal, ModalButtonType, ModalSize, ModalType, ParamType, PickableItem, PopFailureMark, PopPendingMark, PopSuccessMark, RadioButton, ReactKitErrorCode, SimpleDateChooser, TabBox, Variant, abbreviate, alert, avg, canReviewLogs, ceilToNumDecimals, confirm, floorToNumDecimals, forceNumIntoBounds, genCSV, genRouteHandler, getHumanReadableDate, getMonthName, getOrdinal, getPartOfDay, getTimeInfoInET, handleError, handleSuccess, initLogCollection, initServer, isMobileOrTablet, logClientEvent, onlyKeepLetters, padDecimalZeros, padZerosLeft, parallelLimit, roundToNumDecimals, showFatalError, startMinWait, stringsToHumanReadableList, stubServerEndpoint, sum, visitServerEndpoint, waitMs };
|
package/package.json
CHANGED
|
@@ -467,7 +467,7 @@ const columns: IntelliTableColumn[] = [
|
|
|
467
467
|
*/
|
|
468
468
|
const genHumanReadableName = (machineReadableName: string) => {
|
|
469
469
|
let humanReadableName = '';
|
|
470
|
-
|
|
470
|
+
|
|
471
471
|
// Add chars and spaces
|
|
472
472
|
const chars = machineReadableName.split('');
|
|
473
473
|
chars.forEach((char) => {
|
|
@@ -477,9 +477,49 @@ const genHumanReadableName = (machineReadableName: string) => {
|
|
|
477
477
|
}
|
|
478
478
|
humanReadableName += char;
|
|
479
479
|
});
|
|
480
|
+
const words = (
|
|
481
|
+
humanReadableName
|
|
482
|
+
.trim()
|
|
483
|
+
// Split into words
|
|
484
|
+
.split(' ')
|
|
485
|
+
// Filter out whitespace
|
|
486
|
+
.filter((word) => {
|
|
487
|
+
return (word.length > 0);
|
|
488
|
+
})
|
|
489
|
+
// Capitalize first letter
|
|
490
|
+
.map((word) => {
|
|
491
|
+
if (word.length <= 1) {
|
|
492
|
+
return word;
|
|
493
|
+
}
|
|
494
|
+
return `${word.substring(0, 1).toUpperCase()}${word.substring(1)}`;
|
|
495
|
+
})
|
|
496
|
+
);
|
|
497
|
+
|
|
498
|
+
// Handle acronyms by piling words together
|
|
499
|
+
const consolidatedWords: string[] = [];
|
|
500
|
+
let acronym = '';
|
|
501
|
+
words.forEach((word) => {
|
|
502
|
+
if (word.length === 1) {
|
|
503
|
+
// Add on to acronym
|
|
504
|
+
acronym += word;
|
|
505
|
+
} else {
|
|
506
|
+
// Wrap up acronym
|
|
507
|
+
if (acronym.length > 0) {
|
|
508
|
+
consolidatedWords.push(acronym);
|
|
509
|
+
acronym = '';
|
|
510
|
+
}
|
|
511
|
+
|
|
512
|
+
// Full word. Just add it
|
|
513
|
+
consolidatedWords.push(word);
|
|
514
|
+
}
|
|
515
|
+
});
|
|
516
|
+
// Add trailing acronym
|
|
517
|
+
if (acronym.length > 0) {
|
|
518
|
+
consolidatedWords.push(acronym);
|
|
519
|
+
}
|
|
480
520
|
|
|
481
|
-
//
|
|
482
|
-
return
|
|
521
|
+
// Return
|
|
522
|
+
return consolidatedWords.join(' ');
|
|
483
523
|
};
|
|
484
524
|
|
|
485
525
|
/*------------------------------------------------------------------------*/
|
|
@@ -1,19 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const checkIfMobileOrTablet = () => {
|
|
7
|
-
try {
|
|
8
|
-
let check = false;
|
|
9
|
-
((a) => { if (/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(a) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0, 4))) check = true; })((navigator ?? {}).userAgent || (navigator ?? {}).vendor || ((window as any) ?? {}).opera);
|
|
10
|
-
return check;
|
|
11
|
-
} catch (err) {
|
|
12
|
-
// Probably this code is being executed on a server
|
|
13
|
-
return false;
|
|
14
|
-
}
|
|
15
|
-
};
|
|
16
|
-
const isMobileOrTablet = checkIfMobileOrTablet();
|
|
1
|
+
// Import shared types
|
|
2
|
+
import isMobileOrTablet from '../helpers/isMobileOrTablet';
|
|
3
|
+
|
|
4
|
+
// Check if mobile
|
|
5
|
+
const isMobile = isMobileOrTablet();
|
|
17
6
|
|
|
18
7
|
/**
|
|
19
8
|
* Dynamic words determined by the user's platform
|
|
@@ -21,32 +10,32 @@ const isMobileOrTablet = checkIfMobileOrTablet();
|
|
|
21
10
|
*/
|
|
22
11
|
const DynamicWord = {
|
|
23
12
|
Click: (
|
|
24
|
-
|
|
13
|
+
isMobile
|
|
25
14
|
? 'tap'
|
|
26
15
|
: 'click'
|
|
27
16
|
),
|
|
28
17
|
ClickCapitalized: (
|
|
29
|
-
|
|
18
|
+
isMobile
|
|
30
19
|
? 'Tap'
|
|
31
20
|
: 'Click'
|
|
32
21
|
),
|
|
33
22
|
App: (
|
|
34
|
-
|
|
23
|
+
isMobile
|
|
35
24
|
? 'app'
|
|
36
25
|
: 'application'
|
|
37
26
|
),
|
|
38
27
|
AppCapitalized: (
|
|
39
|
-
|
|
28
|
+
isMobile
|
|
40
29
|
? 'App'
|
|
41
30
|
: 'Application'
|
|
42
31
|
),
|
|
43
32
|
Device: (
|
|
44
|
-
|
|
33
|
+
isMobile
|
|
45
34
|
? 'device'
|
|
46
35
|
: 'computer'
|
|
47
36
|
),
|
|
48
37
|
DeviceCapitalized: (
|
|
49
|
-
|
|
38
|
+
isMobile
|
|
50
39
|
? 'Device'
|
|
51
40
|
: 'Computer'
|
|
52
41
|
),
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
// True if user is on mobile or tablet
|
|
2
|
+
let cachedResult: boolean | undefined = undefined;
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Check if the user is on a mobile device or tablet
|
|
6
|
+
* from https://stackoverflow.com/questions/11381673/detecting-a-mobile-browser
|
|
7
|
+
* @returns true if user is on a mobile device
|
|
8
|
+
*/
|
|
9
|
+
const isMobileOrTablet = () => {
|
|
10
|
+
if (cachedResult !== undefined) {
|
|
11
|
+
return cachedResult;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
try {
|
|
15
|
+
let check = false;
|
|
16
|
+
((a) => { if (/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(a) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0, 4))) check = true; })((navigator ?? {}).userAgent || (navigator ?? {}).vendor || ((window as any) ?? {}).opera);
|
|
17
|
+
cachedResult = check;
|
|
18
|
+
return cachedResult;
|
|
19
|
+
} catch (err) {
|
|
20
|
+
// Probably this code is being executed on a server
|
|
21
|
+
cachedResult = false;
|
|
22
|
+
return cachedResult;
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
export default isMobileOrTablet;
|
package/src/index.ts
CHANGED
|
@@ -59,6 +59,7 @@ import initLogCollection from './server/initLogCollection';
|
|
|
59
59
|
import getMonthName from './helpers/getMonthName';
|
|
60
60
|
import genCSV from './helpers/genCSV';
|
|
61
61
|
import canReviewLogs from './helpers/canReviewLogs';
|
|
62
|
+
import isMobileOrTablet from './helpers/isMobileOrTablet';
|
|
62
63
|
|
|
63
64
|
// Import types
|
|
64
65
|
import ModalButtonType from './types/ModalButtonType';
|
|
@@ -135,6 +136,7 @@ export {
|
|
|
135
136
|
getMonthName,
|
|
136
137
|
genCSV,
|
|
137
138
|
canReviewLogs,
|
|
139
|
+
isMobileOrTablet,
|
|
138
140
|
// Client helpers
|
|
139
141
|
visitServerEndpoint,
|
|
140
142
|
logClientEvent,
|