@teselagen/ui 0.3.9 → 0.3.11

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 (35) hide show
  1. package/index.js +102 -128
  2. package/index.mjs +102 -128
  3. package/package.json +1 -1
  4. package/src/AdvancedOptions.spec.js +3 -1
  5. package/src/DataTable/CellDragHandle.js +8 -8
  6. package/src/DataTable/FilterAndSortMenu.js +13 -13
  7. package/src/DataTable/PagingTool.js +10 -8
  8. package/src/DataTable/dataTableEnhancer.js +11 -9
  9. package/src/DataTable/index.js +115 -116
  10. package/src/DataTable/utils/queryParams.js +48 -48
  11. package/src/DataTable/utils/withTableParams.js +9 -18
  12. package/src/DialogFooter/index.js +1 -1
  13. package/src/FormComponents/Uploader.js +38 -38
  14. package/src/FormComponents/index.js +58 -58
  15. package/src/FormComponents/sortify.js +1 -1
  16. package/src/FormComponents/tryToMatchSchemas.js +4 -5
  17. package/src/MatchHeaders.js +19 -19
  18. package/src/MenuBar/index.js +10 -3
  19. package/src/PromptUnsavedChanges/index.js +1 -3
  20. package/src/UploadCsvWizard.js +12 -12
  21. package/src/autoTooltip.js +2 -2
  22. package/src/enhancers/withDialog/index.js +6 -6
  23. package/src/rerenderOnWindowResize.js +14 -15
  24. package/src/showConfirmationDialog/index.js +1 -3
  25. package/src/utils/basicHandleActionsWithFullState.js +5 -5
  26. package/src/utils/combineReducersWithFullState.js +9 -9
  27. package/src/utils/commandControls.js +21 -22
  28. package/src/utils/handlerHelpers.js +4 -4
  29. package/src/utils/hotkeyUtils.js +10 -8
  30. package/src/utils/menuUtils.js +79 -66
  31. package/src/utils/pureNoFunc.js +1 -1
  32. package/src/utils/renderOnDoc.js +2 -2
  33. package/src/utils/tgFormValues.js +23 -20
  34. package/src/utils/withSelectTableRecords.js +25 -23
  35. package/src/wrapDialog.js +98 -92
package/src/wrapDialog.js CHANGED
@@ -6,107 +6,113 @@ import { noop, isFunction } from "lodash";
6
6
  import { ResizableDraggableDialog } from ".";
7
7
 
8
8
  // eslint-disable-next-line import/no-anonymous-default-export
9
- export default (topLevelDialogProps = {}) => Component => props => {
10
- const r = useRef();
11
- const memoedHotkeys = useMemo(
12
- () => [
13
- {
14
- combo: topLevelDialogProps.useCmdEnter ? "cmd+enter" : "enter",
15
- global: true,
16
- allowInInput: true,
17
- onKeyDown: () => {
18
- function doNotTriggerClick() {
19
- //leave this here for debugging purposes
20
- // console.log(`Not triggering dialog submit`);
21
- }
22
-
23
- try {
24
- if (!document.activeElement) return doNotTriggerClick();
25
- if (
26
- !document.activeElement.closest(".tg-allow-dialog-form-enter")
27
- ) {
28
- //don't do this if you're in any type of bp multi select by default
29
- if (document.activeElement.closest(".bp3-multi-select"))
30
- return doNotTriggerClick();
31
- //don't do this if there is an explicit class saying not to
32
- if (document.activeElement.closest(".tg-stop-dialog-form-enter"))
33
- return doNotTriggerClick();
34
- //don't do this in text areas
35
- if (document.activeElement.type === "textarea")
36
- return doNotTriggerClick();
37
- }
38
- const parentEl = r.current?.closest(".bp3-dialog-container");
39
- // eslint-disable-next-line no-inner-declarations
40
- function triggerClick() {
41
- parentEl?.querySelector(`button[type='submit']`).click();
9
+ export default (topLevelDialogProps = {}) =>
10
+ Component =>
11
+ props => {
12
+ const r = useRef();
13
+ const memoedHotkeys = useMemo(
14
+ () => [
15
+ {
16
+ combo: topLevelDialogProps.useCmdEnter ? "cmd+enter" : "enter",
17
+ global: true,
18
+ allowInInput: true,
19
+ onKeyDown: () => {
20
+ function doNotTriggerClick() {
21
+ //leave this here for debugging purposes
22
+ // console.log(`Not triggering dialog submit`);
42
23
  }
43
24
 
44
- const dialogs = document.querySelectorAll(".bp3-dialog-container");
45
- const numDialogs = dialogs?.length;
25
+ try {
26
+ if (!document.activeElement) return doNotTriggerClick();
27
+ if (
28
+ !document.activeElement.closest(".tg-allow-dialog-form-enter")
29
+ ) {
30
+ //don't do this if you're in any type of bp multi select by default
31
+ if (document.activeElement.closest(".bp3-multi-select"))
32
+ return doNotTriggerClick();
33
+ //don't do this if there is an explicit class saying not to
34
+ if (
35
+ document.activeElement.closest(".tg-stop-dialog-form-enter")
36
+ )
37
+ return doNotTriggerClick();
38
+ //don't do this in text areas
39
+ if (document.activeElement.type === "textarea")
40
+ return doNotTriggerClick();
41
+ }
42
+ const parentEl = r.current?.closest(".bp3-dialog-container");
43
+ // eslint-disable-next-line no-inner-declarations
44
+ function triggerClick() {
45
+ parentEl?.querySelector(`button[type='submit']`).click();
46
+ }
47
+
48
+ const dialogs = document.querySelectorAll(
49
+ ".bp3-dialog-container"
50
+ );
51
+ const numDialogs = dialogs?.length;
46
52
 
47
- if (numDialogs > 1) {
48
- const topMostDialog = dialogs[numDialogs - 1];
49
- if (topMostDialog === parentEl) {
53
+ if (numDialogs > 1) {
54
+ const topMostDialog = dialogs[numDialogs - 1];
55
+ if (topMostDialog === parentEl) {
56
+ triggerClick();
57
+ }
58
+ } else {
59
+ //just 1 dialog
50
60
  triggerClick();
51
61
  }
52
- } else {
53
- //just 1 dialog
54
- triggerClick();
62
+ } catch (error) {
63
+ console.error(`error:`, error);
55
64
  }
56
- } catch (error) {
57
- console.error(`error:`, error);
58
65
  }
59
66
  }
60
- }
61
- ],
62
- []
63
- );
67
+ ],
68
+ []
69
+ );
64
70
 
65
- useHotkeys(memoedHotkeys);
71
+ useHotkeys(memoedHotkeys);
66
72
 
67
- let otherTopLevelProps,
68
- getDialogProps = noop;
69
- if (isFunction(topLevelDialogProps)) {
70
- getDialogProps = topLevelDialogProps;
71
- } else {
72
- const {
73
- footerProps,
74
- getDialogProps: _pullOff,
75
- ...additionalProps
76
- } = topLevelDialogProps;
77
- otherTopLevelProps = additionalProps;
78
- getDialogProps = topLevelDialogProps.getDialogProps || noop;
79
- }
80
- const { dialogProps, hideModal, ...otherProps } = props;
73
+ let otherTopLevelProps,
74
+ getDialogProps = noop;
75
+ if (isFunction(topLevelDialogProps)) {
76
+ getDialogProps = topLevelDialogProps;
77
+ } else {
78
+ const {
79
+ footerProps,
80
+ getDialogProps: _pullOff,
81
+ ...additionalProps
82
+ } = topLevelDialogProps;
83
+ otherTopLevelProps = additionalProps;
84
+ getDialogProps = topLevelDialogProps.getDialogProps || noop;
85
+ }
86
+ const { dialogProps, hideModal, ...otherProps } = props;
81
87
 
82
- const extraDialogProps = {
83
- ...otherTopLevelProps,
84
- ...dialogProps,
85
- ...getDialogProps(props)
88
+ const extraDialogProps = {
89
+ ...otherTopLevelProps,
90
+ ...dialogProps,
91
+ ...getDialogProps(props)
92
+ };
93
+ const DialogToUse = extraDialogProps.isDraggable
94
+ ? ResizableDraggableDialog
95
+ : Dialog;
96
+ return (
97
+ <DialogToUse
98
+ canOutsideClickClose={false}
99
+ isOpen
100
+ onClose={e => {
101
+ e.stopPropagation();
102
+ if (
103
+ e.key === "Escape" &&
104
+ extraDialogProps.canEscapeKeyClose === false
105
+ ) {
106
+ return;
107
+ }
108
+ hideModal(e);
109
+ }}
110
+ {...extraDialogProps}
111
+ canEscapeKeyClose={true}
112
+ style={{ ...extraDialogProps.style }}
113
+ >
114
+ <div ref={r}></div>
115
+ <Component hideModal={hideModal} {...otherProps} />
116
+ </DialogToUse>
117
+ );
86
118
  };
87
- const DialogToUse = extraDialogProps.isDraggable
88
- ? ResizableDraggableDialog
89
- : Dialog;
90
- return (
91
- <DialogToUse
92
- canOutsideClickClose={false}
93
- isOpen
94
- onClose={e => {
95
- e.stopPropagation();
96
- if (
97
- e.key === "Escape" &&
98
- extraDialogProps.canEscapeKeyClose === false
99
- ) {
100
- return;
101
- }
102
- hideModal(e);
103
- }}
104
- {...extraDialogProps}
105
- canEscapeKeyClose={true}
106
- style={{ ...extraDialogProps.style }}
107
- >
108
- <div ref={r}></div>
109
- <Component hideModal={hideModal} {...otherProps} />
110
- </DialogToUse>
111
- );
112
- };