@teselagen/ui 0.7.33-beta.2 → 0.7.33-beta.4

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 (248) hide show
  1. package/package.json +1 -1
  2. package/src/AdvancedOptions.spec.js +26 -0
  3. package/src/AsyncValidateFieldSpinner/index.js +12 -0
  4. package/src/BlueprintError/index.js +14 -0
  5. package/src/BounceLoader/index.js +16 -0
  6. package/src/BounceLoader/style.css +45 -0
  7. package/src/CollapsibleCard/index.js +68 -0
  8. package/src/CollapsibleCard/style.css +23 -0
  9. package/src/DNALoader/index.js +20 -0
  10. package/src/DNALoader/style.css +251 -0
  11. package/src/DataTable/index.js +3209 -0
  12. package/src/DataTable/style.css +608 -0
  13. package/src/DataTable/utils/filterLocalEntitiesToHasura.test.js +515 -0
  14. package/src/DataTable/utils/index.js +55 -0
  15. package/src/DataTable/utils/simplifyHasuraWhere.test.js +73 -0
  16. package/src/DataTable/utils/tableQueryParamsToHasuraClauses.test.js +219 -0
  17. package/src/DialogFooter/index.js +86 -0
  18. package/src/DialogFooter/style.css +9 -0
  19. package/src/FormComponents/index.js +1266 -0
  20. package/src/FormComponents/style.css +275 -0
  21. package/src/FormComponents/utils.js +6 -0
  22. package/src/HotkeysDialog/index.js +79 -0
  23. package/src/HotkeysDialog/style.css +54 -0
  24. package/src/InfoHelper/index.js +78 -0
  25. package/src/InfoHelper/style.css +7 -0
  26. package/src/IntentText/index.js +18 -0
  27. package/src/Loading/index.js +70 -0
  28. package/src/Loading/style.css +4 -0
  29. package/src/MenuBar/index.js +423 -0
  30. package/src/MenuBar/style.css +45 -0
  31. package/src/PromptUnsavedChanges/index.js +38 -0
  32. package/src/ResizableDraggableDialog/index.js +141 -0
  33. package/src/ResizableDraggableDialog/style.css +42 -0
  34. package/src/ScrollToTop/index.js +72 -0
  35. package/src/TagSelect/index.js +69 -0
  36. package/src/TagSelect/style.css +13 -0
  37. package/src/TgHtmlSelect/index.js +20 -0
  38. package/src/TgSelect/index.js +537 -0
  39. package/src/TgSelect/style.css +61 -0
  40. package/src/TgSuggest/index.js +124 -0
  41. package/src/Timeline/index.js +15 -0
  42. package/src/enhancers/withDialog/index.js +196 -0
  43. package/src/index.js +88 -1
  44. package/src/showConfirmationDialog/index.js +148 -0
  45. package/src/style.css +260 -24
  46. package/AdvancedOptions.js +0 -33
  47. package/AssignDefaultsModeContext.js +0 -22
  48. package/DropdownButton.js +0 -36
  49. package/FillWindow.css +0 -6
  50. package/FillWindow.js +0 -69
  51. package/MatchHeaders.js +0 -234
  52. package/SimpleStepViz.js +0 -22
  53. package/Tag.js +0 -112
  54. package/UploadCsvWizard.css +0 -4
  55. package/UploadCsvWizard.js +0 -719
  56. package/autoTooltip.js +0 -201
  57. package/constants.js +0 -1
  58. package/customIcons.js +0 -361
  59. package/rerenderOnWindowResize.js +0 -26
  60. package/showAppSpinner.js +0 -12
  61. package/showDialogOnDocBody.js +0 -33
  62. package/src/CellDragHandle.js +0 -132
  63. package/src/ColumnFilterMenu.js +0 -62
  64. package/src/Columns.js +0 -979
  65. package/src/DisabledLoadingComponent.js +0 -15
  66. package/src/DisplayOptions.js +0 -199
  67. package/src/DropdownCell.js +0 -61
  68. package/src/EditableCell.js +0 -44
  69. package/src/FilterAndSortMenu.js +0 -388
  70. package/src/FormSeparator.js +0 -9
  71. package/src/LoadingDots.js +0 -14
  72. package/src/PagingTool.js +0 -225
  73. package/src/RenderCell.js +0 -191
  74. package/src/SearchBar.js +0 -69
  75. package/src/SortableColumns.js +0 -100
  76. package/src/TableFormTrackerContext.js +0 -10
  77. package/src/ThComponent.js +0 -44
  78. package/src/TimelineEvent.js +0 -31
  79. package/src/Uploader.js +0 -1278
  80. package/src/adHoc.js +0 -10
  81. package/src/basicHandleActionsWithFullState.js +0 -14
  82. package/src/browserUtils.js +0 -3
  83. package/src/combineReducersWithFullState.js +0 -14
  84. package/src/commandControls.js +0 -82
  85. package/src/commandUtils.js +0 -112
  86. package/src/convertSchema.js +0 -69
  87. package/src/dataTableEnhancer.js +0 -41
  88. package/src/defaultFormatters.js +0 -32
  89. package/src/defaultValidators.js +0 -40
  90. package/src/determineBlackOrWhiteTextColor.js +0 -4
  91. package/src/editCellHelper.js +0 -44
  92. package/src/filterLocalEntitiesToHasura.js +0 -216
  93. package/src/formatPasteData.js +0 -16
  94. package/src/getAllRows.js +0 -11
  95. package/src/getCellCopyText.js +0 -7
  96. package/src/getCellInfo.js +0 -36
  97. package/src/getCellVal.js +0 -20
  98. package/src/getDayjsFormatter.js +0 -35
  99. package/src/getFieldPathToField.js +0 -7
  100. package/src/getIdOrCodeOrIndex.js +0 -9
  101. package/src/getLastSelectedEntity.js +0 -11
  102. package/src/getNewEntToSelect.js +0 -25
  103. package/src/getNewName.js +0 -31
  104. package/src/getRowCopyText.js +0 -28
  105. package/src/getTableConfigFromStorage.js +0 -5
  106. package/src/getTextFromEl.js +0 -28
  107. package/src/getVals.js +0 -8
  108. package/src/handleCopyColumn.js +0 -21
  109. package/src/handleCopyHelper.js +0 -15
  110. package/src/handleCopyRows.js +0 -23
  111. package/src/handleCopyTable.js +0 -16
  112. package/src/handlerHelpers.js +0 -24
  113. package/src/hotkeyUtils.js +0 -131
  114. package/src/initializeHasuraWhereAndFilter.js +0 -27
  115. package/src/isBeingCalledExcessively.js +0 -24
  116. package/src/isBottomRightCornerOfRectangle.js +0 -20
  117. package/src/isEntityClean.js +0 -15
  118. package/src/isTruthy.js +0 -12
  119. package/src/isValueEmpty.js +0 -3
  120. package/src/itemUpload.js +0 -84
  121. package/src/menuUtils.js +0 -433
  122. package/src/popoverOverflowModifiers.js +0 -11
  123. package/src/primarySelectedValue.js +0 -1
  124. package/src/pureNoFunc.js +0 -31
  125. package/src/queryParams.js +0 -336
  126. package/src/removeCleanRows.js +0 -22
  127. package/src/renderOnDoc.js +0 -32
  128. package/src/rowClick.js +0 -181
  129. package/src/selection.js +0 -8
  130. package/src/showProgressToast.js +0 -22
  131. package/src/simplifyHasuraWhere.js +0 -80
  132. package/src/sortify.js +0 -73
  133. package/tableQueryParamsToHasuraClauses.js +0 -113
  134. package/tagUtils.js +0 -45
  135. package/tgFormValues.js +0 -35
  136. package/tg_modalState.js +0 -47
  137. package/throwFormError.js +0 -16
  138. package/toastr.js +0 -148
  139. package/tryToMatchSchemas.js +0 -264
  140. package/typeToCommonType.js +0 -6
  141. package/useDeepEqualMemo.js +0 -15
  142. package/useDialog.js +0 -63
  143. package/useStableReference.js +0 -9
  144. package/useTableEntities.js +0 -38
  145. package/useTraceUpdate.js +0 -19
  146. package/utils.js +0 -37
  147. package/validateTableWideErrors.js +0 -160
  148. package/viewColumn.js +0 -97
  149. package/withField.js +0 -20
  150. package/withFields.js +0 -11
  151. package/withLocalStorage.js +0 -11
  152. package/withSelectTableRecords.js +0 -43
  153. package/withSelectedEntities.js +0 -65
  154. package/withStore.js +0 -10
  155. package/withTableParams.js +0 -288
  156. package/wrapDialog.js +0 -116
  157. /package/{CellDragHandle.js → src/DataTable/CellDragHandle.js} +0 -0
  158. /package/{ColumnFilterMenu.js → src/DataTable/ColumnFilterMenu.js} +0 -0
  159. /package/{Columns.js → src/DataTable/Columns.js} +0 -0
  160. /package/{DisabledLoadingComponent.js → src/DataTable/DisabledLoadingComponent.js} +0 -0
  161. /package/{DisplayOptions.js → src/DataTable/DisplayOptions.js} +0 -0
  162. /package/{DropdownCell.js → src/DataTable/DropdownCell.js} +0 -0
  163. /package/{EditableCell.js → src/DataTable/EditableCell.js} +0 -0
  164. /package/{FilterAndSortMenu.js → src/DataTable/FilterAndSortMenu.js} +0 -0
  165. /package/{PagingTool.js → src/DataTable/PagingTool.js} +0 -0
  166. /package/{RenderCell.js → src/DataTable/RenderCell.js} +0 -0
  167. /package/{SearchBar.js → src/DataTable/SearchBar.js} +0 -0
  168. /package/{SortableColumns.js → src/DataTable/SortableColumns.js} +0 -0
  169. /package/{TableFormTrackerContext.js → src/DataTable/TableFormTrackerContext.js} +0 -0
  170. /package/{ThComponent.js → src/DataTable/ThComponent.js} +0 -0
  171. /package/{dataTableEnhancer.js → src/DataTable/dataTableEnhancer.js} +0 -0
  172. /package/{defaultFormatters.js → src/DataTable/defaultFormatters.js} +0 -0
  173. /package/{defaultValidators.js → src/DataTable/defaultValidators.js} +0 -0
  174. /package/{editCellHelper.js → src/DataTable/editCellHelper.js} +0 -0
  175. /package/{getCellVal.js → src/DataTable/getCellVal.js} +0 -0
  176. /package/{getVals.js → src/DataTable/getVals.js} +0 -0
  177. /package/{isTruthy.js → src/DataTable/isTruthy.js} +0 -0
  178. /package/{isValueEmpty.js → src/DataTable/isValueEmpty.js} +0 -0
  179. /package/{convertSchema.js → src/DataTable/utils/convertSchema.js} +0 -0
  180. /package/{filterLocalEntitiesToHasura.js → src/DataTable/utils/filterLocalEntitiesToHasura.js} +0 -0
  181. /package/{formatPasteData.js → src/DataTable/utils/formatPasteData.js} +0 -0
  182. /package/{getAllRows.js → src/DataTable/utils/getAllRows.js} +0 -0
  183. /package/{getCellCopyText.js → src/DataTable/utils/getCellCopyText.js} +0 -0
  184. /package/{getCellInfo.js → src/DataTable/utils/getCellInfo.js} +0 -0
  185. /package/{getFieldPathToField.js → src/DataTable/utils/getFieldPathToField.js} +0 -0
  186. /package/{getIdOrCodeOrIndex.js → src/DataTable/utils/getIdOrCodeOrIndex.js} +0 -0
  187. /package/{getLastSelectedEntity.js → src/DataTable/utils/getLastSelectedEntity.js} +0 -0
  188. /package/{getNewEntToSelect.js → src/DataTable/utils/getNewEntToSelect.js} +0 -0
  189. /package/{getRowCopyText.js → src/DataTable/utils/getRowCopyText.js} +0 -0
  190. /package/{getTableConfigFromStorage.js → src/DataTable/utils/getTableConfigFromStorage.js} +0 -0
  191. /package/{handleCopyColumn.js → src/DataTable/utils/handleCopyColumn.js} +0 -0
  192. /package/{handleCopyHelper.js → src/DataTable/utils/handleCopyHelper.js} +0 -0
  193. /package/{handleCopyRows.js → src/DataTable/utils/handleCopyRows.js} +0 -0
  194. /package/{handleCopyTable.js → src/DataTable/utils/handleCopyTable.js} +0 -0
  195. /package/{initializeHasuraWhereAndFilter.js → src/DataTable/utils/initializeHasuraWhereAndFilter.js} +0 -0
  196. /package/{isBottomRightCornerOfRectangle.js → src/DataTable/utils/isBottomRightCornerOfRectangle.js} +0 -0
  197. /package/{isEntityClean.js → src/DataTable/utils/isEntityClean.js} +0 -0
  198. /package/{primarySelectedValue.js → src/DataTable/utils/primarySelectedValue.js} +0 -0
  199. /package/{queryParams.js → src/DataTable/utils/queryParams.js} +0 -0
  200. /package/{removeCleanRows.js → src/DataTable/utils/removeCleanRows.js} +0 -0
  201. /package/{rowClick.js → src/DataTable/utils/rowClick.js} +0 -0
  202. /package/{selection.js → src/DataTable/utils/selection.js} +0 -0
  203. /package/{simplifyHasuraWhere.js → src/DataTable/utils/simplifyHasuraWhere.js} +0 -0
  204. /package/src/{tableQueryParamsToHasuraClauses.js → DataTable/utils/tableQueryParamsToHasuraClauses.js} +0 -0
  205. /package/src/{useTableEntities.js → DataTable/utils/useTableEntities.js} +0 -0
  206. /package/src/{utils.js → DataTable/utils/utils.js} +0 -0
  207. /package/src/{withSelectedEntities.js → DataTable/utils/withSelectedEntities.js} +0 -0
  208. /package/src/{withTableParams.js → DataTable/utils/withTableParams.js} +0 -0
  209. /package/src/{validateTableWideErrors.js → DataTable/validateTableWideErrors.js} +0 -0
  210. /package/src/{viewColumn.js → DataTable/viewColumn.js} +0 -0
  211. /package/{FormSeparator.js → src/FormComponents/FormSeparator.js} +0 -0
  212. /package/{LoadingDots.js → src/FormComponents/LoadingDots.js} +0 -0
  213. /package/{Uploader.js → src/FormComponents/Uploader.js} +0 -0
  214. /package/{getNewName.js → src/FormComponents/getNewName.js} +0 -0
  215. /package/{itemUpload.js → src/FormComponents/itemUpload.js} +0 -0
  216. /package/{sortify.js → src/FormComponents/sortify.js} +0 -0
  217. /package/src/{tryToMatchSchemas.js → FormComponents/tryToMatchSchemas.js} +0 -0
  218. /package/{TimelineEvent.js → src/Timeline/TimelineEvent.js} +0 -0
  219. /package/{style.css → src/Timeline/style.css} +0 -0
  220. /package/src/{tg_modalState.js → enhancers/withDialog/tg_modalState.js} +0 -0
  221. /package/src/{withField.js → enhancers/withField.js} +0 -0
  222. /package/src/{withFields.js → enhancers/withFields.js} +0 -0
  223. /package/src/{withLocalStorage.js → enhancers/withLocalStorage.js} +0 -0
  224. /package/{adHoc.js → src/utils/adHoc.js} +0 -0
  225. /package/{basicHandleActionsWithFullState.js → src/utils/basicHandleActionsWithFullState.js} +0 -0
  226. /package/{browserUtils.js → src/utils/browserUtils.js} +0 -0
  227. /package/{combineReducersWithFullState.js → src/utils/combineReducersWithFullState.js} +0 -0
  228. /package/{commandControls.js → src/utils/commandControls.js} +0 -0
  229. /package/{commandUtils.js → src/utils/commandUtils.js} +0 -0
  230. /package/{determineBlackOrWhiteTextColor.js → src/utils/determineBlackOrWhiteTextColor.js} +0 -0
  231. /package/{getDayjsFormatter.js → src/utils/getDayjsFormatter.js} +0 -0
  232. /package/{getTextFromEl.js → src/utils/getTextFromEl.js} +0 -0
  233. /package/{handlerHelpers.js → src/utils/handlerHelpers.js} +0 -0
  234. /package/{index.js → src/utils/hooks/index.js} +0 -0
  235. /package/src/{useDeepEqualMemo.js → utils/hooks/useDeepEqualMemo.js} +0 -0
  236. /package/src/{useStableReference.js → utils/hooks/useStableReference.js} +0 -0
  237. /package/{hotkeyUtils.js → src/utils/hotkeyUtils.js} +0 -0
  238. /package/{isBeingCalledExcessively.js → src/utils/isBeingCalledExcessively.js} +0 -0
  239. /package/{menuUtils.js → src/utils/menuUtils.js} +0 -0
  240. /package/{popoverOverflowModifiers.js → src/utils/popoverOverflowModifiers.js} +0 -0
  241. /package/{pureNoFunc.js → src/utils/pureNoFunc.js} +0 -0
  242. /package/{renderOnDoc.js → src/utils/renderOnDoc.js} +0 -0
  243. /package/{showProgressToast.js → src/utils/showProgressToast.js} +0 -0
  244. /package/src/{tagUtils.js → utils/tagUtils.js} +0 -0
  245. /package/src/{tgFormValues.js → utils/tgFormValues.js} +0 -0
  246. /package/src/{useTraceUpdate.js → utils/useTraceUpdate.js} +0 -0
  247. /package/src/{withSelectTableRecords.js → utils/withSelectTableRecords.js} +0 -0
  248. /package/src/{withStore.js → utils/withStore.js} +0 -0
@@ -0,0 +1,219 @@
1
+ import { tableQueryParamsToHasuraClauses } from "./tableQueryParamsToHasuraClauses";
2
+
3
+ describe("tableQueryParamsToHasuraClauses", () => {
4
+ const schema = {
5
+ fields: [
6
+ { path: "name", type: "string" },
7
+ { path: "age", type: "number" },
8
+ { path: "isActive", type: "boolean" },
9
+ { path: "email", type: "string" }
10
+ ]
11
+ };
12
+
13
+ it("should handle empty query params", () => {
14
+ const result = tableQueryParamsToHasuraClauses({});
15
+ expect(result).toEqual({
16
+ where: {},
17
+ order_by: {},
18
+ limit: 25,
19
+ offset: 0
20
+ });
21
+ });
22
+
23
+ it("should handle page and pageSize", () => {
24
+ const result = tableQueryParamsToHasuraClauses({ page: 2, pageSize: 10 });
25
+ expect(result).toEqual({
26
+ where: {},
27
+ order_by: {},
28
+ limit: 10,
29
+ offset: 10
30
+ });
31
+ });
32
+
33
+ it("should handle searchTerm with string fields", () => {
34
+ const result = tableQueryParamsToHasuraClauses({
35
+ searchTerm: "test",
36
+ schema
37
+ });
38
+ expect(result).toEqual({
39
+ where: {
40
+ _or: [{ name: { _ilike: "%test%" } }, { email: { _ilike: "%test%" } }]
41
+ },
42
+ order_by: {},
43
+ limit: 25,
44
+ offset: 0
45
+ });
46
+ });
47
+
48
+ it("should handle searchTerm with number fields", () => {
49
+ const result = tableQueryParamsToHasuraClauses({
50
+ searchTerm: "30",
51
+ schema
52
+ });
53
+ expect(result).toEqual({
54
+ where: {
55
+ _or: [
56
+ { name: { _ilike: "%30%" } },
57
+ { age: { _eq: 30 } },
58
+ { email: { _ilike: "%30%" } }
59
+ ]
60
+ },
61
+ order_by: {},
62
+ limit: 25,
63
+ offset: 0
64
+ });
65
+ });
66
+
67
+ it("should handle searchTerm with boolean fields", () => {
68
+ const result = tableQueryParamsToHasuraClauses({
69
+ searchTerm: "true",
70
+ schema
71
+ });
72
+ expect(result).toEqual({
73
+ where: {
74
+ _or: [
75
+ { name: { _ilike: "%true%" } },
76
+ { isActive: { _eq: true } },
77
+ { email: { _ilike: "%true%" } }
78
+ ]
79
+ },
80
+ order_by: {},
81
+ limit: 25,
82
+ offset: 0
83
+ });
84
+ });
85
+
86
+ it("should handle searchTerm with multiple field types", () => {
87
+ const result = tableQueryParamsToHasuraClauses({
88
+ searchTerm: "test",
89
+ schema
90
+ });
91
+ expect(result).toEqual({
92
+ where: {
93
+ _or: [{ name: { _ilike: "%test%" } }, { email: { _ilike: "%test%" } }]
94
+ },
95
+ order_by: {},
96
+ limit: 25,
97
+ offset: 0
98
+ });
99
+ });
100
+
101
+ it("should handle textContains filter", () => {
102
+ const result = tableQueryParamsToHasuraClauses({
103
+ filters: [
104
+ {
105
+ selectedFilter: "textContains",
106
+ filterOn: "name",
107
+ filterValue: "test"
108
+ }
109
+ ]
110
+ });
111
+ expect(result).toEqual({
112
+ where: { _and: [{ name: { _ilike: "%test%" } }] },
113
+ order_by: {},
114
+ limit: 25,
115
+ offset: 0
116
+ });
117
+ });
118
+
119
+ it("should handle textEquals filter", () => {
120
+ const result = tableQueryParamsToHasuraClauses({
121
+ filters: [
122
+ { selectedFilter: "textEquals", filterOn: "name", filterValue: "test" }
123
+ ]
124
+ });
125
+ expect(result).toEqual({
126
+ where: { _and: [{ name: { _eq: "test" } }] },
127
+ order_by: {},
128
+ limit: 25,
129
+ offset: 0
130
+ });
131
+ });
132
+
133
+ it("should handle numberEquals filter", () => {
134
+ const result = tableQueryParamsToHasuraClauses({
135
+ filters: [
136
+ { selectedFilter: "numberEquals", filterOn: "age", filterValue: "30" }
137
+ ]
138
+ });
139
+ expect(result).toEqual({
140
+ where: { _and: [{ age: { _eq: 30 } }] },
141
+ order_by: {},
142
+ limit: 25,
143
+ offset: 0
144
+ });
145
+ });
146
+
147
+ it("should handle order", () => {
148
+ const result = tableQueryParamsToHasuraClauses({ order: ["name", "-age"] });
149
+ expect(result).toEqual({
150
+ where: {},
151
+ order_by: { name: "asc", age: "desc" },
152
+ limit: 25,
153
+ offset: 0
154
+ });
155
+ });
156
+
157
+ it("should combine all params", () => {
158
+ const result = tableQueryParamsToHasuraClauses({
159
+ page: 2,
160
+ pageSize: 10,
161
+ searchTerm: "test",
162
+ filters: [
163
+ {
164
+ selectedFilter: "numberGreaterThan",
165
+ filterOn: "age",
166
+ filterValue: "30"
167
+ }
168
+ ],
169
+ order: ["name"],
170
+ schema
171
+ });
172
+ expect(result).toEqual({
173
+ where: {
174
+ _and: [
175
+ {
176
+ _or: [
177
+ { name: { _ilike: "%test%" } },
178
+ { email: { _ilike: "%test%" } }
179
+ ]
180
+ },
181
+ { age: { _gt: 30 } }
182
+ ]
183
+ },
184
+ order_by: { name: "asc" },
185
+ limit: 10,
186
+ offset: 10
187
+ });
188
+ });
189
+
190
+ it("should combine searchTerm and filters", () => {
191
+ const result = tableQueryParamsToHasuraClauses({
192
+ searchTerm: "test",
193
+ filters: [
194
+ {
195
+ selectedFilter: "numberGreaterThan",
196
+ filterOn: "age",
197
+ filterValue: "30"
198
+ }
199
+ ],
200
+ schema
201
+ });
202
+ expect(result).toEqual({
203
+ where: {
204
+ _and: [
205
+ {
206
+ _or: [
207
+ { name: { _ilike: "%test%" } },
208
+ { email: { _ilike: "%test%" } }
209
+ ]
210
+ },
211
+ { age: { _gt: 30 } }
212
+ ]
213
+ },
214
+ order_by: {},
215
+ limit: 25,
216
+ offset: 0
217
+ });
218
+ });
219
+ });
@@ -0,0 +1,86 @@
1
+ /* Copyright (C) 2018 TeselaGen Biotechnology, Inc. */
2
+
3
+ import React, { useRef } from "react";
4
+ import { Intent, Button, Classes } from "@blueprintjs/core";
5
+ import { noop } from "lodash-es";
6
+ import classNames from "classnames";
7
+
8
+ function DialogFooter({
9
+ hideModal,
10
+ loading,
11
+ submitting,
12
+ onBackClick,
13
+ style,
14
+ onClick = noop,
15
+ secondaryAction,
16
+ secondaryDisabled,
17
+ secondaryNotMinimal,
18
+ intent = Intent.PRIMARY,
19
+ secondaryIntent,
20
+ backText = "Back",
21
+ secondaryText = "Cancel",
22
+ additionalButtons,
23
+ className,
24
+ secondaryClassName = "",
25
+ text = "Submit",
26
+ disabled,
27
+ containerClassname,
28
+ noCancel
29
+ }) {
30
+ const divRef = useRef();
31
+ return (
32
+ <div
33
+ style={style}
34
+ ref={divRef}
35
+ className={classNames(Classes.DIALOG_FOOTER, containerClassname)}
36
+ >
37
+ <div className={Classes.DIALOG_FOOTER_ACTIONS}>
38
+ {onBackClick && (
39
+ <Button
40
+ className={Classes.MINIMAL + " " + secondaryClassName}
41
+ text={backText}
42
+ onClick={onBackClick}
43
+ />
44
+ )}
45
+ {!noCancel && (
46
+ <Button
47
+ intent={secondaryIntent}
48
+ disabled={secondaryDisabled}
49
+ className={
50
+ (!secondaryNotMinimal ? Classes.MINIMAL : "") +
51
+ " " +
52
+ secondaryClassName
53
+ }
54
+ text={secondaryText}
55
+ onClick={
56
+ secondaryAction ||
57
+ hideModal ||
58
+ function () {
59
+ try {
60
+ divRef.current
61
+ .closest(".bp3-dialog")
62
+ .querySelector(".bp3-dialog-close-button")
63
+ .click();
64
+ } catch (error) {
65
+ console.error(`error closing dialog:`, error);
66
+ }
67
+ }
68
+ }
69
+ />
70
+ )}
71
+ {additionalButtons}
72
+ <Button
73
+ text={text}
74
+ intent={intent}
75
+ type="submit"
76
+ className={className}
77
+ onClick={onClick}
78
+ disabled={disabled}
79
+ loading={loading || submitting}
80
+ />
81
+ </div>
82
+ </div>
83
+ );
84
+ }
85
+
86
+ export default DialogFooter;
@@ -0,0 +1,9 @@
1
+ .tg-dialog-footer-error {
2
+ display: flex;
3
+ justify-content: flex-end;
4
+ margin-top: 5;
5
+ }
6
+
7
+ .tg-dialog-footer-error .bp3-form-group {
8
+ margin-bottom: 0;
9
+ }