@quillsql/admin 1.6.0 → 1.6.1

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 (151) hide show
  1. package/dist/cjs/Admin.d.ts.map +1 -1
  2. package/dist/cjs/Admin.js +24 -11
  3. package/dist/cjs/AdminProvider.d.ts +2 -1
  4. package/dist/cjs/AdminProvider.d.ts.map +1 -1
  5. package/dist/cjs/AdminProvider.js +13 -24
  6. package/dist/cjs/api/ConnectionClient.d.ts +8 -0
  7. package/dist/cjs/api/ConnectionClient.d.ts.map +1 -1
  8. package/dist/cjs/api/ConnectionClient.js +42 -8
  9. package/dist/cjs/components/DashboardSelectPopover.d.ts.map +1 -1
  10. package/dist/cjs/components/DashboardSelectPopover.js +20 -3
  11. package/dist/cjs/components/DropDownMenuWithLabel.d.ts.map +1 -1
  12. package/dist/cjs/components/DropDownMenuWithLabel.js +4 -35
  13. package/dist/cjs/components/EmptyDashboardComponent/index.d.ts.map +1 -1
  14. package/dist/cjs/components/EmptyDashboardComponent/index.js +11 -9
  15. package/dist/cjs/components/QuillSelect.d.ts.map +1 -1
  16. package/dist/cjs/components/QuillSelect.js +2 -2
  17. package/dist/cjs/components/SegmentedControl.d.ts +4 -2
  18. package/dist/cjs/components/SegmentedControl.d.ts.map +1 -1
  19. package/dist/cjs/components/SegmentedControl.js +22 -16
  20. package/dist/cjs/components/SqlTextEditor.d.ts +9 -1
  21. package/dist/cjs/components/SqlTextEditor.d.ts.map +1 -1
  22. package/dist/cjs/components/SqlTextEditor.js +60 -12
  23. package/dist/cjs/components/UiComponents.d.ts.map +1 -1
  24. package/dist/cjs/components/UiComponents.js +11 -2
  25. package/dist/cjs/constants/dataTypes.d.ts +2 -0
  26. package/dist/cjs/constants/dataTypes.d.ts.map +1 -0
  27. package/dist/cjs/constants/dataTypes.js +21 -0
  28. package/dist/cjs/forms/client_onboard/ConnectDatabase.d.ts.map +1 -1
  29. package/dist/cjs/forms/client_onboard/ConnectDatabase.js +9 -17
  30. package/dist/cjs/forms/client_onboard/CreateSqlViews.d.ts.map +1 -1
  31. package/dist/cjs/forms/client_onboard/CreateSqlViews.js +24 -11
  32. package/dist/cjs/forms/sql_views/CreateEditSqlView.d.ts +4 -1
  33. package/dist/cjs/forms/sql_views/CreateEditSqlView.d.ts.map +1 -1
  34. package/dist/cjs/forms/sql_views/CreateEditSqlView.js +87 -36
  35. package/dist/cjs/modals/EditFiltersModal.d.ts.map +1 -1
  36. package/dist/cjs/modals/EditFiltersModal.js +13 -3
  37. package/dist/cjs/modals/NewDashboardModal.js +2 -2
  38. package/dist/cjs/modals/PromoteDashModal.js +2 -2
  39. package/dist/cjs/modals/PromoteViewModal.d.ts +2 -1
  40. package/dist/cjs/modals/PromoteViewModal.d.ts.map +1 -1
  41. package/dist/cjs/modals/PromoteViewModal.js +46 -36
  42. package/dist/cjs/primitives/TextInputPrimitive.d.ts +1 -0
  43. package/dist/cjs/primitives/TextInputPrimitive.d.ts.map +1 -1
  44. package/dist/cjs/primitives/TextInputPrimitive.js +35 -20
  45. package/dist/cjs/public_components/CreateEnvironment.d.ts +2 -1
  46. package/dist/cjs/public_components/CreateEnvironment.d.ts.map +1 -1
  47. package/dist/cjs/public_components/CreateEnvironment.js +4 -1
  48. package/dist/cjs/public_components/DashboardBuilder.d.ts.map +1 -1
  49. package/dist/cjs/public_components/DashboardBuilder.js +67 -156
  50. package/dist/cjs/public_components/DashboardManager.d.ts.map +1 -1
  51. package/dist/cjs/public_components/DashboardManager.js +72 -73
  52. package/dist/cjs/public_components/SQLViewManager.d.ts +1 -0
  53. package/dist/cjs/public_components/SQLViewManager.d.ts.map +1 -1
  54. package/dist/cjs/public_components/SQLViewManager.js +216 -40
  55. package/dist/cjs/utils/astProcessing.d.ts +2 -0
  56. package/dist/cjs/utils/astProcessing.d.ts.map +1 -0
  57. package/dist/cjs/utils/astProcessing.js +41 -0
  58. package/dist/cjs/utils/astProcessing.uspec.d.ts +2 -0
  59. package/dist/cjs/utils/astProcessing.uspec.d.ts.map +1 -0
  60. package/dist/cjs/utils/astProcessing.uspec.js +26 -0
  61. package/dist/cjs/utils/columnProcessing.d.ts +3 -0
  62. package/dist/cjs/utils/columnProcessing.d.ts.map +1 -0
  63. package/dist/cjs/utils/columnProcessing.js +42 -0
  64. package/dist/cjs/utils/dataEditor.d.ts +2 -2
  65. package/dist/cjs/utils/dataEditor.d.ts.map +1 -1
  66. package/dist/cjs/utils/dataEditor.js +4 -2
  67. package/dist/cjs/utils/databases.d.ts +0 -1
  68. package/dist/cjs/utils/databases.d.ts.map +1 -1
  69. package/dist/cjs/utils/databases.js +5 -6
  70. package/dist/cjs/utils/monacoAutocomplete.d.ts +21 -0
  71. package/dist/cjs/utils/monacoAutocomplete.d.ts.map +1 -0
  72. package/dist/cjs/utils/monacoAutocomplete.js +250 -0
  73. package/dist/cjs/utils/schema.d.ts +5 -0
  74. package/dist/cjs/utils/schema.d.ts.map +1 -1
  75. package/dist/cjs/utils/schema.js +129 -0
  76. package/dist/esm/Admin.d.ts.map +1 -1
  77. package/dist/esm/Admin.js +24 -11
  78. package/dist/esm/AdminProvider.d.ts +2 -1
  79. package/dist/esm/AdminProvider.d.ts.map +1 -1
  80. package/dist/esm/AdminProvider.js +13 -24
  81. package/dist/esm/api/ConnectionClient.d.ts +8 -0
  82. package/dist/esm/api/ConnectionClient.d.ts.map +1 -1
  83. package/dist/esm/api/ConnectionClient.js +42 -8
  84. package/dist/esm/components/DashboardSelectPopover.d.ts.map +1 -1
  85. package/dist/esm/components/DashboardSelectPopover.js +20 -3
  86. package/dist/esm/components/DropDownMenuWithLabel.d.ts.map +1 -1
  87. package/dist/esm/components/DropDownMenuWithLabel.js +4 -35
  88. package/dist/esm/components/EmptyDashboardComponent/index.d.ts.map +1 -1
  89. package/dist/esm/components/EmptyDashboardComponent/index.js +11 -9
  90. package/dist/esm/components/QuillSelect.d.ts.map +1 -1
  91. package/dist/esm/components/QuillSelect.js +2 -2
  92. package/dist/esm/components/SegmentedControl.d.ts +4 -2
  93. package/dist/esm/components/SegmentedControl.d.ts.map +1 -1
  94. package/dist/esm/components/SegmentedControl.js +22 -16
  95. package/dist/esm/components/SqlTextEditor.d.ts +9 -1
  96. package/dist/esm/components/SqlTextEditor.d.ts.map +1 -1
  97. package/dist/esm/components/SqlTextEditor.js +59 -11
  98. package/dist/esm/components/UiComponents.d.ts.map +1 -1
  99. package/dist/esm/components/UiComponents.js +12 -3
  100. package/dist/esm/constants/dataTypes.d.ts +2 -0
  101. package/dist/esm/constants/dataTypes.d.ts.map +1 -0
  102. package/dist/esm/constants/dataTypes.js +18 -0
  103. package/dist/esm/forms/client_onboard/ConnectDatabase.d.ts.map +1 -1
  104. package/dist/esm/forms/client_onboard/ConnectDatabase.js +9 -17
  105. package/dist/esm/forms/client_onboard/CreateSqlViews.d.ts.map +1 -1
  106. package/dist/esm/forms/client_onboard/CreateSqlViews.js +25 -12
  107. package/dist/esm/forms/sql_views/CreateEditSqlView.d.ts +4 -1
  108. package/dist/esm/forms/sql_views/CreateEditSqlView.d.ts.map +1 -1
  109. package/dist/esm/forms/sql_views/CreateEditSqlView.js +87 -36
  110. package/dist/esm/modals/EditFiltersModal.d.ts.map +1 -1
  111. package/dist/esm/modals/EditFiltersModal.js +13 -3
  112. package/dist/esm/modals/NewDashboardModal.js +2 -2
  113. package/dist/esm/modals/PromoteDashModal.js +2 -2
  114. package/dist/esm/modals/PromoteViewModal.d.ts +2 -1
  115. package/dist/esm/modals/PromoteViewModal.d.ts.map +1 -1
  116. package/dist/esm/modals/PromoteViewModal.js +50 -40
  117. package/dist/esm/primitives/TextInputPrimitive.d.ts +1 -0
  118. package/dist/esm/primitives/TextInputPrimitive.d.ts.map +1 -1
  119. package/dist/esm/primitives/TextInputPrimitive.js +33 -21
  120. package/dist/esm/public_components/CreateEnvironment.d.ts +2 -1
  121. package/dist/esm/public_components/CreateEnvironment.d.ts.map +1 -1
  122. package/dist/esm/public_components/CreateEnvironment.js +4 -1
  123. package/dist/esm/public_components/DashboardBuilder.d.ts.map +1 -1
  124. package/dist/esm/public_components/DashboardBuilder.js +68 -157
  125. package/dist/esm/public_components/DashboardManager.d.ts.map +1 -1
  126. package/dist/esm/public_components/DashboardManager.js +73 -74
  127. package/dist/esm/public_components/SQLViewManager.d.ts +1 -0
  128. package/dist/esm/public_components/SQLViewManager.d.ts.map +1 -1
  129. package/dist/esm/public_components/SQLViewManager.js +216 -42
  130. package/dist/esm/utils/astProcessing.d.ts +2 -0
  131. package/dist/esm/utils/astProcessing.d.ts.map +1 -0
  132. package/dist/esm/utils/astProcessing.js +37 -0
  133. package/dist/esm/utils/astProcessing.uspec.d.ts +2 -0
  134. package/dist/esm/utils/astProcessing.uspec.d.ts.map +1 -0
  135. package/dist/esm/utils/astProcessing.uspec.js +24 -0
  136. package/dist/esm/utils/columnProcessing.d.ts +3 -0
  137. package/dist/esm/utils/columnProcessing.d.ts.map +1 -0
  138. package/dist/esm/utils/columnProcessing.js +37 -0
  139. package/dist/esm/utils/dataEditor.d.ts +2 -2
  140. package/dist/esm/utils/dataEditor.d.ts.map +1 -1
  141. package/dist/esm/utils/dataEditor.js +4 -2
  142. package/dist/esm/utils/databases.d.ts +0 -1
  143. package/dist/esm/utils/databases.d.ts.map +1 -1
  144. package/dist/esm/utils/databases.js +5 -6
  145. package/dist/esm/utils/monacoAutocomplete.d.ts +21 -0
  146. package/dist/esm/utils/monacoAutocomplete.d.ts.map +1 -0
  147. package/dist/esm/utils/monacoAutocomplete.js +245 -0
  148. package/dist/esm/utils/schema.d.ts +5 -0
  149. package/dist/esm/utils/schema.d.ts.map +1 -1
  150. package/dist/esm/utils/schema.js +126 -1
  151. package/package.json +3 -2
@@ -1,3 +1,4 @@
1
+ import { ALL_INT_TYPES } from '../constants/dataTypes';
1
2
  import { QUILL_SERVER } from '../utils/constants';
2
3
  import { wrapInQuotes } from '../utils/textProcessing';
3
4
  export async function testConnectionString(connectionString, databaseType, clientId) {
@@ -183,6 +184,30 @@ export async function getSQLViews(tableSchemas, customerNameField) {
183
184
  }
184
185
  export async function getSqlViewData(clientId, query, databaseType, queryEndpoint) {
185
186
  const url = queryEndpoint ?? `${QUILL_SERVER}/sdk/query-view`;
187
+ let queryAst = undefined;
188
+ try {
189
+ let localURL = `${QUILL_SERVER}/astify`;
190
+ const response = await fetch(localURL, {
191
+ method: 'POST',
192
+ headers: {
193
+ 'Content-Type': 'application/json',
194
+ },
195
+ body: JSON.stringify({ query }),
196
+ });
197
+ queryAst = await response.json();
198
+ if (queryAst.success === false) {
199
+ return {
200
+ success: false,
201
+ error: queryAst.message,
202
+ };
203
+ }
204
+ }
205
+ catch (e) {
206
+ return {
207
+ success: false,
208
+ error: 'Invalid SQL Query',
209
+ };
210
+ }
186
211
  const response = await fetch(url, {
187
212
  method: 'POST',
188
213
  headers: {
@@ -225,9 +250,10 @@ export async function getSqlViewData(clientId, query, databaseType, queryEndpoin
225
250
  return queryEndpoint
226
251
  ? {
227
252
  ...results.data.queryResults[0],
253
+ ...queryAst,
228
254
  success: results.status === 'success' ? true : false,
229
255
  }
230
- : results;
256
+ : { ...results, ...queryAst };
231
257
  }
232
258
  export async function getQueryFromAI(aiPrompt, columnsByTable) {
233
259
  const localURL = `${QUILL_SERVER}/sdk/sql-generator`;
@@ -280,6 +306,12 @@ export async function createSQLView(connectionType, allSchemaInfo, columnsByTabl
280
306
  }
281
307
  });
282
308
  const queryAstRaw = await astResponse.json();
309
+ if (queryAstRaw.success === false) {
310
+ return {
311
+ success: false,
312
+ error: queryAstRaw.message,
313
+ };
314
+ }
283
315
  const queryAst = queryAstRaw.ast[0] ? queryAstRaw.ast[0] : queryAstRaw.ast;
284
316
  queryName = queryAst.from.map((ast) => ast.table).join('_');
285
317
  if (!override && !validQuery) {
@@ -300,13 +332,9 @@ export async function createSQLView(connectionType, allSchemaInfo, columnsByTabl
300
332
  const columns = columnsByTable.find((table) => table.tableName ===
301
333
  `${allSchemaInfo.selectedFields.schema}.${allSchemaInfo.selectedFields.table}`).columns;
302
334
  const customerFieldType = columns.find((column) => column.columnName === allSchemaInfo.selectedFields.organizationIdField).fieldType;
303
- const fuzzyType = customerFieldType === 'string' ||
304
- customerFieldType === 'uuid' ||
305
- customerFieldType === 'text' ||
306
- customerFieldType === 'varchar' ||
307
- customerFieldType === 'object'
308
- ? 'text'
309
- : 'number';
335
+ const fuzzyType = ALL_INT_TYPES.includes(customerFieldType.toLowerCase())
336
+ ? 'number'
337
+ : 'text';
310
338
  localURL = `${QUILL_SERVER}/sdk/create-environment`;
311
339
  const wrapQuotes = connectionType.type.toLocaleLowerCase() === 'postgresql' ||
312
340
  connectionType.type.toLocaleLowerCase() === 'snowflake';
@@ -348,6 +376,12 @@ export async function processCustomerOrgViewQuery(query, schema, clientId) {
348
376
  body: JSON.stringify({ query }),
349
377
  });
350
378
  const ast = await astResponse.json();
379
+ if (ast.success === false) {
380
+ return {
381
+ success: false,
382
+ error: ast.message,
383
+ };
384
+ }
351
385
  let fkInfo = [];
352
386
  // make sure ast.ast.columns only has to values
353
387
  let hasId = false;
@@ -1 +1 @@
1
- {"version":3,"file":"DashboardSelectPopover.d.ts","sourceRoot":"","sources":["../../../src/components/DashboardSelectPopover.tsx"],"names":[],"mappings":"AAIA,UAAU,2BAA2B;IACnC,UAAU,EAAE,GAAG,EAAE,CAAC;IAClB,YAAY,EAAE,CAAC,SAAS,EAAE,GAAG,KAAK,IAAI,CAAC;IACvC,SAAS,EAAE,GAAG,CAAC;IACf,KAAK,EAAE,GAAG,CAAC;IACX,wBAAwB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACtD,mBAAmB,EAAE,MAAM,IAAI,CAAC;CACjC;AAED,MAAM,CAAC,OAAO,UAAU,uBAAuB,CAAC,EAC9C,UAAU,EACV,YAAY,EACZ,SAAS,EACT,KAAK,EACL,wBAAwB,EACxB,mBAAmB,GACpB,EAAE,2BAA2B,2CAyN7B"}
1
+ {"version":3,"file":"DashboardSelectPopover.d.ts","sourceRoot":"","sources":["../../../src/components/DashboardSelectPopover.tsx"],"names":[],"mappings":"AAIA,UAAU,2BAA2B;IACnC,UAAU,EAAE,GAAG,EAAE,CAAC;IAClB,YAAY,EAAE,CAAC,SAAS,EAAE,GAAG,KAAK,IAAI,CAAC;IACvC,SAAS,EAAE,GAAG,CAAC;IACf,KAAK,EAAE,GAAG,CAAC;IACX,wBAAwB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACtD,mBAAmB,EAAE,MAAM,IAAI,CAAC;CACjC;AAED,MAAM,CAAC,OAAO,UAAU,uBAAuB,CAAC,EAC9C,UAAU,EACV,YAAY,EACZ,SAAS,EACT,KAAK,EACL,wBAAwB,EACxB,mBAAmB,GACpB,EAAE,2BAA2B,2CAwO7B"}
@@ -71,14 +71,18 @@ export default function DashboardSelectDropdown({ dashboards, setDashboard, dash
71
71
  width: 230,
72
72
  marginTop: 8,
73
73
  gap: 5,
74
+ overflowY: 'scroll',
74
75
  };
75
76
  const itemStyles = {
77
+ // padding: "10px",
76
78
  height: 42,
77
79
  paddingLeft: 10,
78
80
  paddingRight: 4,
81
+ paddingTop: 6,
82
+ paddingBottom: 6,
79
83
  cursor: 'pointer',
80
84
  fontSize: '14px',
81
- color: theme?.primaryTextColor,
85
+ color: theme.primaryTextColor,
82
86
  display: 'flex',
83
87
  flexDirection: 'row',
84
88
  alignItems: 'center',
@@ -114,7 +118,19 @@ export default function DashboardSelectDropdown({ dashboards, setDashboard, dash
114
118
  gap: 3,
115
119
  };
116
120
  const itemTextStyles = {
117
- // marginRight: "30px",
121
+ color: theme.primaryTextColor,
122
+ cursor: 'pointer',
123
+ fontSize: '13px',
124
+ border: '1px solid transparent',
125
+ display: 'flex',
126
+ flexDirection: 'row',
127
+ alignItems: 'center',
128
+ paddingLeft: 7,
129
+ paddingRight: 9,
130
+ paddingTop: 6,
131
+ paddingBottom: 6,
132
+ borderRadius: 4,
133
+ gap: 3,
118
134
  };
119
135
  return (_jsxs("div", { style: dropdownStyles, ref: popoverRef, children: [_jsx("button", {
120
136
  // onMouseEnter={() => setIsOpen(true)}
@@ -128,7 +144,6 @@ export default function DashboardSelectDropdown({ dashboards, setDashboard, dash
128
144
  : {}),
129
145
  textOverflow: 'ellipsis',
130
146
  whiteSpace: 'nowrap',
131
- overflow: 'hidden',
132
147
  }, onMouseEnter: () => setHoveredItemId(item.value), onMouseLeave: () => setHoveredItemId(null), children: [_jsx("span", { style: {
133
148
  ...itemTextStyles,
134
149
  textOverflow: 'ellipsis',
@@ -154,6 +169,8 @@ function CreateNewButton({ onClick, theme, }) {
154
169
  height: 42,
155
170
  paddingLeft: 10,
156
171
  paddingRight: 4,
172
+ paddingTop: 6,
173
+ paddingBottom: 6,
157
174
  cursor: 'pointer',
158
175
  fontSize: '14px',
159
176
  color: theme?.primaryTextColor,
@@ -1 +1 @@
1
- {"version":3,"file":"DropDownMenuWithLabel.d.ts","sourceRoot":"","sources":["../../../src/components/DropDownMenuWithLabel.tsx"],"names":[],"mappings":"AAIA,UAAU,0BAA0B;IAClC,KAAK,EAAE,GAAG,EAAE,CAAC;IACb,WAAW,EAAE,CAAC,QAAQ,EAAE,GAAG,KAAK,IAAI,CAAC;IACrC,QAAQ,EAAE,GAAG,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,GAAG,CAAC;CAChB;AAED,MAAM,CAAC,OAAO,UAAU,qBAAqB,CAAC,EAC5C,KAAK,EACL,WAAW,EACX,QAAQ,EACR,KAAK,EACL,KAAK,EACL,QAAgB,EAChB,kBAA8B,EAC9B,SAAS,GACV,EAAE,0BAA0B,2CA8E5B"}
1
+ {"version":3,"file":"DropDownMenuWithLabel.d.ts","sourceRoot":"","sources":["../../../src/components/DropDownMenuWithLabel.tsx"],"names":[],"mappings":"AAIA,UAAU,0BAA0B;IAClC,KAAK,EAAE,GAAG,EAAE,CAAC;IACb,WAAW,EAAE,CAAC,QAAQ,EAAE,GAAG,KAAK,IAAI,CAAC;IACrC,QAAQ,EAAE,GAAG,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,GAAG,CAAC;CAChB;AAED,MAAM,CAAC,OAAO,UAAU,qBAAqB,CAAC,EAC5C,KAAK,EACL,WAAW,EACX,QAAQ,EACR,KAAK,EACL,KAAK,EACL,QAAgB,EAChB,kBAA8B,EAC9B,SAAS,GACV,EAAE,0BAA0B,2CA6E5B"}
@@ -8,9 +8,9 @@ export default function DropdownMenuWithLabel({ items, setSelected, selected, th
8
8
  useEffect(() => {
9
9
  setFilteredItems(items.slice(0, 10));
10
10
  }, [items]);
11
- const handleSearchChange = (value) => {
12
- setSearchQuery(value);
13
- const curFilteredItems = searchQuery === ''
11
+ const handleSearchChange = (searchValue) => {
12
+ setSearchQuery(searchValue);
13
+ const curFilteredItems = searchValue === ''
14
14
  ? items.slice(0, 10)
15
15
  : items
16
16
  .filter((value) => {
@@ -20,7 +20,7 @@ export default function DropdownMenuWithLabel({ items, setSelected, selected, th
20
20
  return value
21
21
  .toLowerCase()
22
22
  .replace(/\s+/g, '')
23
- .includes(searchQuery.toLowerCase().replace(/\s+/g, ''));
23
+ .includes(searchValue.toLowerCase().replace(/\s+/g, ''));
24
24
  })
25
25
  .slice(0, 10);
26
26
  setFilteredItems(curFilteredItems);
@@ -74,34 +74,3 @@ function ListboxRow({ item, setSelected, setIsOpen, }) {
74
74
  display: 'block',
75
75
  }, children: item.name || item })] }));
76
76
  }
77
- function DropdownRow({ item, setSelected, }) {
78
- return (_jsxs("div", { onClick: setSelected ? () => setSelected(item) : undefined, className: "dropdown-row", children: [_jsx("style", { children: `
79
- .dropdown-row {
80
- background-color: white;
81
- height: 42px;
82
- color: #384151;
83
- width: 216px;
84
- borderBottom: 1px solid #e7e7e7;
85
- border-radius: 6px;
86
- text-align: left;
87
- padding-left: 10px;
88
- padding-right: 12px;
89
- display: flex;
90
- flex-direction: row;
91
- align-items: center;
92
- cursor: pointer;
93
- font-weight: 500;
94
- font-size: 14px;
95
- text-overflow: ellipsis;
96
- white-space: nowrap;
97
- overflow: hidden;
98
- }
99
- .dropdown-row:hover {
100
- background-color: rgba(56, 65, 81, 0.04);
101
- }` }), _jsx("div", { style: {
102
- textOverflow: 'ellipsis',
103
- whiteSpace: 'nowrap',
104
- overflow: 'hidden',
105
- display: 'block',
106
- }, children: item })] }));
107
- }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/EmptyDashboardComponent/index.tsx"],"names":[],"mappings":";AAEA,MAAM,CAAC,OAAO,UAAU,uBAAuB,IAAI,GAAG,CAAC,OAAO,CA+E7D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/EmptyDashboardComponent/index.tsx"],"names":[],"mappings":";AAGA,MAAM,CAAC,OAAO,UAAU,uBAAuB,IAAI,GAAG,CAAC,OAAO,CAoF7D"}
@@ -1,5 +1,6 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useAdmin } from '../../AdminProvider';
3
+ import { MemoizedButton } from '../UiComponents';
3
4
  export default function EmptyDashboardComponent() {
4
5
  const { state } = useAdmin();
5
6
  return (_jsx("div", { style: {
@@ -8,8 +9,6 @@ export default function EmptyDashboardComponent() {
8
9
  flexDirection: 'column',
9
10
  alignItems: 'center',
10
11
  }, children: _jsxs("div", { style: {
11
- height: 80,
12
- width: 260,
13
12
  borderRadius: 6,
14
13
  marginTop: 100,
15
14
  display: 'flex',
@@ -17,18 +16,17 @@ export default function EmptyDashboardComponent() {
17
16
  alignItems: 'center',
18
17
  justifyContent: 'center',
19
18
  gap: 20,
20
- }, className: "hover-dash-rect", onClick: () => {
21
- if (state.navigateToDashboardBuilder) {
22
- state.navigateToDashboardBuilder();
23
- }
24
- }, children: [_jsx("style", { children: ` .hover-dash-rect { background: white; border: 1px dashed #e7e7e7; } .hover-dash-rect:hover { background: white; box-shadow: 0px 1px 24px 0px rgba(0, 0, 0, 0.07); border: 1px solid #e7e7e7; } ` }), _jsxs("div", { style: {
19
+ padding: 16,
20
+ border: '1px solid #e7e7e7',
21
+ boxShadow: '0px 1px 12px rgba(0, 0, 0, 0.07)',
22
+ }, children: [_jsxs("div", { style: {
25
23
  display: 'flex',
26
24
  flexDirection: 'row',
27
25
  alignItems: 'center',
28
26
  justifyContent: 'center',
29
27
  width: 260,
30
28
  }, children: [_jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "#565656", height: 26, width: 26, children: [_jsx("path", { fillRule: "evenodd", d: "M2.25 13.5a8.25 8.25 0 0 1 8.25-8.25.75.75 0 0 1 .75.75v6.75H18a.75.75 0 0 1 .75.75 8.25 8.25 0 0 1-16.5 0Z", clipRule: "evenodd" }), _jsx("path", { fillRule: "evenodd", d: "M12.75 3a.75.75 0 0 1 .75-.75 8.25 8.25 0 0 1 8.25 8.25.75.75 0 0 1-.75.75h-7.5a.75.75 0 0 1-.75-.75V3Z", clipRule: "evenodd" })] }), _jsx("div", { style: {
31
- fontSize: 14,
29
+ fontSize: 16,
32
30
  fontWeight: 500,
33
31
  color: '#565656',
34
32
  // border: '1px solid #e7e7e7',
@@ -38,5 +36,9 @@ export default function EmptyDashboardComponent() {
38
36
  paddingLeft: 12,
39
37
  borderRadius: 4,
40
38
  cursor: 'pointer',
41
- }, className: "quill-hover-button", children: "Create your first chart" })] })] }) }));
39
+ }, className: "quill-hover-button", children: "No charts created yet." })] }), _jsx("div", { style: { paddingBottom: 8 }, children: _jsx(MemoizedButton, { label: 'Create chart', style: { fontSize: 14 }, onClick: () => {
40
+ if (state.navigateToDashboardBuilder) {
41
+ state.navigateToDashboardBuilder();
42
+ }
43
+ } }) })] }) }));
42
44
  }
@@ -1 +1 @@
1
- {"version":3,"file":"QuillSelect.d.ts","sourceRoot":"","sources":["../../../src/components/QuillSelect.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAItD,wBAAgB,oBAAoB,CAAC,EACnC,OAAO,EACP,KAAK,EACL,QAAQ,EACR,KAAoB,EACpB,KAAK,GACN,EAAE,oBAAoB,2CAuMtB"}
1
+ {"version":3,"file":"QuillSelect.d.ts","sourceRoot":"","sources":["../../../src/components/QuillSelect.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAItD,wBAAgB,oBAAoB,CAAC,EACnC,OAAO,EACP,KAAK,EACL,QAAQ,EACR,KAAoB,EACpB,KAAK,GACN,EAAE,oBAAoB,2CAwMtB"}
@@ -45,7 +45,7 @@ export function QuillSelectComponent({ options, value, onChange, theme = default
45
45
  textOverflow: 'ellipsis',
46
46
  whiteSpace: 'nowrap',
47
47
  overflow: 'hidden',
48
- }, children: options.find((elem) => elem.value === value)?.label || 'Select' }), _jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 20 20", fill: "currentColor", "aria-hidden": "true", "data-slot": "icon", height: 20, width: 20, style: { minHeight: 20, minWidth: 20 }, children: _jsx("path", { fillRule: "evenodd", d: "M5.22 8.22a.75.75 0 0 1 1.06 0L10 11.94l3.72-3.72a.75.75 0 1 1 1.06 1.06l-4.25 4.25a.75.75 0 0 1-1.06 0L5.22 9.28a.75.75 0 0 1 0-1.06Z", clipRule: "evenodd" }) })] }), showModal && (_jsxs("div", { ref: modalRef, style: {
48
+ }, children: options.find((elem) => elem.value === value)?.label || 'Select' }), _jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 20 20", fill: "currentColor", "aria-hidden": "true", "data-slot": "icon", height: 20, width: 20, style: { minHeight: 20, minWidth: 20 }, children: _jsx("path", { fillRule: "evenodd", d: "M5.22 8.22a.75.75 0 0 1 1.06 0L10 11.94l3.72-3.72a.75.75 0 1 1 1.06 1.06l-4.25 4.25a.75.75 0 0 1-1.06 0L5.22 9.28a.75.75 0 0 1 0-1.06Z", clipRule: "evenodd" }) })] }), showModal && (_jsxs("div", { id: "quillSelectPopover", ref: modalRef, style: {
49
49
  position: 'absolute',
50
50
  width: '100%',
51
51
  display: 'flex',
@@ -64,7 +64,7 @@ export function QuillSelectComponent({ options, value, onChange, theme = default
64
64
  paddingRight: 6,
65
65
  boxShadow: '0px 1px 12px 0px rgba(56, 65, 81, 0.1)',
66
66
  fontFamily: theme.fontFamily,
67
- maxHeight: '50vh',
67
+ maxHeight: '40vh',
68
68
  overflow: 'scroll',
69
69
  }, children: [_jsxs("button", { style: {
70
70
  display: 'flex',
@@ -1,7 +1,9 @@
1
1
  import { QuillTheme } from '@quillsql/react';
2
- export declare function SegmentedControl({ onChange, value, theme, }: {
2
+ export declare function SegmentedControl({ onChange, value, theme, left, right, }: {
3
3
  onChange: (e: any) => void;
4
4
  value: string;
5
- theme: QuillTheme;
5
+ theme?: QuillTheme;
6
+ left?: string;
7
+ right?: string;
6
8
  }): import("react/jsx-runtime").JSX.Element;
7
9
  //# sourceMappingURL=SegmentedControl.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SegmentedControl.d.ts","sourceRoot":"","sources":["../../../src/components/SegmentedControl.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,wBAAgB,gBAAgB,CAAC,EAC/B,QAAQ,EACR,KAAK,EACL,KAAK,GACN,EAAE;IACD,QAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,UAAU,CAAC;CACnB,2CA0EA"}
1
+ {"version":3,"file":"SegmentedControl.d.ts","sourceRoot":"","sources":["../../../src/components/SegmentedControl.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,wBAAgB,gBAAgB,CAAC,EAC/B,QAAQ,EACR,KAAK,EACL,KAAK,EACL,IAAgB,EAChB,KAAqB,GACtB,EAAE;IACD,QAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,2CA2EA"}
@@ -1,5 +1,7 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- export function SegmentedControl({ onChange, value, theme, }) {
2
+ import { useState } from 'react';
3
+ export function SegmentedControl({ onChange, value, theme, left = 'Default', right = 'Multiselect', }) {
4
+ const [leftSelected, setLeftSelected] = useState(value === 'default' ? true : false);
3
5
  return (_jsxs("div", { style: {
4
6
  display: 'flex',
5
7
  flexDirection: 'row',
@@ -9,42 +11,46 @@ export function SegmentedControl({ onChange, value, theme, }) {
9
11
  padding: 4,
10
12
  borderRadius: 6,
11
13
  height: 40,
12
- }, children: [_jsx("button", { className: "quill-tab", onClick: () => onChange('default'), style: {
13
- border: value === 'default' ? '1px solid #E7E7E7' : '1px solid transparent',
14
+ }, children: [_jsx("button", { className: "quill-tab", onClick: () => {
15
+ setLeftSelected(true);
16
+ onChange(left.toLowerCase());
17
+ }, style: {
18
+ border: leftSelected ? '1px solid #E7E7E7' : '1px solid transparent',
14
19
  outline: 'none',
15
20
  width: '100%',
16
21
  borderRadius: 4,
17
22
  padding: 10,
18
- boxShadow: value === 'default'
23
+ boxShadow: leftSelected
19
24
  ? '0px 1px 4px 0px rgba(56, 65, 81, 0.08)'
20
25
  : undefined,
21
- color: value === 'default'
26
+ color: leftSelected
22
27
  ? 'rgba(56, 65, 81, 1)'
23
28
  : 'rgba(56, 65, 81, 0.85)',
24
- fontWeight: value === 'default' ? 600 : 500,
29
+ fontWeight: leftSelected ? 600 : 500,
25
30
  fontSize: 14,
26
31
  fontFamily: theme?.fontFamily,
27
32
  height: '40px',
28
33
  boxSizing: 'border-box',
29
- backgroundColor: value === 'default' ? 'white' : 'transparent',
30
- }, children: 'Default' }), _jsx("button", { className: "quill-tab2", onClick: () => onChange('multiselect'), style: {
31
- border: value === 'multiselect'
32
- ? '1px solid #E7E7E7'
33
- : '1px solid transparent',
34
- boxShadow: value === 'multiselect'
34
+ backgroundColor: leftSelected ? 'white' : 'transparent',
35
+ }, children: left }), _jsx("button", { className: "quill-tab2", onClick: () => {
36
+ setLeftSelected(false);
37
+ onChange(right.toLowerCase());
38
+ }, style: {
39
+ border: !leftSelected ? '1px solid #E7E7E7' : '1px solid transparent',
40
+ boxShadow: !leftSelected
35
41
  ? '0px 1px 4px 0px rgba(56, 65, 81, 0.08)'
36
42
  : undefined,
37
43
  outline: 'none',
38
44
  width: '100%',
39
45
  borderRadius: 4,
40
- color: value === 'multiselect'
46
+ color: !leftSelected
41
47
  ? 'rgba(56, 65, 81, 1)'
42
48
  : 'rgba(56, 65, 81, 0.85)',
43
49
  padding: 10,
44
- fontWeight: value === 'multiselect' ? 600 : 500,
50
+ fontWeight: !leftSelected ? 600 : 500,
45
51
  fontSize: 14,
46
52
  fontFamily: theme?.fontFamily,
47
53
  height: '40px',
48
- backgroundColor: value === 'multiselect' ? 'white' : 'transparent',
49
- }, children: 'Multiselect' })] }));
54
+ backgroundColor: !leftSelected ? 'white' : 'transparent',
55
+ }, children: right })] }));
50
56
  }
@@ -1,7 +1,15 @@
1
1
  import { CSSProperties } from 'react';
2
- export default function SqlTextEditor({ containerStyle, value, setValue, }: {
2
+ import { IDisposable } from 'monaco-editor';
3
+ import { ColumnsByTable } from '../utils/table';
4
+ export default function SqlTextEditor({ containerStyle, value, setValue, setEditorMounted, setPreviousProvier, previousProvider, schema, height, databaseType, }: {
3
5
  containerStyle?: CSSProperties;
4
6
  value: string;
5
7
  setValue: (e: string) => void;
8
+ setEditorMounted: (e: boolean) => void;
9
+ setPreviousProvier?: (e: IDisposable | null) => void;
10
+ height?: string | number;
11
+ schema: ColumnsByTable[];
12
+ databaseType?: string;
13
+ previousProvider: IDisposable | null;
6
14
  }): import("react/jsx-runtime").JSX.Element;
7
15
  //# sourceMappingURL=SqlTextEditor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SqlTextEditor.d.ts","sourceRoot":"","sources":["../../../src/components/SqlTextEditor.tsx"],"names":[],"mappings":"AACA,OAAc,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AA+B7C,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,EACpC,cAAc,EACd,KAAK,EACL,QAAQ,GACT,EAAE;IACD,cAAc,CAAC,EAAE,aAAa,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/B,2CAwBA"}
1
+ {"version":3,"file":"SqlTextEditor.d.ts","sourceRoot":"","sources":["../../../src/components/SqlTextEditor.tsx"],"names":[],"mappings":"AACA,OAAc,EAAE,aAAa,EAAuB,MAAM,OAAO,CAAC;AAElE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AA+DhD,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,EACpC,cAAc,EACd,KAAK,EACL,QAAQ,EACR,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,MAAM,EACN,MAAgB,EAChB,YAA2B,GAC5B,EAAE;IACD,cAAc,CAAC,EAAE,aAAa,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,gBAAgB,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,kBAAkB,CAAC,EAAE,CAAC,CAAC,EAAE,WAAW,GAAG,IAAI,KAAK,IAAI,CAAC;IACrD,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,WAAW,GAAG,IAAI,CAAC;CACtC,2CAsEA"}
@@ -1,5 +1,10 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
3
+ import { useEffect, useState } from 'react';
2
4
  import MonacoEditor from '@monaco-editor/react';
5
+ import { Resizable } from 're-resizable';
6
+ import { generateSuggestionsByDatasource, generateSuggestionsBySchema, } from '../utils/monacoAutocomplete';
7
+ import { LoadingSpinner } from './UiComponents';
3
8
  function defineEditorTheme(monaco) {
4
9
  monaco.editor.defineTheme('onedark', {
5
10
  base: 'vs',
@@ -17,22 +22,65 @@ function defineEditorTheme(monaco) {
17
22
  },
18
23
  });
19
24
  }
20
- function setEditorTheme(_editor, monaco) {
25
+ function setEditorTheme(_editor, monaco, schema, databaseType) {
21
26
  try {
22
27
  monaco.editor.setTheme('onedark');
28
+ monaco.languages.register({ id: 'quill' });
29
+ const provider = monaco.languages.registerCompletionItemProvider('quill', {
30
+ provideCompletionItems: function (model, position) {
31
+ const word = model.getWordUntilPosition(position);
32
+ const range = new monaco.Range(position.lineNumber, word.startColumn, position.lineNumber, word.endColumn);
33
+ const databaseSuggestions = generateSuggestionsByDatasource(monaco, range, databaseType);
34
+ const schemaSuggestions = generateSuggestionsBySchema(schema, monaco, range, databaseType);
35
+ return { suggestions: [...databaseSuggestions, ...schemaSuggestions] };
36
+ },
37
+ });
38
+ return provider;
23
39
  }
24
40
  catch (e) {
25
41
  console.log('ERROR: ', e);
42
+ return null;
26
43
  }
27
44
  }
28
- export default function SqlTextEditor({ containerStyle, value, setValue, }) {
29
- return (_jsx("div", { style: { ...containerStyle }, children: _jsx(MonacoEditor, { height: "224px", defaultLanguage: "pgsql", defaultValue: "", value: value, loading: _jsx("div", {}), options: {
30
- wordWrap: 'on',
31
- minimap: {
32
- enabled: false,
33
- },
34
- padding: { top: 16 },
35
- }, onChange: (query) => {
36
- setValue(query);
37
- }, beforeMount: (monaco) => defineEditorTheme(monaco), onMount: setEditorTheme }) }));
45
+ export default function SqlTextEditor({ containerStyle, value, setValue, setEditorMounted, setPreviousProvier, previousProvider, schema, height = '224px', databaseType = 'postgresql', }) {
46
+ const [editorKey, setEditorKey] = useState(0);
47
+ useEffect(() => {
48
+ if (previousProvider) {
49
+ previousProvider.dispose();
50
+ }
51
+ }, []);
52
+ useEffect(() => {
53
+ if (schema && schema.length !== 0 && editorKey === 0) {
54
+ setEditorKey((prevKey) => prevKey + 1);
55
+ }
56
+ }, [schema]);
57
+ return (_jsx("div", { style: { ...containerStyle }, children: _jsx(Resizable, { defaultSize: {
58
+ width: 'auto',
59
+ height: 224,
60
+ }, minHeight: "100px", maxHeight: "800px", maxWidth: '100%', enable: {
61
+ top: true,
62
+ right: false,
63
+ bottom: true,
64
+ left: false,
65
+ topRight: false,
66
+ bottomRight: false,
67
+ bottomLeft: false,
68
+ topLeft: false,
69
+ }, children: _jsx(MonacoEditor
70
+ // height={height}
71
+ , { defaultLanguage: "quill", defaultValue: "", language: "quill", value: value, loading: _jsx(LoadingSpinner, {}), options: {
72
+ wordWrap: 'on',
73
+ minimap: {
74
+ enabled: false,
75
+ },
76
+ padding: { top: 16 },
77
+ }, onChange: (query) => {
78
+ setValue(query);
79
+ }, beforeMount: (monaco) => defineEditorTheme(monaco), onMount: (_editor, monaco) => {
80
+ const disposable = setEditorTheme(_editor, monaco, schema, databaseType);
81
+ if (setPreviousProvier) {
82
+ setPreviousProvier(disposable);
83
+ }
84
+ setEditorMounted(true);
85
+ } }, editorKey) }) }));
38
86
  }
@@ -1 +1 @@
1
- {"version":3,"file":"UiComponents.d.ts","sourceRoot":"","sources":["../../../src/components/UiComponents.tsx"],"names":[],"mappings":"AACA,OAAc,EACZ,SAAS,EAIT,aAAa,EACd,MAAM,OAAO,CAAC;AAKf,MAAM,WAAW,MAAM;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,OAAO,EAAE,GAAG,EAAE,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,GAAG,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACrC,KAAK,CAAC,EAAE,GAAG,CAAC;CACb;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,GAAG,CAAC;CACf;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,GAAG,CAAC;CACf;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,GAAG,CAAC;CACf;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,EAAE,GAAG,CAAC;CACZ;AAED,eAAO,MAAM,iBAAiB,iDAM3B,uBAAuB,4CAkCzB,CAAC;AAEF,eAAO,MAAM,cAAc;;;;;;;6CA2C1B,CAAC;AAEF,eAAO,MAAM,uBAAuB;;;;6CAyCnC,CAAC;AAEF,eAAO,MAAM,cAAc;;6CAa1B,CAAC;AAEF,eAAO,MAAM,aAAa;;6CAYzB,CAAC;AAEF,eAAO,MAAM,YAAY;;6CAYxB,CAAC;AAEF,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,GAAG,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,CAAC,EAAE,GAAG,CAAC;IAChB,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;CACtC;AAED,wBAAgB,eAAe,CAAC,EAC9B,OAAO,EACP,SAAS,EACT,QAAQ,EACR,KAAU,EACV,OAAO,EACP,KAAK,EACL,WAAkB,EAClB,MAAM,EACN,SAAS,GACV;;;;;;;;;;CAAA,2CA4DA;AAED,wBAAgB,aAAa,CAAC,EAC5B,MAAM,EACN,SAAS,EACT,KAAK,EACL,QAAQ,EACR,KAAK,EACL,MAAM,GACP,EAAE;IACD,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,SAAS,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,GAAG,CAAC,OAAO,CAwFd;AAED,eAAO,MAAM,oBAAoB;;;6CA0BhC,CAAC;AAEF,eAAO,MAAM,cAAc;;6CA6C1B,CAAC"}
1
+ {"version":3,"file":"UiComponents.d.ts","sourceRoot":"","sources":["../../../src/components/UiComponents.tsx"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  //@ts-nocheck
3
- import { useContext, useRef, } from 'react';
3
+ import { useContext, useEffect, useRef, } from 'react';
4
4
  import { XIcon } from '../assets';
5
5
  import { ThemeContext } from '@quillsql/react';
6
6
  import useOnClickOutside from '../hooks/useOnClickOutside';
@@ -131,6 +131,16 @@ export function MemoizedPopover({ onClose, parentRef, children, style = {}, onCl
131
131
  }
132
132
  export function MemoizedModal({ isOpen, setIsOpen, title, children, width, height, }) {
133
133
  const [theme] = useContext(ThemeContext);
134
+ useEffect(() => {
135
+ // Prevent scrolling in the background when the modal is open
136
+ if (isOpen) {
137
+ document.body.style.overflow = 'hidden';
138
+ }
139
+ return () => {
140
+ // Re-enable scrolling when the modal is closed/unmounted
141
+ document.body.style.overflow = 'unset';
142
+ };
143
+ }, [isOpen]);
134
144
  if (!isOpen) {
135
145
  return null;
136
146
  }
@@ -157,9 +167,9 @@ export function MemoizedModal({ isOpen, setIsOpen, title, children, width, heigh
157
167
  borderStyle: 'solid',
158
168
  borderWidth: 1,
159
169
  borderColor: '#e7e7e7',
160
- overflow: 'scroll',
161
170
  width: width ?? 'auto',
162
171
  height: height ?? 'auto',
172
+ overflow: 'auto',
163
173
  maxWidth: 'calc(100vw - 82px)',
164
174
  maxHeight: 'calc(100vh - 82px)',
165
175
  }, children: _jsxs("div", { style: {
@@ -167,7 +177,6 @@ export function MemoizedModal({ isOpen, setIsOpen, title, children, width, heigh
167
177
  width: '100%',
168
178
  maxWidth: 'calc(100vw - 82px)',
169
179
  maxHeight: 'calc(100vh - 82px)',
170
- overflowY: 'scroll',
171
180
  backgroundColor: '#ffffff',
172
181
  display: 'flex',
173
182
  flexDirection: 'column',
@@ -0,0 +1,2 @@
1
+ export declare const ALL_INT_TYPES: string[];
2
+ //# sourceMappingURL=dataTypes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dataTypes.d.ts","sourceRoot":"","sources":["../../../src/constants/dataTypes.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa,UAiBzB,CAAC"}
@@ -0,0 +1,18 @@
1
+ export const ALL_INT_TYPES = [
2
+ 'int4',
3
+ 'int8',
4
+ 'int2',
5
+ 'integer',
6
+ 'bigint',
7
+ 'smallint',
8
+ 'tinyint',
9
+ 'byteint',
10
+ 'real',
11
+ 'double precision',
12
+ 'smallserial',
13
+ 'serial',
14
+ 'bigserial',
15
+ 'serial4',
16
+ 'serial8',
17
+ 'serial2',
18
+ ];
@@ -1 +1 @@
1
- {"version":3,"file":"ConnectDatabase.d.ts","sourceRoot":"","sources":["../../../../src/forms/client_onboard/ConnectDatabase.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,aAAa,EAAoB,MAAM,OAAO,CAAC;AAG/D,OAAO,EACL,eAAe,EACf,cAAc,EAIf,MAAM,uBAAuB,CAAC;AAK/B,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGnD,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,EACtC,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,qBAAqB,EACrB,kBAAkB,EAClB,WAAgB,GACjB,EAAE;IACD,cAAc,CAAC,EAAE,aAAa,CAAC;IAC/B,YAAY,CAAC,EAAE,aAAa,CAAC;IAC7B,YAAY,CAAC,EAAE,aAAa,CAAC;IAC7B,kBAAkB,CAAC,EAAE,cAAc,CAAC;IACpC,qBAAqB,EAAE,CACrB,cAAc,CAAC,EAAE,cAAc,EAC/B,aAAa,CAAC,EAAE,aAAa,EAC7B,WAAW,CAAC,EAAE,eAAe,EAC7B,QAAQ,CAAC,EAAE,MAAM,KACd,IAAI,CAAC;IACV,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,2CAwYA"}
1
+ {"version":3,"file":"ConnectDatabase.d.ts","sourceRoot":"","sources":["../../../../src/forms/client_onboard/ConnectDatabase.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,aAAa,EAAoB,MAAM,OAAO,CAAC;AAG/D,OAAO,EACL,eAAe,EACf,cAAc,EAIf,MAAM,uBAAuB,CAAC;AAK/B,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGnD,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,EACtC,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,qBAAqB,EACrB,kBAAkB,EAClB,WAAgB,GACjB,EAAE;IACD,cAAc,CAAC,EAAE,aAAa,CAAC;IAC/B,YAAY,CAAC,EAAE,aAAa,CAAC;IAC7B,YAAY,CAAC,EAAE,aAAa,CAAC;IAC7B,kBAAkB,CAAC,EAAE,cAAc,CAAC;IACpC,qBAAqB,EAAE,CACrB,cAAc,CAAC,EAAE,cAAc,EAC/B,aAAa,CAAC,EAAE,aAAa,EAC7B,WAAW,CAAC,EAAE,eAAe,EAC7B,QAAQ,CAAC,EAAE,MAAM,KACd,IAAI,CAAC;IACV,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,2CAsXA"}