@quillsql/admin 1.5.2 → 1.6.0

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 (141) hide show
  1. package/dist/cjs/Admin.d.ts +19 -72
  2. package/dist/cjs/Admin.d.ts.map +1 -1
  3. package/dist/cjs/Admin.js +200 -994
  4. package/dist/cjs/AdminProvider.d.ts +0 -11
  5. package/dist/cjs/AdminProvider.d.ts.map +1 -1
  6. package/dist/cjs/AdminProvider.js +16 -10
  7. package/dist/cjs/api/ConnectionClient.d.ts +11 -0
  8. package/dist/cjs/api/ConnectionClient.d.ts.map +1 -1
  9. package/dist/cjs/api/ConnectionClient.js +71 -10
  10. package/dist/cjs/components/DropDownMenu.js +1 -1
  11. package/dist/cjs/components/DropDownMenuWithLabel.d.ts.map +1 -1
  12. package/dist/cjs/components/DropDownMenuWithLabel.js +16 -54
  13. package/dist/cjs/components/OrgSelect.d.ts.map +1 -1
  14. package/dist/cjs/components/OrgSelect.js +10 -20
  15. package/dist/cjs/components/QuillSelect.d.ts +3 -0
  16. package/dist/cjs/components/QuillSelect.d.ts.map +1 -0
  17. package/dist/cjs/components/QuillSelect.js +137 -0
  18. package/dist/cjs/components/SegmentedControl.d.ts +7 -0
  19. package/dist/cjs/components/SegmentedControl.d.ts.map +1 -0
  20. package/dist/cjs/components/SegmentedControl.js +54 -0
  21. package/dist/cjs/components/UiComponents.d.ts +18 -30
  22. package/dist/cjs/components/UiComponents.d.ts.map +1 -1
  23. package/dist/cjs/components/UiComponents.js +39 -84
  24. package/dist/cjs/forms/client_onboard/ConnectSchema.d.ts +2 -1
  25. package/dist/cjs/forms/client_onboard/ConnectSchema.d.ts.map +1 -1
  26. package/dist/cjs/forms/client_onboard/ConnectSchema.js +143 -68
  27. package/dist/cjs/forms/client_onboard/CreateSqlViews.d.ts.map +1 -1
  28. package/dist/cjs/forms/client_onboard/CreateSqlViews.js +39 -10
  29. package/dist/cjs/forms/sql_views/CreateEditSqlView.d.ts +7 -4
  30. package/dist/cjs/forms/sql_views/CreateEditSqlView.d.ts.map +1 -1
  31. package/dist/cjs/forms/sql_views/CreateEditSqlView.js +28 -25
  32. package/dist/cjs/hooks/useOnClickOutside.d.ts +3 -0
  33. package/dist/cjs/hooks/useOnClickOutside.d.ts.map +1 -0
  34. package/dist/cjs/hooks/useOnClickOutside.js +20 -0
  35. package/dist/cjs/modals/EditFiltersModal.d.ts +17 -0
  36. package/dist/cjs/modals/EditFiltersModal.d.ts.map +1 -0
  37. package/dist/cjs/modals/EditFiltersModal.js +345 -0
  38. package/dist/cjs/modals/NewDashboardModal.d.ts +1 -3
  39. package/dist/cjs/modals/NewDashboardModal.d.ts.map +1 -1
  40. package/dist/cjs/modals/NewDashboardModal.js +62 -45
  41. package/dist/cjs/modals/PromoteDashModal.d.ts.map +1 -1
  42. package/dist/cjs/modals/PromoteDashModal.js +10 -3
  43. package/dist/cjs/modals/ReorderDashboardModal.d.ts.map +1 -1
  44. package/dist/cjs/modals/ReorderDashboardModal.js +42 -45
  45. package/dist/cjs/modals/index.d.ts +0 -1
  46. package/dist/cjs/modals/index.d.ts.map +1 -1
  47. package/dist/cjs/modals/index.js +1 -3
  48. package/dist/cjs/primitives/ButtonPrimitive.d.ts +3 -1
  49. package/dist/cjs/primitives/ButtonPrimitive.d.ts.map +1 -1
  50. package/dist/cjs/primitives/ButtonPrimitive.js +5 -3
  51. package/dist/cjs/primitives/TogglePrimitive.js +5 -5
  52. package/dist/cjs/public_components/CreateEnvironment.d.ts.map +1 -1
  53. package/dist/cjs/public_components/CreateEnvironment.js +1 -1
  54. package/dist/cjs/public_components/DashboardBuilder.d.ts.map +1 -1
  55. package/dist/cjs/public_components/DashboardBuilder.js +41 -6
  56. package/dist/cjs/public_components/DashboardManager.d.ts.map +1 -1
  57. package/dist/cjs/public_components/DashboardManager.js +47 -83
  58. package/dist/cjs/public_components/SQLViewManager.d.ts.map +1 -1
  59. package/dist/cjs/public_components/SQLViewManager.js +69 -20
  60. package/dist/cjs/utils/schema.d.ts +6 -0
  61. package/dist/cjs/utils/schema.d.ts.map +1 -1
  62. package/dist/cjs/utils/table.d.ts +1 -0
  63. package/dist/cjs/utils/table.d.ts.map +1 -1
  64. package/dist/cjs/utils/table.js +13 -0
  65. package/dist/cjs/utils/textProcessing.d.ts +2 -0
  66. package/dist/cjs/utils/textProcessing.d.ts.map +1 -0
  67. package/dist/cjs/utils/textProcessing.js +9 -0
  68. package/dist/esm/Admin.d.ts +19 -72
  69. package/dist/esm/Admin.d.ts.map +1 -1
  70. package/dist/esm/Admin.js +203 -987
  71. package/dist/esm/AdminProvider.d.ts +0 -11
  72. package/dist/esm/AdminProvider.d.ts.map +1 -1
  73. package/dist/esm/AdminProvider.js +16 -10
  74. package/dist/esm/api/ConnectionClient.d.ts +11 -0
  75. package/dist/esm/api/ConnectionClient.d.ts.map +1 -1
  76. package/dist/esm/api/ConnectionClient.js +69 -9
  77. package/dist/esm/components/DropDownMenu.js +1 -1
  78. package/dist/esm/components/DropDownMenuWithLabel.d.ts.map +1 -1
  79. package/dist/esm/components/DropDownMenuWithLabel.js +16 -54
  80. package/dist/esm/components/OrgSelect.d.ts.map +1 -1
  81. package/dist/esm/components/OrgSelect.js +6 -19
  82. package/dist/esm/components/QuillSelect.d.ts +3 -0
  83. package/dist/esm/components/QuillSelect.d.ts.map +1 -0
  84. package/dist/esm/components/QuillSelect.js +130 -0
  85. package/dist/esm/components/SegmentedControl.d.ts +7 -0
  86. package/dist/esm/components/SegmentedControl.d.ts.map +1 -0
  87. package/dist/esm/components/SegmentedControl.js +50 -0
  88. package/dist/esm/components/UiComponents.d.ts +18 -30
  89. package/dist/esm/components/UiComponents.d.ts.map +1 -1
  90. package/dist/esm/components/UiComponents.js +36 -83
  91. package/dist/esm/forms/client_onboard/ConnectSchema.d.ts +2 -1
  92. package/dist/esm/forms/client_onboard/ConnectSchema.d.ts.map +1 -1
  93. package/dist/esm/forms/client_onboard/ConnectSchema.js +145 -70
  94. package/dist/esm/forms/client_onboard/CreateSqlViews.d.ts.map +1 -1
  95. package/dist/esm/forms/client_onboard/CreateSqlViews.js +40 -11
  96. package/dist/esm/forms/sql_views/CreateEditSqlView.d.ts +7 -4
  97. package/dist/esm/forms/sql_views/CreateEditSqlView.d.ts.map +1 -1
  98. package/dist/esm/forms/sql_views/CreateEditSqlView.js +29 -26
  99. package/dist/esm/hooks/useOnClickOutside.d.ts +3 -0
  100. package/dist/esm/hooks/useOnClickOutside.d.ts.map +1 -0
  101. package/dist/esm/hooks/useOnClickOutside.js +18 -0
  102. package/dist/esm/modals/EditFiltersModal.d.ts +17 -0
  103. package/dist/esm/modals/EditFiltersModal.d.ts.map +1 -0
  104. package/dist/esm/modals/EditFiltersModal.js +338 -0
  105. package/dist/esm/modals/NewDashboardModal.d.ts +1 -3
  106. package/dist/esm/modals/NewDashboardModal.d.ts.map +1 -1
  107. package/dist/esm/modals/NewDashboardModal.js +62 -45
  108. package/dist/esm/modals/PromoteDashModal.d.ts.map +1 -1
  109. package/dist/esm/modals/PromoteDashModal.js +10 -3
  110. package/dist/esm/modals/ReorderDashboardModal.d.ts.map +1 -1
  111. package/dist/esm/modals/ReorderDashboardModal.js +43 -46
  112. package/dist/esm/modals/index.d.ts +0 -1
  113. package/dist/esm/modals/index.d.ts.map +1 -1
  114. package/dist/esm/modals/index.js +0 -1
  115. package/dist/esm/primitives/ButtonPrimitive.d.ts +3 -1
  116. package/dist/esm/primitives/ButtonPrimitive.d.ts.map +1 -1
  117. package/dist/esm/primitives/ButtonPrimitive.js +5 -3
  118. package/dist/esm/primitives/TogglePrimitive.js +5 -5
  119. package/dist/esm/public_components/CreateEnvironment.d.ts.map +1 -1
  120. package/dist/esm/public_components/CreateEnvironment.js +1 -1
  121. package/dist/esm/public_components/DashboardBuilder.d.ts.map +1 -1
  122. package/dist/esm/public_components/DashboardBuilder.js +41 -6
  123. package/dist/esm/public_components/DashboardManager.d.ts.map +1 -1
  124. package/dist/esm/public_components/DashboardManager.js +49 -85
  125. package/dist/esm/public_components/SQLViewManager.d.ts.map +1 -1
  126. package/dist/esm/public_components/SQLViewManager.js +69 -20
  127. package/dist/esm/utils/schema.d.ts +6 -0
  128. package/dist/esm/utils/schema.d.ts.map +1 -1
  129. package/dist/esm/utils/table.d.ts +1 -0
  130. package/dist/esm/utils/table.d.ts.map +1 -1
  131. package/dist/esm/utils/table.js +11 -1
  132. package/dist/esm/utils/textProcessing.d.ts +2 -0
  133. package/dist/esm/utils/textProcessing.d.ts.map +1 -0
  134. package/dist/esm/utils/textProcessing.js +5 -0
  135. package/package.json +1 -1
  136. package/dist/cjs/modals/EditDashboardsModal.d.ts +0 -20
  137. package/dist/cjs/modals/EditDashboardsModal.d.ts.map +0 -1
  138. package/dist/cjs/modals/EditDashboardsModal.js +0 -94
  139. package/dist/esm/modals/EditDashboardsModal.d.ts +0 -20
  140. package/dist/esm/modals/EditDashboardsModal.d.ts.map +0 -1
  141. package/dist/esm/modals/EditDashboardsModal.js +0 -91
@@ -11,6 +11,7 @@ const ConnectionClient_1 = require("../../api/ConnectionClient");
11
11
  const SqlViewTile_1 = __importDefault(require("../../components/SqlViewTile"));
12
12
  const SqlTextEditor_1 = __importDefault(require("../../components/SqlTextEditor"));
13
13
  const react_2 = require("@quillsql/react");
14
+ const UiComponents_1 = require("../../components/UiComponents");
14
15
  function CreateSQLViews({ containerStyle, header1Style, header2Style, columnsByTable, environmentDetails, allSchemaInfo, domainName, completeOnboarding, clientId, state, }) {
15
16
  const [selectedTable, setSelectedTable] = (0, react_1.useState)(undefined);
16
17
  const [queryInfo, setQueryInfo] = (0, react_1.useState)({
@@ -23,9 +24,11 @@ function CreateSQLViews({ containerStyle, header1Style, header2Style, columnsByT
23
24
  const [tableData, setTableData] = (0, react_1.useState)(undefined);
24
25
  const [client, setClient] = (0, react_1.useState)(undefined);
25
26
  const [sqlTables, setSqlTables] = (0, react_1.useState)([]);
26
- const [askAIButton, setAskAIButton] = (0, react_1.useState)('Ask AI');
27
- const [runQueryButtonLabel, setRunQueryButtonLabel] = (0, react_1.useState)('Run query');
27
+ const [askAIButtonLoading, setAskAIButtonLoading] = (0, react_1.useState)(false);
28
+ const [runQueryButtonLoading, setRunQueryButtonLoading] = (0, react_1.useState)(false);
28
29
  const [showFKModal, setShowFKModal] = (0, react_1.useState)(false);
30
+ const [tableSearchQuery, setTableSearchQuery] = (0, react_1.useState)('');
31
+ const [displayedTableData, setDisplayedTableData] = (0, react_1.useState)(columnsByTable);
29
32
  const addSqlView = async (override) => {
30
33
  const results = await (0, ConnectionClient_1.createSQLView)(environmentDetails, allSchemaInfo, columnsByTable, queryInfo, client, domainName, tableData, sqlTables.map((e) => {
31
34
  return e.name;
@@ -43,6 +46,15 @@ function CreateSQLViews({ containerStyle, header1Style, header2Style, columnsByT
43
46
  setSqlQueryInfo({ msg: results.message, status: true });
44
47
  }
45
48
  };
49
+ const handleClickSchemaItem = async (event) => {
50
+ const name = event.target.textContent;
51
+ if (queryInfo.query && queryInfo.query.length > 0) {
52
+ await navigator.clipboard.writeText(name || '');
53
+ }
54
+ else {
55
+ setQueryInfo({ name: queryInfo.name, query: `SELECT * FROM ${name}` });
56
+ }
57
+ };
46
58
  (0, react_1.useEffect)(() => {
47
59
  window.scrollTo({
48
60
  behavior: 'smooth',
@@ -64,7 +76,24 @@ function CreateSQLViews({ containerStyle, header1Style, header2Style, columnsByT
64
76
  flexDirection: 'row',
65
77
  borderTop: 'solid 1px #e7e7e7',
66
78
  height: 'calc(100vh - 143px)',
67
- }, children: [(0, jsx_runtime_1.jsxs)("div", { id: "form-editor-table", style: {
79
+ }, children: [(0, jsx_runtime_1.jsxs)("div", { style: {
80
+ display: 'flex',
81
+ flexDirection: 'column',
82
+ }, children: [(0, jsx_runtime_1.jsx)("div", { style: {
83
+ paddingLeft: '20px',
84
+ paddingRight: '30px',
85
+ height: 70,
86
+ minHeight: 70,
87
+ display: 'flex',
88
+ alignItems: 'center',
89
+ }, children: (0, jsx_runtime_1.jsx)(primitives_1.TextInputPrimitive, { placeholder: "Search...",
90
+ // @ts-ignore
91
+ onChange: (e) => {
92
+ setTableSearchQuery(e.target.value);
93
+ setDisplayedTableData(columnsByTable.filter((table) => table.tableName
94
+ .toLowerCase()
95
+ .includes(e.target.value.toLowerCase().trim())));
96
+ }, value: tableSearchQuery, width: "100%" }) }), (0, jsx_runtime_1.jsx)(react_2.SchemaListComponent, { schema: displayedTableData, theme: state.theme, width: '300px', loading: false, LoadingComponent: UiComponents_1.LoadingSpinner, onClick: handleClickSchemaItem })] }), (0, jsx_runtime_1.jsxs)("div", { id: "form-editor-table", style: {
68
97
  display: 'flex',
69
98
  flexDirection: 'column',
70
99
  width: 'calc(100% - 300px)',
@@ -79,13 +108,13 @@ function CreateSQLViews({ containerStyle, header1Style, header2Style, columnsByT
79
108
  height: 70,
80
109
  }, children: [(0, jsx_runtime_1.jsx)(primitives_1.TextInputPrimitive, { onChange: (e) => {
81
110
  setAIPrompt(e.target.value);
82
- }, placeholder: 'Describe a query...', value: aiPrompt }), (0, jsx_runtime_1.jsx)(primitives_1.ButtonPrimitive, { label: askAIButton, onClick: async () => {
83
- setAskAIButton('Loading...');
111
+ }, placeholder: 'Describe a query...', value: aiPrompt }), (0, jsx_runtime_1.jsx)(primitives_1.ButtonPrimitive, { label: 'Ask AI', isLoading: askAIButtonLoading, onClick: async () => {
112
+ setAskAIButtonLoading(true);
84
113
  const results = await (0, ConnectionClient_1.getQueryFromAiWithConnection)(aiPrompt, clientId, allSchemaInfo?.selectedFields.schema
85
114
  ? [allSchemaInfo?.selectedFields.schema]
86
115
  : undefined);
87
116
  setQueryInfo({ name: queryInfo.name, query: results });
88
- setAskAIButton('Ask AI');
117
+ setAskAIButtonLoading(false);
89
118
  }, style: { width: '90px' } })] }), (0, jsx_runtime_1.jsx)(SqlTextEditor_1.default, { value: queryInfo.query, setValue: (e) => {
90
119
  setQueryInfo({ name: queryInfo.name, query: e });
91
120
  }, containerStyle: { paddingLeft: 16, paddingRight: 16 } }), (0, jsx_runtime_1.jsxs)("div", { style: {
@@ -96,8 +125,8 @@ function CreateSQLViews({ containerStyle, header1Style, header2Style, columnsByT
96
125
  paddingLeft: 16,
97
126
  paddingRight: 16,
98
127
  height: 70,
99
- }, children: [(0, jsx_runtime_1.jsx)(primitives_1.ButtonPrimitive, { label: runQueryButtonLabel, onClick: async () => {
100
- setRunQueryButtonLabel('Querying...');
128
+ }, children: [(0, jsx_runtime_1.jsx)(primitives_1.ButtonPrimitive, { label: 'Run query', onClick: async () => {
129
+ setRunQueryButtonLoading(true);
101
130
  const getSqlResults = await (0, ConnectionClient_1.getSqlViewData)(clientId, queryInfo.query, environmentDetails.type, state.queryEndpoint);
102
131
  if (!getSqlResults.success) {
103
132
  setErrorInfo({ status: true, msg: getSqlResults.error });
@@ -106,7 +135,7 @@ function CreateSQLViews({ containerStyle, header1Style, header2Style, columnsByT
106
135
  setErrorInfo({ status: false, msg: '' });
107
136
  setTableData(getSqlResults);
108
137
  }
109
- setRunQueryButtonLabel('Run query');
138
+ setRunQueryButtonLoading(false);
110
139
  } }), errorInfo.status ? ((0, jsx_runtime_1.jsx)("h2", { style: {
111
140
  ...header2Style,
112
141
  color: 'red',
@@ -119,7 +148,7 @@ function CreateSQLViews({ containerStyle, header1Style, header2Style, columnsByT
119
148
  }, children: [(0, jsx_runtime_1.jsx)(react_2.Table, { rows: tableData.rows, columns: tableData.fields, containerStyle: {
120
149
  height: 'calc(100vh - 589px)',
121
150
  width: '100%',
122
- }, showDownloadCSVButton: true }), (0, jsx_runtime_1.jsxs)("div", { style: {
151
+ }, hideCSVDownloadButton: true }), (0, jsx_runtime_1.jsxs)("div", { style: {
123
152
  width: '100%',
124
153
  display: 'flex',
125
154
  justifyContent: 'space-between',
@@ -1,5 +1,6 @@
1
- /// <reference types="react" />
2
- import { ButtonComponentProps, TextInputComponentProps, HeaderProps } from '@quillsql/react';
1
+ import { ButtonComponentProps } from '@quillsql/react';
2
+ import { ReactNode } from 'react';
3
+ import { TextInputComponentProps } from '../../components/UiComponents';
3
4
  import { ColumnsByTable } from '../../utils/table';
4
5
  interface CreateEditSqlViewProps {
5
6
  containerStyle: React.CSSProperties;
@@ -12,9 +13,11 @@ interface CreateEditSqlViewProps {
12
13
  SecondaryButtonComponent?: (props: ButtonComponentProps) => JSX.Element;
13
14
  TextInput?: (props: TextInputComponentProps) => JSX.Element;
14
15
  LoadingComponent?: () => JSX.Element;
15
- Header?: (props: HeaderProps) => JSX.Element;
16
+ Header?: (props: {
17
+ children: ReactNode;
18
+ }) => JSX.Element;
16
19
  closeEditView: () => void;
17
- addEditView: (request: string, query: string, name?: string, id?: string) => void;
20
+ addEditView: (request: string, query: string, name?: string, id?: string, columns?: any[]) => void;
18
21
  allTableData: ColumnsByTable[];
19
22
  schemaIsLoading: boolean;
20
23
  }
@@ -1 +1 @@
1
- {"version":3,"file":"CreateEditSqlView.d.ts","sourceRoot":"","sources":["../../../../src/forms/sql_views/CreateEditSqlView.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,oBAAoB,EAEpB,uBAAuB,EACvB,WAAW,EAGZ,MAAM,iBAAiB,CAAC;AAwBzB,OAAO,EAAU,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAI3D,UAAU,sBAAsB;IAC9B,cAAc,EAAE,KAAK,CAAC,aAAa,CAAC;IACpC,cAAc,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7D,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,GAAG,CAAC,OAAO,CAAC;IACtD,wBAAwB,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,GAAG,CAAC,OAAO,CAAC;IAExE,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,uBAAuB,KAAK,GAAG,CAAC,OAAO,CAAC;IAC5D,gBAAgB,CAAC,EAAE,MAAM,GAAG,CAAC,OAAO,CAAC;IACrC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,GAAG,CAAC,OAAO,CAAC;IAC7C,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,WAAW,EAAE,CACX,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,MAAM,EACb,EAAE,CAAC,EAAE,MAAM,KACR,IAAI,CAAC;IACV,YAAY,EAAE,cAAc,EAAE,CAAC;IAC/B,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,EACxC,cAAc,EACd,cAAc,EACd,aAAa,EACb,WAAW,EACX,wBAAwB,EACxB,gBAA2C,EAC3C,MAAuB,EACvB,SAA6B,EAC7B,MAAuB,EACvB,YAAY,EACZ,eAAe,GAChB,EAAE,sBAAsB,GAAG,GAAG,CAAC,OAAO,CAiTtC"}
1
+ {"version":3,"file":"CreateEditSqlView.d.ts","sourceRoot":"","sources":["../../../../src/forms/sql_views/CreateEditSqlView.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EAKrB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAEL,SAAS,EAKV,MAAM,OAAO,CAAC;AASf,OAAO,EAML,uBAAuB,EACxB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAAU,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAI3D,UAAU,sBAAsB;IAC9B,cAAc,EAAE,KAAK,CAAC,aAAa,CAAC;IACpC,cAAc,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7D,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,GAAG,CAAC,OAAO,CAAC;IACtD,wBAAwB,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,GAAG,CAAC,OAAO,CAAC;IAExE,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,uBAAuB,KAAK,GAAG,CAAC,OAAO,CAAC;IAC5D,gBAAgB,CAAC,EAAE,MAAM,GAAG,CAAC,OAAO,CAAC;IACrC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,QAAQ,EAAE,SAAS,CAAA;KAAE,KAAK,GAAG,CAAC,OAAO,CAAC;IACzD,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,WAAW,EAAE,CACX,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,MAAM,EACb,EAAE,CAAC,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,GAAG,EAAE,KACZ,IAAI,CAAC;IACV,YAAY,EAAE,cAAc,EAAE,CAAC;IAC/B,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,EACxC,cAAc,EACd,cAAc,EACd,aAAa,EACb,WAAW,EACX,wBAAwB,EACxB,gBAA2C,EAC3C,MAAuB,EACvB,SAA6B,EAC7B,MAAuB,EACvB,YAAY,EACZ,eAAe,GAChB,EAAE,sBAAsB,GAAG,GAAG,CAAC,OAAO,CAgUtC"}
@@ -16,9 +16,9 @@ function CreateEditSqlView({ containerStyle, initialSqlView, closeEditView, addE
16
16
  const [name, setName] = (0, react_2.useState)(initialSqlView?.name || '');
17
17
  const [editViewQuery, setEditViewQuery] = (0, react_2.useState)(initialSqlView?.query || '');
18
18
  const [ranViewQuery, setRanViewQuery] = (0, react_2.useState)(initialSqlView?.query || '');
19
- const [askAIButton, setAskAIButton] = (0, react_2.useState)('Ask AI');
19
+ const [askAIButtonLoading, setAskAIButtonLoading] = (0, react_2.useState)(false);
20
+ const [runQueryButtonLoading, setRunQueryButtonLoading] = (0, react_2.useState)(false);
20
21
  const [aiPrompt, setAIPrompt] = (0, react_2.useState)('');
21
- const [runQueryButtonLabel, setRunQueryButtonLabel] = (0, react_2.useState)('Run query');
22
22
  const [viewAddable, setViewAddable] = (0, react_2.useState)(false);
23
23
  const [showFKModal, setShowFKModal] = (0, react_2.useState)(false);
24
24
  const [overrideFKCheck, setOverrideFKCheck] = (0, react_2.useState)(false);
@@ -35,7 +35,7 @@ function CreateEditSqlView({ containerStyle, initialSqlView, closeEditView, addE
35
35
  setShowFKModal(true);
36
36
  return;
37
37
  }
38
- addEditView(initialSqlView ? 'edit' : 'add', ranViewQuery, name, initialSqlView ? initialSqlView.id : undefined);
38
+ addEditView(initialSqlView ? 'edit' : 'add', ranViewQuery, name, initialSqlView ? initialSqlView.id : undefined, tableData?.fields || []);
39
39
  };
40
40
  (0, react_2.useEffect)(() => {
41
41
  setDisplayedTableData(allTableData);
@@ -43,19 +43,28 @@ function CreateEditSqlView({ containerStyle, initialSqlView, closeEditView, addE
43
43
  const handleRunSqlPrompt = async () => {
44
44
  setErrorInfo({ show: false, message: '' });
45
45
  setViewAddable(false);
46
- setAskAIButton('Loading...');
46
+ setAskAIButtonLoading(true);
47
47
  const results = await (0, ConnectionClient_1.getQueryFromAiWithConnection)(aiPrompt, state.client._id, state.client.schemaNames);
48
48
  setOverrideFKCheck(false);
49
49
  setEditViewQuery(results);
50
- setAskAIButton('Ask AI');
50
+ setAskAIButtonLoading(false);
51
+ };
52
+ const handleClickSchemaItem = async (event) => {
53
+ const name = event.target.textContent;
54
+ if (editViewQuery && editViewQuery.length > 0) {
55
+ await navigator.clipboard.writeText(name || '');
56
+ }
57
+ else {
58
+ setEditViewQuery(`SELECT * FROM ${name}`);
59
+ }
51
60
  };
52
61
  const handleRunQuery = async () => {
53
62
  const query = editViewQuery;
54
63
  // If this query has a limit at the end alert the user
55
- if (query.toLowerCase().includes(' limit ')) {
64
+ if (/limit\s+\d+\s*;?\s*$/i.test(query)) {
56
65
  setErrorInfo({
57
66
  show: true,
58
- message: 'Error: Please remove the limit on you query.',
67
+ message: 'Error: Please remove the limit at the end of your query.',
59
68
  });
60
69
  return;
61
70
  }
@@ -63,11 +72,11 @@ function CreateEditSqlView({ containerStyle, initialSqlView, closeEditView, addE
63
72
  setErrorInfo({ show: false, message: '' });
64
73
  setTableData(undefined);
65
74
  setIsLoading(true);
66
- setRunQueryButtonLabel('Querying...');
75
+ setRunQueryButtonLoading(true);
67
76
  setOverrideFKCheck(false);
68
77
  if (editViewQuery.length === 0) {
69
78
  setErrorInfo({ show: true, message: 'Error: Please enter a query.' });
70
- setRunQueryButtonLabel('Run query');
79
+ setRunQueryButtonLoading(false);
71
80
  return;
72
81
  }
73
82
  const resp = await (0, ConnectionClient_1.getSqlViewData)(state.client._id, query, state.client.databaseType, state.queryEndpoint);
@@ -75,11 +84,11 @@ function CreateEditSqlView({ containerStyle, initialSqlView, closeEditView, addE
75
84
  setErrorInfo({ show: true, message: resp.error });
76
85
  setTableData(undefined);
77
86
  setViewAddable(false);
78
- setRunQueryButtonLabel('Run query');
87
+ setRunQueryButtonLoading(false);
79
88
  setIsLoading(false);
80
89
  return;
81
90
  }
82
- setRunQueryButtonLabel('Run query');
91
+ setRunQueryButtonLoading(false);
83
92
  setErrorInfo({ show: false, message: '' });
84
93
  // stringify all rows that are either jsonb or json
85
94
  resp.rows = resp.rows.map((row) => {
@@ -124,14 +133,12 @@ function CreateEditSqlView({ containerStyle, initialSqlView, closeEditView, addE
124
133
  }, children: [(0, jsx_runtime_1.jsx)("div", { style: {
125
134
  paddingLeft: '20px',
126
135
  paddingRight: '30px',
127
- }, children: (0, jsx_runtime_1.jsx)(TextInput, { placeholder: "Search...",
128
- // @ts-ignore
129
- onChange: (e) => {
130
- setTableSearchQuery(e);
136
+ }, children: (0, jsx_runtime_1.jsx)(TextInput, { placeholder: "Search...", onChange: (e) => {
137
+ setTableSearchQuery(e.target.value);
131
138
  setDisplayedTableData(allTableData.filter((table) => table.tableName
132
139
  .toLowerCase()
133
- .includes(e.toLowerCase().trim())));
134
- }, value: tableSearchQuery, id: 'edit-name', width: "100%" }) }), (0, jsx_runtime_1.jsx)(react_1.SchemaListComponent, { schema: displayedTableData, theme: state.theme, LoadingComponent: LoadingComponent, loading: schemaIsLoading, width: '400px' })] }), (0, jsx_runtime_1.jsxs)("div", { style: {
140
+ .includes(e.target.value.toLowerCase().trim())));
141
+ }, value: tableSearchQuery, id: 'edit-name', width: '100%' }) }), (0, jsx_runtime_1.jsx)(react_1.SchemaListComponent, { schema: displayedTableData, theme: state.theme, LoadingComponent: LoadingComponent, loading: schemaIsLoading, width: '400px', onClick: handleClickSchemaItem })] }), (0, jsx_runtime_1.jsxs)("div", { style: {
135
142
  display: 'flex',
136
143
  gap: 20,
137
144
  flexDirection: 'column',
@@ -146,15 +153,11 @@ function CreateEditSqlView({ containerStyle, initialSqlView, closeEditView, addE
146
153
  justifyContent: 'space-between',
147
154
  gap: 20,
148
155
  width: '100%',
149
- }, children: [(0, jsx_runtime_1.jsx)(TextInput
150
- // @ts-ignore
151
- , {
152
- // @ts-ignore
153
- onChange: (e) => {
154
- setAIPrompt(e);
155
- }, placeholder: 'Describe a query...', value: aiPrompt, id: 'ai-prompt', width: '95%' }), (0, jsx_runtime_1.jsx)(Button, { label: askAIButton, onClick: handleRunSqlPrompt, width: "100px" })] }), (0, jsx_runtime_1.jsx)(SqlTextEditor_1.default, { value: editViewQuery, setValue: (e) => {
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) => {
156
159
  setEditViewQuery(e);
157
- } }), (0, jsx_runtime_1.jsx)("div", { style: { width: '200px' }, children: (0, jsx_runtime_1.jsx)(Button, { label: runQueryButtonLabel, onClick: handleRunQuery }) }), errorInfo.show ? ((0, jsx_runtime_1.jsx)("div", { style: {
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: {
158
161
  fontSize: 15,
159
162
  fontWeight: '400',
160
163
  }, children: (0, jsx_runtime_1.jsx)("div", { style: {
@@ -0,0 +1,3 @@
1
+ declare const useOnClickOutside: (ref: React.RefObject<HTMLDivElement>, handler: (event: any) => void) => void;
2
+ export default useOnClickOutside;
3
+ //# sourceMappingURL=useOnClickOutside.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useOnClickOutside.d.ts","sourceRoot":"","sources":["../../../src/hooks/useOnClickOutside.tsx"],"names":[],"mappings":"AAEA,QAAA,MAAM,iBAAiB,QAChB,MAAM,SAAS,CAAC,cAAc,CAAC,mBACjB,GAAG,KAAG,IAAI,SAgB9B,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const react_1 = require("react");
4
+ const useOnClickOutside = (ref, handler) => {
5
+ (0, react_1.useEffect)(() => {
6
+ const listener = (event) => {
7
+ if (!ref.current || ref.current.contains(event.target)) {
8
+ return;
9
+ }
10
+ handler(event);
11
+ };
12
+ document.addEventListener("mousedown", listener);
13
+ document.addEventListener("touchstart", listener);
14
+ return () => {
15
+ document.removeEventListener("mousedown", listener);
16
+ document.removeEventListener("touchstart", listener);
17
+ };
18
+ }, [ref, handler]);
19
+ };
20
+ exports.default = useOnClickOutside;
@@ -0,0 +1,17 @@
1
+ export declare function EditFiltersModal({ isOpen, dashboardData, selectedDashboard, client, setIsOpen, onSave, ModalComponent, TextInputComponent, ButtonComponent, HeaderComponent, SelectComponent, dashNames, SecondaryButtonComponent, openEditOrderModal, }: {
2
+ isOpen: boolean;
3
+ dashboardData: any;
4
+ selectedDashboard: any;
5
+ client: any;
6
+ setIsOpen: any;
7
+ onSave: any;
8
+ openEditOrderModal: any;
9
+ ModalComponent: any;
10
+ TextInputComponent: any;
11
+ ButtonComponent: any;
12
+ HeaderComponent: any;
13
+ SelectComponent: any;
14
+ dashNames: any;
15
+ SecondaryButtonComponent: any;
16
+ }): import("react/jsx-runtime").JSX.Element;
17
+ //# sourceMappingURL=EditFiltersModal.d.ts.map
@@ -0,0 +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"}