@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
@@ -12,7 +12,11 @@ const SqlTextEditor_1 = __importDefault(require("../../components/SqlTextEditor"
12
12
  const UiComponents_1 = require("../../components/UiComponents");
13
13
  const CreateSqlViews_1 = require("../client_onboard/CreateSqlViews");
14
14
  const DynamicBanner_1 = __importDefault(require("../../components/DynamicBanner"));
15
- function CreateEditSqlView({ containerStyle, initialSqlView, closeEditView, addEditView, SecondaryButtonComponent, LoadingComponent = () => (0, jsx_runtime_1.jsx)(UiComponents_1.LoadingSpinner, {}), Button = UiComponents_1.MemoizedButton, TextInput = UiComponents_1.MemoizedTextInput, Header = UiComponents_1.MemoizedHeader, allTableData, schemaIsLoading, }) {
15
+ const SQLViewManager_1 = require("../../public_components/SQLViewManager");
16
+ const columnProcessing_1 = require("../../utils/columnProcessing");
17
+ const astProcessing_1 = require("../../utils/astProcessing");
18
+ const constants_1 = require("../../utils/constants");
19
+ function CreateEditSqlView({ containerStyle, initialSqlView, closeEditView, addEditView, setProvider, provider, SecondaryButtonComponent, LoadingComponent = () => (0, jsx_runtime_1.jsx)(UiComponents_1.LoadingSpinner, {}), Button = UiComponents_1.MemoizedButton, TextInput = UiComponents_1.MemoizedTextInput, Header = UiComponents_1.MemoizedHeader, allTableData, schemaIsLoading, }) {
16
20
  const [name, setName] = (0, react_2.useState)(initialSqlView?.name || '');
17
21
  const [editViewQuery, setEditViewQuery] = (0, react_2.useState)(initialSqlView?.query || '');
18
22
  const [ranViewQuery, setRanViewQuery] = (0, react_2.useState)(initialSqlView?.query || '');
@@ -24,6 +28,7 @@ function CreateEditSqlView({ containerStyle, initialSqlView, closeEditView, addE
24
28
  const [overrideFKCheck, setOverrideFKCheck] = (0, react_2.useState)(false);
25
29
  const [isLoading, setIsLoading] = (0, react_2.useState)(false);
26
30
  const [tableSearchQuery, setTableSearchQuery] = (0, react_2.useState)('');
31
+ const [editorMounted, setEditorMounted] = (0, react_2.useState)(false);
27
32
  const [displayedTableData, setDisplayedTableData] = (0, react_2.useState)(allTableData);
28
33
  const [errorInfo, setErrorInfo] = (0, react_2.useState)({ show: false, message: '' });
29
34
  const [tableData, setTableData] = (0, react_2.useState)(undefined);
@@ -51,15 +56,17 @@ function CreateEditSqlView({ containerStyle, initialSqlView, closeEditView, addE
51
56
  };
52
57
  const handleClickSchemaItem = async (event) => {
53
58
  const name = event.target.textContent;
54
- if (editViewQuery && editViewQuery.length > 0) {
55
- await navigator.clipboard.writeText(name || '');
59
+ if (!name) {
60
+ return;
56
61
  }
57
- else {
58
- setEditViewQuery(`SELECT * FROM ${name}`);
62
+ const newQuery = `SELECT * FROM ${(0, columnProcessing_1.processColumnReference)(name, state.client.databaseType)};`;
63
+ if (!editViewQuery || editViewQuery.length === 0) {
64
+ setEditViewQuery(newQuery);
59
65
  }
66
+ await navigator.clipboard.writeText(newQuery);
60
67
  };
61
- const handleRunQuery = async () => {
62
- const query = editViewQuery;
68
+ const handleRunQuery = async (overrideQuery) => {
69
+ const query = overrideQuery ? overrideQuery : editViewQuery;
63
70
  // If this query has a limit at the end alert the user
64
71
  if (/limit\s+\d+\s*;?\s*$/i.test(query)) {
65
72
  setErrorInfo({
@@ -74,7 +81,7 @@ function CreateEditSqlView({ containerStyle, initialSqlView, closeEditView, addE
74
81
  setIsLoading(true);
75
82
  setRunQueryButtonLoading(true);
76
83
  setOverrideFKCheck(false);
77
- if (editViewQuery.length === 0) {
84
+ if (query.length === 0) {
78
85
  setErrorInfo({ show: true, message: 'Error: Please enter a query.' });
79
86
  setRunQueryButtonLoading(false);
80
87
  return;
@@ -93,13 +100,39 @@ function CreateEditSqlView({ containerStyle, initialSqlView, closeEditView, addE
93
100
  // stringify all rows that are either jsonb or json
94
101
  resp.rows = resp.rows.map((row) => {
95
102
  for (const key in row) {
96
- if (typeof row[key] === 'object') {
103
+ if (row[key] !== null && typeof row[key] === 'object') {
97
104
  row[key] = JSON.stringify(row[key]);
98
105
  }
99
106
  }
100
107
  return row;
101
108
  });
102
- setTableData(resp);
109
+ const duplicateColumns = (0, SQLViewManager_1.getDuplicateColumns)(resp.fields);
110
+ if (duplicateColumns.length > 0) {
111
+ let parsedAST = resp.ast;
112
+ if (Array.isArray(resp.ast)) {
113
+ parsedAST = [0];
114
+ }
115
+ const tableNames = parsedAST.from.map((table) => {
116
+ const db = table.db ? `${table.db}.` : '';
117
+ return `${db}${table.table}`;
118
+ });
119
+ const newAst = (0, astProcessing_1.processJoinASTWithDuplicateColumns)(duplicateColumns, tableNames, allTableData, parsedAST);
120
+ const response = await fetch(`${constants_1.QUILL_SERVER}/sqlify`, {
121
+ method: 'POST',
122
+ headers: {
123
+ 'Content-Type': 'application/json',
124
+ },
125
+ body: JSON.stringify({
126
+ ast: { ...newAst },
127
+ publicKey: state.client._id,
128
+ }),
129
+ });
130
+ const jsonResponse = await response.json();
131
+ setEditViewQuery(jsonResponse.query);
132
+ await handleRunQuery(jsonResponse.query);
133
+ return;
134
+ }
135
+ setTableData({ fields: resp.fields, rows: resp.rows });
103
136
  setViewAddable(true);
104
137
  setRanViewQuery(query);
105
138
  setIsLoading(false);
@@ -107,7 +140,7 @@ function CreateEditSqlView({ containerStyle, initialSqlView, closeEditView, addE
107
140
  return ((0, jsx_runtime_1.jsx)("div", { style: {
108
141
  ...containerStyle,
109
142
  gap: 6,
110
- height: 'calc(100vh - 188px)',
143
+ height: 'calc(100vh - 130px)',
111
144
  }, children: (0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex', height: '100%', flexDirection: 'column' }, children: [(0, jsx_runtime_1.jsx)(DynamicBanner_1.default, { header: initialSqlView
112
145
  ? `Edit "${initialSqlView.name}" view`
113
146
  : 'Create SQL View', message: initialSqlView
@@ -143,35 +176,53 @@ function CreateEditSqlView({ containerStyle, initialSqlView, closeEditView, addE
143
176
  gap: 20,
144
177
  flexDirection: 'column',
145
178
  width: 'calc(100% - 250px)',
146
- height: '100%',
179
+ maxHeight: '100%',
147
180
  overflowX: 'hidden',
148
181
  paddingRight: '24px',
149
182
  }, children: [(0, jsx_runtime_1.jsxs)("div", { style: {
150
- display: 'flex',
151
- flexDirection: 'row',
152
- alignItems: 'flex-start',
153
- justifyContent: 'space-between',
183
+ overflow: 'auto',
154
184
  gap: 20,
155
- width: '100%',
156
- }, children: [(0, jsx_runtime_1.jsx)(TextInput, { onChange: (e) => {
157
- setAIPrompt(e.target.value);
158
- }, placeholder: 'Describe a query...', value: aiPrompt, id: 'ai-prompt', width: '100%' }), (0, jsx_runtime_1.jsx)(Button, { label: 'Ask AI', isLoading: askAIButtonLoading, onClick: handleRunSqlPrompt })] }), (0, jsx_runtime_1.jsx)(SqlTextEditor_1.default, { value: editViewQuery, setValue: (e) => {
159
- setEditViewQuery(e);
160
- } }), (0, jsx_runtime_1.jsx)("div", { style: { width: '200px' }, children: (0, jsx_runtime_1.jsx)(Button, { label: 'Run query', isLoading: runQueryButtonLoading, onClick: handleRunQuery }) }), errorInfo.show ? ((0, jsx_runtime_1.jsx)("div", { style: {
161
- fontSize: 15,
162
- fontWeight: '400',
163
- }, children: (0, jsx_runtime_1.jsx)("div", { style: {
164
- padding: 30,
165
- background: 'rgba(0,0,0,0.02)',
166
- display: 'inline-block',
167
- flex: 0,
168
- borderRadius: 6,
169
- }, children: errorInfo.message }) })) : null, isLoading && ((0, jsx_runtime_1.jsx)("div", { style: {
170
- height: 'calc(100vh - 589px)',
171
- width: '100%',
172
185
  display: 'flex',
173
- justifyContent: 'center',
174
- alignItems: 'center',
175
- }, children: (0, jsx_runtime_1.jsx)(LoadingComponent, {}) })), tableData && ((0, jsx_runtime_1.jsx)(react_1.Table, { rows: tableData.rows, columns: tableData.fields, containerStyle: { height: '360px' } })), viewAddable && ((0, jsx_runtime_1.jsx)("div", { style: { width: '200px' }, children: (0, jsx_runtime_1.jsx)(Button, { label: `${initialSqlView ? 'Save changes' : 'Create view'}`, onClick: () => addEditSqlView(false) }) }))] })] }), (0, jsx_runtime_1.jsx)(CreateSqlViews_1.ForeignKeyModal, { isOpen: showFKModal, setIsOpen: setShowFKModal, override: addEditSqlView, foreignKey: state.client.customerFieldName, tableName: state.client.customerTableName })] }) }));
186
+ flexDirection: 'column',
187
+ }, children: [(0, jsx_runtime_1.jsxs)("div", { style: {
188
+ display: 'flex',
189
+ flexDirection: 'row',
190
+ alignItems: 'flex-start',
191
+ justifyContent: 'space-between',
192
+ gap: 20,
193
+ width: '100%',
194
+ }, children: [(0, jsx_runtime_1.jsx)(TextInput, { onChange: (e) => {
195
+ setAIPrompt(e.target.value);
196
+ }, placeholder: 'Describe a query...', value: aiPrompt, id: 'ai-prompt', width: '100%' }), (0, jsx_runtime_1.jsx)(Button, { label: 'Ask AI', isLoading: askAIButtonLoading, onClick: handleRunSqlPrompt })] }), (0, jsx_runtime_1.jsx)(SqlTextEditor_1.default, { value: editViewQuery, setValue: (e) => {
197
+ setEditViewQuery(e);
198
+ }, setEditorMounted: (didMount) => {
199
+ setEditorMounted(didMount);
200
+ }, setPreviousProvier: (provider) => {
201
+ setProvider(provider);
202
+ }, previousProvider: provider, schema: displayedTableData, databaseType: state.client.databaseType }), editorMounted && ((0, jsx_runtime_1.jsx)("div", { style: { width: '200px' }, children: (0, jsx_runtime_1.jsx)(Button, { label: 'Run query', onClick: () => {
203
+ handleRunQuery();
204
+ } }) })), errorInfo.show ? ((0, jsx_runtime_1.jsx)("div", { style: {
205
+ fontSize: 15,
206
+ fontWeight: '400',
207
+ }, children: (0, jsx_runtime_1.jsx)("div", { style: {
208
+ padding: 30,
209
+ background: 'rgba(0,0,0,0.02)',
210
+ display: 'inline-block',
211
+ flex: 0,
212
+ borderRadius: 6,
213
+ }, children: errorInfo.message }) })) : null, isLoading && ((0, jsx_runtime_1.jsx)("div", { style: {
214
+ height: 'calc(100vh - 589px)',
215
+ width: '100%',
216
+ display: 'flex',
217
+ justifyContent: 'center',
218
+ alignItems: 'center',
219
+ }, children: (0, jsx_runtime_1.jsx)(LoadingComponent, {}) })), tableData && ((0, jsx_runtime_1.jsx)(react_1.Table, { rows: tableData.rows, columns: tableData.fields, containerStyle: { height: '360px', minHeight: 250 } }))] }), viewAddable && ((0, jsx_runtime_1.jsx)("div", { style: { width: '200px' }, children: (0, jsx_runtime_1.jsx)(Button, { label: `${initialSqlView ? 'Save changes' : 'Create view'}`, onClick: () => {
220
+ const duplicateColumns2 = (0, SQLViewManager_1.getDuplicateColumns)(tableData?.fields);
221
+ if (duplicateColumns2.length > 0) {
222
+ alert(`Ambiguous column names found. Either use aliases or remove the column to make every column name unique: \n\n${duplicateColumns2.join('\n')}`);
223
+ return;
224
+ }
225
+ addEditSqlView(false);
226
+ } }) }))] })] }), (0, jsx_runtime_1.jsx)(CreateSqlViews_1.ForeignKeyModal, { isOpen: showFKModal, setIsOpen: setShowFKModal, override: addEditSqlView, foreignKey: state.client.customerFieldName, tableName: state.client.customerTableName })] }) }));
176
227
  }
177
228
  exports.default = CreateEditSqlView;
@@ -1 +1 @@
1
- {"version":3,"file":"EditFiltersModal.d.ts","sourceRoot":"","sources":["../../../src/modals/EditFiltersModal.tsx"],"names":[],"mappings":"AAeA,wBAAgB,gBAAgB,CAAC,EAC/B,MAAM,EACN,aAAa,EACb,iBAAiB,EACjB,MAAM,EACN,SAAS,EACT,MAAM,EACN,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,eAAe,EACf,SAAS,EACT,wBAAwB,EACxB,kBAAkB,GACnB,EAAE;IACD,MAAM,EAAE,OAAO,CAAC;IAChB,aAAa,EAAE,GAAG,CAAC;IACnB,iBAAiB,EAAE,GAAG,CAAC;IACvB,MAAM,EAAE,GAAG,CAAC;IACZ,SAAS,EAAE,GAAG,CAAC;IACf,MAAM,EAAE,GAAG,CAAC;IACZ,kBAAkB,EAAE,GAAG,CAAC;IACxB,cAAc,EAAE,GAAG,CAAC;IACpB,kBAAkB,EAAE,GAAG,CAAC;IACxB,eAAe,EAAE,GAAG,CAAC;IACrB,eAAe,EAAE,GAAG,CAAC;IACrB,eAAe,EAAE,GAAG,CAAC;IACrB,SAAS,EAAE,GAAG,CAAC;IACf,wBAAwB,EAAE,GAAG,CAAC;CAC/B,2CA8mBA"}
1
+ {"version":3,"file":"EditFiltersModal.d.ts","sourceRoot":"","sources":["../../../src/modals/EditFiltersModal.tsx"],"names":[],"mappings":"AAgBA,wBAAgB,gBAAgB,CAAC,EAC/B,MAAM,EACN,aAAa,EACb,iBAAiB,EACjB,MAAM,EACN,SAAS,EACT,MAAM,EACN,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,eAAe,EACf,SAAS,EACT,wBAAwB,EACxB,kBAAkB,GACnB,EAAE;IACD,MAAM,EAAE,OAAO,CAAC;IAChB,aAAa,EAAE,GAAG,CAAC;IACnB,iBAAiB,EAAE,GAAG,CAAC;IACvB,MAAM,EAAE,GAAG,CAAC;IACZ,SAAS,EAAE,GAAG,CAAC;IACf,MAAM,EAAE,GAAG,CAAC;IACZ,kBAAkB,EAAE,GAAG,CAAC;IACxB,cAAc,EAAE,GAAG,CAAC;IACpB,kBAAkB,EAAE,GAAG,CAAC;IACxB,eAAe,EAAE,GAAG,CAAC;IACrB,eAAe,EAAE,GAAG,CAAC;IACrB,eAAe,EAAE,GAAG,CAAC;IACrB,SAAS,EAAE,GAAG,CAAC;IACf,wBAAwB,EAAE,GAAG,CAAC;CAC/B,2CA2nBA"}
@@ -14,6 +14,7 @@ const InputLabel_1 = __importDefault(require("../components/InputLabel"));
14
14
  const CardSection_1 = __importDefault(require("../components/CardSection"));
15
15
  const TogglePrimitive_1 = __importDefault(require("../primitives/TogglePrimitive"));
16
16
  const SegmentedControl_1 = require("../components/SegmentedControl");
17
+ const columnProcessing_1 = require("../utils/columnProcessing");
17
18
  function EditFiltersModal({ isOpen, dashboardData, selectedDashboard, client, setIsOpen, onSave, ModalComponent, TextInputComponent, ButtonComponent, HeaderComponent, SelectComponent, dashNames, SecondaryButtonComponent, openEditOrderModal, }) {
18
19
  const { state, dispatch } = (0, AdminProvider_1.useAdmin)();
19
20
  const [selectedDashboardName, setSelectedDashboardName] = (0, react_1.useState)('');
@@ -108,6 +109,12 @@ function EditFiltersModal({ isOpen, dashboardData, selectedDashboard, client, se
108
109
  filter: `${newDateFilter.label} (Date filter)`,
109
110
  });
110
111
  }
112
+ if (chart.chartType === 'pie' && isDateComparison) {
113
+ filterProblems.push({
114
+ chart: chart.name,
115
+ filter: `${newDateFilter.label} (Date comparison)`,
116
+ });
117
+ }
111
118
  });
112
119
  }
113
120
  updatedFilters.forEach((filter) => {
@@ -124,7 +131,7 @@ function EditFiltersModal({ isOpen, dashboardData, selectedDashboard, client, se
124
131
  }
125
132
  const url = `${constants_1.QUILL_SERVER}/dashfilter/${client._id}/`;
126
133
  const body = {
127
- newDashboardName: selectedDashboardName,
134
+ newDashboardName: selectedDashboardName.trim(),
128
135
  filters: updatedFilters,
129
136
  dateFilter: newDateFilter
130
137
  ? {
@@ -133,7 +140,9 @@ function EditFiltersModal({ isOpen, dashboardData, selectedDashboard, client, se
133
140
  primaryRange: initialRange,
134
141
  }
135
142
  : null,
136
- name: selectedDashboard.name,
143
+ name: selectedDashboard.name
144
+ ? selectedDashboard.name.trim()
145
+ : selectedDashboardName.trim(),
137
146
  databaseType: state.client.databaseType,
138
147
  };
139
148
  const headers = {
@@ -173,6 +182,7 @@ function EditFiltersModal({ isOpen, dashboardData, selectedDashboard, client, se
173
182
  body: JSON.stringify({
174
183
  clientId: client._id,
175
184
  databaseType: state.client.databaseType,
185
+ dashboardName: selectedDashboard.name,
176
186
  }),
177
187
  });
178
188
  setIsOpen(false);
@@ -297,7 +307,7 @@ function EditFiltersModal({ isOpen, dashboardData, selectedDashboard, client, se
297
307
  ? state.tables
298
308
  .find((table) => table.name === filter.table)
299
309
  ?.columns.filter((column) => {
300
- return column.fieldType === 'varchar';
310
+ return ((0, columnProcessing_1.convertFieldTypeToJSType)(column.fieldType) === 'string');
301
311
  })
302
312
  .map((column) => {
303
313
  return {
@@ -104,14 +104,14 @@ function NewDashboardModal({ isOpen, client, setIsOpen, onSave, ModalComponent,
104
104
  }
105
105
  const url = `${constants_1.QUILL_SERVER}/dashfilter/${client._id}/`;
106
106
  const body = {
107
- newDashboardName: selectedDashboardName,
107
+ newDashboardName: selectedDashboardName.trim(),
108
108
  filters: updatedFilters,
109
109
  dateFilter: showDateFilter && {
110
110
  ...newDateFilter,
111
111
  comparison: isDateComparison,
112
112
  primaryRange: initialRange,
113
113
  },
114
- name: selectedDashboardName,
114
+ name: selectedDashboardName.trim(),
115
115
  };
116
116
  const headers = {
117
117
  'Content-Type': 'application/json',
@@ -47,7 +47,7 @@ const createStyles = (theme) => ({
47
47
  marginTop: '0px',
48
48
  marginBottom: '4px',
49
49
  fontWeight: theme.labelFontWeight,
50
- color: theme.secondaryTextColor,
50
+ color: theme.primaryTextColor,
51
51
  },
52
52
  group: {
53
53
  display: 'flex',
@@ -107,7 +107,7 @@ function PromoteDashModal({ ModalComponent, isOpen, setIsOpen, clientId, client,
107
107
  }), onChange: setModalSelectedDashboard, value: modalSelectedDashboard, theme: theme }) }) }), (0, jsx_runtime_1.jsxs)("div", { style: styles.multiContainer, children: [(0, jsx_runtime_1.jsxs)("div", { style: styles.group, children: [(0, jsx_runtime_1.jsx)("h1", { style: styles.header, children: "From" }), (0, jsx_runtime_1.jsx)("div", { style: styles.text, children: (0, jsx_runtime_1.jsx)(components_1.DropDownMenu, { items: [client], setSelected: () => { }, selected: client, theme: theme, disabled: true }) })] }), (0, jsx_runtime_1.jsx)("div", { style: styles.group, children: (0, jsx_runtime_1.jsx)("div", { style: styles.text, children: (0, jsx_runtime_1.jsx)(QuillSelect_1.QuillSelectComponent, { label: "To", options: clients
108
108
  .filter((c) => c.name !== client.name)
109
109
  .map((client) => {
110
- return { label: client.name, value: client.name };
110
+ return { label: client.name, value: client };
111
111
  }), onChange: setSelectedToClient, value: selectedToClient, theme: theme }) }) })] }), (0, jsx_runtime_1.jsx)("div", { style: {
112
112
  display: 'flex',
113
113
  justifyContent: 'center',
@@ -7,7 +7,8 @@ interface PromoteViewModalProps {
7
7
  client: any;
8
8
  views: any[];
9
9
  clients: any[];
10
+ parentRef: any;
10
11
  }
11
- export default function PromoteViewModal({ ModalComponent, isOpen, setIsOpen, clientId, client, clients, views, }: PromoteViewModalProps): import("react/jsx-runtime").JSX.Element;
12
+ export default function PromoteViewModal({ ModalComponent, isOpen, setIsOpen, clientId, client, clients, views, parentRef, }: PromoteViewModalProps): import("react/jsx-runtime").JSX.Element;
12
13
  export {};
13
14
  //# sourceMappingURL=PromoteViewModal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PromoteViewModal.d.ts","sourceRoot":"","sources":["../../../src/modals/PromoteViewModal.tsx"],"names":[],"mappings":";AAKA,UAAU,qBAAqB;IAC7B,cAAc,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IACzC,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,GAAG,CAAC;IACZ,KAAK,EAAE,GAAG,EAAE,CAAC;IACb,OAAO,EAAE,GAAG,EAAE,CAAC;CAChB;AA+DD,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,EACvC,cAAc,EACd,MAAM,EACN,SAAS,EACT,QAAQ,EACR,MAAM,EACN,OAAO,EACP,KAAK,GACN,EAAE,qBAAqB,2CAsGvB"}
1
+ {"version":3,"file":"PromoteViewModal.d.ts","sourceRoot":"","sources":["../../../src/modals/PromoteViewModal.tsx"],"names":[],"mappings":";AAOA,UAAU,qBAAqB;IAC7B,cAAc,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IACzC,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,GAAG,CAAC;IACZ,KAAK,EAAE,GAAG,EAAE,CAAC;IACb,OAAO,EAAE,GAAG,EAAE,CAAC;IACf,SAAS,EAAE,GAAG,CAAC;CAChB;AAgED,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,EACvC,cAAc,EACd,MAAM,EACN,SAAS,EACT,QAAQ,EACR,MAAM,EACN,OAAO,EACP,KAAK,EACL,SAAS,GACV,EAAE,qBAAqB,2CAuGvB"}
@@ -5,69 +5,72 @@ const Admin_1 = require("../Admin");
5
5
  const components_1 = require("../components");
6
6
  const react_1 = require("react");
7
7
  const constants_1 = require("../utils/constants");
8
+ const QuillSelect_1 = require("../components/QuillSelect");
8
9
  const createStyles = (theme) => ({
9
10
  modalContent: {
10
- display: "flex",
11
- flexDirection: "column",
11
+ display: 'flex',
12
+ flexDirection: 'column',
12
13
  },
13
14
  modalHeader: {
14
- fontWeight: "600",
15
+ fontWeight: '600',
15
16
  fontSize: 20,
16
17
  paddingBottom: 4,
17
18
  color: theme.primaryTextColor,
18
19
  },
19
20
  container: {
20
- display: "flex",
21
- flexDirection: "column",
22
- justifyContent: "flex-start",
23
- alignItems: "flex-start",
24
- gap: "5px",
21
+ display: 'flex',
22
+ flexDirection: 'column',
23
+ justifyContent: 'flex-start',
24
+ alignItems: 'flex-start',
25
+ gap: '5px',
25
26
  marginTop: 20,
26
27
  },
27
28
  multiContainer: {
28
- display: "flex",
29
- flexDirection: "row",
30
- justifyContent: "space-between",
31
- alignItems: "center",
32
- gap: "20px",
29
+ display: 'flex',
30
+ flexDirection: 'row',
31
+ justifyContent: 'space-between',
32
+ alignItems: 'center',
33
+ gap: '20px',
33
34
  marginTop: 20,
34
35
  },
35
36
  header: {
36
37
  fontSize: theme.fontSize,
37
- paddingTop: "0px",
38
- marginTop: "0px",
39
- marginBottom: "0px",
38
+ paddingTop: '0px',
39
+ marginTop: '0px',
40
+ marginBottom: '0px',
40
41
  fontWeight: theme.labelFontWeight,
41
42
  color: theme.primaryTextColor,
42
43
  },
43
44
  text: {
44
45
  fontSize: theme.fontSize,
45
- paddingTop: "0px",
46
- marginTop: "0px",
47
- marginBottom: "4px",
46
+ paddingTop: '0px',
47
+ marginTop: '0px',
48
+ marginBottom: '4px',
48
49
  fontWeight: theme.labelFontWeight,
49
50
  color: theme.secondaryTextColor,
50
51
  },
51
52
  group: {
52
- display: "flex",
53
- flexDirection: "column",
54
- alignItems: "start",
55
- gap: "5px",
53
+ display: 'flex',
54
+ flexDirection: 'column',
55
+ alignItems: 'start',
56
+ gap: '5px',
56
57
  },
57
58
  button: {
58
59
  flexGrow: 1,
59
60
  fontSize: theme.fontSize,
60
- fontWeight: "600",
61
- padding: "10px 20px",
61
+ fontWeight: '600',
62
+ padding: '10px 20px',
62
63
  marginTop: 20,
63
64
  backgroundColor: theme.primaryButtonColor,
64
- borderRadius: "5px",
65
+ borderRadius: '5px',
65
66
  color: theme.primaryButtonTextColor,
67
+ width: '40px',
66
68
  },
67
69
  });
68
- function PromoteViewModal({ ModalComponent, isOpen, setIsOpen, clientId, client, clients, views, }) {
70
+ function PromoteViewModal({ ModalComponent, isOpen, setIsOpen, clientId, client, clients, views, parentRef, }) {
69
71
  const [modalSelectedView, setModalSelectedView] = (0, react_1.useState)(views[0]);
70
72
  const [selectedToClient, setSelectedToClient] = (0, react_1.useState)(clients[0]);
73
+ const modalRef = (0, react_1.useRef)(null);
71
74
  (0, react_1.useEffect)(() => {
72
75
  setModalSelectedView(views[0]);
73
76
  setSelectedToClient(clients[0]);
@@ -76,10 +79,10 @@ function PromoteViewModal({ ModalComponent, isOpen, setIsOpen, clientId, client,
76
79
  const handlePromote = async () => {
77
80
  try {
78
81
  const response = await fetch(`${constants_1.QUILL_SERVER}/promote_view/`, {
79
- method: "POST",
82
+ method: 'POST',
80
83
  headers: {
81
- "Content-Type": "application/json",
82
- Authorization: "Bearer ",
84
+ 'Content-Type': 'application/json',
85
+ Authorization: 'Bearer ',
83
86
  },
84
87
  body: JSON.stringify({
85
88
  viewName: modalSelectedView.name,
@@ -88,18 +91,25 @@ function PromoteViewModal({ ModalComponent, isOpen, setIsOpen, clientId, client,
88
91
  }),
89
92
  });
90
93
  if (!response.ok) {
91
- throw new Error("API request failed");
94
+ throw new Error('API request failed');
92
95
  }
93
96
  const data = await response.json();
94
97
  }
95
98
  catch (error) {
96
- console.error("Promotion failed:", error);
99
+ console.error('Promotion failed:', error);
97
100
  }
98
101
  };
99
- return ((0, jsx_runtime_1.jsx)(ModalComponent, { isOpen: isOpen, close: () => setIsOpen(false), children: (0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("div", { style: styles.modalContent, children: (0, jsx_runtime_1.jsx)("h1", { style: styles.modalHeader, children: "Promote Changes" }) }), (0, jsx_runtime_1.jsxs)("div", { style: styles.container, children: [(0, jsx_runtime_1.jsx)("h1", { style: styles.header, children: "SQL View:" }), (0, jsx_runtime_1.jsx)("div", { style: styles.text, children: (0, jsx_runtime_1.jsx)(components_1.DropDownMenu, { items: views, setSelected: setModalSelectedView, selected: modalSelectedView, theme: Admin_1.theme }) })] }), (0, jsx_runtime_1.jsxs)("div", { style: styles.multiContainer, children: [(0, jsx_runtime_1.jsxs)("div", { style: styles.group, children: [(0, jsx_runtime_1.jsx)("h1", { style: styles.header, children: "From:" }), (0, jsx_runtime_1.jsx)("div", { style: styles.text, children: (0, jsx_runtime_1.jsx)(components_1.DropDownMenu, { items: [client], setSelected: () => { }, selected: client, theme: Admin_1.theme, disabled: true }) })] }), (0, jsx_runtime_1.jsx)("span", {}), (0, jsx_runtime_1.jsxs)("div", { style: styles.group, children: [(0, jsx_runtime_1.jsx)("h1", { style: styles.header, children: "To:" }), (0, jsx_runtime_1.jsx)("div", { style: styles.text, children: (0, jsx_runtime_1.jsx)(components_1.DropDownMenu, { items: clients.filter((c) => c.name !== client.name), setSelected: setSelectedToClient, selected: selectedToClient, theme: Admin_1.theme }) })] })] }), (0, jsx_runtime_1.jsx)("div", { style: {
100
- display: "flex",
101
- justifyContent: "center",
102
- alignItems: "center",
102
+ return ((0, jsx_runtime_1.jsx)(ModalComponent, { isOpen: isOpen, setIsOpen: setIsOpen, title: 'Promote Changes', width: 500, children: (0, jsx_runtime_1.jsxs)("div", { style: {
103
+ display: 'flex',
104
+ flexDirection: 'column',
105
+ padding: '20px',
106
+ boxSizing: 'border-box',
107
+ maxHeight: 600,
108
+ }, ref: modalRef, children: [(0, jsx_runtime_1.jsx)(QuillSelect_1.QuillSelectComponent, { options: views.map((v) => ({ label: v.name, value: v })), onChange: setModalSelectedView, value: modalSelectedView, theme: Admin_1.theme, label: "SQL View:" }), (0, jsx_runtime_1.jsxs)("div", { style: styles.multiContainer, children: [(0, jsx_runtime_1.jsxs)("div", { style: styles.group, children: [(0, jsx_runtime_1.jsx)("h1", { style: styles.header, children: "From:" }), (0, jsx_runtime_1.jsx)("div", { style: styles.text, children: (0, jsx_runtime_1.jsx)(components_1.DropDownMenu, { items: [client], setSelected: () => { }, selected: client, theme: Admin_1.theme, disabled: true }) })] }), (0, jsx_runtime_1.jsx)(QuillSelect_1.QuillSelectComponent, { options: clients.map((c) => ({ label: c.name, value: c })), onChange: setSelectedToClient, value: selectedToClient, theme: Admin_1.theme, label: "To:" })] }), (0, jsx_runtime_1.jsx)("div", { style: {
109
+ display: 'flex',
110
+ justifyContent: 'flex-start',
111
+ alignItems: 'center',
112
+ width: 200,
103
113
  }, children: (0, jsx_runtime_1.jsx)("button", { style: styles.button, onClick: () => {
104
114
  handlePromote();
105
115
  setIsOpen(false);
@@ -7,6 +7,7 @@ interface TextInputPrimitiveProps {
7
7
  theme?: QuillTheme;
8
8
  disabled?: boolean;
9
9
  width?: string;
10
+ password?: boolean;
10
11
  }
11
12
  declare const TextInputPrimitive: React.FC<TextInputPrimitiveProps>;
12
13
  export default TextInputPrimitive;
@@ -1 +1 @@
1
- {"version":3,"file":"TextInputPrimitive.d.ts","sourceRoot":"","sources":["../../../src/primitives/TextInputPrimitive.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAyB,MAAM,UAAU,CAAC;AAE7D,UAAU,uBAAuB;IAC/B,QAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,QAAA,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAmCzD,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
1
+ {"version":3,"file":"TextInputPrimitive.d.ts","sourceRoot":"","sources":["../../../src/primitives/TextInputPrimitive.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAyB,MAAM,UAAU,CAAC;AAE7D,UAAU,uBAAuB;IAC/B,QAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,QAAA,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAmEzD,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
@@ -1,26 +1,41 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  const jsx_runtime_1 = require("react/jsx-runtime");
7
+ const react_1 = __importDefault(require("react"));
4
8
  const Admin_1 = require("../Admin");
5
- const TextInputPrimitive = ({ onChange, value, placeholder, theme = Admin_1.theme, disabled = false, width = '250px', }) => {
6
- return ((0, jsx_runtime_1.jsx)("input", { style: {
7
- display: 'flex',
8
- flexDirection: 'row',
9
- alignItems: 'center',
10
- paddingLeft: '12px',
11
- paddingRight: '12px',
12
- fontWeight: 'medium',
13
- height: 38,
14
- minWidth: width,
15
- boxShadow: '0 1px 2px 0 rgba(0,0,0,.05)',
16
- width: '100%',
17
- backgroundColor: theme?.backgroundColor || 'white',
18
- color: theme?.primaryTextColor,
19
- borderWidth: '1px',
20
- borderColor: theme?.borderColor || '#E7E7E7',
21
- borderStyle: 'solid',
22
- borderRadius: '6px',
23
- fontSize: 14,
24
- }, disabled: disabled, onChange: onChange, value: value, placeholder: placeholder }));
9
+ const TextInputPrimitive = ({ onChange, value, placeholder, theme = Admin_1.theme, disabled = false, width = '250px', password = false, }) => {
10
+ const [showPassword, setShowPassword] = react_1.default.useState(!password);
11
+ return ((0, jsx_runtime_1.jsxs)("div", { style: { position: 'relative' }, children: [(0, jsx_runtime_1.jsx)("input", { style: {
12
+ display: 'flex',
13
+ flexDirection: 'row',
14
+ alignItems: 'center',
15
+ paddingLeft: '12px',
16
+ paddingRight: '12px',
17
+ fontWeight: 'medium',
18
+ height: 38,
19
+ minWidth: width,
20
+ boxShadow: '0 1px 2px 0 rgba(0,0,0,.05)',
21
+ width: '100%',
22
+ backgroundColor: theme?.backgroundColor || 'white',
23
+ color: theme?.primaryTextColor,
24
+ borderWidth: '1px',
25
+ borderColor: theme?.borderColor || '#E7E7E7',
26
+ borderStyle: 'solid',
27
+ borderRadius: '6px',
28
+ fontSize: 14,
29
+ }, type: showPassword ? 'text' : 'password', disabled: disabled, onChange: onChange, value: value, placeholder: placeholder }), password ? ((0, jsx_runtime_1.jsx)("div", { style: {
30
+ position: 'absolute',
31
+ right: '8px',
32
+ bottom: '6px',
33
+ cursor: 'pointer',
34
+ backgroundColor: 'white',
35
+ padding: '4px',
36
+ boxSizing: 'content-box',
37
+ }, onClick: () => {
38
+ setShowPassword(!showPassword);
39
+ }, children: (0, jsx_runtime_1.jsxs)("svg", { xmlns: "http://www.w3.org/2000/svg", width: "16", height: "16", fill: "currentColor", viewBox: "0 0 16 16", children: [(0, jsx_runtime_1.jsx)("path", { d: "M16 8s-3-5.5-8-5.5S0 8 0 8s3 5.5 8 5.5S16 8 16 8M1.173 8a13 13 0 0 1 1.66-2.043C4.12 4.668 5.88 3.5 8 3.5s3.879 1.168 5.168 2.457A13 13 0 0 1 14.828 8q-.086.13-.195.288c-.335.48-.83 1.12-1.465 1.755C11.879 11.332 10.119 12.5 8 12.5s-3.879-1.168-5.168-2.457A13 13 0 0 1 1.172 8z" }), (0, jsx_runtime_1.jsx)("path", { d: "M8 5.5a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5M4.5 8a3.5 3.5 0 1 1 7 0 3.5 3.5 0 0 1-7 0" })] }) })) : null] }));
25
40
  };
26
41
  exports.default = TextInputPrimitive;
@@ -1,6 +1,7 @@
1
1
  import { CSSProperties } from 'react';
2
- export default function CreateEnvironment({ navigateToDashboardManager, containerStyle, }: {
2
+ export default function CreateEnvironment({ navigateToDashboardManager, onOnboardComplete, containerStyle, }: {
3
3
  navigateToDashboardManager?: () => void;
4
+ onOnboardComplete?: (client: any) => void;
4
5
  containerStyle?: CSSProperties;
5
6
  }): import("react/jsx-runtime").JSX.Element;
6
7
  //# sourceMappingURL=CreateEnvironment.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CreateEnvironment.d.ts","sourceRoot":"","sources":["../../../src/public_components/CreateEnvironment.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,aAAa,EAAuB,MAAM,OAAO,CAAC;AAuClE,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,EACxC,0BAA0B,EAC1B,cAAc,GACf,EAAE;IACD,0BAA0B,CAAC,EAAE,MAAM,IAAI,CAAC;IACxC,cAAc,CAAC,EAAE,aAAa,CAAC;CAChC,2CAsMA"}
1
+ {"version":3,"file":"CreateEnvironment.d.ts","sourceRoot":"","sources":["../../../src/public_components/CreateEnvironment.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,aAAa,EAAuB,MAAM,OAAO,CAAC;AAuClE,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,EACxC,0BAA0B,EAC1B,iBAAiB,EACjB,cAAc,GACf,EAAE;IACD,0BAA0B,CAAC,EAAE,MAAM,IAAI,CAAC;IACxC,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC;IAC1C,cAAc,CAAC,EAAE,aAAa,CAAC;CAChC,2CAyMA"}
@@ -47,7 +47,7 @@ const header2Style = {
47
47
  color: '#595959',
48
48
  marginBottom: '6px',
49
49
  };
50
- function CreateEnvironment({ navigateToDashboardManager, containerStyle, }) {
50
+ function CreateEnvironment({ navigateToDashboardManager, onOnboardComplete, containerStyle, }) {
51
51
  const parentRef = react_1.default.useRef(null);
52
52
  const { state, dispatch } = (0, AdminProvider_1.useAdmin)();
53
53
  const domainName = state.domainName;
@@ -162,6 +162,9 @@ function CreateEnvironment({ navigateToDashboardManager, containerStyle, }) {
162
162
  if (navigateToDashboardManager) {
163
163
  navigateToDashboardManager();
164
164
  }
165
+ if (onOnboardComplete) {
166
+ onOnboardComplete(client);
167
+ }
165
168
  }, domainName: domainName, clientId: clientId, state: state })) : ((0, jsx_runtime_1.jsx)(StepDisplay_1.default, { label: "Create SQL Views", completed: false, header1Style: header1Style }))] }));
166
169
  }
167
170
  exports.default = CreateEnvironment;
@@ -1 +1 @@
1
- {"version":3,"file":"DashboardBuilder.d.ts","sourceRoot":"","sources":["../../../src/public_components/DashboardBuilder.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAwC,MAAM,OAAO,CAAC;AAY5E,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,EACvC,0BAA0B,EAC1B,cAAc,EACd,SAAgB,GACjB,EAAE;IACD,0BAA0B,CAAC,EAAE,MAAM,IAAI,CAAC;IACxC,cAAc,CAAC,EAAE,aAAa,CAAC;IAC/B,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,2CAgcA"}
1
+ {"version":3,"file":"DashboardBuilder.d.ts","sourceRoot":"","sources":["../../../src/public_components/DashboardBuilder.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAwC,MAAM,OAAO,CAAC;AAY5E,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,EACvC,0BAA0B,EAC1B,cAAc,EACd,SAAgB,GACjB,EAAE;IACD,0BAA0B,CAAC,EAAE,MAAM,IAAI,CAAC;IACxC,cAAc,CAAC,EAAE,aAAa,CAAC;IAC/B,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,2CAwUA"}