@teselagen/ui 0.3.10 → 0.3.12
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/index.js +27 -40
- package/index.mjs +27 -40
- package/package.json +1 -1
- package/src/AdvancedOptions.spec.js +3 -1
- package/src/DataTable/CellDragHandle.js +8 -8
- package/src/DataTable/FilterAndSortMenu.js +13 -13
- package/src/DataTable/PagingTool.js +10 -8
- package/src/DataTable/dataTableEnhancer.js +9 -9
- package/src/DataTable/index.js +115 -116
- package/src/DataTable/utils/queryParams.js +48 -48
- package/src/DataTable/utils/withTableParams.js +9 -18
- package/src/DialogFooter/index.js +1 -1
- package/src/FormComponents/Uploader.js +36 -37
- package/src/FormComponents/index.js +58 -58
- package/src/FormComponents/sortify.js +1 -1
- package/src/FormComponents/tryToMatchSchemas.js +4 -5
- package/src/MatchHeaders.js +19 -19
- package/src/MenuBar/index.js +10 -3
- package/src/PromptUnsavedChanges/index.js +1 -3
- package/src/UploadCsvWizard.js +12 -12
- package/src/autoTooltip.js +2 -2
- package/src/enhancers/withDialog/index.js +6 -6
- package/src/rerenderOnWindowResize.js +14 -15
- package/src/showConfirmationDialog/index.js +1 -3
- package/src/utils/basicHandleActionsWithFullState.js +5 -5
- package/src/utils/combineReducersWithFullState.js +9 -9
- package/src/utils/commandControls.js +21 -22
- package/src/utils/handlerHelpers.js +4 -4
- package/src/utils/hotkeyUtils.js +10 -8
- package/src/utils/menuUtils.js +79 -66
- package/src/utils/pureNoFunc.js +1 -1
- package/src/utils/renderOnDoc.js +2 -2
- package/src/utils/tgFormValues.js +23 -20
- package/src/utils/withSelectTableRecords.js +25 -23
- 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 = {}) =>
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
()
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
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
|
-
|
|
45
|
-
|
|
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
|
-
|
|
48
|
-
|
|
49
|
-
|
|
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
|
-
}
|
|
53
|
-
|
|
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
|
-
|
|
71
|
+
useHotkeys(memoedHotkeys);
|
|
66
72
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
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
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
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
|
-
};
|