@teselagen/ui 0.0.11 → 0.0.13

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 (125) hide show
  1. package/README.md +7 -0
  2. package/cypress.config.ts +6 -0
  3. package/index.html +12 -0
  4. package/package.json +5 -11
  5. package/project.json +74 -0
  6. package/src/AdvancedOptions.js +33 -0
  7. package/src/AdvancedOptions.spec.js +24 -0
  8. package/src/AssignDefaultsModeContext.js +21 -0
  9. package/src/AsyncValidateFieldSpinner/index.js +12 -0
  10. package/src/BlueprintError/index.js +14 -0
  11. package/src/BounceLoader/index.js +16 -0
  12. package/src/BounceLoader/style.css +45 -0
  13. package/src/CollapsibleCard/index.js +92 -0
  14. package/src/CollapsibleCard/style.css +21 -0
  15. package/src/DNALoader/index.js +20 -0
  16. package/src/DNALoader/style.css +251 -0
  17. package/src/DataTable/CellDragHandle.js +130 -0
  18. package/src/DataTable/DisabledLoadingComponent.js +15 -0
  19. package/src/DataTable/DisplayOptions.js +218 -0
  20. package/src/DataTable/FilterAndSortMenu.js +397 -0
  21. package/src/DataTable/PagingTool.js +232 -0
  22. package/src/DataTable/SearchBar.js +57 -0
  23. package/src/DataTable/SortableColumns.js +53 -0
  24. package/src/DataTable/TableFormTrackerContext.js +10 -0
  25. package/src/DataTable/dataTableEnhancer.js +291 -0
  26. package/src/DataTable/defaultFormatters.js +32 -0
  27. package/src/DataTable/defaultProps.js +45 -0
  28. package/src/DataTable/defaultValidators.js +40 -0
  29. package/src/DataTable/editCellHelper.js +44 -0
  30. package/src/DataTable/getCellVal.js +20 -0
  31. package/src/DataTable/getVals.js +8 -0
  32. package/src/DataTable/index.js +3537 -0
  33. package/src/DataTable/isTruthy.js +12 -0
  34. package/src/DataTable/isValueEmpty.js +3 -0
  35. package/src/DataTable/style.css +600 -0
  36. package/src/DataTable/utils/computePresets.js +42 -0
  37. package/src/DataTable/utils/convertSchema.js +69 -0
  38. package/src/DataTable/utils/getIdOrCodeOrIndex.js +9 -0
  39. package/src/DataTable/utils/getTableConfigFromStorage.js +5 -0
  40. package/src/DataTable/utils/queryParams.js +1032 -0
  41. package/src/DataTable/utils/rowClick.js +156 -0
  42. package/src/DataTable/utils/selection.js +8 -0
  43. package/src/DataTable/utils/withSelectedEntities.js +65 -0
  44. package/src/DataTable/utils/withTableParams.js +328 -0
  45. package/src/DataTable/validateTableWideErrors.js +135 -0
  46. package/src/DataTable/viewColumn.js +37 -0
  47. package/src/DialogFooter/index.js +79 -0
  48. package/src/DialogFooter/style.css +9 -0
  49. package/src/DropdownButton.js +36 -0
  50. package/src/FillWindow.css +6 -0
  51. package/src/FillWindow.js +69 -0
  52. package/src/FormComponents/Uploader.js +1197 -0
  53. package/src/FormComponents/getNewName.js +31 -0
  54. package/src/FormComponents/index.js +1384 -0
  55. package/src/FormComponents/itemUpload.js +84 -0
  56. package/src/FormComponents/sortify.js +73 -0
  57. package/src/FormComponents/style.css +247 -0
  58. package/src/FormComponents/tryToMatchSchemas.js +222 -0
  59. package/src/FormComponents/utils.js +6 -0
  60. package/src/HotkeysDialog/index.js +79 -0
  61. package/src/HotkeysDialog/style.css +54 -0
  62. package/src/InfoHelper/index.js +83 -0
  63. package/src/InfoHelper/style.css +7 -0
  64. package/src/IntentText/index.js +18 -0
  65. package/src/Loading/index.js +74 -0
  66. package/src/Loading/style.css +4 -0
  67. package/src/MatchHeaders.js +223 -0
  68. package/src/MenuBar/index.js +416 -0
  69. package/src/MenuBar/style.css +45 -0
  70. package/src/PromptUnsavedChanges/index.js +40 -0
  71. package/src/ResizableDraggableDialog/index.js +138 -0
  72. package/src/ResizableDraggableDialog/style.css +42 -0
  73. package/src/ScrollToTop/index.js +72 -0
  74. package/src/SimpleStepViz.js +26 -0
  75. package/src/TgSelect/index.js +465 -0
  76. package/src/TgSelect/style.css +34 -0
  77. package/src/TgSuggest/index.js +121 -0
  78. package/src/Timeline/TimelineEvent.js +31 -0
  79. package/src/Timeline/index.js +22 -0
  80. package/src/Timeline/style.css +29 -0
  81. package/src/UploadCsvWizard.css +4 -0
  82. package/src/UploadCsvWizard.js +731 -0
  83. package/src/autoTooltip.js +89 -0
  84. package/src/constants.js +1 -0
  85. package/src/customIcons.js +361 -0
  86. package/src/enhancers/withDialog/index.js +196 -0
  87. package/src/enhancers/withDialog/tg_modalState.js +46 -0
  88. package/src/enhancers/withField.js +20 -0
  89. package/src/enhancers/withFields.js +11 -0
  90. package/src/enhancers/withLocalStorage.js +11 -0
  91. package/src/index.js +76 -0
  92. package/src/rerenderOnWindowResize.js +27 -0
  93. package/src/showAppSpinner.js +12 -0
  94. package/src/showConfirmationDialog/index.js +116 -0
  95. package/src/showDialogOnDocBody.js +37 -0
  96. package/src/style.css +214 -0
  97. package/src/toastr.js +92 -0
  98. package/src/typeToCommonType.js +6 -0
  99. package/src/useDialog.js +64 -0
  100. package/src/utils/S3Download.js +14 -0
  101. package/src/utils/adHoc.js +10 -0
  102. package/src/utils/basicHandleActionsWithFullState.js +14 -0
  103. package/src/utils/combineReducersWithFullState.js +14 -0
  104. package/src/utils/commandControls.js +83 -0
  105. package/src/utils/commandUtils.js +112 -0
  106. package/src/utils/determineBlackOrWhiteTextColor.js +4 -0
  107. package/src/utils/getDayjsFormatter.js +35 -0
  108. package/src/utils/getTextFromEl.js +28 -0
  109. package/src/utils/handlerHelpers.js +30 -0
  110. package/src/utils/hotkeyUtils.js +129 -0
  111. package/src/utils/menuUtils.js +402 -0
  112. package/src/utils/popoverOverflowModifiers.js +11 -0
  113. package/src/utils/pureNoFunc.js +31 -0
  114. package/src/utils/renderOnDoc.js +29 -0
  115. package/src/utils/showProgressToast.js +22 -0
  116. package/src/utils/tagUtils.js +45 -0
  117. package/src/utils/tgFormValues.js +32 -0
  118. package/src/utils/withSelectTableRecords.js +38 -0
  119. package/src/utils/withStore.js +10 -0
  120. package/src/wrapDialog.js +112 -0
  121. package/tsconfig.json +4 -0
  122. package/vite.config.ts +7 -0
  123. package/index.mjs +0 -109378
  124. package/index.umd.js +0 -109381
  125. package/style.css +0 -10421
@@ -0,0 +1,112 @@
1
+ /* Copyright (C) 2018 TeselaGen Biotechnology, Inc. */
2
+
3
+ import React, { useMemo, useRef } from "react";
4
+ import { Dialog, useHotkeys } from "@blueprintjs/core";
5
+ import { noop, isFunction } from "lodash";
6
+ import { ResizableDraggableDialog } from ".";
7
+
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();
42
+ }
43
+
44
+ const dialogs = document.querySelectorAll(".bp3-dialog-container");
45
+ const numDialogs = dialogs?.length;
46
+
47
+ if (numDialogs > 1) {
48
+ const topMostDialog = dialogs[numDialogs - 1];
49
+ if (topMostDialog === parentEl) {
50
+ triggerClick();
51
+ }
52
+ } else {
53
+ //just 1 dialog
54
+ triggerClick();
55
+ }
56
+ } catch (error) {
57
+ console.error(`error:`, error);
58
+ }
59
+ }
60
+ }
61
+ ],
62
+ []
63
+ );
64
+
65
+ useHotkeys(memoedHotkeys);
66
+
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;
81
+
82
+ const extraDialogProps = {
83
+ ...otherTopLevelProps,
84
+ ...dialogProps,
85
+ ...getDialogProps(props)
86
+ };
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
+ };
package/tsconfig.json ADDED
@@ -0,0 +1,4 @@
1
+ {
2
+ "extends": "../../tsconfig.react.json",
3
+ "include": ["**/*.js", "**/*.jsx", "**/*.ts", "**/*.tsx"]
4
+ }
package/vite.config.ts ADDED
@@ -0,0 +1,7 @@
1
+ import viteReactConfig from '../../vite.react.config'
2
+
3
+ export default viteReactConfig({
4
+ name: 'ui',
5
+ dir: __dirname,
6
+ })
7
+